zoukankan      html  css  js  c++  java
  • 基于esp01s的室内智能温湿度监测利用

    要实现的效果:实时将室内温度上报到手机APP,可远程查看信息。

    需要的元器件:esp01s模块、dht11温湿度传感器、两节5号电池,杜邦线若干。

    实现思路:利用esp模块的联网和端口能力,将温湿度传感器的数据通过mqtt协议转发到手机APP。

    详细操作:

      1.esp模块串口调试

    程序烧录需要通过esp模块的串口,这里使用USB转TTL模块,模块电路图和接线如下图所示,

    esp01s是安信可公司根据乐鑫esp8266模块开发的,其中CH_PD引脚对应01s的en模块,引脚说明如下:

    需要注意的是,mac平台需要安装usbttl驱动,根据自己的转接设备下载驱动,这里使用的驱动是CH340系列,驱动安装成功后,系统报告会有usb_serial

      2.程序烧录

    这里使用的是arduino ide,需要添加扩展板支持:http://arduino.esp8266.com/stable/package_esp8266com_index.json

    然后下载esp8266的扩展板支持:

    需要注意的是我这里没有使用esp的nodemcu,所以扩展板选择:

    做完这些后就可以愉快的烧录程序了~

      3.程序编写

    arduino ide需要下载两个支持库:

    SimpleDHT库提供了读取dht11传感器数据的简单接口,PubSubClient提供了mqtt功能。

    主要代码

    void setup() {
     // 设定串口波特率 Serial.begin(
    115200);
     // 设置WiFi setup_wifi();
     // 配置mqtt代理服务和信息接收 client.setServer(mqtt_server,
    1883); client.setCallback(callback); } void loop() { if (!client.connected()) {
       // 重新连接网络 reconnect(); } client.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"); // 构建mqtt发布信息 String payload = "{"; payload += ""temp":"; payload += temperature; payload += ","; payload += ""humidity":"; payload += humidity; payload += "}"; // Send payload char attributes[100]; payload.toCharArray( attributes, 100 );
     // 将信息发布到相应的主题
    client.publish(TOPIC, attributes );
    // DHT11 sampling rate is 1HZ.
      delay(1500);
    }

    完整程序代码:esp_dhtt

    App和运行效果:

  • 相关阅读:
    java中Array/List/Map/Object与Json互相转换详解
    推荐几款开源的js日期控件
    12款优秀的 JavaScript 日历和时间选择控件
    12款优秀的 JavaScript 日历和时间选择控件
    StringTokenizer(字符串分隔解析类型)
    StringTokenizer(字符串分隔解析类型)
    javascript中的undefined 和 not defined
    javascript中的undefined 和 not defined
    6.静态函数库设计
    5. Linux应用程序地址布局
  • 原文地址:https://www.cnblogs.com/helmsyy/p/10649463.html
Copyright © 2011-2022 走看看