使用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 即時資料庫的資料值的讀取和寫入。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP