습도 및 온도는 농장, 온실, 의료, 산업 가정 및 사무실과 같은 많은 장소에서 측정하는 매우 일반적인 매개 변수입니다. 아두 이노를 이용한 습도 및 온도 측정에 대해서는 이미 다루었으며 LCD에 데이터를 표시했습니다.
이 IoT 프로젝트에서는 ThingSpeak를 사용하여 인터넷을 통해 습도 및 온도 를 모니터링 하고 ThingSpeak 서버를 사용하여 인터넷을 통해 현재 습도 및 온도 데이터를 보여줄 것입니다. Arduino, DHT11 센서 모듈, ESP8266 WIFI 모듈 및 LCD 간의 데이터 통신을 통해 수행됩니다. 섭씨 눈금 온도계 및 백분율 눈금 습도계는 LCD 디스플레이를 통해 주변 온도와 습도를 표시하고이를 ThingSpeak 서버로 전송 하여 전 세계 어디서나 실시간 모니터링 을 수행합니다.
Working 및 ThingSpeak 설정:
4 개의 섹션으로 구성된이 IoT 기반 프로젝트는 먼저 습도 및 온도 센서 DHT11 이 습도 및 온도 데이터를 감지합니다 . 둘째, Arduino Uno 는 DHT11 센서의 데이터를 적절한 백분율 및 섭씨 스케일로 추출하여 Wi-Fi 모듈로 보냅니다. 세 번째로 Wi-Fi 모듈 ESP8266 은 데이터를 ThingSpeak의 서버로 보냅니다. 마지막으로 ThingSpeak 는 데이터를 분석하여 그래프 형식으로 표시합니다. 옵션 LCD 는 온도 및 습도를 표시하는데도 사용됩니다.
ThingSpeak 는 Arduino를위한 IoT 기반 프로젝트에 매우 좋은 도구를 제공합니다. ThingSpeak 사이트를 사용하면 어디서나 인터넷을 통해 데이터를 모니터링 할 수 있으며 ThingSpeak에서 제공하는 채널 및 웹 페이지를 사용하여 인터넷을 통해 시스템을 제어 할 수도 있습니다. ThingSpeak 는 센서에서 데이터를 '수집' 하고 데이터를 '분석 및 시각화' 하고 반응을 트리거하여 '행동' 합니다. ESP8266 WIFI 모듈을 사용하여 ThingSpeak 서버로 데이터를 전송하는 방법에 대해 설명 합니다.
1. 먼저 사용자는 ThingSpeak.com에서 계정을 생성 한 다음 로그인하고 시작하기를 클릭해야합니다.
2. 이제 '채널'메뉴로 이동하여 추가 프로세스를 위해 같은 페이지 에서 새 채널 옵션을 클릭 합니다.
3. 이제 채널 생성을 위한 양식이 표시 되고 원하는대로 이름과 설명을 입력합니다. 그런 다음 필드 1 및 필드 2 레이블에 '습도'및 '온도'를 채우고 두 필드의 확인란을 선택합니다. 또한 양식 아래의 '공개'옵션에 대한 확인란을 선택하고 마지막으로 채널을 저장하십시오. 이제 새 채널이 생성되었습니다.
4. 이제 'API 키'탭을 클릭 하고 쓰기 및 읽기 API 키를 저장합니다. 여기서는 쓰기 키만 사용합니다. 이 키를 코드의 char * api_key 에 복사해야합니다.
5. 그런 다음 '데이터 가져 오기 / 내보내기'를 클릭하고 다음과 같은 업데이트 채널 피드 GET 요청 URL을 복사합니다.
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. 이제 사용자 는 postUrl 이 "update? api_key = SIWOYBX26OXQ1WMS & field1 = 0"인 httpGet 함수를 사용하여 "api.thingspeak.com"을 연 다음 데이터 피드 또는 업데이트 요청 주소를 사용하여 데이터를 보내야합니다.
데이터를 보내기 전에 사용자는 아래와 같이 온도 및 습도 데이터 필드 로이 쿼리 문자열 또는 postUrl 을 편집해야 합니다. 여기서는 httpGet 을 사용 하여 데이터를 서버에 보낸 후 GET 요청을 사용하여 서버에 보내야하는 문자열에 두 매개 변수를 추가했습니다. 아래의 전체 코드를 확인하십시오.
sprintf (postUrl, "update? api_key = % s & field1 = % s & field2 = % s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
전체 프로세스는 이 문서 끝 부분 의 비디오 섹션에 설명되어 있습니다.
이 프로젝트의 작업은 DHT11에서 데이터를 가져 오기위한 단일 와이어 직렬 통신을 기반으로합니다. 먼저 Arduino는 DHT 모듈에 시작 신호를 보내고 DHT는 데이터가 포함 된 응답 신호를 보냅니다. Arduino는 먼저 습도, 두 번째는 온도의 두 부분에서 데이터를 수집하고 추출한 다음 16x2 LCD 및 ThingSpeak 서버로 보냅니다. ThingSpeak는 데이터를 아래와 같이 그래프 형태로 표시합니다.
여기에서 DHT11 센서 및 Arduino와의 인터페이스 에 대해 자세히 알아볼 수 있습니다.
회로 설명:
이 ThingSpeak 온도 및 습도 모니터링 프로젝트의 연결 은 매우 간단합니다. 여기에서 LCD 는 온도 및 습도를 표시하는 데 사용되며 4 비트 모드에서 Arduino에 직접 연결됩니다. RS, EN, D4, D5, D6 및 D7과 같은 LCD의 핀은 Arduino 디지털 핀 번호 14, 15, 16, 17, 18 및 19에 연결됩니다.이 LCD는 선택 사항입니다.
DHT11 센서 모듈 은 Arduino의 디지털 핀 12에 연결됩니다. Wi-Fi 모듈 ESP8266 의 Vcc 및 GND 핀은 3.3V에 직접 연결되고 Arduino 및 CH_PD의 GND도 3.3V에 연결됩니다. ESP8266의 Tx 및 Rx 핀은 Arduino의 핀 2 및 3에 직접 연결됩니다. 소프트웨어 직렬 라이브러리는 Arduino의 핀 2 및 3에서 직렬 통신을 허용하는데도 사용됩니다. 우리는 이미 Arduino에 대한 ESP8266 Wi-Fi 모듈의 인터페이스에 대해 자세히 다루었습니다.
프로그래밍 부분:
이 프로젝트의 프로그래밍 부분은 모든 작업을 수행하는 데 매우 중요한 역할을합니다. 우선 필요한 라이브러리를 포함하고 변수를 초기화합니다.
#include "dht.h"// dht 용 라이브러리 포함 #include
쓰기 API 키를 입력하고 문자열을 가져옵니다.
char * api_key = "SIWOYBX26OXQ1WMS"; // ThingSpeak에서 쓰기 API 키를 입력합니다. static char postUrl; int humi, tem; void httpGet (문자열 ip, 문자열 경로, int 포트 = 80);
에서는 보이드 루프 () 함수 우리는 온도와 습도를 판독하여, LCD에 해당 수치를 나타낸다.
void send2server () 함수는 데이터를 서버로 보내는 데 사용됩니다. Send2server 함수는 20 초마다 호출하는 타이머 인터럽트 서비스 루틴입니다. 업데이트 기능을 호출하면 타이머 인터럽트 서비스 루틴이 호출됩니다.
void send2server () {char tempStr; char HumidStr; dtostrf (tem, 5, 3, tempStr); dtostrf (휴미, 5, 3, HumidStr); sprintf (postUrl, "update? api_key = % s & field1 = % s & field2 = % s", api_key, humidStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }