Меню

Ардуино отправка смс по срабатыванию датчика

Запрос показаний датчика по SMS с использованием Arduino и SIM800L

Автор: Сергей · Опубликовано 21.06.2019 · Обновлено 13.04.2020

В этом проекте рассмотрим как запрашивать данные датчика через SMS с использованием Arduino. В качестве примера запросим температуру, влажность и атмосферное давление с датчика BME280. Для отправки и получения SMS будем использовать модуль SIM800L и плату Arduino.

Запрос показаний датчика по SMS с использованием Arduino и SIM800L

Необходимые детали:
Arduino UNO R3 x 1 шт.
Модуль GSM, GPRS на чипе SIM800L x 1 шт.
Датчик атмосферного давления, влажности и температуры BME280 x 1 шт.
Преобразователь напряжения LM2596, DC 3.2-40B на DC 1.38-35B, 3А, Step-Down x 1 шт.
Провод DuPont 10x, 2.54 мм, 20 см, F-M, Female — Male x 1 шт.

Алгоритм программы прост, при отправки SMS-сообщение «DATA» плата Arduino отвечает последними показаниями температуры, влажности и атмосферного давления, при необходимости код можно изменить, для отправки показаний в заданном интервале.

Подключение:
Для стабильно работы модуля SIM800L необходим источник питания с рабочим током 2А, подойдет преобразователь напряжения LM2596 с настроенным выходным напряжением 4.3 В (можно воспользоваться модулем MINI360).

Первым делом подготавливаем модуль SIM800L, припаиваем контакты и антенну, затем устанавливаем SIM карту любого оператора. Теперь подключаем вывод Tx на модуле к выводу 3 на Arduino. Вывод Rx нельзя подключать напрямую, так как цифровой вывод Arduino UNO использует 5В, а модуль SIM800L использует 3,3В. Необходимо сигнал Tx, поступающий от Arduino UNO, понизить до 3,3В, чтобы не спалить модуль SIM800L. Самый простой способ, это воспользоватся делителем напряжения на резисторах. Подключаем резистор на 10 кОм между выводом Rx (SIM800L) и выводом 2 (Arduino) и второй резистор на 10 кОм между выводом Rx (SIM800L) и GND. Теперь осталось подключить питание модуля, в примере используется стабилизатор напряжения на LM2596.
Осталось подключить датчик BME280, SCL и SDA подключаем к выводам A5 и A4, затем необходимо подключить питание VCC и GND к плате ARDUINO.

Источник

Arduino.ru

Функция отправки SMS с GSM/GPRS шилда SIM900

Всем привет . Програмить я только учусь, по этому прошу вашей помощи. Сильно не ругайте )))).

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

Система состоит из следующих компонентов:

  1. arduino mini pro
  2. GSM/GPRS шилд SIM900,
  3. Приемник XY-MK-5V (433 mHz)
  4. Беспроводные датчики движения (433 mHz)
  5. Дверной звонок на TL 2262 (433 mHz)
  6. Пульт с приемником в комплекте 2262/2272 (433 mHz)

Методом «тыка» определил , что для приёма сигнала с датчиков движения подошла библиотека RCSwith (подключен к pin 2),

а для дверного звонка RemoteSwich (подключен к pin 3), хотя звонок на TL 2262 и по идее должен ловиться RCSwith-ом .

Прием сигналов с датчиков:

1. Как правильно написать функцию для отправки СМС под библиотеку SIM900, при срабатывании датчиков движения и звонка.

2. Возможно ли использовать одну библиотеку И для датчика движения И для звонка. Может что-то изменить в самой библиотеке RCSwich чтобы она принимала коды с датчика и звонка и при этом занимала бы один пин на ардуине.

3. Помогите написать функцию для включения и выключения сигнализации с пульта и можно ли использовать только один приемник

4. Можно ли использовать XY-MK-5V для приема сигналов с пульта вместо его «родного» приемника.

Источник

Сигнализация / удаленный мониторинг за датчиками по GSM/GPRS

Введение:

В этом уроке мы создадим систему удаленного мониторинга и охраны дома, используя GSM/GPRS Shield.

Читайте также:  Поплавковый датчик уровня топлива для грузовиков

При выполнении одного из заданных сценариев модуль будет отправлять СМС или звонить Вам на телефон, а в режиме ожидания по запросу сможет отправлять СМС с текущим состоянием системы.

Видео:

Нам понадобится:

Для реализации проекта нам необходимо установить библиотеки:

  • iarduino_GSM — для работы с GSM/GPRS Shield;
  • OneWhire — для работы с датчиками фирмы Dallas;
  • DallasTemperature — для работы с цифровыми термометрами DS18B20;
  • SoftwareSerial — библиотека входит в базовый набор Arduino IDE и не требует установки;

О том, как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.

Описание работы системы удалённого управления:

  • После подачи питания дождитесь получения смс с уведомлением о том, что инициализация прошла успешно и модем GSM зарегистрировался в сети. После этого устройство готово к работе.
  • Устройство может принимать сообщения с командой «ОТЧЁТ»;
  • После правильно написанной и отправленной СМС дождитесь обратного сообщения с данными об актуальном состоянии системы;
  • Так же, в устройстве есть несколько сценариев работы с датчиками:
    • При сработке любого из датчиков на телефон абонента отправляется СМС с уведомлением и актуальным значением датчика;
    • При сработке некоторых особо важных датчиков устройство отправляет СМС с уведомлением, а затем совершает звонок на указанный в коде номер, благодаря чему абонент может услышать, что происходит вокруг устройства.

Схема сборки:

Arduino / Piranha UNO:

Batery Shield:

Установите Battery Shield на Arduino / Piranha UNO:
Во время установки Battery Shield должен быть в выключенном состоянии.

GSM/GPRS Shield:

На плате GSM/GPRS Shield A6 имеется слот для SIM-карт и переключатель UART. Установите SIM-карту в слот, выберите положение переключателя RX-7/TX-8.

Trema Shield:

Гарнитура:

Trema-модуль Цифровой термометр:

Trema-модуль Датчик газа:

Цифровой термометр (герметичный):

Обратите внимание, что между информационным проводом (жёлтый) и проводом питания 5В (красный) установлен резистор 10кОм.

ИК-датчик движения HC-SR501

Магнитный извещатель (геркон):

Обратите внимание, что от информационного провода (жёлтый) через резистор 10кОм подключается провод GND (чёрный).

Код программы (скетч):

Алгоритм работы скетча:

Обратите внимание на то, что при многократной отправке СМС с одинаковым текстом, возможно блокирование сообщений вашим оператором и внесение номера в «спам».

До кода void setup() определяются номера выводов, объявляются переменные и функции, подключаются библиотеки, и создаются объекты для работы с ними.

Перед загрузкой скетча не забудьте задать в переменной number[] номер телефона, куда будет приходить смс-уведомление о пройденной идентификации!

В коде void setup() конфигурируются выбранные выводы, инициируется работа GSM/GPRS Shield, выполняется цикл ожидания готовности GSM/GPRS Shield к работе (регистрация в сети оператора). И, после выполнения всех указанных действий, выполняется оповещение о готовности к работе, путем отправки смс на указанный номер.

Код void loop() выполняется в цикле. При получении СМС или при наступлении события, указанного в сценарии кода, устройство отправляет сообщение абоненту или совершает тревожный звонок. Чтобы после наступления события модуль не начал непрерывно отправлять сообщения или совершать звонки, в код была добавлена временная задержка delta_time , в течении которой модуль игнорирует повторные сработки. По истечении этого времени, если ничего не изменилось, модуль повторно отправит СМС или совершит тревожный звонок.

Код программы построен таким образом, что при удалении одного из установленных модулей код продолжает оставаться рабочим.

Сам код можно разделить на блоки:

Датчик газа:

Задав граничное значение в переменной MAX_GAS_VOLUME в самом начале скетча, тем самым мы устанавливаем правила отправки СМС от модуля пользователю.

При достижении этого значения модуль отправит на указанный в переменной number номер смс с уведомлением о том, что концентрация газа превышена.

Читайте также:  Датчик холостого хода daewoo nexia шестнадцатиклапанная

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

Датчик температуры внутренний:

Указав в переменных MIN_TEMP_IN и MAX_TEMP_IN границы допустимых температур, настроим модуль на работу с цифровым термометром, расположенным внутри помещения.

При достижении порогового значения модуль отправит на указанный в переменной number номер смс с уведомлением о том, что температура изменилась больше, чем указано в условии.

Если температура внутри помещения в норме, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик температуры внешний:

Указав в переменных MIN_TEMP_OUT и MAX_TEMP_OUT границы допустимых температур, настроим модуль на работу с цифровым термометром, расположенным снаружи помещения.

При достижении порогового значения модуль отправит на указанный в переменной number номер смс с уведомлением о том, что температура изменилась больше, чем указано в условии.

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

Датчик движения:

Проверяем, нет ли движения в радиусе действия датчика:

  • Если движение замечено, то модуль отправляет СМС абоненту на номер, указанный в переменной number , далее ждёт время waiting_time и после этого совершает тревожный звонок на тот же номер.
  • В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.
  • Тревожный звонок можно настроить:
    • Модуль совершает тревожный звонок «до победного», пока абонент не снимет трубку или не начнёт работать автоответчик;
    • Модуль совершает тревожный звонок, а после того, как трубка будет снята, ограничит разговор на время, указанное в переменной diall_waiting ;
  • Если движение не замечено, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Датчик состояния(геркон):

Проверяем, нет ли размыкания датчика:

  • Если датчик разомкнут, то модуль отправляет СМС абоненту на номер, указанный в переменной number , далее ждёт время waiting_time и после этого совершает тревожный звонок на тот же номер.
  • В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.
  • Тревожный звонок можно настроить:
    • Модуль совершает тревожный звонок «до победного», пока абонент не снимет трубку или не начнёт работать автоответчик;
    • Модуль совершает тревожный звонок, а после того, как трубка будет снята, ограничит разговор на время, указанное в переменной diall_waiting ;
  • Если датчик замкнут, то данные будут внесены в строку Text , которая при запросе пользователя будет выслана ему по СМС вместе с показателями других модулей.

Запрос отчёта:

Модуль проверяет раз в секунду, нет ли входящего сообщения. Если сообщение есть, то модуль проверяет, совпадает ли номер, с которого пришло сообщение, с номером, указанным ранее в переменной number :

  • Если номер совпадает, то модуль проверяет текст сообщения:
    • Если в тексте сообщения указана команда из переменной Func , то модуль отправляет ответное СМС с полным отчётом по всем датчикам;
    • Если в тексте СМС ошибка, то модуль в ответном СМС уведомит об этом;
  • Если номер не совпадает, то модуль будет игнорировать текст СМС;

Ответ на входящий звонок:

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

Читайте также:  Замена датчика включения задней скорости калина 1

В переменной gsm.SOUNDdevice указан параметр GSM_HEADSET , что означает, что на стороне модуля установлена гарнитура.

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

Источник

Arduino.ru

Отправка СМС с данными сенсора

Прошу помощи в указании на ошибки в реализации тривиальной задачи отправки смс с данными сенсора DS18b20 с использованием TinySine Shield GSM на Arduino Uno. В программировании не силён, но есть желание разобраться и реализовать этот проект для дачи.

На данный момент: На LCD I2C экран выводится сообщение с температурой -127, что говорит о том, что контроллер не видит датчик. Сам дачтик подключён через беспаечную плату к 4 выходу.

На телефон присылается только сообщение с первоначальной строкой: » Starting ok «. Данные датчика не отправляются.

Буду благодарен за любую помощь и совет.

На телефон присылается только сообщение с первоначальной строкой: » Starting ok «. Данные датчика не отправляются.

А должны? Покажите в какой строке.

Пока я вижу во всём скетче единственную отправку смс в строке 48. Она, по Вашим словам, работает нормально. Никаких других отправок смс я в тексте программы не нашёл.

Нужно добавить в блок loop аналогичную функцию, заменив выражение на данные сенсора?

(sms.SendSMS(number, «Starting ok !» ));

И вопрос по самому датчику, почему он может не читаться на дисплее? Не в этой строке дело?

16 DeviceAddress bathroom = < 0x10, 0x5E, 0xE8, 0x33, 0x02, 0x08, 0x00, 0xDB >; //Sensor 1

И вопрос по самому датчику, почему он может не читаться на дисплее? Не в этой строке дело?

16 DeviceAddress bathroom = < 0x10, 0x5E, 0xE8, 0x33, 0x02, 0x08, 0x00, 0xDB >; //Sensor 1

Датчик не имеет никакого отношения к дисплею. Дело датчика выдать Вам цифирь, а дело дисплея эту цифирь показать. Т.е. ещё раз в строке 61 Вы получаете самое обыкновенное число типа float. На этом работа датчика закончилась. дальше Вы это число показываете на дисплее. Дисплею всё равно где Вы взяли это число — с датчика или руками вбили. Понимаете. что оно не могут быть ни совместимы, ни несовместимы друг с другом. Они друг другу фиолетово.

Теперь про эту строку. Это адрес датчика. Где Вы его взяли? Из какого-нибудь примера или прочитали со своего датчика? Если первое, то выбрасывайте — у каждого экземпляра датчика уникальный адрес.

И ещё. судя по коду Вы программируете свосем недавно. Тогда послушайте: я программирую почти сорок лет (с 1979 года) и я бы не взялся сразу писать Ваш скетч — это слишком сложно делать сразу. Я бы сначала отладил бы работу с датчиком. Для этого написал бы скетч БЕЗ экрана и БЕЗ смс — только датчик и вывод температуры в сериал. Потом бы я написал скеч для экрана БЕЗ датчика и БЕЗ смс — только вывод числа на экран. Число бы руками вбивал. Наконец, я бы написал скетч для смс БЕЗ датчика и БЕЗ экрана — отправлял бы вбитое руками число. И только когда все три куска у меня надёжно бы работали — я бы объединил их вместе.

Сейчас, если у Вас что-то не работает — Вы просто не знаете за что хвататься. т.к. Вы свалили всё в кучу и не работать можно может всё, что угодно. Отделите мух от котлет. Отладьте по отдельности работу со всеми тремя устройствами. Будет намного легче.

Источник

Adblock
detector