资讯详情

智能浇花系统(ESP8266+APP Inventor+DHT11)

这里写自定义目录标题

  • 利用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就打开反之则关闭

硬件端

抽水泵用继电器连接着,这里没有画出来,除了DHT11以外都是NodeMCU上自带的,不用管

标签: 温湿度传感器ee375

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司