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