转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇

前言

上一篇教程中我们实现了一个简单网页的显示。本篇呢,增加上温湿、时间等信息的展示,实现一个简单的家庭气象站。

TPYBoard v201实物图:

准备工作

硬件&工具

- TPYBoard v201 开发板 1块
- TPYBoard v201 网络参数配置的工具
- 路由器、电脑、网线等
- DHT11温湿度模块 1个
- DS3231时钟模块 1个

知识储备

- 了解基本的TCP、HTTP通信协议等相关的知识。不知道的可自行去百度,相关教程很多。
- 掌握DHT11温湿度模块的使用方法。
- 掌握DS3231时钟模块的使用方法。

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>,点击搜索设备,成功的情况下会在

上面的列表中显示搜索到的设备。

点击搜素到的设备,可以读取到该设备的相关参数。同时也可以进行修改并保存。接下来,我们要进行IP地址、端口等设置。IP地址我这里设置了静态

IP<192.168.0.99>,防止每次重新启动时会改变IP。

接下来端口设置,模块工作方式选择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 源码:

 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()] #将返回的时间数据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。

如果访问时页面出现了乱码,主要有以下地方需要注意下:

- 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

MicroPython TPYBoard v201 简易家庭气象站的实现过程的更多相关文章

  1. micropython TPYBoard v201 简易的web服务器的实现过程

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 前言 TPYBoard v201开发板上搭载了以太网 ...

  2. [MicroPython]TPYBoard开发板DIY小型家庭气象站

    对于喜欢登山的人来说,都会非常关心自己所处的高度跟温度,海拔高度的测量方法,海拔测量一般常用的有两种方式,一是通过GPS全球定位系统,二是通过测出大气压,根据气压值算出海拔高度. BMP180是一直常 ...

  3. MicroPython教程之TPYBoard开发板DIY小型家庭气象站

    众所周知,iPhone6/6Plus内置气压传感器,不过大家对于气压传感器还是很陌生.跟字面的意思一样,气压传感器就是用来测量气压的,但测量气压对于普通的手机用户来说又有什么作用呢? 海拔高度测量 对 ...

  4. MicroPython TPYBoard v702实现HTTP应用功能

    [Micropython]TPYBoard v702 HTTP应用功能 转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:Micro ...

  5. [Micropython]TPYBoard v202 利用单片机快速实现家庭智能控制平台

    一提到智能家庭,大家可能首先想到的是各种大佬级公司搞的牛逼产品,或者说是创新产品.想想就觉得很复杂,有的用工控机,有的用树莓派,还有的用arduino,不管用什么,都绕不过服务器进行控制,比如yeel ...

  6. [Micropython]TPYBoard v202 v102+v202 家庭无线温湿度检测

     一.实验器件 1.TPYBoard v102 1块 2.TPYBoard v202 1块 3.Nokia 5110LCD显示屏 1块 4.DHT11温湿度传感器 1个 5.micro USB 数据线 ...

  7. 如何在MicroPython TPYBoard 添加自定义类库

    开始之前,首先要感谢一下TPYBoard技术交流群(157816561)-云之初晓网友的分享.   今天简单分享下如何将自己编写的一些Python脚本的类库添加到固件中,在使用时只需import调用, ...

  8. [Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵

    一.什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机, ...

  9. [Micropython]TPYBoard v10x MFRC522智能门禁系统

    MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.也就是射频卡. 经常忘带钥匙,最尴尬的上周竟然去开4楼的门,(家住五楼,无电梯),开了好一会没打开,事后对4楼 ...

随机推荐

  1. Mount挂载/data时出现mount: /data is busy 如何解决?

    1.df -h查看下挂载点/data是否正在使用,有时候会存在挂载了,但df -h不会显示出来,这时候 grep “/data” /proc/mounts 来进行查看 2.当确认挂载点/data正在使 ...

  2. 推荐一个高效,易用功能强大的可视化API管理平台

    项目管理 提供基本的项目分组,项目管理,接口管理功能 接口管理 友好的接口文档,基于websocket的多人协作接口编辑功能和类postman测试工具,让多人协作成倍提升开发效率 MockServer ...

  3. 【oracle】Oracle整理笔记

    原博主总结了很多技能和小技巧,本人觉的非常实用,转载记录下: Oracle学习笔记整理手册 作者:@smileNicky 链接:https://blog.csdn.net/u014427391/art ...

  4. vue注意项

    1.通过官方vue生命周期图,总结其中的几个钩子函数 var vm = new Vue({ el: '#app', data: { }, beforeCreate() { alert('组件刚刚被创建 ...

  5. npm设置淘宝代理

    npm config set registry https://registry.npm.taobao.org npm info underscore

  6. idea 创建maven项目(一)

    1.新建 Project 2.点击Next 3.填写组织名称和项目名称,点击next 4.在你的本地仓库目录下创建settings.xml文件,把mirror的url改成阿里云的 <?xml v ...

  7. hiccup和Latch off

    hiccup(Constant-Current)和Latch off 限电流保护的两种形式 hiccup:一种是以恒定电流存在,这种一般是可恢复的,当故障解除后自动恢复: Latch off:一种是锁 ...

  8. AntD使用timePiacker封装时间范围选择器(React hook版)

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  9. CDH 5.15.2 离线安装

    一.前置准备 1. 基础信息 1.1 机器 机器名 服务 hadoop1 主节点 hadoop2 data.task hadoop3 data.task 1.2 服务版本 服务 版本 cdh 5.15 ...

  10. django执行mysql恢复的时候出现“The request's session was deleted before the request completed. The user may have logged out in a concurrent request, for example.”

    版本: django:2.1.7 python:3.7 mysql:5.7.25 今天在用django做mysql备份和恢复的时候,备份没问题,恢复时出现如下错误提示: The request's s ...