Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Отправка данных датчика от одного Arduino к другому с помощью Firebase

Компоненты и расходные материалы

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
Датчик температуры и влажности DHT11 (3 контакта)
× 1
Модуль ЖК-дисплея Arduino DFRobot I2C 16x2
× 1
Макет (общий)
× 2
Провода перемычки "папа / мама"
× 1

Приложения и онлайн-сервисы

IDE Arduino
Google Firebase

Об этом проекте

ОБЗОР:

В этом крутом проекте IoT вы считываете данные с датчика влажности и температуры, подключенного к одной Arduino UNO. Отправьте эти данные в Firebase с помощью модуля esp8266, а затем загрузите данные в другой Arduino UNO с помощью esp8266, чтобы, наконец, отобразить их на ЖК-дисплее.

ШАГ 1. Узнайте, как работают вместе Arduino UNO и ESP8266.

Обратите внимание, что они работают как две разные платы и имеют разные коды. Вы используете Arduino UNO для связи с ESP8266. Поймите, что вы не подключаете Arduino к Интернету, вы подключаете ESP8266 к Интернету. Позже вы можете отправлять данные между двумя платами через последовательный терминал.

ШАГ 2. Подключите один Arduino к ЖК-дисплею

В этой части вы можете использовать либо связь I2C, как мы, либо обычную связь. I2C всегда лучше. Попробуйте использовать приведенный там пример кода.

ОБРАТИТЕ ВНИМАНИЕ, ЧТО МЫ ИСПОЛЬЗУЕМ ЖК-экран 20x4. ПРИ НЕОБХОДИМОСТИ ИЗМЕНИТЕ КОД.

ШАГ 3. Подключите другой Arduino к датчику DHT11

Вы можете следовать этому руководству, чтобы заставить его работать. Не забудьте попробовать код шаблона.

ШАГ 4. Подключите ESP8266 к Firebase для отправки и получения данных

В этом руководстве они очень хорошо объясняют, как его настроить.

Следуйте этому пошаговому видео. Они подключают NodeMCU к ESP8266, но вы можете использовать те же подключения к Arduino UNO.

Что касается совета, я бы посоветовал вам создать таблицу Google или Excel с цветами, которые вы используете для ESP8266, чтобы вы не запутались.

ПЕРЕЙДИТЕ К ЧАСТИ С ОШИБКОЙ В КОНЦЕ, ЕСЛИ ОНА НЕ РАБОТАЕТ. ТАКЖЕ , ПОСМОТРЕТЬ КОММЕНТАРИИ К РУКОВОДСТВУ.

ШАГ 5. Разберитесь, как работает последовательное соединение.

В этом руководстве они отправляют данные других датчиков в firebase, вы можете прочитать их, чтобы получить представление о том, как это работает, или даже попробовать.

ВЫ ДОЛЖНЫ ПЕЧАТЬ ТОЛЬКО НА ПОСЛЕДОВАТЕЛЬНОМ МОНИТОРЕ, ЛЮБАЯ ДРУГАЯ СТРОКА ПЕЧАТИ БУДЕТ ПРЕРЫВАТЬ СВЯЗЬ.

ШАГ 6. Загрузите код.

Теперь, когда вы знаете, как загружать и получать данные, вы можете загрузить фактический код в esp8266, подключенные к Arduinos и Arduinos. Обратитесь к шагу 4 о том, как загрузить код.

ПРОЧИТАЙТЕ КОД ПЕРЕД ЗАГРУЗКОЙ И ВНЕСТИ ЛЮБЫЕ НЕОБХОДИМЫЕ ИЗМЕНЕНИЯ.

РАСПРОСТРАНЕННЫЕ ОШИБКИ И СОВЕТ:

ВСЕГДА ОТСОЕДИНЯЙТЕ КАБЕЛЬ ARDUINO ПЕРЕД ОТСОЕДИНЕНИЕМ ЛЮБОГО ПРОВОДА.

Код не загружается в ESP8266:

  • Выберите универсальную плату esp8266.
  • Если код по-прежнему не загружается и выдает ошибку, сделайте это.
  • Если по-прежнему не работает, отключите, подключите повторно, попробуйте загрузить, а затем снова попробуйте предыдущее решение.

Код не загружается в Arduino UNO:

  • Внимательно прочтите, как загрузить код в Arduino UNO в этой документации, шаг 7.
  • Выньте GPIO-0 (IO0) из GND и вывод сброса Arduino Uno из вывода заземления / заземления Uno.
  • Удалите вывод RX ESP8266 из вывода RX UNO и вывод TX ESP8266 из вывода TX UNO.
  • Еще раз проверьте свои контакты, выберите плату Arduino UNO.

Не работает после загрузки обоих кодов:

  • Подключите контакт ESP8266 RX к контакту TX Uno, а контакт ESP8266 TX - к контакту RX Uno. Да, их надо соединять противоположным образом. Не спрашивайте меня, почему. Просто сделай это.
  • Отключите ESP8266 GPIO-0 (IO0) от GND.
  • Еще раз проверьте свои пины.
  • Убедитесь, что вы печатаете только те значения, которые хотите передать между Arduino и ESP8266 в последовательном мониторе. Если вы напечатаете что-то вроде "connected" или что-то еще, код работать не будет.

ПРИМЕЧАНИЕ. Если вы заставили его работать и на ЖК-дисплее появилось что-то странное, это должно быть исправлено через несколько секунд с the инициализировать функция. Это может произойти из-за задержек последовательной связи.

Код

  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
lcd_arduino.ino Arduino
Arduino_LCD_Code
 #include  #include  // инициализируем библиотеку путем связывания любого необходимого вывода ЖК-интерфейса // с номером вывода Arduino, к которому он подключен. LiquidCrystal_I2C lcd (0x3F, 20, 4); Строковые значения, sensor_data; void setup () {Serial.begin (9600); задержка (2000); // устанавливаем количество столбцов и строк ЖК-дисплея:lcd.begin (20, 4); // Выводим сообщение на ЖК-дисплей. lcd.init (); // инициализируем ЖК-дисплей lcd.backlight (); задержка (2000); lcd.setCursor (0, 0); lcd.print ("Температура:"); задержка (10); lcd.setCursor (18, 0); lcd.print ("C"); задержка (10); lcd.setCursor (0, 1); lcd.print ("Влажность:"); задержка (10); lcd.setCursor (15, 1); lcd.print ("%"); задержка (2000);} void loop () {bool Sr =false; while (Serial.available ()) {// получаем данные датчика по последовательному каналу, вставляем в sensor_data sensor_data =Serial.readString (); Sr =истина; } задержка (1000); если (Sr ==true) {значения =данные_сенсора; // получаем данные датчиков из переменной values, разделяя ее запятыми и помещая в переменные String temperature =values.substring (0, 5); Строка влажности =values.substring (6, 11); инициализировать (); lcd.setCursor (13, 0); задержка (10); lcd.print (temperature); // устанавливаем курсор на печать температуры delay (10); lcd.setCursor (10, 1); задержка (10); lcd.print (влажность); } задержка (2000);} void initialize () {lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Температура:"); задержка (10); lcd.setCursor (18, 0); lcd.print ("C"); задержка (10); lcd.setCursor (0, 1); lcd.print ("Влажность:"); задержка (10); lcd.setCursor (15, 1); lcd.print ("%");} 
lcd_esp8266.ino Arduino
ESP8266_LCD_Code
 #include  #include  #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN_AUTH" YOUR_FIREBASE_TOKEN_AUTH "YOUR_FIREBASE_TOKEN" #define WIFI_PORD values ​​"YOUR_FIREBASE_TOKEN" #define WIFI_ORD "YOUR_FIREBASE_TOKEN" #define WIFI_PORD values ​​"#define WIFI_ORD" Serial.begin (9600); // подключаемся к Wi-Fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); в то время как (WiFi.status ()! =WL_CONNECTED) {задержка (500); } Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} void loop () {String temperature =Firebase.getString ("temperature"); Строка влажности =Firebase.getString ("влажность"); температура =температура. подстрока (0, 5); влажность =влажность. подстрока (0, 5); значения =(температура + влажность); задержка (10); // всегда очищать перед печатью Serial.flush (); задержка (1000); Serial.print (значения); задержка (1000);} 
sensor_arduino.ino Arduino
Arduino_Sensor_Code
 #include  #include  #define dht_apin A0dht DHT; Строковые значения; void setup () {Serial.begin (9600); задержка (5000); // Задержка для загрузки системы} void loop () {DHT.read11 (dht_apin); values ​​=(Строка (DHT.температура) + ',' + Строка (DHT.humidity)); задержка (10); Serial.flush (); задержка (1000); // отправляем данные датчиков на последовательный порт (отправляем данные датчиков на ESP8266) Serial.print (values); задержка (2000);} 
sensor_esp8266.ino Arduino
Sensor_ESP8266_Code
 #include  #include  #define FIREBASE_HOST "YOUR_FIREBASE_LINK" #define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN" YOUR_FIREBASE_token " ) {задержка (1000); // подключаемся к Wi-Fi. WiFi.begin (WIFI_SSID, WIFI_PASSWORD); в то время как (WiFi.status ()! =WL_CONNECTED) {задержка (500); } Serial.begin (9600); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);} цикл void () {bool Sr =false; while (Serial.available ()) {// получаем данные датчика по последовательному каналу, вставляем в sensor_data sensor_data =Serial.readString (); Sr =истина; } задержка (1000); если (Sr ==true) {значения =данные_сенсора; // получить индексы запятых из переменной values ​​int fristCommaIndex =values.indexOf (','); int secondCommaIndex =значения.indexOf (',', fristCommaIndex + 1); // получаем данные датчиков из переменной values, разделяя ее запятыми и помещая в переменные String temperature =values.substring (0, fristCommaIndex); Строка влажности =values.substring (fristCommaIndex + 1, secondCommaIndex); // сохраняем данные ультразвукового датчика в виде строки в firebase Firebase.setString ("temperature", temperature); задержка (10); // сохраняем данные ИК-датчика 1 в виде строки в firebase Firebase.setString ("влажность", влажность); задержка (10); // сохраняем данные предыдущих датчиков в виде строки в firebase delay (1000); если (Firebase.failed ()) {возврат; }}} 

Производственный процесс

  1. Потоковая передача данных датчика с пластины PPDAQC Pi с использованием InitialState
  2. Сбор данных солнечной панели в реальном времени с использованием Arduino
  3. Робототехническая система для обнаружения человека с использованием Arduino Uno
  4. Инфракрасный датчик сердцебиения своими руками с использованием Arduino
  5. Сонар с использованием Arduino и отображение при обработке IDE
  6. Управление яркостью светодиода с помощью Bolt и Arduino
  7. Использование переносного датчика пульса MAX30100 с Arduino
  8. Использование датчика влажности почвы YL-39 + YL-69 с Arduino
  9. Как создать веб-сайт, взаимодействующий с Arduino с помощью PHP
  10. От одной CMMS к другой:рекомендации по миграции программных данных