如何使用Google Firebase控制台和ESP8266的物联网控制LED
今天我们将使用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");
}
}