Wifiduino 物聯網連接實驗
之前發了一個wifi8266做穿透模塊的文章 但是相對來說步驟還是比較繁瑣 對於很多不需要過於複雜的功能 單純只需要幾個傳感器 略懂arduino 並且對管腳要求不高的人來說 Wifiduino是個非常好的選擇 在物聯網中文社區 的物聯網模塊 有塊這非常完善的教程 但是要求 有arduino 的一定基礎 但對於arduino和相應機制不太懂的同學就很不友好了 這無疑破滅了 一個有夢想的同學物聯網的夢想 所以我準備寫一個 新手友好的教程 讓有夢想的同學都能非常簡單的連上物聯網😀
1.實驗準備
1.1硬件準備
- wifiduino板子一塊(某寶上直接搜即可就一家買)
- 燒錄線(普通的安卓口下載線)
(沒錯!就是這嗎簡單)
1.2軟件準備
- arduino IED
- blinker 頭文件(粘到arduino IED 的libraries 文件夾下)
- 加載blinker SDK(注:就是一個應用程序運行之後,打開IED就提供WiFiduino的燒錄選項 就是可以選板子了 )
- blinker app (下載之後捅咕捅咕選擇arduinoWiFi鏈接 把API key 複製下來 具體步驟參見 arduino 中文社區 或者我的8266內篇文章)
- 下面是頭文件 和所謂的SDK的地址鏈接😀
https://pan.baidu.com/s/1iIMgWuyEoUBQ1nlKJ1Xrzw .
SDK加載的應用程序在wifiduino文件夾裏
第一個文件是binker頭文件
提取碼:6uvw
選一個運行運行之後重新打開Arduino IED就行了
2.實驗步驟
2.1選擇燒錄串口和燒錄板
加載完SDK之後在開發板選項裏一直向下拉就能找到
選擇端口 我這裏用的是COM7
2.2選擇程序
好的我們再次請出的hello blinker
這次我會把每一行代碼都寫上註釋
讓你明白每一句的意思
#define BLINKER_WIFI //MQTT協議所需要的宏定義 寫上就對了不用關注
#include <Blinker.h> //blinker的頭文件調用
char auth[] = "*********"; //在雙引號裏把*們換 成你在app上選擇WiFi鏈接出來的內一串key
char ssid[] = "*****"; //在雙引號換成寫你家WiFi名稱/手機熱點名稱
char pswd[] = "********"; //雙引號換成寫你要連接的wifi密碼
// 新建組件對象
BlinkerButton Button1("btn-abc"); //button是按鍵的意思 這句是新建一個按鍵型組件名叫btn-abc
BlinkerNumber Number1("num-abc"); //這句是新建一個數字組件名字交num-abc
int counter = 0;
// 按下按鍵即會執行該函數
void button1_callback(const String & state) //理解成這是一箇中斷調用函數 state 是調用中斷後手機app發來的值
{
BLINKER_LOG("get button state: ", state); //在blinker和Monitor(監視器的意思)上顯示這一坨
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); //按一次小燈狀態取反一次 亮就變成滅 滅就變成亮
}
// 如果未綁定的組件被觸發,則會執行其中內容
void dataRead(const String & data) //如果沒定義過的組件沒觸發了話 就是我們之前不是定義了倆組件 其餘的組件被觸發了比如按鈕被按了
{
BLINKER_LOG("Blinker readString: ", data); //同上面內個
counter++; //emmmm這句就算了不解釋了
Number1.print(counter); //counter的數值打印在(就是顯示在)blinker的我們定義過的數字組件上
}
void setup()
{
// 初始化串口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial); //打開blinker調試函數 debug(調試)就是你發送的信息啥啥的正不正常 否則你打開串口 會顯示error
// 初始化有LED的IO
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// 初始化blinker
Blinker.begin(auth, ssid, pswd); //鏈接wifi 到對應的API key上 就是聯網然後到你手機界面用的
Blinker.attachData(dataRead); //初始化中斷 如果被觸發 調用dataRead函數 觸發條件:沒有定義過的按鍵被按了先這嗎理解
Button1.attach(button1_callback);//初始化button1按鍵的中斷 如果button1被按了話 就調用括號裏的函數
}
void loop() {
Blinker.run(); //blinkr驅動開始不斷的接受值和發送值
}
2.3程序上傳調試
鏈接成功了打開串口會有以下顯示MQTT connected(服務器已連接)
打開手機界面載入示例進去的界面
然後你按就可以了串口上就會有類似的顯示
3.官方網址
鏈接: Arduino中文社區blinker教程.
裏面有進階一點的操作,溫溼度模塊,以及鏈接小愛同學等教程
4.後言
我盡我所能解釋的看起來很"愚蠢"給希望從0開始的同學減輕一些負擔,因爲作爲一個普普通通的電子專業本科生,覺得如果每一個想學的東西還在想學的勁頭的時候,不會因爲一開始就太難而被勸退,那就一定能有收穫,因爲很多有人解釋有人教一分鐘就能掌握的事情,自己從頭上網找一句一句扣可能需要很長時間,可能以後畢業用不上這些知識,那就留在這,自己以後看一看可能還覺得挺好玩的.