Weather in my hands!


  • 숫자 대신 날씨 아이콘 부착
  • Wifi 쉴드로 날씨 정보와 연동 (WizArduino MEGA WIFI 이용)
  • 아두이노로 날씨 시계 작동

+

  • 온도센서를 이용하여 내 방의 현재 온도를 나타냄

▶ 날씨 정보에 따라 화살표가 이동하며 내 방의 온도까지 한 눈에 확인할 수 있는, 아두이노를 활용한 시계!

 

회로도 설계


  • 날씨 시계

서보모터를 점퍼선을 이용하여연결한 회로도의 모습입니다.

 

  • 내 방의 온도

온도센서와 아두이노(UNO)보드를 브레드보드를 통하여 연결한 회로도 모습입니다.

 

작동 원리


  • tmp36 온도 센서를 통해 온도 받아오기

왼쪽 핀에는 5V, 오른쪽 핀에는 GND를 연결해줍니다.

가운데 핀에는 아두이노 보드의 아날로그 핀 A0와 연결 해 준 후 아두이노로 변수 설정 해 주었습니다.

tmp36은 섭씨 온도에 선형으로 비례하는 전압 출력을 제공하므로 voltage로 들어오는 값을 온도로 바꿔주어야 합니다.

온도 1˚C당 10mV가 증가/감소 합니다.

 

  • 받아온 온도 값을 LCD를 통해 출력하기

LCD의 1번 핀은 GND, 2번 핀은 VCC(5V)에 연결하며 LCD에 저항을 연결해 밝기를 조절 하여 주었습니다.

아두이노 우노 보드의 12, 11, 5, 4, 3, 2번 핀을 연결해 LCD를 출력하였습니다.

아두이노 시리얼 모니터 화면과 LCD에 각각 온도가 동시에 출력되도록 하였습니다.

Serial.print와 lcd.print로 화면에 출력하며, lcd.setCursor로 LCD 줄을 이동시켜 줄 수 있습니다.

 

  • OpenWeatherMap을 통해 날씨 정보 받아오기

OpenWeatherMap은 날씨 정보 API를 제공합니다. 이 사이트를 통해 날씨 정보를 Wifi쉴드로 받아올 수 있습니다.

먼저, 사이트에 가입한 후 제공하는 API key를 소스 코드에 추가하면 됩니다.

연결하려는 Wifi와 원하는 국가, 지역 설정이 가능합니다.

그 후 클라이언트를 선언하고, 사이트에서 데이터를 불러옵니다.

서버에서 전송된 데이터를 String에 저장한 후 날씨 코드 저장 변수와 코드 데이터가 있는지 여부를 판단합니다.

(xml로 표현된 데이터를 파싱하여 원하는 값만 빼내기 위한 과정입니다.)

시리얼 모니터에 이와 같이 날씨 정보가 출력된다면, API를 통해 날씨를 받아오는 것에 성공 한 것입니다.

 

  • 서보 모터 각도 제어하기

String 데이터를 Integer형으로 변환하는 함수를 이용하여 날씨를 정수로 나타낸 뒤 전송받은 날씨 데이터에 따라 서보모터의 각도를 변경하였습니다.

 

완성 사진