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

산불 모니터링 및 감지 시스템(SMS 경보 포함)

구성품 및 소모품

Itad Gboard Pro 800 SIM800 GSM/GPRS 모듈 3.3v ATmega2560 메인보드 Arduino 스타터용
× 1
Arduino UNO
× 1
DHT11 온도 및 습도 센서(3핀)
× 2
점퍼 와이어(일반)
× 1

앱 및 온라인 서비스

Arduino IDE

이 프로젝트 정보

산불 감지 프로세스는 숲 내부의 나무에 심어진 모든 노드에서 시작됩니다. 숲은 서로 적당한 거리에 배치된 노드의 네트워크를 가지고 있으며 노드는 장치(이 경우 RF 모듈)를 통해 통신하고 Arduino를 사용하여 통신할 수 있습니다. 노드(소스 노드) 근처의 대기 매개변수(온도 상승, 연기로 인한 공기 오염 등)에서 임계값 이상의 변화가 발견되면 정보는 주 노드에 도달할 때까지 가장 가까운 중간 노드로 전달됩니다. 헤드 터미널. 메인/헤드 터미널은 GSM 모뎀을 사용하여 정보를 휴대전화(산불 감시 센터)로 전달합니다.

물리적 모델의 송신기 부분

산불 감지 모듈은 세 단계로 작동합니다. 첫 번째 단계는 온도 및 연기와 같은 몇 가지 외부 환경 매개변수를 읽는 것으로 구성됩니다. 첫 번째 단계는 아날로그 데이터를 감지하고 디지털 데이터로 변환하는 데 사용되는 일부 센서의 도움으로 수행됩니다. 센서는 온도, 습도 및 공기 품질과 같은 매개변수를 읽은 다음 이 정보를 다음으로 가장 가까운 노드로 보냅니다. 이 과정은 전체 과정의 두 번째 단계인 최종 노드 또는 메인 단말에 정보가 도달할 때까지 계속됩니다. 세 번째 단계는 산불감시소에 정보를 전송하는 것입니다.

각 노드에는 온도 및 습도 센서, 연기 센서 및 마이크로 컨트롤러 장치가 있습니다. Arduino는 마이크로 컨트롤러 장치로 사용되었습니다. 이러한 센서는 Arduino와 상호 작용하고 비교 프로세스를 위해 정보를 저장합니다. 이러한 각 매개변수에는 미리 정의된 임계값이 있습니다. 마이크로프로세서는 일정한 시간 간격으로 센서 값을 임계값과 비교합니다. 비교를 기반으로 센서의 입력 값이 임계값을 초과하면 노드는 정보를 다음 인접 노드로 전송하고, 이는 다시 인접 노드로 정보를 전송합니다. 이러한 방식으로 이 모델에서 메시지 흐름이 조절됩니다.

장치의 물리적 모델

물리적 모델의 송신기 부분

직렬 모니터에서 직렬 판독

GSM 모듈이 수신한 메시지

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

코드

<울>
  • 수신기 및 송신기 측 Arduino 모듈 코드
  • 수신기 및 송신기 측 Arduino 모듈 코드Python
    이 코드는 온도 및 습도 모니터링을 위해 수신 측 Arduino 모듈을 구성합니다. 값이 임계값을 초과하면 SMS가 기지국으로 전송되어 이에 대해 경고합니다. 송신기 측 노드에서 값 상승이 있으면 이것은 송신기 측 Arduino Uno의 RF-송신기 모듈을 통해 수신 측 Arduino Uno의 RF-수신기 모듈로 전달됩니다. 아래 코드는 "Receiver side arduino"용과 "Transmitter side arduino"용 두 부분으로 구성되어 있습니다.
    #########( 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(); }

    회로도


    제조공정

    1. Raspberry Pi로 온도 모니터링
    2. Samsung SAMIIO, Arduino UNO 및 Raspberry Pi로 몇 분 만에 화재 감지기 만들기
    3. 자동 제어 기능이 있는 홈/호텔 모니터링 시스템
    4. Python과 함께 Arduino 및 RFID를 사용한 출석 시스템
    5. Arduino Uno를 사용한 인간 감지 로봇 시스템
    6. K30 센서로 CO2 모니터링
    7. Arduino로 코인 억셉터 제어
    8. Arduino 알람 시스템:SERENA
    9. Arduino를 사용한 자동 식물 관수 시스템
    10. 이중 목적 IoT 산림 관리 시스템