DHT11和DHT22都是價(jià)廉物美的溫度濕度傳感器(DHT (Digital Humidity & Temperature) sensors), 采用數(shù)字總線的通訊方式,非常便于編程. 另外顯示采用SSD1306的olde顯示屏,這也是一款常用的顯示設(shè)備,采用IIC或SPI通訊,庫(kù)也很豐富,使用起來(lái)也是很簡(jiǎn)單.
我通過(guò)采集DHT22,讀取溫度和濕度數(shù)據(jù),再通過(guò)oled屏顯示出來(lái),這就是一款溫度濕度檢測(cè)設(shè)備.
WechatIMG215.jpeg
00. 采用 micropython和esp8266芯片.
原件如下:
WechatIMG214.jpeg
屏幕快照 2017-12-10 上午9.30.21.png
屏幕快照 2017-12-10 下午12.14.55.png
01.代碼如下:
import ssd1306
import dht
import utime
import machine
from machine import I2C, Pin
d = dht.DHT22(machine.Pin(4))
i2c = I2C(-1, Pin(14), Pin(12))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
def mshow():
d.measure()
t0 = str(d.temperature()) + 'C'
h0 = str(d.humidity()) + '%'
utime.sleep(3)
display.fill(0)
display.text('TH Sensor', 4, 1)
display.text('Temperature:', 1, 17)
display.text('Humidity:', 1, 33)
display.text('Gaoshine 201712', 1, 57)
display.text(t0, 12*8, 17)
display.text(h0, 10*8, 33)
display.show()
def main():
while True:
mshow()
utime.sleep(1)
if __name__ == "__main__":
main()
代碼的結(jié)構(gòu):
屏幕快照 2017-12-10 下午12.05.17.png
02. 運(yùn)行效果:
WechatIMG215.jpeg
03. 增加時(shí)鐘功能
芯片本身是支持RTC的,不過(guò)復(fù)位或掉電后系統(tǒng)就回到2000年,比較好的辦法采用 NTP服務(wù),每次啟動(dòng)從NTP服務(wù)器上獲取時(shí)間,再同步時(shí)鐘.
代碼如下:
import ssd1306
import dht
import utime
import machine
import ntptime
from machine import I2C, Pin
t = ntptime.time()
ntptime.settime()
d = dht.DHT22(machine.Pin(4))
i2c = I2C(-1, Pin(14), Pin(12))
display = ssd1306.SSD1306_I2C(128, 64, i2c)
def mshow():
d.measure()
t0 = str(d.temperature()) + 'C'
h0 = str(d.humidity()) + '%'
utime.sleep(3)
display.fill(0)
display.text('TH Sensor', 4, 1)
display.text('Temperature:', 1, 17)
display.text('Humidity:', 1, 33)
display.text(t0, 12*8, 17)
display.text(h0, 10*8, 33)
ts = utime.localtime()
s = '%s-%s-%s %s:%s' % (ts[0], ts[1], ts[2], ts[3]+8, ts[4])
display.text(s, 1, 57)
display.show()
def main():
while True:
mshow()
utime.sleep(1)
if __name__ == "__main__":
main()
2161512897753_.pic_hd.jpg