物联网-wemos D1 Mini (esp8266)实验八 --- blynk APP远程控制格力空调开机
物联网-wemos D1 Mini (esp8266)实验八 --- blynk APP远程控制格力空调开机
实验八跟实验七的实验材料的是一样的,只是在软件方面做了一些变换,利用Blynk软件中按钮这个控件提供的虚拟引脚(V1)的触发事件,在Wemos D1 Mini中实现按钮开关状态的检测从而控制发送格力空调开机的红外码。
功能描述
用户通过Blynk App控制家中的Wemos D1 Mini装置实现远程空调开启。
系统连接图
(在线的免费画图软件onProcess绘制)
实验材料
硬件连接图
IRremote ESP8266库安装
上述三个部分参见实验七物联网-wemos D1 Mini (esp8266)实验七 — 利用ESP8266 IRremote库实现格力空调控制
引脚连接对照表
KY-005 | Wemos D1 Mini |
---|---|
S | D3 |
5V |
5V |
Gnd | Gnd |
Bylnk App端设置
注册Blynk
新建一个项目
增加一个按钮
以上三个步骤参见之前的帖子,之前帖子里写的很详细这里就不重复叙述了。
- 物联网-wemos D1 Mini (esp8266)实验五 – 与Blynk合作的土壤湿度检测与远程浇花系统
- 物联网-wemos D1 Mini (esp8266)实验六 — 超简单两句代码实现Blynk手机app远程控制板载LED亮灭
- 物联网-wemos D1 Mini (esp8266)实验七 — 利用ESP8266 IRremote库实现格力空调控制
按钮控件的设置
Blynk软件中,点击ON默认发送的是数字‘0’
,而点击OFF默认发送的是数字‘1’
。这和我们一般的使用习惯相反。所以为了避免之后编程时发生混淆。我们将按钮控件的显示名称替换下。将ON的名字改为‘OFF’
,而OFF的名字改为‘ON’
。
经测试,Blynk的标签支持中文,所以你改成中文字体也行。
Arduino端程序编写
Blynk库安装
Arduino IDE支持Wemos D1 Mini开发板
测试虚拟引脚V1数据接收
Blynk软件提供了两种和Wemo D1 Mini连接的方式,一个是直接与物理引脚连接,直接改变引脚电平高低(如浇花实验中控制水泵通断和板载LED控制实验),另一种则是提供了一些虚拟的引脚,供开发人员在程序中检测到触发后执行自己的一些操作(如浇花实验中的土壤湿度读取以及本实验中检测按钮点击后发送空调红外指令 )。
- BLYNK_WRITE(V1)
:
当Blynk中的按钮触发后,Arduino 程序中的函数就会触发。(本例中,Blynk App端按钮的虚拟连接为V1,如果你用的是V2,下面程序改成BLYNK_WRITE(V2)
即可)。
- param.asInt()
:
将按钮控件触发后的值以整形的方式传递出来。
下面的函数就是当V1连接的按钮触发后。状态值赋值给pinValue
变量
BLYNK_WRITE
(V1)
{
int pinValue =param.asInt()
;
}
- 测试源代码
此处需要一个头文件#include <BlynkSimpleEsp8266.h>
#include <BlynkSimpleEsp8266.h>
BLYNK_WRITE(V1)//此处的V1对应的就是Blynk程序中按键控件设置的虚拟引脚号,
{
int pinValue = param.asInt(); // 获取从V1虚拟引脚的接收到的数据
Serial.println(pinValue);//测试阶段用串口显示V1收到的值,方便调试
}
void setup() {
Serial.begin(115200);
Blynk.begin(u8"xxxxxxxxxxxxxxx", u8"xxxxxxxx", u8"xxxxxxxx");
// Blynk.begin(u8"token值", u8"wifi名字", u8"wifi对应的密码");
}
// the loop function runs over and over again forever
void loop() {
Blynk.run();
}
- 测试演示图
切换Blynk App端按钮的开关状态,可以接受到其相应的状态值。有木有小机灵鬼。。。发现什么菜单呢。。。。 emmm 是的。。嘿嘿嘿 ,,,我这个Blynk项目直接使用实验六控制板载LED那个按钮项目改的哇。。。
发送空调指令
- 此处需要4个头文件
#include <ESP8266WiFi.h>//ESP8266WiFi设置库
#include <IRremoteESP8266.h>//ESP8266红外控制库
#include <IRsend.h>//红外发送库
#include <ir_Gree.h>//添加格力空调的库 - 空调指令发送
BLYNK_WRITE
(V1)
{
int pinValue =param.asInt()
;
if(== pinValue==){//如果按钮按下发送空调ON红外码
_ac.on();//生成空调“开”的红外码//-ac是格力空调实例
_ac.send();//发送红外命令
}
}
完整源代码
#include <ESP8266WiFi.h>//ESP8266WiFi设置库
#include <IRremoteESP8266.h>//ESP8266红外控制库
#include <IRsend.h>//红外发送库
#include <ir_Gree.h>//添加格力空调的库
#include <BlynkSimpleEsp8266.h>
IRGreeAC _ac(D3); //创建一个格力空调的控制实例
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); //将按钮控件上传的值放入pinValue变量中
Serial.print("V1 Slider value is: ");
Serial.println(pinValue);//测试时方便串口进行监测
if(pinValue){//如果按钮按下发送空调ON红外码 开:1 关:0
_ac.on();//生成空调“开”的红外码//-ac是格力空调实例
_ac.send();//发送红外命令
}
void setup() {
Serial.begin(115200);
_ac.begin();//开启空调红外
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();
}
参考文献
【1】Blynk官网文档https://blynk.io/en/developers
预告
明天争取更新这个空调控制应用的升级版,增加手机端实时读取室内温湿度。这样用户在头回家前就可以通过观察家里温湿度状态决定是否要提前开启空调,,哇卡卡卡。