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

개인 기상 관측소(Arduino+ ESP8266 + Thingspeak)

구성품 및 소모품

Adafruit BMP180
× 1
DHT11 온도 및 습도 센서(4핀)
× 1
LDR
광 종속 저항기
× 1
Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
저항 4.75k 옴
× 1
저항 51K
× 1
LM2596 DC-DC 벅 컨버터 강압 전원 모듈
× 1
DC 잭
× 1
스위치
× 1
12v-2A 벽면 어댑터
× 1
PCB
× 1
남성 헤더 40 위치 1 행(0.1")
× 1
암컷 헤더 8 위치 1 행(0.1")
× 5
플라스틱 상자
× 1

필요한 도구 및 기계

와이어 스트리퍼
뜨거운 글루건(일반)
납땜 인두(일반)
스크류 드라이버
파일
수공예에 사용

앱 및 온라인 서비스

Arduino IDE
ThingSpeak API

이 프로젝트 정보

소개:개인 기상 관측소 만들기

방에 앉아 있으면 땀이 나기 시작하거나 오한을 느끼기 시작합니다. 방의 온도가 얼마나 될까요? 또는 습도는 어떻게 될까요? 이것은 얼마 전에 나와 함께 일어났습니다.

이것은 방의 온도, 습도, 기압 및 조도를 모니터링하고 thingspeak.com의 개인 채널에 업로드하는 Personal Weather Station의 시작으로 이어집니다.

시작하자.

1단계:빠른 동영상

다음은 5분 안에 모든 것을 요약한 작은 비디오입니다.

YouTube에서 시청하려면 여기를 클릭하세요.

2단계:개인 기상 관측소에 필요한 전자 부품

설명: DHT11을 사용하여 습도를 감지하고 BMP180을 사용하여 온도와 압력을 감지하고 LDR(Light Dependent Resistor)을 사용하여 광도에 대한 대략적인 아이디어를 얻습니다. Arduino nano는 이러한 센서에서 데이터를 수집하고 thingspeak.com의 개인 채널에 업로드하기 위해 ESP8266으로 보냅니다. 12V-2A 벽면 어댑터에서 Arduino nano에 전원을 공급하고 센서와 ESP8266은 LM2596 기반 벅 컨버터에서 하향 변환된 전압을 수신합니다.

구성요소 목록:

<울>
  • BMP180 압력 및 온도 센서,
  • <울>
  • DHT11 습도 센서,
  • <울>
  • 광 종속 저항기(LDR),
  • <울>
  • ESP8266 와이파이 모듈(펌웨어 준비),
  • <울>
  • 아두이노 나노,
  • <울>
  • 저항 2개 - 51KOhm 및 4.7KOhm,
  • <울>
  • LM2596 벅 컨버터,
  • <울>
  • DC 잭,
  • <울>
  • 스위치 및
  • <울>
  • 12V-2A 벽면 어댑터.
  • 3단계:개인 기상 관측소에 필요한 도구 및 추가 품목

    설명: 와이어 스트립퍼, 인클로저의 컷/홀을 매끄럽게 하기 위한 파일, 인클로저 내부 구성 요소를 배치하기 위한 글루건, 인클로저 덮개를 닫는 스크루 드라이버 및 땜납 와이어가 있는 인두를 사용하여 범용 회로 기판(GCB)에 회로를 조립합니다. . 4x4x2인치 플라스틱 상자가 인클로저 역할을 합니다. GCB에 적절한 조립을 위해 암 커넥터와 함께 암수 버그 스트립도 필요합니다.

    도구 목록:

    <울>
  • 와이어 스트리퍼,
  • <울>
  • 파일,
  • <울>
  • 글루건,
  • <울>
  • 나사 드라이버 및
  • <울>
  • 납땜 인두 및 납땜 와이어.
  • 추가 항목 목록:

    <울>
  • 4x4x2인치 플라스틱 상자(이 치수를 사용했습니다. 주변 치수는 괜찮음),
  • <울>
  • 범용 회로 기판,
  • <울>
  • 남성과 여성의 덩굴 스트립과
  • <울>
  • 암 커넥터.
  • 4단계:소프트웨어 요구사항

    설명:센서 데이터의 가치를 보려면 thingspeak.com의 개인 채널이 필요합니다. arduino nano용 arduino 코드를 작성하려면 Arduino IDE가 필요합니다. (나는 너희들이 PC/노트북과 인터넷에 접속할 수 있는 와이파이 경로를 소유하고 있다고 가정한다)

    소프트웨어 요구 사항 목록:

    <울>
  • Thingspeak.com 및
  • 의 비공개 채널 <울>
  • Arduino IDE(최신 버전 권장).
  • arduino.cc에서 최신 버전의 Arduino IDE를 다운로드할 수 있습니다. 이제 thingspeak.com에서 비공개 채널을 만들 수 있습니다.

    5단계:Thingspeak.com에서 비공개 채널 만들기

    thingspeak.com에서 비공개 채널을 만들려면 다음 단계를 따르세요.

    <울>
  • 웹 브라우저를 열고 thingspeak.com으로 이동하여 오른쪽 상단 모서리에 있는 '가입' 탭을 클릭합니다(이미지 1번)
  • <울>
  • 세부 정보를 입력하고 '계정 만들기'를 클릭합니다(이미지 2번)
  • <울>
  • 이제 '새 채널' 탭을 클릭합니다(이미지 3번)
  • <울>
  • 채널에 대한 세부 정보를 다시 입력하고 4개의 필드를 활성화하고(4개의 센서 값을 보낼 예정이므로) 아래로 스크롤하여 '채널 저장' 탭을 클릭합니다(이미지 번호 4/5).
  • <울>
  • 이 페이지에서 'API 키' 탭을 클릭하고 'API 키 작성'을 기록해 둡니다.
  • 이상입니다. 이제 개인 ThingSpeak 채널이 생겼습니다.

    이제 모든 전자 부품을 결합해 보겠습니다.

    6단계:개인 기상 관측소 도식

    여기에 Personal Weather Station의 회로도 이미지를 첨부합니다. 나는 또한 그것을 위해 fritzing 파일을 첨부합니다. 연결은 상당히 간단합니다.

    <울>
  • BMP180은 arduino nano의 I2C 포트에 연결됩니다.
  • <울>
  • LDR은 51KOhm 저항으로 분압 방식으로 연결하고 접합은 arduino nano의 A1 핀에 연결합니다.
  • <울>
  • DHT11의 데이터 핀은 4.7KOhm 저항으로 high로 풀링되고 arduino nano의 A0 핀에 연결됩니다.
  • <울>
  • ESP8266의 TX와 RX는 각각 arduino nano의 D10과 D11에 연결됩니다. ESP8266의 CH_PD는 3.3V 레일에 연결됩니다.
  • <울>
  • 이 모듈의 전위차계를 켜서 LM2596 모듈의 출력을 3.3V로 조정합니다. 이 모듈의 출력을 BMP180,DHT11,LDR 및 ESP8266의 Vcc 및 Gnd의 Vcc 및 Gnd에 각각 연결합니다.
  • <울>
  • LM2596 모듈의 입력은 Arduino nano의 Vin 및 Gnd에도 연결되는 12V-2A 벽면 어댑터에서 나옵니다.
  • 범용 회로 기판에 이 회로를 조립해야 합니다. 그걸하자.

    7단계:범용 회로 기판(GCB)에 회로 조립

    3단계의 하드웨어 도구 및 추가 항목이 이제 작동합니다.

    <울>
  • Arduino nano 및 ESP8288의 GCB 배치에 암형 버그 스트립 사용
  • <울>
  • 납땜 인두와 납땜 와이어를 사용하여 기판에 전기적으로 연결합니다.
  • <울>
  • 암 커넥터를 사용하여 모든 센서와 LM2596 모듈이 인클로저의 덮개와 벽에 달라붙을 수 있으므로 도달 범위를 확장합니다.
  • <울>
  • 위에서 만든 여성 확장을 위한 연결 지점을 만들기 위해 수컷 버그 스트립을 사용합니다.
  • <울>
  • 와이어(와이어 스트리퍼를 사용하여 스트립) 또는 용융된 솔더 와이어의 레일을 사용하여 GCB에서 회로도를 구현하고 마지막으로
  • <울>
  • 멀티미터를 사용하여 회로에 전원을 공급하기 전에 종류를 확인하십시오.
  • 이제 모든 하드웨어가 GCB에 배치되었으므로 코드를 살펴보겠습니다.

    8단계:코드

    Personal Weather Station의 코드는 매우 간단합니다. 이식성을 높이기 위해 코드에 주석을 제대로 달았습니다. 코드를 굽기 전에 다음 사항을 주의하세요.

    <울>
  • 모든 라이브러리가 설치되었는지 확인합니다.
  • <울>
  • 코드 14행에서 하이픈을 액세스 포인트(와이파이 라우터)의 SSID로 교체합니다.
  • <울>
  • 코드 15행에서 ​​하이픈을 Wi-Fi 네트워크의 PASSWORD로 교체합니다.
  • <울>
  • 17행에서 하이픈을 ThingSpeak의 비공개 채널 쓰기 API 키로 교체하고
  • <울>
  • Arduino nano를 프로그래밍하는 동안 12V DC 전원이 꺼져 있는지 확인하십시오.
  • 다음은 내가 사용한 코드와 라이브러리를 다운로드할 수 있는 github(Personal Weather Station)에 대한 링크입니다.

    이제 하드웨어와 소프트웨어가 준비되었으므로 남은 것은 패키징뿐입니다.

    9단계:인클로저 준비

    이제 4x4x2인치 상자에 다양한 모양과 크기의 구멍을 만들어야 합니다. DC 잭용 구멍을 만들고 인클로저의 원하는 벽을 켜야 합니다. 또한 인클로저 덮개에 센서용 구멍을 만들어야 합니다.

    인클로저에 만들어야 할 구멍의 치수를 보여주는 이미지를 첨부했습니다.

    뜨거운 칼을 사용하여 플라스틱을 자릅니다.

    파일을 사용하여 구멍을 부드럽게 합니다.

    이제 인클로저가 회로를 호스팅할 준비가 되었습니다.

    10단계:뚜껑 닫기

    조립된 GCB를 인클로저 내부에 넣습니다.

    벽의 구멍에 스위치와 DC 잭을 놓습니다. 뚜껑 구멍의 센서. 위치를 확정하고 글루건을 사용하여 고정합니다. 마지막으로 드라이버를 사용하여 뚜껑을 닫습니다.

    개인 기상 관측소가 있습니다. ThingSpeak 개인 채널에서 스마트폰/PC/노트북/태블릿을 통해 전원 공급 장치를 켜고 전 세계 어디에서나 방의 온도, 습도, 압력 및 조도를 확인하십시오.

    이것이 이 프로젝트의 전부입니다. 의심스러운 경우 의견을 말하십시오. 읽어 주셔서 감사합니다.

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

    코드

    <울>
  • 코드
  • 코드Arduino
    #include #include #include #include #define DEBUG 0 // 시리얼 모니터를 사용하여 디버깅을 활성화하려면 값을 1로 변경 #define dht_pin A0 // DHT 센서용 핀 A0 정의#define lightSensor A1 // 핀 A1을 LDR 전압 분배기용 입력 핀으로 정의rdht DHT;Adafruit_BMP085 bmp;SoftwareSerial esp8266Module(10, 11); // RX, TXString 네트워크 ="----"; // 액세스 포인트 SSIDString 암호 ="------------"; // Wi-Fi 액세스 포인트 암호#define IP "184.106.153.149" // thingspeak.com의 IP 주소String GET ="GET /update?key=----------------"; // 채널로 교체 keyvoid setup(){ if(DEBUG){ Serial.begin(9600); // 하드웨어 직렬 전송 속도를 9600으로 설정 } esp8266Module.begin(9600); // 소프트 직렬 전송 속도를 9600으로 설정 if (!bmp.begin()) { if(DEBUG){ Serial.println("유효한 BMP085 센서를 찾을 수 없습니다. 배선을 확인하십시오!"); } 동안 (1) {} } 지연(2000);} 무효 루프() { setupEsp8266(); DHT.read11(dht_pin); 이중 습도 =DHT.humidity; 이중 bmp_temp =bmp.readTemperature(); 이중 bmp_pressure =bmp.readPressure(); int lightIntensity =analogRead(lightSensor); updateTemp(문자열(bmp_temp),문자열(빛강도),문자열(bmp_pressure),문자열(휴미)); 지연(30000);}//------------------------------------------ -------------------------// esp8266 기능 설정에 따라 만든 스테이션에 넣고 // wifi 액세스 포인트에 연결합니다.//- -------------------------------------------------- --------------- setupEsp8266() { if(DEBUG){ Serial.println("esp8266 재설정 중"); } esp8266Module.flush(); esp8266Module.println(F("AT+RST")); 지연(7000); if (esp8266Module.find("확인")) { if(DEBUG){ Serial.println("확인됨"); Serial.println("espmode 변경"); } esp8266Module.flush(); 변경 모드(); 지연(5000); esp8266Module.flush(); 와이파이 연결(); } else { if(DEBUG){ Serial.println("확인할 수 없음"); } }}//--------------------------------------------- ----------------------// 다음 함수는 esp8266을 스테이션 모드로 설정합니다.//----------------- -------------------------------------------------- 부울 변경 모드(){ esp8266Module.println(F("AT+CWMODE=1")); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("모드가 변경되었습니다"); } true를 반환합니다. } else if(esp8266Module.find("변경 없음")){ if(DEBUG){ Serial.println("이미 모드 1"); } true를 반환합니다. } else { if(DEBUG){ Serial.println("모드를 변경하는 동안 오류가 발생했습니다."); } 반환 거짓; }}//---------------------------------------------- ----------------------// 다음 기능은 esp8266을 Wi-Fi 액세스 포인트에 연결합니다.//----------------- -------------------------------------------------- bool connectToWiFi(){ if(DEBUG){ Serial.println("connectToWiFi 내부"); } 문자열 cmd =F("AT+CWJAP=\""); cmd +=네트워크; cmd +=F("\",\""); cmd +=암호; cmd +=F("\""); esp8266Module.println(cmd); 지연(15000); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("액세스 포인트에 연결됨"); } true를 반환합니다. } else { if(DEBUG){ Serial.println("액세스 포인트에 연결할 수 없습니다."); } 반환 거짓; }}//---------------------------------------------- ----------------------// 다음 함수는 thingspeak.com//----------------에 센서 데이터를 보냅니다. -------------------------------------------------- -void updateTemp(문자열 전압1, 문자열 전압2, 문자열 전압3, 문자열 전압4){ 문자열 cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=IP; cmd +="\",80"; esp8266Module.println(cmd); 지연(5000); if(esp8266Module.find("오류")){ if(DEBUG){ Serial.println("전송 중 오류"); } 반품; } cmd =GET + "&필드1=" + 전압1 + "&필드2=" + 전압2 + "&필드3=" + 전압3 + "&필드4=" + 전압4 + "\r\n"; esp8266Module.print("AT+CIPSEND="); esp8266Module.println(cmd.length()); 지연(15000); if(esp8266Module.find(">")) { esp8266Module.print(cmd); if(DEBUG){ Serial.println("전송된 데이터"); } } else { esp8266Module.println("AT+CIPCLOSE"); if(DEBUG){ Serial.println("연결이 닫혔습니다."); } }}
    개인 기상 관측소용 라이브러리 및 코드
    Readme를 확인하십시오https://github.com/jayraj4021/Personal-Weather-Station-14

    회로도

    도식.fzz

    제조공정

    1. Raspberry Pi 기반 기상 관측소
    2. Raspberry Pi 2 기상 관측소
    3. 라즈베리 파이 기상 관측소
    4. 기상 관측소로 IOT에 참여하십시오 – CWOP
    5. 날씨 모니터
    6. Weather Station V 2.0
    7. 스마트 블라인드
    8. MKR1000 to ThingSpeak.com
    9. $10 휴대용 Arduino 기상 관측소(AWS)
    10. eDOT - Arduino 기반 정밀 시계 및 기상 관측소