久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁 > 博客 > MicroPython TPYBoard v201 簡易家庭氣象站的實現(xiàn)過程

MicroPython TPYBoard v201 簡易家庭氣象站的實現(xiàn)過程

發(fā)布人:bodasister 時間:2019-07-29 來源:工程師 發(fā)布文章
前言

上一篇教程中我們實現(xiàn)了一個簡單網(wǎng)頁的顯示。本篇呢,增加上溫濕、時間等信息的展示,實現(xiàn)一個簡單的家庭氣象站。

TPYBoard v201實物圖:

v201.jpg


準備工作


硬件&工具


- TPYBoard v201 開發(fā)板 1塊

- TPYBoard v201 網(wǎng)絡參數(shù)配置的工具

- 路由器、電腦、網(wǎng)線等

- DHT11溫濕度模塊 1個

- DS3231時鐘模塊 1個


知識儲備


- 了解基本的TCP、HTTP通信協(xié)議等相關的知識。不知道的可自行去百度,相關教程很多。

- 掌握DHT11溫濕度模塊的使用方法。

- 掌握DS3231時鐘模塊的使用方法。


TPYBoard v201網(wǎng)絡參數(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技術交流群:157816561 文件里下載。


首先,將TPYBoard v201開發(fā)板通過網(wǎng)線與你使用的電腦接入同一個局域網(wǎng)內(nèi)。雙擊運行<USR-M0_V2.2.1.272.exe>,點擊搜索設備,成功的情況下會在上面的列表中顯示搜索到的設備。


0.png


點擊搜素到的設備,可以讀取到該設備的相關參數(shù)。同時也可以進行修改并保存。接下來,我們要進行IP地址、端口等設置。IP地址我這里設置了靜態(tài)IP<192.168.0.99>,防止每次重新啟動時會改變IP。


1.png


接下來端口設置,模塊工作方式選擇TCP Server。大家可以注意到基礎設置中有一個HTTP服務端口的設置,是因為USR-K2中本身就有一個內(nèi)嵌的網(wǎng)頁用于參數(shù)的設置,默認是啟用了80端口,那我們下面開啟的TCP Server的服務端口就使用81端口吧。


2.png


設置完畢后,點擊軟件最下方的保存設置。左側的操作日志顯示框會顯示保存的進度和狀態(tài)。


3.png


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


4.png



接線說明


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


  

程序?qū)崿F(xiàn)


TPYBoard  v201通過板子上的串口6與USR-K2模塊之間通信。我們不用去管TCP鏈接等問題,只需要將想要發(fā)送的數(shù)據(jù)通過串口6發(fā)送給K2模塊即可。其實我們的程序主要就是讀取和寫入串口的工作,當我們從串口讀取到HTTP請求報文時,開始采集DHT11和DS3231的數(shù)據(jù),采集完成后組成一個完整的響應報文寫入到串口發(fā)送回去就可以了。


這里只展示main.py文件,其中里面還需要DHT11和DS3231的驅(qū)動文件,文章末有下載鏈接大家可自行下載參考。


main.py 源碼:

import pyb
from pyb import Timer,UART
from ds3231 import DS3231
from dht11 import DHT11

#串口6初始化
uart = UART(6,115200,timeout = 100)
#響應報文
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>時間:{}</p>
        <p>溫度:{}</p>
        <p>濕度:{}</p>
    </body>
</html>
"""

#------------------------DS3231----------------------------------#
ds=DS3231(2) #設置DS3231為I2C2接口,對應SCL-Y9,SDA-Y10
#初始日期和時間,設置一次即可
#ds.DATE([19,7,27])   #設置初始日期年、月、日
#ds.TIME([14,50,0])   #設置初始時間時、分、秒
#------------------------DHT11----------------------------------#
d = DHT11('X12')

def updateDisplay():

    DATE = [str(i) for i in ds.DATE()] #將返回的時間數(shù)據(jù)int轉str
    TIME = [str(i) for i in ds.TIME()]
    time = '-'.join(DATE) + ' ' + ':'.join(TIME) #讀取日期和時間,拼接成正常的時間格式
    data = d.read_data()             #讀取溫濕度的值
    return time,data

while True:
    if uart.any() > 0:
        request = uart.read().decode()
        print('request:',request)
        #當接收到GET請求頭時,進行響應.同時把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))


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

6.png


如果訪問時頁面出現(xiàn)了亂碼,主要有以下地方需要注意下:


- 1.main.py文件的編碼格式修改為UTF-8 無BOM格式;

- 2.代碼中的HTML字符串中需要添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

- 3.通過瀏覽器開發(fā)者工具查看,接收到的Response體是否完整。


大家可以依照本實驗的基礎加上自己喜歡的顯示屏,然后用紙盒等包裝起來,DIY一個超棒的家庭氣象站。同時也可以做一個路由器映射,這樣就可以隨時隨地查看家里的環(huán)境信息了。


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


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。

dc相關文章:dc是什么


pwm相關文章:pwm是什么


51單片機相關文章:51單片機教程


單片機相關文章:單片機教程


單片機相關文章:單片機視頻教程


單片機相關文章:單片機工作原理




關鍵詞:

相關推薦

技術專區(qū)

關閉