基于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和运行效果:

posted @ 2019-04-03 15:59  optt  阅读(1672)  评论(0编辑  收藏  举报