如何使用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 模块进行编程,只需点击链接即可。

电路原理图

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.在右上角转到“转到控制台”

ESP8266

4.点击“添加项目”

ESP8266

5. 输入您的项目名称。

ESP8266

6. 接受条款和条件,创建项目并点击“继续”

ESP8266

您已成功创建项目。查找主机名和授权密钥,也称为密钥。为此,请按照以下步骤操作:

7. 转到设置图标(齿轮图标),然后单击“项目设置”

ESP8266

8. 现在点击“服务帐户”

ESP8266

9. 可以看到“Firebase admin SDK”和“Database Secrets”两个选项

10.点击“数据库秘密”

11. 滚动您的项目名称,“显示”选项出现在项目右侧

12.点击“显示”,现在您可以看到为您的项目创建的密钥

ESP8266

13. 复制密钥并保存到记事本。这是我们在上面的 Arduino 程序中编写的“FIREBASE_AUTH”字符串。

ESP8266

14.现在转到左侧控制栏上的“数据库”并单击它

15.向下滚动并单击“创建数据库”

ESP8266

16. 选择“Start in test mode”并点击“Enable”

ESP8266

17. 现在你的数据库已经创建好了,你将不得不再次来到这个部分来控制 LED

18.现在就在数据库上方你可以看到

“ https://your_project_name.firebaseio.com/ ”

ESP8266

19. 只需复制“ your_project_name.firebaseio.com ”,不带任何斜线和https,然后将其再次保存到记事本中,就像您保存的密钥一样

20. 这是我们在上面的 Arduino 程序中编写的“FIREBASE_HOST”字符串

21. 您可以探索 firebase,但让我们先完成教程。

ESP8266

现在将“FIREBASE_HOST”和“FIREBASE_AUTH”放入Arduino程序并上传草图。我们已经完成了这两个部分的设置。最后给出了完整的 Arduino 程序。

ESP8266

打开 firebase 数据库并在“LED_STATUS”部分写入“ON”或“OFF”或“on”或“off”,以从 Google Firebase 控制台控制 LED。

/* 使用 Firebase 控制台控制 LED */

#include // esp8266 库

#include // firebase 库


#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");

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分