物联网-wemos D1 Mini (esp8266)实验九 --- blynk APP远程控制格力空调开机并显示温湿度

  • 概述
  • 实验材料
  • 硬件
    • 硬件连接图
    • 引脚连接对照表
  • Arduino端软件编写
    • 测试Wemos D1 Mini温湿度采集程序
      • DHT库的安装
      • 将DHT采集代码整合到实验八中
  • Bylnk端软件编写
  • 最终显示效果
  • 完整源代码

概述

这个实验室在实验八的基础上增加了温湿度数据的采集,需要在之前的Bylnk项目中新增加一个显示控件。

实验材料

  • Wemos D1 Mini开发板 *1 (10元)
  • KY-005红外发射模块 *1 (1元)
    或者 5mm 940nm红外发射管 (0.1元)
  • 170孔mini面包板*1(可选)(1元)
  • 可选:2N2222*1(或者2N3904)
  • Wemos D 1Mini DHT22扩展板(19元)/DHT22模块(14元)/DHT11(5.5元)模块 3选1
    合计:16-31元

硬件

硬件连接图

连线图中使用的是DHT11模块,DHT22的连接方式相同。扩展板的使用最为简单,之间插上即可(注意插的时候板子的缺口要在同一个方向)。

引脚连接对照表

  • KY-005引脚连接图
KY-005 Wemos D1 Mini
S D3
5V 5V
Gnd Gnd
  • DHT11引脚连接图
DHT11 Wemos D1 Mini
1 3.3V
2 D4
3 悬空
4 Gnd
  • DHT22引脚连接图
DHT22 Wemos D1 Mini
+ 3.3V
OUT D4
- Gnd

Arduino端软件编写

测试Wemos D1 Mini温湿度采集程序

DHT库的安装

会安装的这步可以略过
DHT库下载地址

  1. 在页面中第一步点击Clone or download,第二步点击Download ZIP

  2. 打开Arduino IDE,在项目->加载库->添加一个.ZIP库的对话框中选择你刚刚下载的.zip文件即可。

  3. 注意:这个DHT库依赖另外一个Adafruit Unified Sensor Driver库,所以为了正确运行还要装一下这个库。否则会报错。提示找不到一个文件,名字我忘记了。我安装的时候就报错了,又加装了这个好了。
    Adafruit Unified Sensor Driver库下载

  4. github上有关于wemos D1 Mini非常丰富的示例程序
    github上的关于wemos D1 Mini全部例程下载地址
    打开上面的地址后,会显示下图的结构,examples->04.Shields->DHT_Shield->Simple目录下有完整测试代码。

  5. 上传程序到开发板,打开arduino IDE自带的串口软件观察是否正确的采集到了数据。

  6. 完整中文注释代码

/* DHT Shield - Simple** Example testing sketch for various DHT humidity/temperature sensors* Written by ladyada, public domain** Depends on Adafruit DHT Arduino library* 这个程序依赖Adafruit DHT Arduino library这个库文件* https://github.com/adafruit/DHT-sensor-library* 库文件的下载地址见上述连接*/#include "DHT.h"#define DHTPIN D4     // what pin we're connected to 我们连        //接到传感器信号引脚的接口// Uncomment whatever type you're using!
//将你选用的器件型号前面的注释去掉
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
//引脚连接说明,特别提出如果板子是3.3v逻辑的dht电源就接3.3v而不要接5v,比如我们的wemos D1 MIni// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);//初始化一个dht示例void setup() {Serial.begin(9600);//开启串口Serial.println("DHTxx test!");dht.begin();//开启dht
}void loop() {// Wait a few seconds between measurements.delay(2000);//延时2S// Reading temperature or humidity takes about 250 milliseconds!// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)float h = dht.readHumidity();//读湿度// Read temperature as Celsius (the default)float t = dht.readTemperature();//读温度// Read temperature as Fahrenheit (isFahrenheit = true)float f = dht.readTemperature(true);// Check if any reads failed and exit early (to try again).if (isnan(h) || isnan(t) || isnan(f)) {Serial.println("Failed to read from DHT sensor!");return;}// Compute heat index in Fahrenheit (the default)float hif = dht.computeHeatIndex(f, h);// Compute heat index in Celsius (isFahreheit = false)float hic = dht.computeHeatIndex(t, h, false);
//串口输出Serial.print("Humidity: ");Serial.print(h);Serial.print(" %\t");Serial.print("Temperature: ");Serial.print(t);Serial.print(" *C ");Serial.print(f);Serial.print(" *F\t");Serial.print("Heat index: ");Serial.print(hic);Serial.print(" *C ");Serial.print(hif);Serial.println(" *F");
}

将DHT采集代码整合到实验八中

  • 将获取温湿度的代码写成函数供Bylnk虚拟写程序调用

int getTemperat() {
float h = _dht.readHumidity();//读取湿度值放入h变量
float t = _dht.readTemperature();//读取温度值放入t变量
float f = _dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(“Failed to read from DHT sensor!”);
return 0 ;
}
// Compute heat index in Fahrenheit (the default)
float hif = _dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = _dht.computeHeatIndex(t, h, false);
return int(t);
}

  • 增加对虚拟引脚v5的操作函数
  • BLYNK_READ(V5) {//上传温湿度数据 Blynk.virtualWrite(V5,getTemperat());//虚拟引脚写事件
    }

  • 编译上传程序到开发板

Bylnk端软件编写

  • 添加一个湿度显示控件
  • 设置它的参数,虚拟引脚V5
    其中LABEL部分要特别注意,你书写中/pin/位置就是你接收的温湿度数据显示位置。其他部分的文字你可以根据自己喜好设定。但是这个软件貌似对中文不是很友好。。我卡bug了。。。切换到英文输入法,起个英文显示比较安全。

最终显示效果

完整源代码

#include <ESP8266WiFi.h>//ESP8266WiFi设置库
#include <IRremoteESP8266.h>//ESP8266红外控制库
#include <IRsend.h>//红外发送库
#include <ir_Gree.h>//添加格力空调的库
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"//添加DHT的库#define DHTPIN D4     // 扩展板连接的是D4引脚//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302)//板载的温湿度传感器是DHT22款
//#define DHTTYPE DHT21   // DHT 21 (AM2301)IRGreeAC _ac(D3); //创建一个格力空调的控制实例
DHT _dht(DHTPIN, DHTTYPE);//创建一个DHT的实例BLYNK_WRITE(V1)//Blynk端的按钮按下
{int pinValue = param.asInt(); //将按钮控件上传的值放入pinValue变量中Serial.print("V1 Slider value is: ");Serial.println(pinValue);//测试时方便串口进行监测if(pinValue){//如果按钮按下发送空调ON红外码 开:1 关:0_ac.on();//生成空调“开”的红外码//-ac是格力空调实例_ac.send();//发送红外命令}
}
BLYNK_READ(V5) {//上传温湿度数据Serial.println("entered");Blynk.virtualWrite(V5,getTemperat());//虚拟引脚写事件
}
int getTemperat() {float h = _dht.readHumidity();//读取湿度值放入h变量float t = _dht.readTemperature();//读取温度值放入t变量float f = _dht.readTemperature(true);if (isnan(h) || isnan(t) || isnan(f)) {Serial.println("Failed to read from DHT sensor!");return 0 ;}// Compute heat index in Fahrenheit (the default)float hif = _dht.computeHeatIndex(f, h);// Compute heat index in Celsius (isFahreheit = false)float hic = _dht.computeHeatIndex(t, h, false);Serial.print("Humidity: ");Serial.print(h);Serial.print(" %\t");Serial.print("Temperature: ");Serial.print(t);Serial.print(" *C ");Serial.print(f);Serial.print(" *F\t");Serial.print("Heat index: ");Serial.print(hic);Serial.print(" *C ");Serial.print(hif);Serial.println(" *F");return int(t);}
void setup() {Serial.begin(115200);_ac.begin();//开启空调红外_dht.begin();//开启DHTSerial.print("dht ok");Blynk.begin(u8"ce88b0934e6e425fbf9c99743f3cf2b8", u8"iPhone", u8"00000000");Blynk.begin(u8"token值", u8"wifi名字", u8"wifi对应的密码");}// the loop function runs over and over again forever
void loop() {Blynk.run(); }

wemos D1 Mini (esp8266)实验九 --- blynk APP远程控制格力空调开机并显示温湿度DHT22相关推荐

  1. 阿里云IOT入门教程(三)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭

    阿里云IOT入门教程(一)阿里云IOT Studio自建手机App控制Wemos D1 Mini( ESP8266 )板载灯亮灭 概述 所需材料 Mqtt预备知识 hacklab端开发 * 硬件端上报 ...

  2. 物联网-wemos D1 Mini (esp8266)实验十 ---服务器版温度计

    物联网-wemos D1 Mini (esp8266)实验十 ---服务器版温度计 概述 实验材料 硬件连接图 引脚对照表 DHT库的引入 网页代码 Arduino端代码 效果展示 概述 Wemos ...

  3. ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏

    ESP8266/ESP32/nodeMcu/wemos D1 MINI开发板用TFT_eSPI库驱动ST7789(240*240)TFT显示屏 材料 硬件连接 引脚连接表 引脚连接图 安装TFT_eS ...

  4. WeMOS D1 MIni(Esp8266)、NodeMCU与ST7789 TFT液晶显示屏绘制图形

    WeMOS D1 MIni(Esp8266).NodeMCU与ST7789 TFT液晶显示屏绘制图形 材料 硬件连接图 Arduino IDE支持Wemos D1 Mini. 库安装 Arduino_ ...

  5. Esp8266 / nodeMCU / wemos D1 MINI GUIslice的配置(官翻)

    Esp8266 / nodeMCU / wemos D1 MINI GUIslice的配置(官翻) 确定显示屏型号 扩展版类(shield) 转接板类(breakout Board) 目前支持的显示屏 ...

  6. GUIBuilder Walkthrough Esp8266 /nodeMCU / Wemos D1 mini 版教程(官翻详解演示版)

    GUIBuilder Walkthrough Esp8266 /nodeMCU / Wemos D1 mini版教程(官翻演示版) GUIBuilder端基本操作 添加标题(title) 添加一个计数 ...

  7. 基于物联网的多点温度监控系统(WeMOS D1 WIFI ESP8266 开发板)

    基于物联网的多点温度监控系统 一.设计任务与要求 1. 任务 设计制作基于物联网的多点温度监控系统. 2. 要求 1.实时获取3个被测对象温度,温度测量范围:-55℃ -+125℃:测量精度:0.1℃ ...

  8. 实验九、 键盘扫描及数码管显示实验

    实验九. 键盘扫描及数码管显示实验 1.实验目的 学习了解键盘扫描的基本原理. 掌握通过并行接口芯片对键盘进行扫描并在多位数码管显示数字的方法. 2.实验内容 编写程序,实现如下功能:初始时数码管无显 ...

  9. 物联网-wemos D1 Mini (esp8266)实验五 -- 与Blynk合作的土壤湿度检测与远程浇花系统

    1.材料: 2N2222 * 1 静音水泵*1 1K电阻*1 土壤湿度传感器 (带LM393模块)* 1 D1 Mini *1 面包板 *1 接线夹一个 杜邦线若干 2.Blynk针对树莓派 ardu ...

最新文章

  1. python字符串按长度分割_python 按照固定长度分割字符串的方法小结
  2. 区块链概况:从数字货币说起
  3. nosql介绍、memrcached介绍、安装memcached、查看memcachedq状态
  4. 基于光学导航系统,矩阵变换和3D-2D配准研究
  5. 【Spring源码】从源码实现的角度解析spring的InitializingBean的afterPropertiesSet方法和init-method区别和应用
  6. How to get ABAP code coverage result
  7. linux tomcat8 启动慢,Linux系统下Tomcat8启动速度很慢的解决方法
  8. 版本字符串比较工具接口常用接口函数
  9. python不能安装怎么办_python3安装不上怎么办
  10. linux测试有效组,软件测试:三分钟掌握Linux命令之用户用户组命令(必读系列三)...
  11. 命令+mybatis-generator插件自己主动生成Mapper映射文件
  12. 企业网站+Axure企业官网通用模板+公司官网通用模板+web端高保真原型+门户官网+物流企业+门户网站+服务中心+产品中心+新闻中心+帮助中心+企业官网+公司官网+公司网站+登录注册+高保真交互
  13. python自动化办公教程-python办公自动化:Excel操作入门
  14. 每天一个PS技巧(原理+实践)——简单背景的抠图与毛发抠图
  15. matlab 按文件名排序,文件名排序Matlab程序
  16. 图解:冒泡排序及其优化
  17. javascript的ActiveXObject造成“Automation服务器不能创建对象”
  18. Fiddler使用之工具栏介绍
  19. Spring MVC 详解
  20. windows下网络诊断基本命令

热门文章

  1. SHARP GP2Y1014笔记
  2. 影响域名解析生效的原因有哪些?
  3. linux u盘 命令,制作U盘版linux系统安装盘(DD命令)
  4. 520到了,是时候展示真正的技术了,程序猿的浪漫代码集合
  5. c4android插件下载,c4droid gcc插件下载
  6. 办公室礼仪:在工作中永远不要说的5件事
  7. Windows文件操作XCOPY命令的使用方法及参数详解
  8. MaxCompute用量明细账单分析最佳实践
  9. Lync 2010与Lync 2013共存及迁移部署参考v1.0
  10. Android材料设计之材料主题