В этом руководстве рассказывается, как создавать RGB-светодиоды, управляемые IoT (например, светодиодные ленты), используя ESP32 или ESP8266 и Firebase. Это интересный проект, потому что с его помощью можно изучить, как использовать IoT. Несколько лет назад было почти невозможно построить RGB-светодиоды, управляемые IoT, теперь, как вы увидите, это очень просто. В этом проекте IoT мы будем использовать возможности Google Firebase для управления светодиодами RGB с помощью ESP32 или ESP8266 . Вкратце, Google Firebase cloud — это платформа, которая предоставляет несколько сервисов, таких как аутентификация, база данных в реальном времени и так далее. Для создания этого IoT-проекта мы будем использовать базу данных в реальном времени. Результат показан на видео ниже:
Чтобы управлять светодиодами с помощью базы данных Firebase в реальном времени , мы должны выполнить следующие два шага:
- настроить ESP32 / ESP8266 для подключения к базе данных Google Firebase в реальном времени
- настроить базу данных Firebase в реальном времени
Настройка ESP32 (или ESP8266) для подключения к базе данных Google Firebase в реальном времени
На этом первом шаге необходимо подключить ESP32 к базе данных Firebase, чтобы это устройство получало данные из базы данных, как только мы их изменим . Для этого сначала нужно подключить ESP8266 к Wi-Fi:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
#include <ESP8266WiFi.h> void connectWifi() { // Let us connect to WiFi WiFi.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()
как мы увидим позже, а ssid и пароль — это ssid WiFi и соответствующий пароль.
Принципиальная электрическая схема
Схема подключения светодиодов RGB к ESP8266 (или ESP32) показана ниже:
В этом проекте светодиодов с управлением IoT используются светодиоды Neopixels, но мы можем использовать другие виды светодиодов. Те же шаги можно применить, даже если вы меняете используемые вами светодиоды.
Программирование ESP8266 для подключения к Firebase
Это ядро проекта. Для подключения ESP32 к базе данных Google Firebase в реальном времени мы будем использовать библиотеку Firebase, которая упрощает проект. Перейдите в Sketch-> Включить библиотеку-> Управление библиотеками и найдите библиотеку Firebase:
Выберите библиотеку в соответствии с устройством, которое вы используете ESP32 или ESP8266, и вы готовы! Код ниже показывает, как подключить ESP8266 к Google Firebase:
1
2
3
4
5
6
7
8
9
|
#include "FirebaseESP8266.h" FirebaseData firebaseData; void setup() { Serial.begin( 9600 ); connectWifi(); Firebase.begin( "firebase_url" , "your_firebase_API_key" ); } |
В строке 8 код устанавливает соединение между ESP8266 и Firebase. Необходимы два параметра: firebase_url и firebase_API_key . Позже вы увидите, как получить его из консоли Firebase после того, как мы настроим проект Firebase. Наконец, необходимо получить данные из базы данных Firebase в реальном времени:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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 необходимо использовать три компонента (красный, зеленый, синий). Второе, на что следует обратить внимание: приведенный выше код получает ссылку на данные, хранящиеся в базе данных Firebase в реальном времени, используя:
1
|
Firebase.getInt(firebaseData, "/red" ) |
затем необходимо проверить, что значение является целым числом:
1
2
3
|
if (firebaseData.dataType() == "int" ) { .... } |
и, наконец, код извлекает значение:
1
|
int val = firebaseData.intData(); |
Окончательный код показан ниже:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#include "FirebaseESP8266.h" #include <ESP8266WiFi.h> #include <Adafruit_NeoPixel.h> #define PIN D1 #define NUM_LEDS 8 const 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(); } 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 WiFi WiFi.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 < NUM_LEDS; i++) leds.setPixelColor(i, leds.Color(redValue, greenValue, blueValue)); leds.show(); } |
Если вы заинтересованы, вы можете узнать, как интегрировать ESP8266 и Alexa, чтобы вы могли управлять устройствами с помощью голосовых команд .
Конфигурирование базы данных Firebase в реальном времени
На этом втором этапе построения RGB-светодиодов, управляемых IoT, мы настроим базу данных Firebase в реальном времени. Если у вас нет учетной записи, перед запуском необходимо создать ее бесплатно. Затем перейдите в консоль Firebase и начните добавлять новый проект:
а затем добавьте новый проект, как показано ниже:
Если все идет хорошо, то создается новый проект Firebase:
Тогда пришло время создать базу данных Firebase:
Важно установить базу данных в тестовом режиме:
Затем, когда все эти шаги будут выполнены, выберите базу данных в реальном времени и начните добавлять поля, как показано ниже:
Теперь последние два шага. Сначала в Правилах необходимо установить все значения в true, а затем необходимо получить значения для использования в коде ESP8266, показанном выше:
URL показан на картинке выше https://xxxx.firebaseio.com, а ключ API находится в разделе «Настройки проекта» -> «Учетная запись службы» -> «Секреты базы данных».
Это все. Вы можете запустить и протестировать проект.
Резюме
В этом руководстве показано, как создать RGB-светодиоды, управляемые IoT, с использованием базы данных Firebase в реальном времени и ESP32 или ESP8266. Как вы уже видели, это очень просто, и с помощью нескольких строк кода вы можете удаленно управлять RGB-светодиодами.
Опубликовано на .NET Code Geeks с разрешения Франческо Аццолы, партнера по нашей программе NCG . Смотреть оригинальную статью здесь: тест
Мнения авторов .NET Code Geeks — их собственные. |