산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

파이어베이스로 두 아두이노 간 온습도 데이터 전송하기

부품 및 소모품

Arduino UNO×2
ESP8266 ESP-01×2
DHT11 온습도 센서 (3핀)×1
DFRobot I2C 16×2 LCD 디스플레이×1
브레드보드 (범용)×2
수/암 점퍼 와이어×1

앱 및 온라인 서비스

Arduino IDE
Google Firebase

프로젝트 개요

이 IoT 튜토리얼에서는 DHT11 센서로 온습도를 읽어 첫 번째 아두이노 우노에서 ESP8266을 통해 파이어베이스로 전송하고, 두 번째 아두이노 우노가 파이어베이스에서 데이터를 읽어 I2C LCD에 표시합니다. 시리얼 통신, Wi-Fi 네트워킹, 클라우드 데이터 저장 등 현대 임베디드 개발자에게 필수적인 기술을 실습할 수 있습니다.

1단계 – 각 보드의 역할 이해

우노는 센서 인터페이스 역할을, ESP8266은 Wi-Fi 게이트웨이 역할을 합니다. 두 보드는 시리얼 포트로 통신하며, ESP8266은 인터넷에 직접 연결되지 않고 Wi-Fi 모듈만 연결합니다. 각 보드용 코드를 분리해 혼란을 방지하세요.

2단계 – 우노에 LCD 연결

핀 수를 줄이기 위해 I2C 방식을 사용합니다. DFRobot 모듈의 20×4 LCD 예제가 바로 작동합니다. 20×4 디스플레이 사용 시 생성자를 LiquidCrystal_I2C lcd(0x3F, 20, 4);로 변경하세요.

3단계 – 두 번째 우노에 DHT11 연결

공식 아두이노 DHT11 튜토리얼을 참고해 배선하고 라이브러리를 설치하세요. 센서는 단일 데이터 핀만 필요합니다(예제에서는 A0).

4단계 – ESP8266을 파이어베이스와 연동

스케치에 Wi-Fi 자격증명과 파이어베이스 프로젝트 세부사항을 설정하세요. 파이어베이스 실시간 데이터베이스는 심플한 JSON 트리를 제공하며, ESP8266은 temperature와 humidity 노드에 값을 기록합니다. 초보자는 튜토리얼 영상을 참고하세요.

5단계 – 시리얼 통신 마스터하기

시리얼 전송 시 필요한 문자열만 출력하세요. 디버깅용 추가 출력은 프로토콜을 깨뜨릴 수 있습니다. 우리 구현에서는 센서 우노가 콤마 구분 문자열(예: 25.3,60.1)을 ESP8266으로 전송하고, ESP8266이 파싱해 파이어베이스로 전달합니다.

6단계 – 업로드 및 테스트

첫 번째 우노에 센서 스케치, 첫 번째 ESP8266에 센서-ESP8266 스케치, 두 번째 ESP8266에 LCD-ESP8266 스케치를 업로드하세요. LCD가 몇 초마다 새로운 측정값으로 업데이트되는지 확인하세요. 점퍼 와이어 분리 전 아두이노 USB 케이블을 먼저 뽑아 의도치 않은 쇼트를 방지하세요.

자주 발생하는 문제 및 해결책

코드 스니펫

lcd_arduino.ino (아두이노)

#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 (아두이노)

#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-Play트에서 InitialState로 실시간 온도 데이터 스트리밍 – 헤드리스 라즈베리 파이
  2. 아두이노로 태양광 패널 실시간 모니터링 - 저비용 데이터 수집 시스템
  3. 아두이노 우노 기반 인간 감지 로봇: 센서 통합 단계별 가이드
  4. 아두이노로 만드는 신뢰도 높은 적외선 심박 센서: 단계별 가이드
  5. 아두이노 소나 & 프로세싱으로 실시간 거리 측정 및 시각화
  6. 볼트 IoT와 아두이노 우노로 구현하는 무선 LED 밝기 제어 (PWM 6채널)
  7. MAX30100 맥박 산소포화도 센서 아두이노 연동: 단계별 가이드
  8. YL-39/YL-69 토양 수분 센서를 아두이노 우노에 연결하는 단계별 가이드
  9. PHP 기반 웹 인터페이스로 아두이노 우노 제어하기
  10. 원활한 CMMS 마이그레이션: 데이터 이전을 위한 전문가 가이드라인