nodemcu使用OLED显示温湿度

NodeMcu使用OLED显示温湿度

一、用到模块:

1、SHT20温湿度传感器

在这里插入图片描述

2、IIC接口OLED显示屏模块

在这里插入图片描述

3、NodeMcu模块

在这里插入图片描述

二、给NodeMcu写入固件:

1、在nodemcu官网https://nodemcu-build.com/中下载固件

输入自己的邮箱地址,我用的是163邮箱
在这里插入图片描述
选择用到的模块,红色是显示模块用到的,蓝色是温湿度传感器用到的
在这里插入图片描述
选择U8G
在这里插入图片描述
然后开始构建自己的固件,等待邮件
过一会会收到两封邮件,其中一封才是下载链接
在这里插入图片描述
总共有两类固件,float和integer,我一般都是下载float的,下载完成后就可以得到自己想要的固件啦

2、给nodemcu写入固件

写入固件我用了ESPFlashDownloadTool,可以自行查找下载
选择ESP8266
在这里插入图片描述
选择自己下载好的固件,然后点击START即可写入
在这里插入图片描述
写入成功
在这里插入图片描述

三、编程

1、接线:
(1)、SHT20温湿度传感器

scl – D3
sda – D4

(2)、OLED显示模块

scl – D2
sda – D1

2、代码:

每10s刷新一次

sda = 1
scl = 2
scl2 = 3
sda2=4
width = 16		
height = 16
wen = string.char(				
0x00,0x00,0xC4,0x1F,0x48,0x10,0x48,0x10,
0xC1,0x1F,0x42,0x10,0x42,0x10,0xC8,0x1F,
0x08,0x00,0xE4,0x3F,0x27,0x25,0x24,0x25,
0x24,0x25,0x24,0x25,0xF4,0x7F,0x00,0x00
)

du = string.char(
0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,
0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04,
0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,
0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70
)

shi = string.char(
0x00,0x00,0xE4,0x1F,0x28,0x10,0x28,0x10,
0xE1,0x1F,0x22,0x10,0x22,0x10,0xE8,0x1F,
0x88,0x04,0x84,0x04,0x97,0x24,0xA4,0x14,
0xC4,0x0C,0x84,0x04,0xF4,0x7F,0x00,0x00
)


function init_OLED(sda,scl)
     sla = 0x3c
     i2c.setup(0, sda, scl, i2c.SLOW)
     disp=u8g2.ssd1306_i2c_128x64_noname(0,sla)
     disp:setFont(u8g2.font_6x10_tf)
     disp:setFontPosTop()
end

function init_wendu(sda,scl)
    
    i2c.setup(0, sda, scl, i2c.SLOW) -- call i2c.setup() only once
    si7021.setup()
    
    hum, temp, hum_dec, temp_dec = si7021.read()
end

function print_OLED()
   disp:setFont(u8g2.font_6x10_tf)
   disp:setDrawColor(1)
   disp:setBitmapMode(0)
     
     disp:drawStr(4, 4, "Advertising position")
     disp:drawXBM(16,25,width,height, shi)
     disp:drawXBM(33,25,width,height, du)
     disp:drawStr(49, 29, Humidity)
     disp:drawXBM(16,42,width,height, wen)
     disp:drawXBM(33,42,width,height, du)
     disp:drawStr(49, 46,Temperature)
     disp:drawFrame(0, 0,128,16)
     disp:drawFrame(0, 16,128,48)
   --disp:drawFrame(0, 16,128,45)
   disp:sendBuffer()
end

init_wendu(sda2,scl2)

print(string.format("Humidity:\t\t%d.%03d\n", hum, hum_dec, temp, temp_dec))
print(string.format("Temperature:\t%d.%03d\n",temp, temp_dec))

Humidity = string.format(" : \t\t%d.%03d\n", hum, hum_dec, temp, temp_dec)
Temperature = string.format(" : \t%d.%03d\n",temp, temp_dec)
init_OLED(sda,scl)
print_OLED()

local mytimer1 = tmr.create()
function TimeFunction1()

    init_wendu(sda2,scl2)
    Humidity = string.format(" : \t\t%d.%03d\n", hum, hum_dec, temp, temp_dec)
    Temperature = string.format(" : \t%d.%03d\n",temp, temp_dec)
    init_OLED(sda,scl)
    print_OLED()
    
end

mytimer1:register(10000, 1, TimeFunction1)

mytimer1:start()

成品如下:
在这里插入图片描述
在这里插入图片描述
如需转载请注明出处

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值