使用NoSQL数据库与物联网


NoSql 数据库是指那些不以关系数据库方式存储数据的数据库。现实生活中使用的大部分数据通常是非结构化的。这些 NoSQL 数据库通过使用键值对提供了一种简单的方法来存储这些非结构化数据。本文使用名为 Firebase 的 NoSQL 数据库与控制物联网电路的 C 程序一起使用。文章介绍了将值写入 Firebase 和实时从 Firebase 获取值,并将其用于控制电路组件。

连接 Firebase、Wifi、C 程序和电路

首先,制作电路并使用一个 LED。然后将电路的 LED 设置为高电平和低电平,并由 Arduino IDE 中编写的 C 程序控制。然后,此 C 程序需要连接到 NoSQL Firebase 实时数据库。为此,将使用互联网和 Wifi 建立连接。LED_STATUS 存储在 Firebase 的实时数据库中,获取其值,然后根据读取的值,C 程序将 LED 打开或关闭。结果可以在电路、串口监视器和 Firebase 本身上看到。

任务 1:制作电路。

该电路使用一个 LED、一个电阻、一个微控制器 (ESP32)、一个面包板和一些导线制作。

电路设计步骤

步骤 1 − 将 ESP32 微控制器连接到面包板。

步骤 2 − 将面包板的负轨连接到 ESP32 的 GND。

步骤 3 − 使用一个 LED。将 LED 的短脚直接连接到蓝色导轨,另一条线连接到电阻。现在将电阻的引脚连接到 ESP32 引脚 (D18)。

电路图

该电路使用一个 LED 和 ESP32 制作。黄线连接到 D18 引脚。

图 1:面包板上的电路。

任务 2:使用 Arduino 编写 C 程序。

步骤 1 − 如果计算机上未安装 Arduino IDE,请下载并安装它。

步骤 2 − 启动 Arduino IDE。编写 C 程序,并使用勾号编译它。

步骤 3 − 通过按下勾号旁边的右箭头将程序上传到 ESP32。

代码

//Libraries included
#include <Arduino.h>
//Library for wifi
#include <WiFi.h>
//Libraries for Firebase connectivity
#include <Firebase_ESP_Client.h>
#include <addons/TokenHelper.h>
#include <addons/RTDBHelper.h>

#define WIFI_SSID "TYPE YOUR wifi_SSID HERE"
#define WIFI_PASSWORD " TYPE YOUR wifi_PASSWORD HERE "

#define API_KEY " TYPE YOUR API_KEY HERE "
#define DATABASE_URL " TYPE YOUR DATABASE_URL HERE "

#define USER_EMAIL " TYPE YOUR authentication_EMAIL HERE "
#define USER_PASSWORD " TYPE YOUR authentication_PASSWORD HERE "
FirebaseData fdata;
FirebaseAuth auth;
FirebaseConfig config;

//The fetched led status from the Firebase real-time database
String fireStatus = "";
//led is connected to D18 pin of ESP32
int led = 18;

void setup(){
   //set the baud rate
   Serial.begin(115200);
   //set the led pin as output
   pinMode(led, OUTPUT);
   // start the wifi connection
   WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
   
   Serial.print("Connecting to Wi-Fi");
   while (WiFi.status() != WL_CONNECTED){
      Serial.print(".");
      delay(300);
   }
   Serial.println();
   Serial.print("Connected with IP: ");
   //Display the localIP here
   Serial.println(WiFi.localIP());
   Serial.println();
   
   Serial.printf("Firebase Client v%s

", FIREBASE_CLIENT_VERSION); //These are required to make a connection with the real-time database config.api_key = API_KEY; auth.user.email = USER_EMAIL; auth.user.password = USER_PASSWORD; config.database_url = DATABASE_URL; config.token_status_callback = tokenStatusCallback; fdata.setResponseSize(2048); Firebase.begin(&config, &auth); Firebase.reconnectWiFi(true); config.timeout.serverResponse = 10 * 1000; Serial.println("Set string..."); if (Firebase.RTDB.setString(&fdata, "test/LED_STATUS", "OFF")){ Serial.println("ok"); } else { Serial.println(fdata.errorReason()); } if (Firebase.RTDB.getString(&fdata, "/test/LED_STATUS")) { fireStatus = fdata.stringData(); Serial.println(fireStatus); } else { Serial.println(fdata.errorReason()); } } void loop(){ delay(1000); if (Firebase.ready() ){ if (fireStatus == "ON"){ Serial.println("Led is Turned ON"); digitalWrite(led, HIGH); delay(5000); Serial.println("Set string..."); if (Firebase.RTDB.setString(&fdata, "test/LED_STATUS", "OFF")){ Serial.println("ok"); } else { Serial.println(fdata.errorReason()); } if (Firebase.RTDB.getString(&fdata, "/test/LED_STATUS")) { fireStatus = fdata.stringData(); Serial.println(fireStatus); } else { Serial.println(fdata.errorReason()); } } else if (fireStatus == "OFF"){ Serial.println("Led is Turned OFF"); digitalWrite(led, LOW); delay(5000); Serial.println("Set string..."); if (Firebase.RTDB.setString(&fdata, "test/LED_STATUS", "ON")){ Serial.println("ok"); } else { Serial.println(fdata.errorReason()); } if (Firebase.RTDB.getString(&fdata, "/test/LED_STATUS")) { fireStatus = fdata.stringData(); Serial.println(fireStatus); } else { Serial.println(fdata.errorReason()); } } else{ Serial.println("Cmd Error! Please just send ON/OFF"); } Serial.println(); } }

任务 3:设置实时数据库并将其与 C 程序链接

步骤 1 − 登录 Firebase。转到控制台并启动新项目。禁用 Google Analytics 并继续。

步骤 2 − 项目启动后,在左侧菜单中,转到实时数据库。创建一个实时数据库,并找到 DATABASE_URL 并将其写入 C 程序。

步骤 3 − 现在转到左侧菜单中的“身份验证”。在“登录”选项卡中启用电子邮件-密码。在“用户”选项卡中,创建用于身份验证的电子邮件和密码。将此电子邮件和密码写入 C 程序以进行身份验证。

步骤 4 − 在左侧菜单中,转到实时数据库并按如下所示设置规则

{
   "rules": {
      ".read": "auth != null",
      ".write": "auth != null",
   }
}

步骤 5 − 在左侧菜单中,转到项目设置,然后找到 Web API 密钥。将此 API 密钥写入 C 程序。

步骤 6 − 编译 C 程序,运行它,然后检查实时数据库中正在更改的值。

查看结果

图 2:程序结果显示在电路板上

本文介绍了如何将 NoSQL 数据库 (firebase) 与物联网程序一起使用。首先,制作电路,然后使用 C 语言在 Arduino IDE 中编写一个处理电路的程序,然后通过 Wifi 使用互联网与 Firebase 实时数据库建立连接。还介绍了实时数据库的使用、身份验证以及读写规则的设置,以及 Firebase 实时数据库的数据值的读取和写入。

更新于: 2023年4月18日

1K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.