热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

具有Firebase实时数据库的ESP8266(ESP32):IoT控制的RGBLED

本教程介绍如何使用ESP32或ESP8266和Firebase来构建IoT控制的RGBLED(例如LED灯带)。这是一个有趣的项目,因为通

本教程介绍如何使用ESP32或ESP8266和Firebase来构建IoT控制的RGB LED(例如LED灯带)。 这是一个有趣的项目,因为通过它可以探索如何使用物联网。 几年前,几乎不可能构建由IoT控制的RGB LED,现在,正如您将看到的那样,这非常容易。 在此IoT项目中,我们将使用Google Firebase的功能通过ESP32或ESP8266控制RGB LED 。 简而言之,Google Firebase云是一个提供多种服务的平台,例如身份验证,实时数据库等。 为了构建这个物联网项目,我们将使用实时数据库。 结果显示在下面的视频中:

使用Firebase实时数据库控制LED ,我们必须遵循以下两个步骤:

  • 配置ESP32 / ESP8266以连接到Google Firebase实时数据库
  • 配置Firebase实时数据库

配置ESP32(或ESP8266)以连接到Google Firebase实时数据库

在第一步中,有必要将ESP32连接到Firebase数据库,以便我们在修改设备后立即从数据库中接收数据。 为了实现它,首先我们必须将ESP8266连接到Wifi:

#include void connectWifi() {// Let us connect to WiFiWiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println(".......");Serial.println("WiFi Connected....IP Address:");Serial.println(WiFi.localIP());
}

connectWifi()将在setup()调用connectWifi() ,并且ssid密码为WiFi ssid和相关密码。

电路原理图

将RGB LED灯连接到ESP8266(或ESP32)的电路图如下所示:

该物联网控制的LED项目使用Neopixels LED,但我们可以使用其他类型的LED。 即使您更改所使用的LED,也可以应用相同的步骤。

编程ESP8266以连接到Firebase

这是项目的核心。 要将ESP32连接到Google Firebase实时数据库,我们将使用Firebase库来简化项目。 转到“草图”->“包含库”->“管理库”,然后查找Firebase库:

根据您使用ESP32或ESP8266的设备选择库,您就可以准备好! 以下代码显示了如何将ESP8266连接到Google Firebase:

#include "FirebaseESP8266.h"FirebaseData firebaseData;void setup() {Serial.begin(9600);connectWifi();Firebase.begin("firebase_url", "your_firebase_API_key");
}

在第8行,代码设置ESP8266与Firebase之间的连接。 两个参数是必需的: firebase_urlfirebase_API_key 。 配置Firebase项目后,您将在以后看到如何从Firebase控制台获取它。 最后,有必要从Firebase实时数据库接收数据:

void loop() {if (Firebase.getInt(firebaseData, "/red")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != redValue) {redValue = val;setLedColor();}}}if (Firebase.getInt(firebaseData, "/green")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != greenValue) {greenValue = val;setLedColor();}}}if (Firebase.getInt(firebaseData, "/blue")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != blueValue) {blueValue = val;setLedColor();}}}
}

需要注意的几件事。 首先,要控制IoT RGB LED,必须使用三个组件(红色,绿色,蓝色)。 注意的第二件事:上面的代码使用以下方式获取对存储在Firebase实时数据库中的数据的引用:

Firebase.getInt(firebaseData, "/red")

然后,有必要验证该值是整数:

if (firebaseData.dataType() == "int") {....
}

最后,代码检索值:

int val = firebaseData.intData();

最终代码如下所示:

#include "FirebaseESP8266.h"
#include
#include #define PIN D1
#define NUM_LEDS 8const char* ssid = "your_ssid";
const char* password = "your_wifi_passowrd";FirebaseData firebaseData;Adafruit_NeoPixel leds(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);// Current color values
int redValue = 0;
int greenValue = 0;
int blueValue = 0;void setup() {Serial.begin(9600);connectWifi();leds.begin();Firebase.begin("https://xxxx.firebaseio.com/", "wDsHB30jVN554CA********");
}void loop() {if (Firebase.getInt(firebaseData, "/red")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != redValue) {redValue = val;setLedColor();}}}if (Firebase.getInt(firebaseData, "/green")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != greenValue) {greenValue = val;setLedColor();}}}if (Firebase.getInt(firebaseData, "/blue")) {if (firebaseData.dataType() == "int") {int val = firebaseData.intData();if (val != blueValue) {blueValue = val;setLedColor();}}}
}void connectWifi() {// Let us connect to WiFiWiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println(".......");Serial.println("WiFi Connected....IP Address:");Serial.println(WiFi.localIP());}void setLedColor() {for (int i=0; i }

如果您有兴趣,可以发现如何集成ESP8266和Alexa,以便可以使用语音命令控制设备 。

配置Firebase实时数据库

在构建由IoT控制的RGB LED的第二步中,我们将配置Firebase实时数据库。 如果您没有帐户,则必须先免费创建一个帐户。 然后转到Firebase控制台并开始添加新项目:

然后添加一个新项目,如下所示:

如果一切顺利,那么将创建新的Firebase项目:

然后是时候创建Firebase数据库了:

将数据库设置为测试模式很重要:

然后,完成所有这些步骤后,选择实时数据库并开始添加字段,如下所示:

现在是最后两个步骤。 首先,在“ 规则”中,必须将所有值都设置为true ,然后有必要检索要在上面显示的ESP8266代码中使用的值:

网址显示在https://xxxx.firebaseio.com上方的图片中,API密钥位于项目设置->服务帐户->数据库密码中。

就这样。 您可以运行和测试项目。

摘要

本教程介绍了如何使用Firebase实时数据库和ESP32或ESP8266构建由IoT控制的RGB LED。 如您所见,这非常简单,只需几行代码,您就可以远程控制RGB LED。

翻译自: https://www.javacodegeeks.com/2019/07/esp8266-esp32-firebase-realtime-database-iot.html




推荐阅读
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
author-avatar
mobiledu2502855777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有