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

相关文章
相关标签/搜索