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

Firebase를 사용하여 Arduino 간에 센서 데이터 보내기

구성품 및 소모품

Arduino UNO
× 2
Espressif ESP8266 ESP-01
× 2
DHT11 온도 및 습도 센서(3핀)
× 1
DFRobot I2C 16x2 Arduino LCD 디스플레이 모듈
× 1
브레드보드(일반)
× 2
남성/여성 점퍼 와이어
× 1

앱 및 온라인 서비스

Arduino IDE
Google Firebase

이 프로젝트 정보

개요:

이 멋진 IoT 프로젝트에서는 하나의 Arduino UNO에 연결된 습도 및 온도 센서에서 데이터를 읽습니다. 이 데이터를 esp8266 모듈을 사용하여 Firebase에 보낸 다음 esp8266을 사용하여 다른 Arduino UNO에 데이터를 다운로드하여 최종적으로 LCD에 표시합니다.

1단계:Arduino UNO와 ESP8266이 함께 작동하는 방식을 이해합니다.

두 개의 다른 보드로 작동하며 다른 코드를 가지고 있습니다. Arduino UNO를 사용하여 ESP8266과 통신합니다. Arduino를 인터넷에 연결하는 것이 아니라 ESP8266을 인터넷에 연결하고 있음을 이해하십시오. 나중에 직렬 터미널을 통해 두 보드 간에 데이터를 보낼 수 있습니다.

2단계:하나의 Arduino를 LCD에 연결

이 부분은 기존의 I2C 통신이나 일반 통신을 사용하시면 됩니다. I2C는 항상 더 좋습니다. 그들이 제시하는 예제 코드를 사용해 보십시오.

20x4 LCD를 사용했습니다. 필요한 경우 코드를 변경하십시오.

3단계:다른 Arduino를 DHT11 센서에 연결

이 자습서를 따라 작동하도록 할 수 있습니다. 템플릿 코드를 시도하는 것을 잊지 마십시오.

4단계:ESP8266을 Firebase에 연결하여 데이터 송수신

이 튜토리얼에서는 설정 방법을 아주 잘 설명합니다.

이 단계별 비디오를 따르십시오. 그들은 NodeMCU를 ESP8266에 연결하지만 Arduino UNO에 동일한 연결을 사용할 수 있습니다.

조언으로, 혼동하지 않도록 Google 시트를 만들거나 ESP8266에 사용하는 색상으로 엑셀을 작성하는 것이 좋습니다.

작동하지 않으면 끝에 있는 오류 부분으로 이동합니다. 또한 , 튜토리얼의 댓글을 확인하세요.

5단계:직렬 통신이 작동하는 방식을 이해합니다.

이 튜토리얼에서는 다른 센서 데이터를 Firebase로 보냅니다. 이를 읽고 작동 방식에 대한 아이디어를 얻거나 시도해 볼 수도 있습니다.

직렬 모니터에 원하는 문자열만 인쇄해야 합니다. 다른 인쇄 라인은 통신을 방해합니다.

6단계:코드를 업로드합니다.

이제 데이터 업로드 및 수신 방법을 알았으므로 Arduino 및 Arduino에 연결된 esp8266에 실제 코드를 업로드할 수 있습니다. 코드 업로드 방법은 4단계를 참조하세요.

업로드하기 전에 코드를 읽고 필요한 사항을 변경하세요.

일반적인 오류 및 조언:

전선을 분리하기 전에 항상 ARDUINO 케이블을 분리하십시오.

ESP8266에 코드가 업로드되지 않음:

<울>
  • esp8266 일반 보드를 선택합니다.
  • <울>
  • 코드가 여전히 업로드되지 않고 오류가 발생하면 이렇게 하십시오.
  • <울>
  • 여전히 작동하지 않으면 플러그를 뽑고 다시 연결하고 업로드를 시도한 다음 이전 해결 방법을 다시 시도하세요.
  • Arduino UNO에 코드가 업로드되지 않음:

    <울>
  • 이 문서의 7단계에서 Arduino UNO에 코드를 업로드하는 방법을 주의 깊게 읽으십시오.
  • <울>
  • GND에서 GPIO-0(IO0)을, Uno의 Ground/GND 핀에서 Arduino Uno RESET 핀을 빼냅니다.
  • <울>
  • UNO의 RX 핀에서 ESP8266 RX 핀을 제거하고 UNO의 TX 핀에서 ESP8266 TX 핀을 제거합니다.
  • <울>
  • 핀을 다시 확인하고 Arduino UNO 보드를 선택합니다.
  • 두 코드를 모두 업로드한 후 작동하지 않음:

    <울>
  • ESP8266 RX 핀을 Uno의 TX 핀에 연결하고 ESP8266 TX 핀을 Uno의 RX 핀에 연결합니다. 예, 반대로 연결해야 합니다. 이유는 묻지 마세요. 그냥 하세요.
  • <울>
  • GND에서 ESP8266 GPIO-0(IO0)을 분리합니다.
  • <울>
  • 핀 다시 확인
  • <울>
  • 직렬 모니터에서 Arduino와 ESP8266 간에 공유하려는 값만 인쇄하고 있는지 확인하십시오. "connected"나 다른 것을 인쇄하면 코드가 작동하지 않습니다.
  • 참고: 작동하고 LCD에 이상한 것이 인쇄되면 몇 초 후에 수정해야 합니다. 함께 초기화 기능. 이는 직렬 통신 지연으로 인해 발생할 수 있습니다.

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • lcd_arduino.ino
  • lcd_esp8266.ino
  • sensor_arduino.ino
  • sensor_esp8266.ino
  • lcd_arduino.ino아두이노
    Arduino_LCD_Code
    #include #include // 필요한 LCD 인터페이스 핀을 연결하여 라이브러리를 초기화합니다. // LiquidCrystal_I2C lcd(0x3F, 20, 4)에 연결된 arduino 핀 번호와 연결합니다. 문자열 값, sensor_data;void setup() { Serial.begin(9600); 지연(2000); // LCD의 열과 행 수 설정:lcd.begin(20, 4); // LCD에 메시지를 인쇄합니다. lcd.init(); // LCD 초기화 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);} 무효 루프() { 부울 Sr =거짓; while (Serial.available()) { // sensor_data에 넣어 직렬에서 센서 데이터를 가져옵니다. sensor_data =Serial.readString(); Sr =사실; } 지연(1000); if (Sr ==true) { 값 =sensor_data; // 쉼표로 분할하여 값 변수에서 센서 데이터를 가져오고 변수에 넣습니다. String temperature =values.substring(0, 5); 문자열 습도 =values.substring(6, 11); 초기화(); lcd.setCursor(13, 0); 지연(10); lcd.print(온도);//온도 지연을 인쇄하도록 커서를 설정합니다(10); lcd.setCursor(10, 1); 지연(10); lcd.print(습도); } 지연(2000);}무효 초기화() { 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아두이노
    ESP8266_LCD_Code
    #include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN#define WIFI_SSID" 값 무효 WIFI_SSID "YOUR_WIFI_SSID;#WIFI"define Serial.begin(9600); // 와이파이에 연결합니다. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); 동안 (WiFi.status() !=WL_CONNECTED) { 지연(500); } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);}void 루프() { 문자열 온도 =Firebase.getString("온도"); 문자열 습도 =Firebase.getString("습도"); 온도 =temperature.substring(0, 5); 습도 =습도.substring(0, 5); 값 =(온도 + 습도); 지연(10); // 인쇄하기 전에 항상 플러시 Serial.flush(); 지연(1000); Serial.print(값); 지연(1000);}
    sensor_arduino.ino아두이노
    Arduino_Sensor_Code
    #include #include #define dht_apin A0dht DHT;String values;void setup() { Serial.begin(9600); 지연(5000); //시스템 부팅 지연} void loop() { DHT.read11(dht_apin); 값 =(문자열(DHT.온도) + ',' + 문자열(DHT.습도)); 지연(10); Serial.flush(); 지연(1000); // 센서 데이터를 직렬로 전송(센서 데이터를 ESP8266으로 전송) Serial.print(values); 지연(2000);}
    sensor_esp8266.ino아두이노
    Sensor_ESP8266_Code
    #include #include #define FIREBASE_HOST "YOUR_FIREBASE_LINK#define FIREBASE_AUTH "YOUR_FIREBASE_TOKEN"#define WIFI_SSID 설정값 ) { 지연(1000); // 와이파이에 연결합니다. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); 동안 (WiFi.status() !=WL_CONNECTED) { 지연(500); } Serial.begin(9600); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);} 무효 루프() { 부울 Sr =거짓; while (Serial.available()) { // sensor_data에 넣어 직렬에서 센서 데이터를 가져옵니다. sensor_data =Serial.readString(); Sr =사실; } 지연(1000); if (Sr ==true) { 값 =sensor_data; //값 변수에서 쉼표 인덱스 가져오기 int fristCommaIndex =values.indexOf(','); int secondCommaIndex =values.indexOf(',', fristCommaIndex + 1); // 쉼표로 분할하여 값 변수에서 센서 데이터를 가져오고 변수에 넣습니다. String temperature =values.substring(0, fristCommaIndex); 문자열 습도 =values.substring(fristCommaIndex + 1, secondCommaIndex); // 초음파 센서 데이터를 Firebase.setString("온도", 온도)에 문자열로 저장합니다. 지연(10); // IR 센서 1 데이터를 Firebase.setString("humidity", 습도)에 문자열로 저장합니다. 지연(10); //이전 센서 데이터를 Firebase delay(1000)에 문자열로 저장합니다. if (Firebase.failed()) { 반환; } }}

    제조공정

    1. InitialState를 사용하여 ppDAQC Pi 플레이트에서 센서 데이터 스트리밍
    2. Arduino를 사용한 태양 전지판의 실시간 데이터 수집
    3. Arduino Uno를 사용한 인간 감지 로봇 시스템
    4. Arduino를 사용한 DIY 적외선 심장 박동 센서
    5. arduino를 사용한 소나 및 IDE 처리 시 표시
    6. 볼트와 Arduino를 사용하여 LED 밝기 제어
    7. Arduino와 함께 MAX30100 웨어러블 펄스 센서 사용
    8. YL-39 + YL-69 토양 습도 센서를 Arduino와 함께 사용
    9. PHP를 사용하여 Arduino와 통신하는 웹사이트를 만드는 방법
    10. 한 CMMS에서 다른 CMMS로:소프트웨어 데이터 마이그레이션 지침