今天我們將使用Google Firebase 云來控制一個(gè)使用 NodeMCU ESP8266 的 LED。
設(shè)置 NodeMCU ESP8266 Wi-Fi 模塊
設(shè)置 NodeMCU 非常簡(jiǎn)單,不會(huì)花費(fèi)太多時(shí)間。這可以通過幾個(gè)簡(jiǎn)單的組件和簡(jiǎn)單的步驟來完成。
所需組件
NodeMCU ESP8266(12E)
引領(lǐng)
如果您沒有 NodeMCU ESP8266(12E),那么您也可以將通用 ESP8266 模塊與 Arduino UNO 和 Arduino IDE 一起使用。要了解如何使用 Arduino UNO 和 Arduino IDE 對(duì)通用 ESP8266 模塊進(jìn)行編程,只需點(diǎn)擊鏈接即可。
電路原理圖
完成所有組件設(shè)置后,請(qǐng)按照以下簡(jiǎn)單步驟操作:
將 NodeMCU 與計(jì)算機(jī)連接。
打開 Arduino IDE。
轉(zhuǎn)到“工具”并選擇“板”。
在板的部分中,選擇“NodeMCU V1.0(ESP-12E 模塊)”。
還要選擇適當(dāng)?shù)?COM 端口。
按照下面提到的步驟找到“FIREBASE_HOST”和“FIREBASE_AUTH”后,在下面給出的草圖中編輯并上傳。
使用 Google Firebase 編程 NodeMCU ESP8266
最后給出了帶有工作視頻的完整程序。在這里,我們將解釋代碼的幾個(gè)重要部分。
首先包括使用 ESP8266 和 firebase 的庫。
#include 《ESP8266WiFi.h
#include 《FirebaseArduino.h
按照以下鏈接下載并安裝庫:
https://github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
https://github.com/bblanchon/ArduinoJson
編譯時(shí),如果您收到未安裝 ArduinoJson.h 庫的錯(cuò)誤,請(qǐng)使用上面給出的鏈接安裝它。
這兩個(gè)參數(shù)對(duì)于與 firebase 通信非常重要。設(shè)置這些參數(shù)將啟用 ESP8266 和 firebase 之間的數(shù)據(jù)交換。要為您的項(xiàng)目查找這些參數(shù),請(qǐng)按照下面后面部分(設(shè)置 Firebase)中給出的步驟進(jìn)行操作。
#define FIREBASE_HOST "your-project.firebaseio.com" // 來自 firebase id 的項(xiàng)目名稱地址 #define FIREBASE_AUTH "06dEpqanFg***************qAwnQLwLI" // 生成的密鑰火力基地
成功找到憑據(jù)后,只需在上面的代碼中替換即可。
以下參數(shù)用于連接到您的家庭 Wi-Fi 網(wǎng)絡(luò)或您設(shè)置的網(wǎng)絡(luò)。用您的網(wǎng)絡(luò) SSID 和密碼替換 SSID 和密碼。為了與firebase通信,還需要互聯(lián)網(wǎng)。
#define WIFI_SSID "xxxxxxxxxxxxxx" // 輸入你的家庭或公共wifi名稱 #define WIFI_PASSWORD "xxxxxxxxxxxxxx" //wifi ssid的密碼
此語句嘗試連接您輸入的 Wi-Fi 網(wǎng)絡(luò)。
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //嘗試連接wifi
連接 Wi-Fi 時(shí),如果沒有連接到網(wǎng)絡(luò),則只需print(.)直到連接不成功。
while (WiFi.status() != WL_CONNECTED) { Serial.print("."); 延遲(500); }
此語句嘗試與 firebase server 連接。如果主機(jī)地址和授權(quán)密鑰正確,則連接成功
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // 連接到火力基地
這是 firebase 庫提供的用于向 firebase 服務(wù)器發(fā)送字符串的類。要使用更多課程,請(qǐng)?jiān)L問此鏈接。最初將一個(gè)字符串發(fā)送到主路徑。借助此功能,我們可以更改 LED 的狀態(tài)。
Firebase.setString("LED_STATUS", "OFF"); //發(fā)送初始狀態(tài)字符串
將一個(gè)狀態(tài)字符串發(fā)送到 firebase 路徑后,編寫此語句以從同一路徑獲取 LED 的狀態(tài)并將其保存到變量中。
fireStatus = Firebase.getString("LED_STATUS"); // 從 firebase 獲取 ld 狀態(tài)輸入
如果接收到的字符串為“ON”或“on”,則只需打開內(nèi)置 LED 和外部連接的 LED。
if (fireStatus == "ON" || fireStatus == "on") { // 比較從 firebase 接收到的 LED 狀態(tài)輸入 Serial.println("Led Turned ON"); 數(shù)字寫入(LED_BUILTIN,高);// 使 bultin led ON digitalWrite(led, HIGH); // 使外部 LED 開啟 }
如果接收到的字符串為“OFF”或“off”,則只需關(guān)閉內(nèi)置 LED 和外部連接的 LED。
else if (fireStatus == "OFF" || fireStatus == "off") { // 比較從 firebase 接收到的 LED 狀態(tài)輸入 Serial.println("Led Turned OFF"); 數(shù)字寫入(LED_BUILTIN,低);// 使 bultin led 關(guān)閉 digitalWrite(led, LOW); // 關(guān)閉外部 LED }
如果收到的字符串不是這些字符串中的任何一個(gè),則忽略并打印一些錯(cuò)誤消息。
else { Serial.println("錯(cuò)誤的憑證!請(qǐng)發(fā)送 ON/OFF"); }
設(shè)置 Firebase 控制臺(tái)
如果您是第一次使用 Firebase,那么您可能需要一些時(shí)間來設(shè)置它。請(qǐng)耐心等待并按照以下步驟操作。
1.如果您有Gmail id,則無需注冊(cè)firebase,如果您沒有Gmail id,則注冊(cè)一個(gè),然后您可以進(jìn)入下一步。
2. 打開瀏覽器并轉(zhuǎn)到“firebase.google.com”
3.在右上角轉(zhuǎn)到“轉(zhuǎn)到控制臺(tái)”
4.點(diǎn)擊“添加項(xiàng)目”
5. 輸入您的項(xiàng)目名稱。
6. 接受條款和條件,創(chuàng)建項(xiàng)目并點(diǎn)擊“繼續(xù)”
您已成功創(chuàng)建項(xiàng)目。查找主機(jī)名和授權(quán)密鑰,也稱為密鑰。為此,請(qǐng)按照以下步驟操作:
7. 轉(zhuǎn)到設(shè)置圖標(biāo)(齒輪圖標(biāo)),然后單擊“項(xiàng)目設(shè)置”
8. 現(xiàn)在點(diǎn)擊“服務(wù)帳戶”
9. 可以看到“Firebase admin SDK”和“Database Secrets”兩個(gè)選項(xiàng)
10.點(diǎn)擊“數(shù)據(jù)庫秘密”
11. 滾動(dòng)您的項(xiàng)目名稱,“顯示”選項(xiàng)出現(xiàn)在項(xiàng)目右側(cè)
12.點(diǎn)擊“顯示”,現(xiàn)在您可以看到為您的項(xiàng)目創(chuàng)建的密鑰
13. 復(fù)制密鑰并保存到記事本。這是我們?cè)谏厦娴?Arduino 程序中編寫的“FIREBASE_AUTH”字符串。
14.現(xiàn)在轉(zhuǎn)到左側(cè)控制欄上的“數(shù)據(jù)庫”并單擊它
15.向下滾動(dòng)并單擊“創(chuàng)建數(shù)據(jù)庫”
16. 選擇“Start in test mode”并點(diǎn)擊“Enable”
17. 現(xiàn)在你的數(shù)據(jù)庫已經(jīng)創(chuàng)建好了,你將不得不再次來到這個(gè)部分來控制 LED
18.現(xiàn)在就在數(shù)據(jù)庫上方你可以看到
“ https://your_project_name.firebaseio.com/ ”
19. 只需復(fù)制“ your_project_name.firebaseio.com ”,不帶任何斜線和https,然后將其再次保存到記事本中,就像您保存的密鑰一樣
20. 這是我們?cè)谏厦娴?Arduino 程序中編寫的“FIREBASE_HOST”字符串
21. 您可以探索 firebase,但讓我們先完成教程。
現(xiàn)在將“FIREBASE_HOST”和“FIREBASE_AUTH”放入Arduino程序并上傳草圖。我們已經(jīng)完成了這兩個(gè)部分的設(shè)置。最后給出了完整的 Arduino 程序。
打開 firebase 數(shù)據(jù)庫并在“LED_STATUS”部分寫入“ON”或“OFF”或“on”或“off”,以從 Google Firebase 控制臺(tái)控制 LED。
/* 使用 Firebase 控制臺(tái)控制 LED */
#include
#include
#define FIREBASE_HOST "your-project.firebaseio.com" // 來自 firebase id 的項(xiàng)目名稱地址
#define FIREBASE_AUTH "06dEpqanFg***************qAwnQLwLI" // 生成的密鑰firebase
#define WIFI_SSID "xxxxxxxxxxxxxx" // 輸入你的家庭或公共wifi名稱
#define WIFI_PASSWORD "xxxxxxxxxxxxxx" //wifi ssid的密碼
字符串 fireStatus = ""; // 從 firebase 接收到的 led 狀態(tài)
int led = D3; // 用于外部LED
void setup() {
Serial.begin(9600);
延遲(1000);
pinMode(LED_BUILTIN,輸出);
pinMode(LED,輸出);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD); //嘗試連接wifi
Serial.print("Connecting to ");
Serial.print(WIFI_SSID);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
延遲(500);
}
Serial.println();
Serial.print("連接到"
Serial.println(WIFI_SSID);
Serial.print("IP 地址為:");
Serial.println(WiFi.localIP()); //打印本地IP地址
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // 連接到
Firebase Firebase.setString("LED_STATUS", "OFF"); // 發(fā)送 LED 狀態(tài)的初始字符串
}
無效循環(huán)(){
fireStatus = Firebase.getString(“LED_STATUS”);// 從 firebase 獲取 ld 狀態(tài)輸入
if (fireStatus == "ON") { // 比較從 firebase 接收到的 LED 狀態(tài)輸入
Serial.println("Led Turned ON");
數(shù)字寫入(LED_BUILTIN,低);// 使 bultin led ON
digitalWrite(led, HIGH); // 使外部 LED 開啟
}
else if (fireStatus == "OFF") { // 比較從 firebase
Serial 接收到的 LED 狀態(tài)輸入。
數(shù)字寫入(LED_BUILTIN,高);// 使 bultin led 關(guān)閉
digitalWrite(led, LOW); // 關(guān)閉外部LED
}
else {
Serial.println("Wrong Credential! Please send ON/OFF");
}
}
-
led
+關(guān)注
關(guān)注
242文章
23320瀏覽量
661830 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2911文章
44802瀏覽量
375010 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
45168 -
NODEMCU
+關(guān)注
關(guān)注
13文章
289瀏覽量
21478
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論