제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 |
|
산불 감지 프로세스는 숲 내부의 나무에 심어진 모든 노드에서 시작됩니다. 숲은 서로 적당한 거리에 배치된 노드의 네트워크를 가지고 있으며 노드는 장치(이 경우 RF 모듈)를 통해 통신하고 Arduino를 사용하여 통신할 수 있습니다. 노드(소스 노드) 근처의 대기 매개변수(온도 상승, 연기로 인한 공기 오염 등)에서 임계값 이상의 변화가 발견되면 정보는 주 노드에 도달할 때까지 가장 가까운 중간 노드로 전달됩니다. 헤드 터미널. 메인/헤드 터미널은 GSM 모뎀을 사용하여 정보를 휴대전화(산불 감시 센터)로 전달합니다.
물리적 모델의 송신기 부분
산불 감지 모듈은 세 단계로 작동합니다. 첫 번째 단계는 온도 및 연기와 같은 몇 가지 외부 환경 매개변수를 읽는 것으로 구성됩니다. 첫 번째 단계는 아날로그 데이터를 감지하고 디지털 데이터로 변환하는 데 사용되는 일부 센서의 도움으로 수행됩니다. 센서는 온도, 습도 및 공기 품질과 같은 매개변수를 읽은 다음 이 정보를 다음으로 가장 가까운 노드로 보냅니다. 이 과정은 전체 과정의 두 번째 단계인 최종 노드 또는 메인 단말에 정보가 도달할 때까지 계속됩니다. 세 번째 단계는 산불감시소에 정보를 전송하는 것입니다.
각 노드에는 온도 및 습도 센서, 연기 센서 및 마이크로 컨트롤러 장치가 있습니다. Arduino는 마이크로 컨트롤러 장치로 사용되었습니다. 이러한 센서는 Arduino와 상호 작용하고 비교 프로세스를 위해 정보를 저장합니다. 이러한 각 매개변수에는 미리 정의된 임계값이 있습니다. 마이크로프로세서는 일정한 시간 간격으로 센서 값을 임계값과 비교합니다. 비교를 기반으로 센서의 입력 값이 임계값을 초과하면 노드는 정보를 다음 인접 노드로 전송하고, 이는 다시 인접 노드로 정보를 전송합니다. 이러한 방식으로 이 모델에서 메시지 흐름이 조절됩니다.
장치의 물리적 모델
물리적 모델의 송신기 부분
직렬 모니터에서 직렬 판독
GSM 모듈이 수신한 메시지
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">
#########( PART-1 )###### Receiver Side Arduino 코드 ###########################// RadioHead 진폭 시프트 키잉 라이브러리 포함#include섹션>#include / / 종속 SPI 라이브러리 포함 #include #include SoftwareSerial mySerial(4, 3); //Constants#define DHTPIN 2 // 우리가 연결된 핀#define DHTTYPE DHT11 // DHT11int smokeA0 =A5;// 임계값int sensorThres =400; // 변수 정의DHT dht(DHTPIN, DHTTYPE); // 일반 16mhz Arduino용 DHT 센서 초기화 // Variablesfloat hum; //습도 값을 저장합니다.float temp; //온도 값 저장 // 출력 문자열 정의 String str_humid;String str_temp;String str_smk;String str_out; // 진폭 이동 키잉 생성 ObjectRH_ASK rf_driver;void setup(){ pinMode(smokeA0, INPUT); dht.begin(); // ASK 객체 초기화 rf_driver.init(); // 시리얼 모니터 설정 Serial.begin(9600); mySerial.begin(115200);} 무효 루프(){지연(2000); 험 =dht.readHumidity(); 온도 =dht.readTemperature(); Serial.print("수신기 습도 ="); Serial.print(험); Serial.print('\n'); Serial.print("수신기 온도 ="); Serial.println(임시); int analogSensor =analogRead(smokeA0); 문자열 smk; // 임계값에 도달했는지 확인 if (analogSensor> sensorThres) { Serial.print("Smoke at Reciever"); Serial.print('\n'); smk ="연기"; } else { Serial.print("수신기에서 청소"); Serial.print('\n'); smk ="청소"; } // 버퍼를 예상 메시지 크기로 설정 uint8_t buf[20]; uint8_t 버퍼 =sizeof(buf); // 수신된 패킷의 크기가 올바른지 확인 if (rf_driver.recv(buf, &buflen)) { str_out =String((char*)buf); for (int i =0; i =60 &&temp> =25 ) { Serial.print("수신기에서 화재 감지"); mySerial.println("AT+CMGF=1"); //텍스트 모드에서 GSM 모듈을 설정합니다. delay(1000); // 1000밀리초 또는 1초 지연 mySerial.println("AT+CMGS=\"+918744984131\"\r"); // x를 휴대폰 번호로 대체합니다. delay(1000); mySerial.println(" 화재 경보!! "); Serial.println('\n'); mySerial.println("수신기 노드에서 실행"); Serial.println('\n'); mySerial.println("온도 :" + String(temp)); Serial.print('\n'); mySerial.println("습도 :" + String(hum)); Serial.print('\n'); mySerial.println("공기질 :" + smk); 지연(100); mySerial.println((char)26); // CTRL+Z의 ASCII 코드 지연(1000); } if( str_humid.toInt()>=60 &&str_temp.toInt()>=25 ) { Serial.print("발신기에서 화재 감지"); mySerial.println("AT+CMGF=1"); //텍스트 모드에서 GSM 모듈을 설정합니다. delay(1000); mySerial.println("AT+CMGS=\"+918744984131\"\r"); // x를 휴대폰 번호로 대체합니다. delay(1000); mySerial.println(" 화재 경보!! "); Serial.println('\n'); mySerial.println("송신기 노드에서 발사"); Serial.println('\n'); mySerial.println("온도 :" + str_temp); Serial.print('\n'); mySerial.println("습도 :" + str_humid); Serial.print('\n'); mySerial.println("대기 질 :" + String(str_smk)); 지연(100); mySerial.println((char)26); // CTRL+Z의 ASCII 코드 지연(1000); } }#######( PART-2 )############ 송신기 측 Arduino 코드 #################### #################################################### ####################include #include #include //Constants#define DHTPIN 2 // 핀 #define DHTTYPE DHT11 // DHT11DHT dht(DHTPIN, DHTTYPE); // 일반 16mhz용 DHT 센서 초기화 Arduinoint smokeA0 =A5;// 임계값int sensorThres =400; // 변수 정의 float hum; // 백분율 부동 온도로 습도 값을 저장합니다. // 온도 값을 Celciusfloat에 저장 smk; // 출력 문자열 정의 String str_humid;String str_temp;String str_smk;String str_out; // 진폭 이동 키잉 생성 ObjectRH_ASK rf_driver; // 일반 16mhz Arduino용 DHT 센서 초기화 void setup() { dht.begin(); 핀모드(연기A0, 입력); // ASK 객체 초기화 rf_driver.init(); } 무효 루프(){ 지연(2000); // DHT-22 센서가 험을 안정화할 수 있도록 지연 =dht.readHumidity(); // 습도 값 가져오기 temp=dht.readTemperature(); // 온도 값 가져오기 // 습도를 문자열로 변환 str_humid =String(hum); Serial.print(험); // 온도를 문자열로 변환 str_temp =String(temp); Serial.print(임시); int analogSensor =analogRead(smokeA0); // 임계값에 도달했는지 확인 if (analogSensor> sensorThres) { str_smk ="1"; } else { str_smk ="0"; } // 습도와 온도 결합 if(str_smk =="1") { str_out =str_humid + "," + str_temp + "," + "연기"; } if(str_smk =="0") { str_out =str_humid + "," + str_temp+ "," + "청소"; } // 출력 문자 작성 const char *msg =str_out.c_str(); rf_driver.send((uint8_t *)msg, strlen(msg)); rf_driver.waitPacketSent(); }
제조공정
구성품 및 소모품 Arduino UNO × 1 SparkFun 버튼 패드 4x4 - LED 호환 × 1 Adafruit Standard LCD - 파란색 바탕에 16x2 흰색 × 1 릴레이(일반) × 1 9V 배터리(일반) × 1 단일 회전 전위차계 - 10k 옴 × 1 저항 10k 옴 × 1 앱 및 온라인 서비스 Arduino IDE 이 프로젝트 정보
구성품 및 소모품 Arduino UNO × 1 A7 GPRS/GPS 모듈 × 1 수질 센서 × 1 필요한 도구 및 기계 납땜 인두(일반) 앱 및 온라인 서비스 Microsoft Azure Arduino IDE 이 프로젝트 정보 소개 2016년 9월, 오염된 물이 공장으로 유입되어 정수장을 폐쇄해야 했습니다. 상수도 회사는 오염원을 정확히 찾아낼 수 없었고 이로 인해 심각한