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

AWS - Arduino 기상 관측소

구성품 및 소모품

Arduino UNO
× 1
USB-A-마이크로 USB 케이블
× 1
브레드보드(일반)
× 1
점퍼 와이어(일반)
× 1
플렉시 유리 4mm
× 1
저항 221옴
× 1
Adafruit Standard LCD - 파란색 바탕에 16x2 흰색
× 1
Maxim 통합 DS1307 64 x 8, 직렬, I²C 실시간 시계
× 1
포토 저항기
× 1
DHT11 온도 및 습도 센서(4핀)
× 1
온도 센서
× 1
IR 수신기(일반)
× 1
수위 센서
× 1
Sunfounder 스타터 RFID 키트
× 1

필요한 도구 및 기계

레이저 커터(일반)

이 프로젝트 정보

AWS, Arduino Weather Station은 환경에 대한 정확한 24시간 데이터를 제공합니다. 특히 아두이노 마이크로컨트롤러 보드를 기반으로 하며, 환경 분석을 위한 풀스태킹 센서를 지원합니다.

목표

이 제어의 목적은 위에서 설명한 센서를 통해 일련의 데이터를 감지하고 LCD 화면을 통해 사용자와 인터페이스하는 것입니다. 프로젝트 "하드웨어"의 작은 크기로 인해 lasercut 기계로 만든 작은 상자에 프로젝트를 닫을 수 있습니다.

사용된 센서

물 및 눈 레벨 센서

수위 표시기는 오버 헤드 탱크의 수위를 표시하는 데 사용되며 이를 사용하여 물의 범람을 방지할 수 있으며 언제든지 탱크의 수위를 알 수 있습니다.

DHT11 습도 및 온도 센서

DHT11 디지털 온습도 센서는 보정된 디지털 신호 출력 온습도 결합 센서로, 애플리케이션별 모듈이 기술과 디지털 온습도 센서 기술을 캡처하여 높은 신뢰성과 우수한 장기 안정성을 가진 제품을 보장합니다. 제품은 우수한 품질, 빠른 응답, 간섭 방지 기능, 저렴한 비용 및 기타 장점을 가지고 있습니다.

포토레지스터

LDR(Light Dependent Resistor)이라고도 하는 포토레지스터는 빛의 유무를 나타내거나 빛의 강도를 측정하는 데 가장 자주 사용되는 빛에 민감한 장치입니다. 어두운 곳에서는 저항이 매우 높지만 LDR 센서가 빛에 노출되면 빛의 강도에 따라 저항이 몇 옴까지 급격히 떨어집니다.

LCD I2C 1602 디스플레이

I2C 버스가 있는 LCD1602는 직렬 버스의 한 유형입니다. 다중 호스트 시스템에서 요구되는 버스 룰링 및 고속 또는 저속 장치 동기화 기능을 갖춘 고성능 직렬 버스입니다. I2C LCD1602의 파란색 전위차계는 백라이트만 사용됩니다.

I2C는 저항으로 풀업된 직렬 데이터 라인(SDA)과 직렬 클록 라인(SCL)의 두 가지 양방향 오픈 드레인 라인만 사용합니다. 다른 전압을 사용하는 시스템이 허용되지만 사용되는 일반적인 전압은 +5V 또는 +3.3V입니다.

DS1302 실시간 클록 모듈

실시간 클럭/캘린더와 31바이트의 정적 RAM이 내장된 통합 DS1302를 기반으로 합니다. 시간 형식은 hh/mm/ss이고 날짜 형식은 yyyy/mm/dd입니다.

LM35 온도 센서

LM35 정밀 온도 센서는 매우 정확한 방식으로 온도를 감지하는 센서입니다. ADC(아날로그-디지털 변환기)는 ADCValue =샘플 * 1024 / 기준 전압(+5v) 공식을 기반으로 아날로그 값을 디지털 근사치로 변환합니다. 따라서 +5볼트 기준에서 디지털 근사치는 =입력 전압 * 205가 됩니다.

적외선 수신기 및 조종기

이 두 가지 구성 요소는 함께 작동합니다. 수신기는 원격 컨트롤러의 데이터 수신을 허용합니다. 데이터는 누르려는 버튼에 따라 다릅니다. 특정 기능에 할당하기 위해 다음 버튼이 선택되었습니다.

<울>
  • 0 버튼:LCD 화면에서 시간과 날짜를 볼 수 있습니다.
  • <울>
  • 1 버튼:LCD 화면에서 LM35의 온도 데이터와 DHT11의 습도 데이터를 볼 수 있습니다.
  • <울>
  • 2 버튼:LCD 화면의 명암 비율을 볼 수 있습니다.
  • <울>
  • 3 버튼:LCD 화면에서 수위(mm) 값을 볼 수 있습니다.
  • <울>
  • "순환" 버튼:4초 간격으로 모든 화면을 볼 수 있습니다.
  • A.W.S.

    1단계:상자 구성

    프로젝트 규모를 고려한 후 플렉시글라스 박스 시공을 진행했습니다. 센서 와이어의 출구를 위한 상대적인 맞물림 시트와 구멍이 있는 면 크기는 Autocad 소프트웨어로 설계되었으며 레이저컷 기계로 면을 절단했습니다. 그리고 마침내 우리는 강력한 접착제로 모든 것을 조립했습니다.

    2단계:회로도 및 하드웨어 연결

    다음은 Arduino 기상 관측소의 회로도 이미지입니다. 그것은 fritzing 소프트웨어로 이루어졌습니다. 연결은 상당히 간단합니다.

    3단계:Arduino 프로그래밍

    Arduino IDE에서 코드를 작성하고 필요한 모든 라이브러리를 사용하고 기상 관측소가 원하는 대로 실행되도록 프로그래밍했습니다.

    4단계:방법 작동

    AWS(Arduino 기상 관측소 )는 환경에서 일부 데이터를 수집하고 적외선 리모컨을 사용하여 볼 수 있도록 하는 기상 관측소입니다. 사용자와 인터페이스하기 위해 사용자가 교체할 수 있는 5개의 다른 화면이 있는 LCD 디스플레이가 있습니다.

    다음은 화면입니다:

    1. 홈 화면: 보드를 켰을 때 사용자가 볼 수 있는 첫 번째 화면입니다. 특정 페이딩 효과가 있는 "Arduino Weather Station"이라는 단어로 프로젝트를 제시합니다. AWS에 데이터 확인을 요청할 때마다 이 화면을 볼 수도 있습니다.

    2. 날짜 및 시간 화면: 리모컨의 0 버튼만 누르면 사용자가 접근할 수 있는 첫 화면입니다. 누르면 화면이 10초 지연된 후 홈 화면으로 돌아갑니다.

    3. 습도 및 온도 화면: DHT11 및 LM35 센서가 수신한 습도 및 온도에 대한 데이터를 각각 제공하는 화면입니다. 리모컨의 1번 버튼과 연결되어 있으며, 누르면 화면이 10초 정도 지연된 후 홈 화면으로 돌아갑니다.

    4. 어두운 화면: LDR에서 수신한 센서의 빛의 양에 대한 데이터를 주는 화면입니다. 센서의 어두움 비율을 나타냅니다. 리모컨의 2번 버튼과 연결되며, 누르면 화면이 10초 정도 지연된 후 홈 화면으로 돌아갑니다.

    5. 유체 레벨 화면: 이 화면은 레시피에 포함된 액체 양의 높이를 제공합니다. 리모컨의 3번 버튼과 연결되어 있으며, 누르면 화면이 10초 정도 지연된 후 홈 화면으로 돌아갑니다.

    마지막 4개의 화면은 순환 버튼을 눌러 서로 4초 간격으로 연속해서 볼 수 있습니다. 리모컨에. 이 모드에서는 정보의 한 랩만 수행됩니다.

    주의사항

    이 프로젝트의 수명을 연장하기 위해 고려해야 할 첫 번째 사실은 보드 및 스테이션 일반에 액체 또는 기타 유해 물질의 접촉을 피하는 것입니다.

    강수 후에는 물통을 비우고 센서를 점검하고 청소해야 합니다.

    충전식 배터리의 지속 시간은 약 2일이므로 방전될 경우 충전(약 2시간)이 필요합니다.

    때때로 적외선 센서가 원하는 만큼 작동하지 않아 낮은 온도(약 0도)에서 기능이 중단될 수 있습니다. 문제가 되지는 않습니다. 실제로 상자를 열고 재설정 버튼을 누르기만 하면 됩니다. AWS는 다시 정상적으로 작동합니다.

    리셋 버튼을 누르면 RTC DS1302 모듈은 약 10년 동안 지속되는 모듈에 있는 지원 배터리 덕분에 날짜와 시간에 대한 값을 변경하지 않습니다.

    AWS 전원이 제거되면 날짜와 시간이 변경됩니다. 문제를 해결하려면 기본 설정에 따라 목록에 표시된 지점에서 재설정해야 합니다. 로드되면 아래와 같이 프로그램에 대한 설정을 숨겨야 합니다.

    Before:Time t(2017, 12, 03, 10, 15, 00, 1);rtc.time(t);After://Time t(2017, 12, 03, 10, 15, 00, 1)//;rtc.time(t); 

    코드

    //스케치 라이브러리 포함#include #include  //시계 라이브러리#include  //시계 라이브러리#include  //시계 library#include  //dht11 library#include  //LCD library#include  //LCD 라이브러리용 와이어#define lmPin A1 //LM35 A1LiquidCrystal_I2C에 부착 lcd(0x27, 16, 2); // 16자 및 2줄 displaydht DHT에 대해 LCD 주소를 0x27로 설정합니다. // dhtconst의 변수 유형 생성 int DHT11_PIN =4; // dht11을 핀 4에 연결 const int waterSensor =0; //물 센서 변수 설정int waterValue =0; // 물 센서에 대한 변수int mmwaterValue =0;int sensorPin =A3; // 전위차계에 대한 입력 핀을 선택합니다.int luce =0; //ldrint pluce의 변수 =0; //ldrfloat tem =0에 대한 변수; //온도에 대한 변수 lmVal =0; //LM35의 변수//irconst int irReceiverPin =3;IRrecv recv(irReceiverPin); //IRrecvdecode_results 유형의 변수를 생성합니다. //RST 핀 연결 touint8_t SDA_PIN =6; //IO 핀 연결 touint8_t SCL_PIN =7; //clk 핀 부착/* 버퍼 생성 */char buf[50];char day[10];/* DS1302 객체 생성 */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//DS1302void의 변수 유형 생성 print_time(){ /* 칩에서 현재 시간과 날짜를 가져옵니다. */ Time t =rtc.time(); /* 요일 이름 지정 */ memset(day, 0, sizeof(day)); switch (t.day) { 경우 1:strcpy(day, "Sun"); 부서지다; 경우 2:strcpy(일, "월"); 부서지다; 경우 3:strcpy(요일, "화"); 부서지다; 경우 4:strcpy(일, "수"); 부서지다; 사례 5:strcpy(일, "목"); 부서지다; 사례 6:strcpy(요일, "금요일"); 부서지다; 사례 7:strcpy(요일, "토요일"); 부서지다; } /* 시간과 날짜를 포맷하고 임시 버퍼에 삽입 */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. yr, t.mon, t.date, t.hr, t.min, t.sec); /* 시간을 볼 수 있도록 포맷된 문자열을 직렬로 출력 */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.yr); lcd.print("-"); lcd.print(t.mon / 10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.날짜 % 10); lcd.print(" "); lcd.print(일); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);} 무효 설정() { //시계 Serial.begin(9600); rtc.write_protect(거짓); rtc.halt(거짓); //ir recv.enableIRIn(); // ir 수신기 모듈 활성화 lcd.init(); //LCD 초기화 lcd.backlight(); //백라이트 열기 pinMode(sensorPin, INPUT); 시간 t(2017, 12, 03, 10, 15, 00, 1);//시간 초기화 /* 칩에 시간과 날짜 설정 */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("아"); 지연(50); lcd.setCursor(1, 0); lcd.print("r"); 지연(50); lcd.setCursor(2, 0); lcd.print("d"); 지연(50); lcd.setCursor(3, 0); lcd.print("우"); 지연(50); lcd.setCursor(4, 0); lcd.print("나"); 지연(50); lcd.setCursor(5, 0); lcd.print("n"); 지연(50); lcd.setCursor(6, 0); lcd.print("오"); 지연(50); lcd.setCursor(8, 0); lcd.print("W"); 지연(50); lcd.setCursor(9, 0); lcd.print("e"); 지연(50); lcd.setCursor(10, 0); lcd.print("아"); 지연(50); lcd.setCursor(11, 0); lcd.print("t"); 지연(50); lcd.setCursor(12, 0); lcd.print("h"); 지연(50); lcd.setCursor(13, 0); lcd.print("e"); 지연(50); lcd.setCursor(14, 0); lcd.print("r"); 지연(50); lcd.setCursor(4, 1); lcd.print("S"); 지연(50); lcd.setCursor(5, 1); lcd.print("t"); 지연(50); lcd.setCursor(6, 1); lcd.print("아"); 지연(50); lcd.setCursor(7, 1); lcd.print("t"); 지연(50); lcd.setCursor(8, 1); lcd.print("나"); 지연(50); lcd.setCursor(9, 1); lcd.print("오"); 지연(50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) // ir 수신기 모듈이 데이터를 수신하는 경우 { if (results.value ==0xFF6897) // "0"이 푸시되면 print TIME{ lcd.clear(); //LCD 지우기 print_time(); 지연(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 recv.resume(); // 다음 값 수신}if (results.value ==0xFF30CF) // "1"이 푸시되면 print TEMPERATURE and HUMIDITY{ lcd.clear(); //LCD 지우기 //DHT의 데이터 읽기 int chk =DHT.read11(DHT11_PIN); // 데이터 표시 lcd.setCursor(0, 0); lcd.print("템:"); lmVal =analogRead(lmPin);//A1 값 읽기 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print print(char(223));//단위 인쇄" ? " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("흠흠:"); //Serial.print("흠흠:"); lcd.print(DHT.습도, 1); //LCD에 습도를 출력합니다. //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println(" %"); 지연(10000); //3000ms 대기 lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 recv.resume(); // 다음 값 수신}if (results.value ==0xFF18E7) ​​// "2"를 누르면 print the DARKNESS{ lcd.clear(); //LCD 지우기 lcd.setCursor(4, 0); // 4열 1행에 커서를 놓습니다. lcd.print("Darkness:"); luce =analogRead(sensorPin); //ldr 읽기 pluce =map(luce, 0, 1023, 0, 100); //센서 값을 0에서 100 사이의 값으로 변환 lcd.setCursor(6, 1); //LCD 중앙에 커서를 놓습니다. lcd.print(pluce); //백분위수 출력 lcd.print("%"); //기호 출력 delay(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 기다리십시오. recv.resume(); // 다음 값 수신}if (results.value ==0xFF7A85) // "3"이 푸시되면 SNOW 또는 WATER LEVEL을 인쇄합니다{ lcd.clear(); //LCD 지우기 lcd.setCursor(0, 0); // 0열, 1행에 커서를 놓습니다. lcd.print("Fluid level(mm):"); // "수위(mm):" 인쇄 int waterValue =analogRead(waterSensor); // 물 센서 값 가져오기 lcd.setCursor(6, 1); // 6열 2행에 커서 위치 mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //LCD에 표시되는 값 delay(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); recv.resume(); // 다음 값 수신}if (results.value ==0xFF9867) // "PRESENTATION"이 푸시되면 TIME, TEM 및 HUM, DARKNESS 및 S 또는 W LEVEL을 한 번 인쇄합니다.{ lcd.clear(); //LCD 지우기 print_time(); 지연(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 //DHT의 READ DATA int chk =DHT.read11(DHT11_PIN); // 데이터 표시 lcd.setCursor(0, 0); lcd.print("템:"); lmVal =analogRead(lmPin);//A0 값 읽기 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print print(char(223));//단위 인쇄" ? " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("흠흠:"); //Serial.print("흠흠:"); lcd.print(DHT.습도, 1); //LCD에 습도를 출력합니다. //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println(" %"); 지연(4000); //3000ms 대기 lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 lcd.setCursor(4, 0); // 4열 1행에 커서를 놓습니다. lcd.print("Darkness:"); luce =analogRead(sensorPin); //ldr 읽기 pluce =map(luce, 0, 1023, 0, 100); //센서 값을 0에서 100 사이의 값으로 변환 lcd.setCursor(6, 1); //LCD 중앙에 커서를 놓습니다. lcd.print(pluce); //백분위수 출력 lcd.print("%"); //기호 출력 delay(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 lcd.setCursor(0, 0); // 0열, 1행에 커서를 놓습니다. lcd.print("Fluid level(mm):"); // "수위(mm):" 인쇄 int waterValue =analogRead(waterSensor); // 물 센서 값 가져오기 lcd.setCursor(6, 1); // 6열 2행에 커서 위치 mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //LCD에 표시되는 값 delay(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); recv.resume(); // 다음 값 수신}}}  

    문자당 "Arduino Weather Station"을 쓰는 대신 다음과 같이 쓰는 것이 가능합니다. "스위치/케이스" 모드.

    결론

    우리는 현재 날짜와 시간을 고려하고 적외선 리모콘으로 제어되는 LCD 화면에 인쇄하기 위해 일부 환경 데이터를 선택하는 Arduino로 기상 관측소를 만들었습니다.

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

    코드

    <울>
  • AWS code.ino
  • AWS code.inoC/C++
    //스케치 라이브러리 포함#include #include  //클럭 라이브러리#include  //클럭 라이브러리#include  //클럭 라이브러리#include  //dht11 library#include  //LCD library#include  //LCD 라이브러리용 와이어#define lmPin A1 //LM35 A1LiquidCrystal_I2C에 연결 lcd(0x27, 16, 2 ); // 16자 및 2줄 displaydht DHT에 대해 LCD 주소를 0x27로 설정합니다. // dhtconst의 변수 유형 생성 int DHT11_PIN =4; // dht11을 핀 4에 연결 const int waterSensor =0; //물 센서 변수 설정int waterValue =0; // 물 센서에 대한 변수int mmwaterValue =0;int sensorPin =A3; // 전위차계에 대한 입력 핀을 선택합니다.int luce =0; //ldrint pluce의 변수 =0; //ldrfloat tem =0에 대한 변수; //온도에 대한 변수 lmVal =0; //LM35의 변수//irconst int irReceiverPin =3;IRrecv recv(irReceiverPin); //IRrecvdecode_results 유형의 변수를 생성합니다. //RST 핀 연결 touint8_t SDA_PIN =6; //IO 핀 연결 touint8_t SCL_PIN =7; //clk 핀 부착/* 버퍼 생성 */char buf[50];char day[10];/* DS1302 객체 생성 */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//DS1302void의 변수 유형 생성 print_time(){ /* 칩에서 현재 시간과 날짜를 가져옵니다. */ Time t =rtc.time(); /* 요일 이름 지정 */ memset(day, 0, sizeof(day)); switch (t.day) { 경우 1:strcpy(day, "Sun"); 부서지다; 경우 2:strcpy(일, "월"); 부서지다; 경우 3:strcpy(요일, "화"); 부서지다; 경우 4:strcpy(일, "수"); 부서지다; 사례 5:strcpy(일, "목"); 부서지다; 사례 6:strcpy(요일, "금요일"); 부서지다; 사례 7:strcpy(요일, "토요일"); 부서지다; } /* 시간과 날짜를 포맷하고 임시 버퍼에 삽입 */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. yr, t.mon, t.date, t.hr, t.min, t.sec); /* 시간을 볼 수 있도록 포맷된 문자열을 직렬로 출력 */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.yr); lcd.print("-"); lcd.print(t.mon / 10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.날짜 % 10); lcd.print(" "); lcd.print(일); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);} 무효 설정() { //시계 Serial.begin(9600); rtc.write_protect(거짓); rtc.halt(거짓); //ir recv.enableIRIn(); // ir 수신기 모듈 활성화 lcd.init(); //LCD 초기화 lcd.backlight(); //백라이트 열기 pinMode(sensorPin, INPUT); Time t(2017, 12, 9, 11, 20, 00, 7);//시간 초기화 /* 칩의 시간과 날짜 설정 */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("아"); 지연(50); lcd.setCursor(1, 0); lcd.print("r"); 지연(50); lcd.setCursor(2, 0); lcd.print("d"); 지연(50); lcd.setCursor(3, 0); lcd.print("우"); 지연(50); lcd.setCursor(4, 0); lcd.print("나"); 지연(50); lcd.setCursor(5, 0); lcd.print("n"); 지연(50); lcd.setCursor(6, 0); lcd.print("오"); 지연(50); lcd.setCursor(8, 0); lcd.print("W"); 지연(50); lcd.setCursor(9, 0); lcd.print("e"); 지연(50); lcd.setCursor(10, 0); lcd.print("아"); 지연(50); lcd.setCursor(11, 0); lcd.print("t"); 지연(50); lcd.setCursor(12, 0); lcd.print("h"); 지연(50); lcd.setCursor(13, 0); lcd.print("e"); 지연(50); lcd.setCursor(14, 0); lcd.print("r"); 지연(50); lcd.setCursor(4, 1); lcd.print("S"); 지연(50); lcd.setCursor(5, 1); lcd.print("t"); 지연(50); lcd.setCursor(6, 1); lcd.print("아"); 지연(50); lcd.setCursor(7, 1); lcd.print("t"); 지연(50); lcd.setCursor(8, 1); lcd.print("나"); 지연(50); lcd.setCursor(9, 1); lcd.print("오"); 지연(50); lcd.setCursor(10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) // ir 수신기 모듈이 데이터를 수신하는 경우 { if (results.value ==0xFF6897) // "0"이 푸시되면 print TIME{ lcd.clear(); //LCD 지우기 print_time(); 지연(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 recv.resume(); // 다음 값 수신}if (results.value ==0xFF30CF) // "1"이 푸시되면 print TEMPERATURE and HUMIDITY{ lcd.clear(); //LCD 지우기 //DHT의 데이터 읽기 int chk =DHT.read11(DHT11_PIN); // 데이터 표시 lcd.setCursor(0, 0); lcd.print("템:"); lmVal =analogRead(lmPin);//A1 값 읽기 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print print(char(223));//단위 출력" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("흠흠:"); //Serial.print("흠흠:"); lcd.print(DHT.습도, 1); //LCD에 습도를 출력합니다. //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println(" %"); 지연(10000); //3000ms 대기 lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 recv.resume(); // 다음 값 수신}if (results.value ==0xFF18E7) ​​// "2"를 누르면 print the DARKNESS{ lcd.clear(); //LCD 지우기 lcd.setCursor(4, 0); // 4열 1행에 커서를 놓습니다. lcd.print("Darkness:"); luce =analogRead(sensorPin); //ldr 읽기 pluce =map(luce, 0, 1023, 0, 100); //센서 값을 0에서 100 사이의 값으로 변환 lcd.setCursor(6, 1); //LCD 중앙에 커서를 놓습니다. lcd.print(pluce); //백분위수 출력 lcd.print("%"); //기호 출력 delay(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 recv.resume(); // 다음 값 수신}if (results.value ==0xFF7A85) // "3"이 푸시되면 SNOW 또는 WATER LEVEL을 인쇄합니다{ lcd.clear(); //LCD 지우기 lcd.setCursor(0, 0); // 0열, 1행에 커서를 놓습니다. lcd.print("Fluid level(mm):"); // "수위(mm):" 인쇄 int waterValue =analogRead(waterSensor); // 물 센서 값 가져오기 lcd.setCursor(6, 1); // 6열 2행에 커서 위치 mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //LCD에 표시되는 값 delay(10000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); recv.resume(); // 다음 값 수신}if (results.value ==0xFF9867) // "PRESENTATION"이 푸시되면 TIME, TEM 및 HUM, DARKNESS 및 S 또는 W LEVEL을 한 번 인쇄합니다.{ lcd.clear(); //LCD 지우기 print_time(); 지연(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 //DHT의 READ DATA int chk =DHT.read11(DHT11_PIN); // 데이터 표시 lcd.setCursor(0, 0); lcd.print("템:"); lmVal =analogRead(lmPin);//A0 값 읽기 tem =(lmVal * 0.0048828125 * 100);//5/1024=0.0048828125;1000/10=100 lcd.print(tem);//print print(char(223));//단위 출력" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("흠흠:"); //Serial.print("흠흠:"); lcd.print(DHT.습도, 1); //LCD에 습도를 출력합니다. //Serial.print(DHT.humidity,1); lcd.print(" % "); //Serial.println(" %"); 지연(4000); //3000ms 대기 lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 lcd.setCursor(4, 0); // 4열 1행에 커서를 놓습니다. lcd.print("Darkness:"); luce =analogRead(sensorPin); //ldr 읽기 pluce =map(luce, 0, 1023, 0, 100); //센서 값을 0에서 100 사이의 값으로 변환 lcd.setCursor(6, 1); //LCD 중앙에 커서를 놓습니다. lcd.print(pluce); //백분위수 출력 lcd.print("%"); //기호 출력 delay(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); //잠시 대기 lcd.setCursor(0, 0); // 0열, 1행에 커서를 놓습니다. lcd.print("Fluid level(mm):"); // "수위(mm):" 인쇄 int waterValue =analogRead(waterSensor); // 물 센서 값 가져오기 lcd.setCursor(6, 1); // 6열 2행에 커서 위치 mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //LCD에 표시되는 값 delay(4000); //지연 10000ms lcd.clear(); //LCD 지연 지우기(200); 취소.재개(); // 다음 값 수신}}}

    맞춤형 부품 및 인클로저

    box_a5et5f4U9F.dwg

    회로도

    aws_DMDwb4iUZp.fzz

    제조공정

    1. Weather Station V 2.0
    2. TinyML-Language Detector 기반 Edge Impulse 및 Arduino
    3. MPU-6050을 사용한 Arduino 자이로스코프 게임
    4. 6-Shooter:Arduino 음료 혼합 스테이션
    5. Arduino 디지털 주사위
    6. 나를 찾기
    7. Arduino Audio Reactive Desk Light
    8. Arduino 기반 날씨 풍선 데이터 로거
    9. $10 휴대용 Arduino 기상 관측소(AWS)
    10. NeoMatrix Arduino Pong