衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

lua編程入門教程:用NodeMCU在OLED上顯示溫濕度

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2020-12-24 09:46 ? 次閱讀

OLED模塊介紹

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

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

注: 在購買OLED模塊時,要查看該模塊是否被 u8g2庫 所支持,只有被 u8g2庫 支持的OELD屏才能使用該庫。

啟用I2C和OLED模塊

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

1)啟用I2C模塊,需要打開 user_modules.h 文件中的 LUA_USE_MODULES_I2C ,使用筆者之前編譯的固件,默認是已經開啟了。

ESP8266芯片沒有硬件I2C接口,所以模塊使用軟件接口驅動程序。可包括GPIO16在內的任何GPIO引腳上設置。模塊支持主模式,每條總線上可具有不同速度,最多10條總線。
速度標準:

慢速:100kHz;

快速:400kHz;

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

2)啟用OLED模塊,需要打開 user_modules.h 文件中的 LUA_USE_MODULES_U8G2 ,u8g2模塊 已經將常見的OLED屏驅動都寫好了,源碼是開源的,可上GitHub查看。模塊如下:

#define LUA_USE_MODULES_I2C #define LUA_USE_MODULES_U8G2I2C相關接口

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

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

參數

id:0~9,總線編號,NodeMCU支持10個I2C總線。

pinSDA:1~12,SDA的IO口編號

pinSCL:1~12, SCL的IO口編號

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

返回值:

speed:成功則返回設置的speed;失敗則返回0。

想了解其他接口,可見NodeMCU官方文檔。

U8G2庫相關接口SSD1306驅動的初始化

使用I2C接口,調用以下代碼初始化:

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

其他驅動類型的OLED初始化,見NodeMCU官方文檔。

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

x:x軸坐標

y:y軸坐標

str:要顯示的字符串

u8g2.disp:sendBuffer(void)

將內存幀緩沖區的內容發送到顯示器,執行該函數,OLED才會顯示設置的內容。

OLED字體設置

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

// 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支持的字體見u8g2官網。

點亮OLED模塊

首先要搞清楚ESP8266和NodeMCU引腳之間的關系,很多新手容易搞混。ESP8266和NodeMCU對應引腳關系如下圖:

對應關系,比如下表:

NodeMCU PinESP8266 PinD0GPIO16D1GPIO5D2GPIO4D3GPIO0D4GPIO2D5GPIO14……

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

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

注:

ESP8266單模塊的VCC是3.3V的。

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

若OLED模塊不帶3.3V穩壓,則OLED的VCC連接到NodeMCU的3.3V引腳上,因為0.96寸OLED屏大多是3.3V電源,具體以OLED屏規格書為準。

DHT11模塊和NodeMCU之間連接關系:

DHT11 PinNodeMCU PinESP8266VCC3.3VVCCGNDGNDGNDDATAD4GPIO2

先將OLED和NodeMCU開發板連接好,然后接上將usb接到電腦端,上傳點亮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) -- 設置字體 disp:setFont(u8g2.font_unifont_t_symbols) disp:setFontRefHeightExtendedText() --disp:setDrawColor(1) disp:setFontPosTop() --disp:setFontDirection(0) -- 畫邊框 --disp:drawFrame(0, 0, 128, 64) end -- 顯示函數 function oled_show_msg() -- 設置顯示內容 disp:drawStr(0, 0, "1 Hello OLED") disp:drawStr(0, 16, "2234567890ABCDEF") disp:drawStr(0, 32, "3234567890ABCDEF") disp:drawStr(0, 48, "4234567890ABCDEF") -- 將內容發送到oled disp:sendBuffer() end -- 主函數 function main() init_oled() oled_show_msg() end -- 運行程序 main()

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

實際顯示效果:

將溫濕度動態的顯示在OLED上

溫濕度模塊使用的是DHT11模塊,關于DHT11模塊的使用,之前寫過一篇文章。這里就直接使用了

審核編輯:符乾江
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17324

    瀏覽量

    352660
  • OLED
    +關注

    關注

    119

    文章

    6220

    瀏覽量

    224836
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93989
收藏 人收藏

    評論

    相關推薦

    博物館溫濕度監控系統

    ,若任其自然變化,則可能對文物造成意想不到的損害。為此,博物館溫濕度監控系統應運而生,其具備多種功能,以確保文物環境的穩定與安全。 博物館溫濕度監控系統,采集各庫房的溫濕度數據,通過管理云平臺實時
    的頭像 發表于 12-20 16:42 ?519次閱讀

    LORA無線溫濕度監測系統

    LORA無線溫濕度監測系統,作為現代環境監測技術的重要組成部分,正日益受到各行各業的廣泛關注和應用。 LORA無線溫濕度監測系統,利用LORA無線通信技術,對環境中溫度和濕度的實時監測和數據傳輸,為
    的頭像 發表于 11-07 16:57 ?442次閱讀

    溫濕度控制器的功能和應用

    溫濕度控制器電阻柜中的應用主要涉及以下幾個方面: 溫濕度控制器的功能 檢測與控制:溫濕度控制器可以同時檢測和控制環境中的溫度和濕度。它通常
    的頭像 發表于 11-07 15:08 ?313次閱讀

    冷庫環境溫濕度監控系統

    現代冷鏈物流體系中,冷庫作為保障食品、藥品及其他易腐品質量與安全的關鍵環節,其環境溫濕度監控系統的功能作用顯得尤為重要。一個高效、精準的冷庫環境溫濕度監控系統不僅能夠顯著提升倉儲管理的效率,有效
    的頭像 發表于 08-21 16:07 ?382次閱讀

    NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示

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

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示
    的頭像 發表于 08-13 18:04 ?1337次閱讀
    Arduino Nano 和 <b class='flag-5'>NodeMCU</b> ESP8266 讀取 DHT11 環境<b class='flag-5'>溫濕度</b>數據及 <b class='flag-5'>OLED</b><b class='flag-5'>顯示</b>

    溫濕度監測系統應用

    現代化工業生產、倉儲管理、農業種植以及智能家居等領域,溫濕度監測已成為不可或缺的一環。溫濕度作為環境控制的關鍵因素,直接影響著產品質量、存儲安全、作物生長效率以及居住舒適度。因此,一套高效、精準
    的頭像 發表于 07-26 16:15 ?475次閱讀

    庫房溫濕度自動監測系統

    倉儲、庫房管理上,環境控制都是重中之重。庫房溫濕度自動監測系統作為一種更為便捷的解決方案,已經得到廣泛的應用。 庫房溫濕度自動監測系統通過集成傳感器、數據采集器、傳輸設備和管理平臺等硬件設備,實現
    的頭像 發表于 07-09 18:00 ?793次閱讀

    糧倉溫濕度監測解決方案

    溫濕度是影響糧食儲存品質的重要因素。過高的溫度會加速糧食的呼吸作用,導致水分散失和品質下降。因此,糧倉的溫濕度管理,成為了確保糧食儲存安全和質量穩定的關鍵因素。方便及時發現糧倉的發熱點,及時減少糧食
    的頭像 發表于 07-04 16:37 ?399次閱讀

    想要準確地測量環境溫濕度溫濕度傳感器是關鍵!

    ? 溫濕度是生產生活中最重要的環境指標之一,不僅人需要在適宜的溫濕度條件下保持良好的精神狀態和敏捷的思維,食品、藥品、各種儀器設備等都對環境溫濕度有特殊的要求。基于對環境溫濕度的要求,
    的頭像 發表于 07-04 08:48 ?652次閱讀

    無線溫濕度監控系統

    解決方案,需要監控的區域部署傳感器節點,實時感知環境溫濕度數據,利用無線傳感器網絡,對環境溫濕度的實時采集和傳輸,上傳至監控中心或云平臺,用戶進行遠程查看和管理。一旦數據被采集,自動推送示警信息,實現環境溫
    的頭像 發表于 05-30 16:43 ?825次閱讀

    基于51單片機的SHT11溫濕度監測系統,LCD1602顯示,上下限按鍵設置

    LCD1602顯示模塊實時顯示溫濕度數據,同時可以通過按鍵模塊對溫濕度報警、下限值進行設定。 當SHT11讀取的
    發表于 03-26 17:44

    【原創】DHT11傳感器溫濕度監測系統畢設,論文、代碼、原理圖和仿真介紹

    不同。DHT11為單總線串行通信,只有數據線DATA接口;SHT11為二線制串行通信,有時鐘線SCK和數據線DATA 兩個接口。在編程,兩者區別較大。 常規溫濕度測量
    發表于 03-13 00:53

    溫濕度傳感器有哪些應用場景?

    溫濕度傳感器眾多領域,特別是實時記錄溫濕度變化的工作中最為廣泛。溫濕度傳感器可以根據所記錄的內容,對其進行科學有效的管理、分析和歸納。下
    的頭像 發表于 02-19 16:28 ?1481次閱讀
    <b class='flag-5'>溫濕度</b>傳感器有哪些應用場景?

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

    溫度和濕度變化時的電學特性的變化來進行測量。根據傳感器的類型不同,工作原理也有所不同。下面介紹幾種常見的溫濕度傳感器的工作原理。 電阻式溫濕度傳感器 電阻式
    的頭像 發表于 02-14 18:00 ?1w次閱讀
    温州市百家乐ktv招聘| 百家乐官网下注稳赢法| 百家乐桌子10人| 铅山县| 百家乐大眼仔小路| 百家乐官网网投开户| 唐人街百家乐的玩法技巧和规则| 百家乐官网开户优惠多的平台是哪家| 诸子百家乐的玩法技巧和规则| 百家乐官网学院| 大发888娱乐城游戏lm0| 伟易博百家乐官网的玩法技巧和规则 | 百家乐澳门技巧| 金盈娱乐| 百家乐技巧头头娱乐| 玩百家乐官网新澳门娱乐城| 大发888老虎机苹果版| 做生意摆放老虎好不好| 博联百家乐官网游戏| 百家乐详解| 择日自学24| 百家乐官网作弊手段| 威尼斯人娱乐平台官网| 百家乐官网合作| 百家乐官网有哪几种| 大发888赌场官方下载| 风水做生意房漏水| 百家乐官网技巧之写路| 大发888娱乐城充值lm0| 克拉克百家乐试玩| 百家乐官网扑克多少张| 大发888官方ylc8| 百家乐开发软件| 百家乐官网的看路技巧| 长阳| 水果机游戏在线玩| 缅甸百家乐网上投注| 波音百家乐官网现金网投注平台排名导航| 澳门顶级赌场官网| 百家乐如何盈利| 24山是那二十四山|