MicroPython TPYBoard v201 簡易家庭氣象站的實(shí)現(xiàn)過程
上一篇教程中我們實(shí)現(xiàn)了一個(gè)簡單網(wǎng)頁的顯示。本篇呢,增加上溫濕、時(shí)間等信息的展示,實(shí)現(xiàn)一個(gè)簡單的家庭氣象站。
TPYBoard v201實(shí)物圖:
硬件&工具
- TPYBoard v201 開發(fā)板 1塊
- TPYBoard v201 網(wǎng)絡(luò)參數(shù)配置的工具
- 路由器、電腦、網(wǎng)線等
- DHT11溫濕度模塊 1個(gè)
- DS3231時(shí)鐘模塊 1個(gè)
知識(shí)儲(chǔ)備
- 了解基本的TCP、HTTP通信協(xié)議等相關(guān)的知識(shí)。不知道的可自行去百度,相關(guān)教程很多。
- 掌握DHT11溫濕度模塊的使用方法。
- 掌握DS3231時(shí)鐘模塊的使用方法。
USR-K2資料和工具下載: <https://github.com/TPYBoard/Documentation/blob/master/tpyboard_docs/tpyboard/tutorial/doc/USR-K2%E8%B5%84%E6%96%99.rar>
下載地址是在GitHub上,如果下載速度很慢的話,你也可以加TPYBoard技術(shù)交流群:157816561 文件里下載。
首先,將TPYBoard v201開發(fā)板通過網(wǎng)線與你使用的電腦接入同一個(gè)局域網(wǎng)內(nèi)。雙擊運(yùn)行<USR-M0_V2.2.1.272.exe>,點(diǎn)擊搜索設(shè)備,成功的情況下會(huì)在上面的列表中顯示搜索到的設(shè)備。
點(diǎn)擊搜素到的設(shè)備,可以讀取到該設(shè)備的相關(guān)參數(shù)。同時(shí)也可以進(jìn)行修改并保存。接下來,我們要進(jìn)行IP地址、端口等設(shè)置。IP地址我這里設(shè)置了靜態(tài)IP<192.168.0.99>,防止每次重新啟動(dòng)時(shí)會(huì)改變IP。
接下來端口設(shè)置,模塊工作方式選擇TCP Server。大家可以注意到基礎(chǔ)設(shè)置中有一個(gè)HTTP服務(wù)端口的設(shè)置,是因?yàn)閁SR-K2中本身就有一個(gè)內(nèi)嵌的網(wǎng)頁用于參數(shù)的設(shè)置,默認(rèn)是啟用了80端口,那我們下面開啟的TCP Server的服務(wù)端口就使用81端口吧。
設(shè)置完畢后,點(diǎn)擊軟件最下方的保存設(shè)置。左側(cè)的操作日志顯示框會(huì)顯示保存的進(jìn)度和狀態(tài)。
這時(shí)再重新搜索設(shè)備,驗(yàn)證下模塊的IP地址是否和我們設(shè)置的一致。
*進(jìn)行器件接線時(shí),請先斷開開發(fā)板的電源,防止接錯(cuò)導(dǎo)致器件燒壞。*
TPYBoard v201通過板子上的串口6與USR-K2模塊之間通信。我們不用去管TCP鏈接等問題,只需要將想要發(fā)送的數(shù)據(jù)通過串口6發(fā)送給K2模塊即可。其實(shí)我們的程序主要就是讀取和寫入串口的工作,當(dāng)我們從串口讀取到HTTP請求報(bào)文時(shí),開始采集DHT11和DS3231的數(shù)據(jù),采集完成后組成一個(gè)完整的響應(yīng)報(bào)文寫入到串口發(fā)送回去就可以了。
這里只展示main.py文件,其中里面還需要DHT11和DS3231的驅(qū)動(dòng)文件,文章末有下載鏈接大家可自行下載參考。
main.py 源碼:
import pyb from pyb import Timer,UART from ds3231 import DS3231 from dht11 import DHT11 #串口6初始化 uart = UART(6,115200,timeout = 100) #響應(yīng)報(bào)文 header = """ HTTP/1.1 200 OK Content-Type:text/html Content-Length:{0} {1} """ #HTML頁面 html = """ <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <title>TPYBoard v201</title> </head> <body> <h1>TPYBaord 家庭氣象站</h1><br /> <p>時(shí)間:{}</p> <p>溫度:{}</p> <p>濕度:{}</p> </body> </html> """ #------------------------DS3231----------------------------------# ds=DS3231(2) #設(shè)置DS3231為I2C2接口,對應(yīng)SCL-Y9,SDA-Y10 #初始日期和時(shí)間,設(shè)置一次即可 #ds.DATE([19,7,27]) #設(shè)置初始日期年、月、日 #ds.TIME([14,50,0]) #設(shè)置初始時(shí)間時(shí)、分、秒 #------------------------DHT11----------------------------------# d = DHT11('X12') def updateDisplay(): DATE = [str(i) for i in ds.DATE()] #將返回的時(shí)間數(shù)據(jù)int轉(zhuǎn)str TIME = [str(i) for i in ds.TIME()] time = '-'.join(DATE) + ' ' + ':'.join(TIME) #讀取日期和時(shí)間,拼接成正常的時(shí)間格式 data = d.read_data() #讀取溫濕度的值 return time,data while True: if uart.any() > 0: request = uart.read().decode() print('request:',request) #當(dāng)接收到GET請求頭時(shí),進(jìn)行響應(yīng).同時(shí)把favicon.ico請求過濾掉 if request.find('GET') > -1 and request.find('favicon.ico') < 0: time,data = updateDisplay() print(data) HTML = html.format(time,data[0],data[1]) #print(HTML) uart.write(header.format(len(HTML),HTML))
保存代碼。打開瀏覽器,輸入U(xiǎn)RL進(jìn)行訪問。URL=ip:81,例如我的URL就是192.168.0.99:81。
如果訪問時(shí)頁面出現(xiàn)了亂碼,主要有以下地方需要注意下:
- 1.main.py文件的編碼格式修改為UTF-8 無BOM格式;
- 2.代碼中的HTML字符串中需要添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- 3.通過瀏覽器開發(fā)者工具查看,接收到的Response體是否完整。
大家可以依照本實(shí)驗(yàn)的基礎(chǔ)加上自己喜歡的顯示屏,然后用紙盒等包裝起來,DIY一個(gè)超棒的家庭氣象站。同時(shí)也可以做一個(gè)路由器映射,這樣就可以隨時(shí)隨地查看家里的環(huán)境信息了。
下載源碼:https://github.com/TPYBoard/TPYBoard-v201
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
dc相關(guān)文章:dc是什么
pwm相關(guān)文章:pwm是什么
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理