0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

lua編程入門(mén)教程:用NodeMCU在OLED上顯示溫濕度

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-24 09:46 ? 次閱讀

OLED模塊介紹

OLED顯示屏是指有機(jī)電激發(fā)光二極管Organic Light-Emitting DiodeOLED),具備自發(fā)光,所以不需背光源,對(duì)比度高,厚度薄,視角廣,反應(yīng)速度快等特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。

筆者使用的是0.96寸,白色,I2C總線的OLED模塊顯示屏,分辨率128x64,OLED常用接口有I2C和SPI。轉(zhuǎn)接板自己畫(huà)的,和某寶的上購(gòu)買(mǎi)的模塊接口基本一致。模塊有5V轉(zhuǎn)3.3V電路,可以兼容外接3.3V和5V電壓。硬件部分這里就不多說(shuō)了,購(gòu)買(mǎi)oled模塊后客服都會(huì)給模塊相關(guān)資料

注: 在購(gòu)買(mǎi)OLED模塊時(shí),要查看該模塊是否被 u8g2庫(kù) 所支持,只有被 u8g2庫(kù) 支持的OELD屏才能使用該庫(kù)。

啟用I2C和OLED模塊

在往期文章《 ESP8266之NodeMCU固件編譯 》中,其實(shí)已經(jīng)介紹了如何啟用NodeMCU所支持的各種模塊,啟用對(duì)應(yīng)的模塊后,需要重新編譯固件,燒錄到ESP8266才能使用,一般根據(jù)自己的需求開(kāi)啟對(duì)應(yīng)的模塊,以減少固件的大小。

1)啟用I2C模塊,需要打開(kāi) user_modules.h 文件中的 LUA_USE_M(jìn)ODULES_I2C ,使用筆者之前編譯的固件,默認(rèn)是已經(jīng)開(kāi)啟了。

ESP8266芯片沒(méi)有硬件I2C接口,所以模塊使用軟件接口驅(qū)動(dòng)程序??砂℅PIO16在內(nèi)的任何GPIO引腳上設(shè)置。模塊支持主模式,每條總線上可具有不同速度,最多10條總線。
速度標(biāo)準(zhǔn):

慢速:100kHz;

快速:400kHz;

FastPlus:1MHz
也可設(shè)置任意時(shí)鐘。GPIO16引腳可以作為SCL引腳使用,但所選的總線將被限制為不超過(guò)FAST速度。
模塊不支持高速模式(3.5MHz時(shí)鐘)和10位尋址方案。

2)啟用OLED模塊,需要打開(kāi) user_modules.h 文件中的 LUA_USE_M(jìn)ODULES_U8G2 ,u8g2模塊 已經(jīng)將常見(jiàn)的OLED屏驅(qū)動(dòng)都寫(xiě)好了,源碼是開(kāi)源的,可上GitHub查看。模塊如下:

#define LUA_USE_M(jìn)ODULES_I2C #define LUA_USE_M(jìn)ODULES_U8G2I2C相關(guān)接口

由于使用了u8g2庫(kù),這里就只需要了解 i2c.setup() 接口。

i2c.setup(id, pinSDA, pinSCL, speed)

參數(shù)

id:0~9,總線編號(hào),NodeMCU支持10個(gè)I2C總線。

pinSDA:1~12,SDA的IO口編號(hào)

pinSCL:1~12, SCL的IO口編號(hào)

speed:i2c.SLOW (100kHz), i2c.FAST (400kHz), i2c.FASTPLUS (1MHz)或者在25000 ~ 1000000Hz之間的任意時(shí)鐘頻率。FASTPLUS模式在默認(rèn)80MHz的CPU頻率下產(chǎn)生600kHz的I2C時(shí)鐘速度,要得到1MHz的I2C時(shí)鐘速度,要使用接口 node.setcpufreq(node.CPU160MHZ) 改變CPU頻率到160MHz。

返回值:

speed:成功則返回設(shè)置的speed;失敗則返回0。

想了解其他接口,可見(jiàn)NodeMCU官方文檔。

U8G2庫(kù)相關(guān)接口SSD1306驅(qū)動(dòng)的初始化

使用I2C接口,調(diào)用以下代碼初始化:

sla = 0x3c -- oled的I2C地址 -- id:I2C初始化時(shí)的id disp = u8g2.ssd1306_i2c_128x64_noname(id, sla)

其他驅(qū)動(dòng)類(lèi)型的OLED初始化,見(jiàn)NodeMCU官方文檔。

u8g2.disp:drawStr(x, y, *str)

x:x軸坐標(biāo)

y:y軸坐標(biāo)

str:要顯示的字符串

u8g2.disp:sendBuffer(void)

將內(nèi)存幀緩沖區(qū)的內(nèi)容發(fā)送到顯示器,執(zhí)行該函數(shù),OLED才會(huì)顯示設(shè)置的內(nèi)容。

OLED字體設(shè)置

字體設(shè)置在 app/include 目錄下的 u8g2_fonts.h 文件,需要什么字體,只需在 U8G2_FONT_TABLE_ENTRY(font_wqy16_t_chinese3) 后面加入對(duì)應(yīng)的字體宏即可,由于全中文字庫(kù)很大,編譯出的固件大小將會(huì)很大,可能會(huì)導(dǎo)致燒錄失敗或者ESP8266啟動(dòng)不了。筆者就直接使用默認(rèn)的字體了。u8g2的字體設(shè)計(jì)又是一門(mén)技術(shù),網(wǎng)上也有大佬出教程,有興趣的可以搜搜。

// Add a U8G2_FONT_TABLE_ENTRY for each font you want to compile into the image // See https://github.com/olikraus/u8g2/wiki/fntlistall for a complete list of // available fonts. Drop the 'u8g2_' prefix when you add them here. #define U8G2_FONT_TABLE U8G2_FONT_TABLE_ENTRY(font_6x10_tf) U8G2_FONT_TABLE_ENTRY(font_unifont_t_symbols) U8G2_FONT_TABLE_ENTRY(font_wqy16_t_chinese3)

u8g2支持的字體見(jiàn)u8g2官網(wǎng)。

點(diǎn)亮OLED模塊

首先要搞清楚ESP8266和NodeMCU引腳之間的關(guān)系,很多新手容易搞混。ESP8266和NodeMCU對(duì)應(yīng)引腳關(guān)系如下圖:

對(duì)應(yīng)關(guān)系,比如下表:

NodeMCU PinESP8266 PinD0GPIO16D1GPIO5D2GPIO4D3GPIO0D4GPIO2D5GPIO14……

筆者的OLED模塊引出腳是4個(gè)(有的是IIC和SPI兼容模塊可能是7個(gè)引腳),OLED模塊和NodeMCU之間連接關(guān)系如下:

OLED模塊NodeMCU PinESP8266VCC(帶3.3V穩(wěn)壓)VCC(3.3V或5V)VCCGNDGNDGNDSCLD6GPIO12SDAD5GPIO14

注:

ESP8266單模塊的VCC是3.3V的。

若OLED模塊還有RES,DC,CS引腳,可按照說(shuō)明在程序中控制,或直接在硬件上配置好,具體看oled模塊資料。

若OLED模塊不帶3.3V穩(wěn)壓,則OLED的VCC連接到NodeMCU的3.3V引腳上,因?yàn)?.96寸OLED屏大多是3.3V電源,具體以O(shè)LED屏規(guī)格書(shū)為準(zhǔn)。

DHT11模塊和NodeMCU之間連接關(guān)系:

DHT11 PinNodeMCU PinESP8266VCC3.3VVCCGNDGNDGNDDATAD4GPIO2

先將OLED和NodeMCU開(kāi)發(fā)板連接好,然后接上將usb接到電腦端,上傳點(diǎn)亮oled的lua代碼。

代碼如下:

-- 管腳定義 local sda = 5 -- GPIO14 local scl = 6 -- GPIO12 local sla = 0x3c -- oled的地址,一般為0x3c -- 初始化 function init_oled() -- iic總線 和 oled初始化 i2c.setup(0, sda, scl, i2c.SLOW) disp = u8g2.ssd1306_i2c_128x64_noname(0, sla) -- 設(shè)置字體 disp:setFont(u8g2.font_unifont_t_symbols) disp:setFontRefHeightExtendedText() --disp:setDrawColor(1) disp:setFontPosTop() --disp:setFontDirection(0) -- 畫(huà)邊框 --disp:drawFrame(0, 0, 128, 64) end -- 顯示函數(shù) function oled_show_msg() -- 設(shè)置顯示內(nèi)容 disp:drawStr(0, 0, "1 Hello OLED") disp:drawStr(0, 16, "2234567890ABCDEF") disp:drawStr(0, 32, "3234567890ABCDEF") disp:drawStr(0, 48, "4234567890ABCDEF") -- 將內(nèi)容發(fā)送到oled disp:sendBuffer() end -- 主函數(shù) function main() init_oled() oled_show_msg() end -- 運(yùn)行程序 main()

將代碼保存到 oled.lua 文件,通過(guò) ESPlorer工具 上傳到ESP8266模塊,刷新ESPlorer文件列表,點(diǎn)擊 oled.lua 就可以看到oled屏顯示信息了。如下圖:

實(shí)際顯示效果:

將溫濕度動(dòng)態(tài)的顯示在OLED上

溫濕度模塊使用的是DHT11模塊,關(guān)于DHT11模塊的使用,之前寫(xiě)過(guò)一篇文章。這里就直接使用了

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16900

    瀏覽量

    349950
  • OLED
    +關(guān)注

    關(guān)注

    119

    文章

    6171

    瀏覽量

    223689
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3566

    瀏覽量

    93539
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LORA無(wú)線溫濕度監(jiān)測(cè)系統(tǒng)

    LORA無(wú)線溫濕度監(jiān)測(cè)系統(tǒng),作為現(xiàn)代環(huán)境監(jiān)測(cè)技術(shù)的重要組成部分,正日益受到各行各業(yè)的廣泛關(guān)注和應(yīng)用。 LORA無(wú)線溫濕度監(jiān)測(cè)系統(tǒng),利用LORA無(wú)線通信技術(shù),對(duì)環(huán)境中溫度和濕度的實(shí)時(shí)監(jiān)測(cè)和數(shù)據(jù)傳輸,為
    的頭像 發(fā)表于 11-07 16:57 ?141次閱讀

    溫濕度控制器的功能和應(yīng)用

    溫濕度控制器電阻柜中的應(yīng)用主要涉及以下幾個(gè)方面: 溫濕度控制器的功能 檢測(cè)與控制:溫濕度控制器可以同時(shí)檢測(cè)和控制環(huán)境中的溫度和濕度。它通常
    的頭像 發(fā)表于 11-07 15:08 ?107次閱讀

    冷庫(kù)環(huán)境溫濕度監(jiān)控系統(tǒng)

    現(xiàn)代冷鏈物流體系中,冷庫(kù)作為保障食品、藥品及其他易腐品質(zhì)量與安全的關(guān)鍵環(huán)節(jié),其環(huán)境溫濕度監(jiān)控系統(tǒng)的功能作用顯得尤為重要。一個(gè)高效、精準(zhǔn)的冷庫(kù)環(huán)境溫濕度監(jiān)控系統(tǒng)不僅能夠顯著提升倉(cāng)儲(chǔ)管理的效率,有效
    的頭像 發(fā)表于 08-21 16:07 ?262次閱讀

    NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    OLED顯示
    jf_07365693
    發(fā)布于 :2024年08月14日 16:43:37

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示
    的頭像 發(fā)表于 08-13 18:04 ?897次閱讀
    Arduino Nano 和 <b class='flag-5'>NodeMCU</b> ESP8266 讀取 DHT11 環(huán)境<b class='flag-5'>溫濕度</b>數(shù)據(jù)及 <b class='flag-5'>OLED</b><b class='flag-5'>顯示</b>

    溫濕度監(jiān)測(cè)系統(tǒng)應(yīng)用

    現(xiàn)代化工業(yè)生產(chǎn)、倉(cāng)儲(chǔ)管理、農(nóng)業(yè)種植以及智能家居等領(lǐng)域,溫濕度監(jiān)測(cè)已成為不可或缺的一環(huán)。溫濕度作為環(huán)境控制的關(guān)鍵因素,直接影響著產(chǎn)品質(zhì)量、存儲(chǔ)安全、作物生長(zhǎng)效率以及居住舒適度。因此,一套高效、精準(zhǔn)
    的頭像 發(fā)表于 07-26 16:15 ?333次閱讀

    庫(kù)房溫濕度自動(dòng)監(jiān)測(cè)系統(tǒng)

    倉(cāng)儲(chǔ)、庫(kù)房管理上,環(huán)境控制都是重中之重。庫(kù)房溫濕度自動(dòng)監(jiān)測(cè)系統(tǒng)作為一種更為便捷的解決方案,已經(jīng)得到廣泛的應(yīng)用。 庫(kù)房溫濕度自動(dòng)監(jiān)測(cè)系統(tǒng)通過(guò)集成傳感器、數(shù)據(jù)采集器、傳輸設(shè)備和管理平臺(tái)等硬件設(shè)備,實(shí)現(xiàn)
    的頭像 發(fā)表于 07-09 18:00 ?638次閱讀

    糧倉(cāng)溫濕度監(jiān)測(cè)解決方案

    溫濕度是影響糧食儲(chǔ)存品質(zhì)的重要因素。過(guò)高的溫度會(huì)加速糧食的呼吸作用,導(dǎo)致水分散失和品質(zhì)下降。因此,糧倉(cāng)的溫濕度管理,成為了確保糧食儲(chǔ)存安全和質(zhì)量穩(wěn)定的關(guān)鍵因素。方便及時(shí)發(fā)現(xiàn)糧倉(cāng)的發(fā)熱點(diǎn),及時(shí)減少糧食
    的頭像 發(fā)表于 07-04 16:37 ?299次閱讀

    想要準(zhǔn)確地測(cè)量環(huán)境溫濕度溫濕度傳感器是關(guān)鍵!

    ? 溫濕度是生產(chǎn)生活中最重要的環(huán)境指標(biāo)之一,不僅人需要在適宜的溫濕度條件下保持良好的精神狀態(tài)和敏捷的思維,食品、藥品、各種儀器設(shè)備等都對(duì)環(huán)境溫濕度有特殊的要求?;趯?duì)環(huán)境溫濕度的要求,
    的頭像 發(fā)表于 07-04 08:48 ?466次閱讀

    無(wú)線溫濕度監(jiān)控系統(tǒng)

    解決方案,需要監(jiān)控的區(qū)域部署傳感器節(jié)點(diǎn),實(shí)時(shí)感知環(huán)境溫濕度數(shù)據(jù),利用無(wú)線傳感器網(wǎng)絡(luò),對(duì)環(huán)境溫濕度的實(shí)時(shí)采集和傳輸,上傳至監(jiān)控中心或云平臺(tái),用戶進(jìn)行遠(yuǎn)程查看和管理。一旦數(shù)據(jù)被采集,自動(dòng)推送示警信息,實(shí)現(xiàn)環(huán)境溫
    的頭像 發(fā)表于 05-30 16:43 ?698次閱讀

    基于51單片機(jī)的SHT11溫濕度監(jiān)測(cè)系統(tǒng),LCD1602顯示,上下限按鍵設(shè)置

    LCD1602顯示模塊實(shí)時(shí)顯示溫濕度數(shù)據(jù),同時(shí)可以通過(guò)按鍵模塊對(duì)溫濕度報(bào)警、下限值進(jìn)行設(shè)定。 當(dāng)SHT11讀取的
    發(fā)表于 03-26 17:44

    溫濕度傳感器有哪些應(yīng)用場(chǎng)景?

    溫濕度傳感器眾多領(lǐng)域,特別是實(shí)時(shí)記錄溫濕度變化的工作中最為廣泛。溫濕度傳感器可以根據(jù)所記錄的內(nèi)容,對(duì)其進(jìn)行科學(xué)有效的管理、分析和歸納。下
    的頭像 發(fā)表于 02-19 16:28 ?1205次閱讀
    <b class='flag-5'>溫濕度</b>傳感器有哪些應(yīng)用場(chǎng)景?

    溫濕度傳感器工作原理 溫濕度傳感器的接線方法

    溫度和濕度變化時(shí)的電學(xué)特性的變化來(lái)進(jìn)行測(cè)量。根據(jù)傳感器的類(lèi)型不同,工作原理也有所不同。下面介紹幾種常見(jiàn)的溫濕度傳感器的工作原理。 電阻式溫濕度傳感器 電阻式
    的頭像 發(fā)表于 02-14 18:00 ?8693次閱讀

    溫濕度監(jiān)測(cè)系統(tǒng)解決方案應(yīng)用場(chǎng)景

    隨著生活水平質(zhì)量不斷提高,因溫度引發(fā)的各行業(yè)越來(lái)越重視產(chǎn)品生產(chǎn)、物品設(shè)備、存儲(chǔ)等溫濕度管理環(huán)境。科學(xué)應(yīng)用溫濕度監(jiān)測(cè)系統(tǒng),確保儲(chǔ)運(yùn)過(guò)程中或?qū)嶒?yàn)、生產(chǎn)制造等過(guò)程中,有無(wú)任何危及產(chǎn)品安全的事件發(fā)生
    的頭像 發(fā)表于 01-24 16:21 ?529次閱讀

    4G遠(yuǎn)程溫濕度傳感器倉(cāng)庫(kù)中的應(yīng)用—蜂窩物聯(lián)

    一個(gè)良好的倉(cāng)儲(chǔ)環(huán)境需要考慮到溫度、清潔度、空氣流動(dòng)、防水、防火等要素,其中以空氣溫濕度的影響最為重要,倉(cāng)庫(kù)內(nèi)溫濕度環(huán)境的直接影響到庫(kù)品的品質(zhì)與安全,合理控制倉(cāng)庫(kù)內(nèi)的溫濕度是做好庫(kù)品存儲(chǔ)的首要工作
    的頭像 發(fā)表于 01-02 09:36 ?411次閱讀