Проект GSM-оповещения о пожаре по SMS

Попробуйте наш инструмент устранения неполадок





В этой статье мы собираемся построить систему пожарной сигнализации GSM с использованием Arduino и датчика DHT11, который будет предупреждать пользователя с помощью текстового сообщения (SMS) о пожарной опасности в помещении, где он установлен.

Использование датчика DHT11

Мы используем Датчик DHT11 для обнаружения необычного повышения температуры в окрестностях. Мы можем точно установить пороговую температуру в программе, если температура поднимется выше заданного порога, модем GSM начинает отправку оповещения SMS получателю.



Как это устроено

Схема пожарной сигнализации GSM состоит из 3 частей: датчика, Arduino, который является мозгом проекта, и модема GSM, который отправляет SMS-оповещения.

Схема подключения такая же, как и у других GSM-проекты который обсуждался на этом сайте. Единственное отличие - добавление датчика DHT11 к Arduino.



TX GSM подключается к выводу № 9 Arduino, а RX GSM подключается к выводу № 8 Arduino, а также подсоединяется заземление. Подключение питания и данных датчика оптимизировано для уменьшения перегрузки проводки при создании прототипа.

Пожалуйста, обратите внимание на соединения и вставьте датчик от A0 до A2 в правильной ориентации, как показано ниже.

Изменение ориентации датчика на обратное приведет к выдаче сообщения «NO DATA» на последовательном мониторе. Если обратная ориентация сохраняется в течение длительного времени, это может даже повредить датчик. Так что будьте осторожны с подключением датчика.

Вот готовый авторский прототип:

Всегда подключайте GSM-модем к внешнему источнику питания. А Адаптер питания 9 В, 500 мА хватит на GSM модем. Монитор последовательного порта не является обязательным для этого проекта, так как это будет отдельный проект. Серийный монитор нам понадобится только при тестировании прототипа.

Делать Система ИБП постоянного тока , схемы доступны на этом веб-сайте, и постарайтесь сделать кнопку питания легко доступной за пределами шасси вашего проекта, чтобы модем GSM можно было включить после кратковременного сбоя питания.

Внешнюю кнопку включения можно сделать, припаяв провода от контактов кнопки включения на GSM модеме. ИБП постоянного тока уменьшит необходимость включения модема GSM после каждого сбоя питания. Это дает возможность включить и забыть. Теперь давайте посмотрим, как работает вся установка.

В случае пожара температура в помещении быстро повышается за короткий период, датчик может измерять от 0 до 50 градусов Цельсия.

Когда температура поднимается выше установленного в программе порогового значения (от 0 до 50), он отправляет SMS-оповещение с сообщением «Пожарная тревога: 45,00 градусов Цельсия». 45 градусов Цельсия - это температура в помещении во время отправки SMS, температура может превысить 100 градусов Цельсия в течение нескольких минут после пожара. Два SMS-сообщения отправляются для резервирования, в случае если одно из отправленных сообщений не удалось.

Если датчик вышел из строя или датчик отключается от Arduino, информация отправляется пользователю через SMS дважды с сообщением «Нет данных от датчика / датчик отключен».

Программа останавливается на 30 минут после отправки SMS-сообщения о пожаре или отключении датчика. Он снова проверяет наличие аномалий комнатной температуры и подключения проводов датчика через 30 минут, если таковые имеются, он снова отправляет SMS-уведомление и ждет еще 30 минут.

Когда вся настройка завершена и питание включено, GSM-модем отправляет тестовое SMS-сообщение с сообщением «Это тестовое SMS-сообщение от GSM-модема». Если вы получили это сообщение на номер получателя, это означает, что ваш проект работает нормально.

Программа:

//--------------Program developed by R.Girish---------------//
#include
#include
SoftwareSerial gsm(9,8)
#define DHTxxPIN A1
dht DHT
int p = A0
int n = A2
int ack
int msgsend=0
int th=45 //set threshold temperature
unsigned long A = 1000L
unsigned long B = A * 60
unsigned long C = B * 30
void setup()
{
Serial.begin(9600)
gsm.begin(9600)
pinMode(p,OUTPUT)
pinMode(n,OUTPUT)
digitalWrite(p,1)
digitalWrite(n,0)
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('This is a test SMS from GSM modem')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
}
void loop()
{
top:
msgsend=0
ack=0
int chk = DHT.read11(DHTxxPIN)
switch (chk)
{
case DHTLIB_ERROR_CONNECT:
ack=1
break
}
if(ack==0)
{
Serial.print('Temperature(°C) = ')
Serial.println(DHT.temperature)
Serial.print('Humidity(%) = ')
Serial.println(DHT.humidity)
Serial.println(' ')
delay(2000)
}
if(ack==1)
{
goagain:
msgsend=msgsend+1
Serial.print('NO DATA')
Serial.print(' ')
Serial.println('Sending SMS...... ')
delay(500)
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('No data from sensor/Sensor disconnected')// The SMS text you want to send
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
Serial.println('Message is sent ')
if(msgsend==2)
{
delay(C)
goto top
}
else
{
delay(10000)
goto goagain
}
}
if(DHT.temperature>=th)
{
doagain:
msgsend=msgsend+1
Serial.println('Sending SMS...... ')
gsm.println('AT+CMGF=1')
delay(1000)
gsm.println('AT+CMGS='+91xxxxxxxxx' ') // Replace x with mobile number
delay(1000)
gsm.println('Fire Alert:')// The SMS text you want to send
gsm.print(DHT.temperature)
gsm.print(' degree celsius')
delay(100)
gsm.println((char)26) // ASCII code of CTRL+Z
delay(1000)
Serial.println('Message is sent ')
if(msgsend==2)
{
delay(C)
goto top
}
else
{
delay(10000)
goto doagain
}
}
}
//--------------Program developed by R.Girish---------------//

Примечание: вы должны поместить номер получателя в 3 места в программе, которая описана в программе как

('AT + CMGS = ' + 91xxxxxxxxx ' r') // Замените x номером мобильного телефона

• Установите пороговую температуру

int th = 45 // установить пороговую температуру

Пороговая температура должна быть установлена ​​более высокой, чем обычно. колебания температуры в помещении Например: DHT11 имеет максимальную измерительную способность 50 градусов по Цельсию, поэтому пороговая температура может быть установлена ​​от 45 до 47. Установлено высокое пороговое значение, чтобы он не отправлял ложное срабатывающее SMS-оповещение о небольших изменениях температуры в помещении.

Если у вас есть дополнительные сомнения или вопросы относительно обсуждаемой системы оповещения о пожаре по SMS, пожалуйста, не стесняйтесь высказывать их в своих ценных комментариях.




Предыдущая статья: Как разработать схему индукционного нагревателя Следующая статья: Исследованы 6 лучших схем инвертора IC 555