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

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

부품 및 소모품

부품수량
아두이노 우노1
ESP8266 ESP-01 와이파이 모듈1
DHT11 온습도 센서 (3핀)1
브레드보드1
점퍼 와이어1세트
브레드보드 파워 서플라이 5V/3.3V1

앱 및 온라인 서비스

프로젝트 소개

ThingSpeak 아두이노 날씨 스테이션

IoT 입문하기

IoT 입문은 방대한 옵션 때문에 막막할 수 있습니다. ThingSpeak로 시작하면 저렴하고 이해하기 쉽으며 멋진 첫 프로젝트가 됩니다. 온습도 센서 데이터를 아두이노와 ESP-01 와이파이 모듈로 ThingSpeak 클라우드에 전송합니다.

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

필요한 것들

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

참고: 아두이노로 센서와 와이파이 모듈 전원 공급 가능하지만, ESP-01의 피크 전류 감당이 안 되어 외부 파워 서플라이(브레드보드용 5V/3.3V 모듈) 사용을 권장합니다.

회로 연결

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

ESP-01

DHT11

브레드보드 파워 서플라이 점퍼를 3.3V로 설정하세요. 전원 투입 후 연기나 냄새 없으면 정상입니다.

ThingSpeak 설정

  1. ThingSpeak 홈페이지 가입 후 새 채널 생성 (필드: Temperature, Humidity)
  2. 채널 생성 후 'API Keys' 탭에서 Write API Key 복사
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

아두이노 IDE 라이브러리 설정

SoftwareSerial.h는 내장. 다음 두 라이브러리 직접 설치 필요:

  1. DHT Sensor Library by Adafruit
  2. Adafruit Unified Sensor Library

ZIP 파일 다운로드 후 IDE에서 '스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가'로 설치.

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

코드 업로드 및 실행

코드: GitHub 또는 아래 복사.

수정 사항:

  1. Write API Key 입력
  2. 와이파이 SSID와 비밀번호 입력
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축
아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

업로드 후 ThingSpeak 채널에서 그래프 확인. 15초 간격으로 업데이트됩니다.

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

전체 코드

String myAPIkey = "Your Write API key here";
#include <SoftwareSerial.h>
#include <DHT.h>;
SoftwareSerial ESP8266(2, 3); // Rx, Tx
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE,11);
float humidity, temp_f;
long writingTimer = 17;
long startTime = 0;
long waitTime = 0;
boolean relay1_st = false;
boolean relay2_st = false;
unsigned char check_connection=0;
unsigned char times_check=0;
boolean error;

void setup() {
  Serial.begin(9600);
  ESP8266.begin(9600);
  dht.begin();
  startTime = millis();
  ESP8266.println("AT+RST");
  delay(2000);
  Serial.println("Connecting to Wifi");
  while(check_connection==0) {
    Serial.print(".");
    ESP8266.print("AT+CWJAP=\"Wifi Network's name\",\"PassWord\"\r\n");
    ESP8266.setTimeout(5000);
    if(ESP8266.find("WIFI CONNECTED\r\n")==1) {
      Serial.println("WIFI CONNECTED");
      break;
    }
    times_check++;
    if(times_check>3) {
      times_check=0;
      Serial.println("Trying to Reconnect..");
    }
  }
}

void loop() {
  waitTime = millis()-startTime;
  if (waitTime > (writingTimer*1000)) {
    readSensors();
    writeThingSpeak();
    startTime = millis();
  }
}

void readSensors(void) {
  temp_f = dht.readTemperature();
  humidity = dht.readHumidity();
}

void writeThingSpeak(void) {
  startThingSpeakCmd();
  String getStr = "GET /update?api_key=";
  getStr += myAPIkey;
  getStr += "&field1=";
  getStr += String(temp_f);
  getStr += "&field2=";
  getStr += String(humidity);
  getStr += "\r\n\r\n";
  GetThingspeakcmd(getStr);
}

void startThingSpeakCmd(void) {
  ESP8266.flush();
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += "184.106.153.149"; // api.thingspeak.com IP
  cmd += "\",80";
  ESP8266.println(cmd);
  Serial.print("Start Commands: ");
  Serial.println(cmd);
  if(ESP8266.find("Error")) {
    Serial.println("AT+CIPSTART error");
    return;
  }
}

String GetThingspeakcmd(String getStr) {
  String cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());
  ESP8266.println(cmd);
  Serial.println(cmd);
  if(ESP8266.find(">")) {
    ESP8266.print(getStr);
    Serial.println(getStr);
    delay(500);
    String messageBody = "";
    while (ESP8266.available()) {
      String line = ESP8266.readStringUntil('\n');
      if (line.length() == 1) {
        messageBody = ESP8266.readStringUntil('\n');
      }
    }
    Serial.print("MessageBody received: ");
    Serial.println(messageBody);
    return messageBody;
  } else {
    ESP8266.println("AT+CIPCLOSE");
    Serial.println("AT+CIPCLOSE");
  }
}

회로도

아두이노 & ThingSpeak로 실시간 날씨 모니터링 IoT 구축

코드: https://github.com/imalwaysontheinternet/Weather-Stasion

제조공정

  1. 라즈베리 파이 2와 ADS-WS1로 야외 기상 관측소 구축하기
  2. 라즈베리 파이 기상 관측소 만들기: 매일 이메일로 날씨 데이터 전송
  3. 고급 기상 관측소 v2.0: 실시간 온도, 기압, 습도, 고도 모니터링
  4. 아두이노 디지털 주사위: LCD 기반 랜덤 넘버 제너레이터 만들기
  5. 아두이노 아이언맨 제작: 부품, 센서, 단계별 가이드
  6. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  7. 아두이노 구동 3D 프린팅 로봇 팔 만들기: 단계별 가이드
  8. 아두이노 릴레이 제어 가습기 자동화 – 고전압 안전 설계
  9. 1만 원대 휴대용 아두이노 날씨 스테이션 – 나노, DHT22, BMP180, LCD로 직접 제작
  10. eDOT: 내장 IR 리모컨·자동 밝기 조절 갖춘 정밀 아두이노 시계·기상 관측소