这里写自定义目录标题
- 利用ESP8266读DHT11温湿度
-
- 上传到APP端
- 硬件端
利用ESP8266读DHT11温湿度
链接如下 开源安卓App控制ESP8266,通过MQTT协议,APP Inventor 开发 利用ESP8266生产环境监测系统 APP inventor制作手机App实时显示 ESP8266读DHT开发微信小程序实时显示11温湿度 利用ESP8266生产环境监测系统 APP inventor制作手机App实时显示
聊天:当我帮室友完成设计时,我发现他的主题是这个智能浇花系统,可能是温度和湿度的测量,另一个是驱动电机浇水。这真的很简单,以前APP端准备用易安卓写,但想想有没有现成的(O(∩_∩)O哈哈~),真的找到了结果。 我有很长一段时间没有写博客,因为大四实习没有时间做这个,现在换了一份更容易的工作,终于可以冷静下来学习了。在找到这份工作之前,我也经历了一些变化,这真的影响了我,但回顾过去,我仍然发现人们在学习时是最安静和最舒适的。我希望你能一起鼓励我!
好了,废话不多说,先测试。DHT11,首先arduino IDE上得装个库Simple DHT传感器库
测试程序:
#include <SimpleDHT.h> // for DHT11, // VCC: 5V or 3V // GND: GND // DATA: 2 int pinDHT11 = D4; SimpleDHT11 dht11(pinDHT11); void setup() {
Serial.begin(115200); } void loop() {
// start working... Serial.println("================================="); Serial.println("Sample DHT11..."); // read without samples. byte temperature = 0; byte humidity = 0; int err = SimpleDHTErrSuccess; if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err
)
;
delay
(
1000
)
;
return
;
} Serial
.
print
(
"Sample OK: "
)
; Serial
.
print
(
(
int
)temperature
)
; Serial
.
print
(
" *C, "
)
; Serial
.
print
(
(
int
)humidity
)
; Serial
.
println
(
" H"
)
;
// DHT11 sampling rate is 1HZ.
delay
(
1500
)
;
}
上传到APP端
整体代码: 链接:https://pan.baidu.com/s/1DnC44mvc_GDg0oMtgqZA9A?pwd=wrwh 提取码:wrwh 包括arduino和APP Inventor代码 ESP8266的 D4引脚慎用,我感觉没其他引脚控制稳定,D4引脚为NodeMCU控制那个蓝灯的那个对应引脚 同时ESP8266给其他元器件供电时,选用RX,TX旁边的3V3 GND ,之前选择EN旁边的GND和VCC容易供电不稳
巴法云提供得代码是把数据通过TCP上传到服务器,然后用微信小程序显示与控制,还有一个版本是用APP Inventor显示但没有控制,我就是把这个APP Inventor添加了一个控制的作用,即通过APP给硬件发消息 详细看看逻辑设计, 框框中,我改变了之前只订阅一个主题的情况,修改为订阅temp和dian,这样APP既可以接收到temp发来的消息,也能通过dian发给硬件端消息(注意cmd=1,而不是cmd=3,具体看下面消息格式就懂了)
我还加了下面两个东西
当按钮被按下时,像APP发送以下消息,为什么要以这种格式发呢?看下面就知道了 这个topic后面接的‘dian’是因为我设置的收消息的topic叫这个名字,各位需要根据自己设计的进行更改
之前巴法云的APP Inventor设计的topic固定为‘temp’,我修改为订阅了两个topic,然后像专门收消息的topic发送开关指令即可实现相应开关状态。
TCP服务器地址IP: bemfa.com 服务器端口:8344 订阅主题,单次最多订阅八个主题(可以订阅多个,虽然是废话) cmd=1&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=xxx1,xxx2,xxx3,xxx4\r\n 正常返回: cmd=1&res=1
发布信息格式 cmd=2&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=off\r\n 正常返回: cmd=2&res=1(不发送也返回这个玩意)
订阅主题,并获取一条历史消息 cmd=3&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002\r\n 正常返回: cmd=3&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=on
获取一次时间 cmd=7&uid=xxxxxxxxxxxxxxxxxxxxxxx&type=1\r\n 正常返回: 2021-06-11 16:39:27
获取一次已发消息 cmd=9&uid=7d54f85af42976ee3c2693e6xxxxxxxx&topic=light002\r\n 正常返回: cmd=9&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=on
发送心跳 ping\r\n 正常返回: cmd=0&res=1
通过上述可以看出 我们发送需要发送 cmd=2&uid=xxxxxxxxxxxxxxxxxxxxxxx&topic=light002&msg=off\r\n 这个字符串 其中只有‘&msg=off’会被处理,前面都是前缀会被自动省略 这是arduino代码里面接收TCP发送的字符串,我们设置检测到&msg=on就打开反之则关闭