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

Передача данных температуры и влажности между двумя Arduino через Firebase

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

Arduino UNO ×2
ESP8266 ESP-01 ×2
Датчик температуры и влажности DHT11 (3-проводной) ×1
I2C LCD-дисплей 16×2 (DFRobot) ×1
Бредборд ×2
Перемычки (Male/Female) ×1 набор

Программное обеспечение и сервисы

Обзор проекта

В этом IoT-уроке вы научитесь считывать температуру и влажность с датчика DHT11 на одном Arduino UNO, отправлять значения в Firebase через ESP8266, а затем получать их на втором Arduino UNO для вывода на I2C LCD. Этот практический пример демонстрирует последовательную коммуникацию, Wi-Fi-сеть и облачное хранение данных — ключевые навыки для современных встраиваемых разработчиков.

Шаг 1 — Понимание роли каждой платы

UNO служит интерфейсом датчика, а ESP8266 — шлюзом Wi-Fi. Они общаются через последовательный порт; ESP8266 не подключается к интернету напрямую, только Wi-Fi-модуль это делает. Держите код для каждой платы раздельно, чтобы избежать путаницы.

Шаг 2 — Подключение LCD к UNO

Используйте I2C для простоты и экономии пинов. Модуль DFRobot работает из коробки. Для дисплея 20×4 обновите конструктор: LiquidCrystal_I2C lcd(0x3F, 20, 4);.

Шаг 3 — Подключение DHT11 ко второму UNO

Следуйте официальному уроку по DHT11 для подключения и установки библиотеки. Датчик требует только один пин данных (в примере A0).

Шаг 4 — Настройка ESP8266 с Firebase

Настройте Wi-Fi-учётные данные и параметры проекта Firebase в скетче. Firebase Realtime Database предоставляет простое JSON-дерево, куда ESP8266 пишет узлы temperature и humidity. Для новичков видеоурок охватывает каждый шаг.

Шаг 5 — Настройка последовательной коммуникации

При передаче данных по последовательному порту выводите только требуемую строку. Любые дополнительные отладочные печати могут нарушить протокол. В нашей реализации датчичный UNO отправляет строку с запятой (например, 25.3,60.1) в ESP8266, который парсит и пересылает каждое значение в Firebase.

Шаг 6 — Загрузка и тестирование

Загрузите скетч датчика в первый UNO, скетч датчик-ESP8266 в первый ESP8266, и скетч LCD-ESP8266 во второй ESP8266. Проверьте, что LCD обновляется свежими показаниями каждые несколько секунд. Всегда отключайте USB-кабель Arduino перед отсоединением перемычек, чтобы избежать случайных замыканий.

Типичные проблемы и решения

Фрагменты кода

lcd_arduino.ino (Arduino)

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4);
String sensorData;

void setup() {
  Serial.begin(9600);
  lcd.begin(20, 4);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Temperature: ");
  lcd.setCursor(18, 0);
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Humidity: ");
  lcd.setCursor(15, 1);
  lcd.print("%");
}

void loop() {
  if (Serial.available()) {
    sensorData = Serial.readString();
    String temp = sensorData.substring(0, sensorData.indexOf(','));
    String hum = sensorData.substring(sensorData.indexOf(',') + 1);
    lcd.clear();
    lcd.setCursor(13, 0);
    lcd.print(temp);
    lcd.setCursor(10, 1);
    lcd.print(hum);
  }
  delay(2000);
}

lcd_esp8266.ino (ESP8266)

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#define FIREBASE_HOST "YOUR_FIREBASE_LINK"
#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

void setup() {
  Serial.begin(9600);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

void loop() {
  String temp = Firebase.getString("temperature");
  String hum = Firebase.getString("humidity");
  Serial.flush();
  Serial.print(temp + "," + hum);
  delay(2000);
}

sensor_arduino.ino (Arduino)

#include <SoftwareSerial.h>
#include <dht.h>
#define DHT_PIN A0
DHT dht;

void setup() {
  Serial.begin(9600);
}

void loop() {
  dht.read11(DHT_PIN);
  String data = String(dht.temperature) + "," + String(dht.humidity);
  Serial.flush();
  Serial.print(data);
  delay(2000);
}

sensor_esp8266.ino (ESP8266)

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#define FIREBASE_HOST "YOUR_FIREBASE_LINK"
#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

void setup() {
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  Serial.begin(9600);
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

void loop() {
  if (Serial.available()) {
    String payload = Serial.readString();
    int comma = payload.indexOf(',');
    String temp = payload.substring(0, comma);
    String hum = payload.substring(comma + 1);
    Firebase.setString("temperature", temp);
    Firebase.setString("humidity", hum);
    if (Firebase.failed()) {
      Serial.println("Failed to write to Firebase");
    }
  }
  delay(2000);
}

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

  1. Потоковая передача данных температуры с ppDAQC Pi-Plate в InitialState на headless Raspberry Pi
  2. Мониторинг солнечной панели в реальном времени: дешёвая система сбора данных на Arduino и Excel
  3. Робот для поиска людей на базе Arduino Uno: пошаговая интеграция датчиков
  4. Надежный ИК-датчик пульса на Arduino: пошаговое руководство
  5. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  6. Бесшовное управление яркостью светодиодов с помощью Bolt IoT и Arduino UNO
  7. Подключение датчика пульса MAX30100 к Arduino: Пошаговое руководство
  8. Пошаговое руководство: подключение датчика влаги почвы YL-39/YL-69 к Arduino UNO
  9. Создание PHP-веб-интерфейса для управления Arduino Uno
  10. Бесшовная миграция CMMS: экспертные руководящие принципы переноса данных