MicroPython TPYBoard v201 簡易家庭氣象站的實現過程

轉載請註明文章來源,更多教程可自助參考docs.tpyboard.com,QQ技術交流羣:157816561,公衆號:MicroPython玩家匯html

前言

上一篇教程中咱們實現了一個簡單網頁的顯示。本篇呢,增長上溫溼、時間等信息的展現,實現一個簡單的家庭氣象站。git

TPYBoard v201實物圖:github

準備工做

硬件&工具瀏覽器

- TPYBoard v201 開發板 1塊
- TPYBoard v201 網絡參數配置的工具
- 路由器、電腦、網線等
- DHT11溫溼度模塊 1個
- DS3231時鐘模塊 1個網絡

知識儲備工具

- 瞭解基本的TCP、HTTP通訊協議等相關的知識。不知道的可自行去百度,相關教程不少。
- 掌握DHT11溫溼度模塊的使用方法。
- 掌握DS3231時鐘模塊的使用方法。ui

TPYBoard v201網絡參數配置

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技術交流羣:157816561 文件裏下載。編碼

首先,將TPYBoard v201開發板經過網線與你使用的電腦接入同一個局域網內。雙擊運行<USR-M0_V2.2.1.272.exe>,點擊搜索設備,成功的狀況下會在
上面的列表中顯示搜索到的設備。spa

點擊搜素到的設備,能夠讀取到該設備的相關參數。同時也能夠進行修改並保存。接下來,咱們要進行IP地址、端口等設置。IP地址我這裏設置了靜態
IP<192.168.0.99>,防止每次從新啓動時會改變IP。3d

接下來端口設置,模塊工做方式選擇TCP Server。你們能夠注意到基礎設置中有一個HTTP服務端口的設置,是由於USR-K2中自己就有一個內嵌的網頁用
於參數的設置,默認是啓用了80端口,那咱們下面開啓的TCP Server的服務端口就使用81端口吧。

設置完畢後,點擊軟件最下方的保存設置。左側的操做日誌顯示框會顯示保存的進度和狀態。

這時再從新搜索設備,驗證下模塊的IP地址是否和咱們設置的一致。

接線說明

*進行器件接線時,請先斷開開發板的電源,防止接錯致使器件燒壞。*

 

程序實現

TPYBoard v201經過板子上的串口6與USR-K2模塊之間通訊。咱們不用去管TCP連接等問題,只須要將想要發送的數據經過串口6發送給K2模塊便可。其
實咱們的程序主要就是讀取和寫入串口的工做,當咱們從串口讀取到HTTP請求報文時,開始採集DHT11和DS3231的數據,採集完成後組成一個完整的響
應報文寫入到串口發送回去就能夠了。

這裏只展現main.py文件,其中裏面還須要DHT11和DS3231的驅動文件,文章末有下載連接你們可自行下載參考。

main.py 源碼:

 1 import pyb
 2 from pyb import Timer,UART
 3 from ds3231 import DS3231
 4 from dht11 import DHT11
 5 
 6 #串口6初始化
 7 uart = UART(6,115200,timeout = 100)
 8 #響應報文
 9 header = """
10 HTTP/1.1 200 OK
11 Content-Type:text/html
12 Content-Length:{0}
13 
14 {1}
15 """
16 #HTML頁面
17 html = """
18 <html>
19     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
20     <head> <title>TPYBoard v201</title> </head>
21     <body>
22         <h1>TPYBaord 家庭氣象站</h1><br />
23         <p>時間:{}</p>
24         <p>溫度:{}</p>
25         <p>溼度:{}</p>
26     </body>
27 </html>
28 """
29 
30 #------------------------DS3231----------------------------------#
31 ds=DS3231(2) #設置DS3231爲I2C2接口,對應SCL-Y9,SDA-Y10
32 #初始日期和時間,設置一次便可
33 #ds.DATE([19,7,27])   #設置初始日期年、月、日
34 #ds.TIME([14,50,0])   #設置初始時間時、分、秒
35 #------------------------DHT11----------------------------------#
36 d = DHT11('X12')
37 
38 def updateDisplay():
39 
40     DATE = [str(i) for i in ds.DATE()] #將返回的時間數據int轉str
41     TIME = [str(i) for i in ds.TIME()]
42     time = '-'.join(DATE) + ' ' + ':'.join(TIME) #讀取日期和時間,拼接成正常的時間格式
43     data = d.read_data()             #讀取溫溼度的值
44     return time,data
45 
46 while True:
47     if uart.any() > 0:
48         request = uart.read().decode()
49         print('request:',request)
50         #當接收到GET請求頭時,進行響應.同時把favicon.ico請求過濾掉
51         if request.find('GET') > -1 and request.find('favicon.ico') < 0:
52             time,data = updateDisplay()
53             print(data)
54             HTML = html.format(time,data[0],data[1])
55             #print(HTML)
56             uart.write(header.format(len(HTML),HTML))

 

保存代碼。打開瀏覽器,輸入URL進行訪問。URL=ip:81,例如個人URL就是192.168.0.99:81。


若是訪問時頁面出現了亂碼,主要有如下地方須要注意下:

- 1.main.py文件的編碼格式修改成UTF-8 無BOM格式;
- 2.代碼中的HTML字符串中須要添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- 3.經過瀏覽器開發者工具查看,接收到的Response體是否完整。


你們能夠依照本實驗的基礎加上本身喜歡的顯示屏,而後用紙盒等包裝起來,DIY一個超棒的家庭氣象站。同時也能夠作一個路由器映射,這樣就能夠
隨時隨地查看家裏的環境信息了。

下載源碼:https://github.com/TPYBoard/TPYBoard-v201

相關文章
相關標籤/搜索