物聯網-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
預告
明天爭取更新這個空調控制應用的升級版,增加手機端實時讀取室內溫溼度。這樣用戶在頭回家前就可以通過觀察家裏溫溼度狀態決定是否要提前開啓空調,,哇卡卡卡。