Система обнаружения лесного пожара на Arduino и GSM модуле


Леса на нашей планете являются ключевым элементом в сохранении природного баланса, предотвращении деструктивных изменений климата. Сохранение лесов является одной из важнейших задач, стоящих перед человечеством. Как известно, ежегодно огромный ущерб лесам наносят пожары, уничтожающие миллионы гектаров растительности. При этом чем раньше пожар удается обнаружить, тем, как правило, проще его потушить. Поэтому в данной статье мы рассмотрим создание системы обнаружения лесного пожара на основе платы Arduino и GSM модуле, которая будет передавать данные о состоянии леса на интернет сервис Thingspeak, который очень хорошо подходит для реализации различных проектов тематики интернета вещей (Internet of Things, IoT). На нашем сайте вы можете посмотреть все проекты с использованием сервиса Thingspeak.

Внешний вид проекта системы обнаружения лесного пожара на Arduino и GSM модуле

Для связи с интернет сервисом Thingspeak в нашем проекте используется GSM/GPRS модуль, поскольку другие средства радиосвязи (например, радиочастотные модули), применимые в миниатюрной электронике, обычно не обеспечивают в лесу необходимой нам дальности связи.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. GSM/GPRS модуль SIM800L (купить на AliExpress).
  3. Литий-ионная батарейка 3.7V.
  4. Датчик огня (Flame sensor) (купить на AliExpress).
  5. Резисторы (купить на AliExpress).
  6. Перфорированная плата (Dot matrix Perf board).

GSM модуль SIM800L

SIM800L представляет собой компактный модуль, с помощью которого можно осуществлять передачу данных GPRS, передавать/принимать SMS и совершать голосовые звонки. Модуль SIM800L имеет две антенны, поставляемые в комплекте вместе с ним. Первая – это кольцевая антенна и она может быть непосредственно распаяна на плате модуля, а вторая является внешней антенной. Более подробно работу с данным модулем мы рассматривали в статье про автоответчик на основе платы Raspberry Pi.

Основные технические характеристики модуля:

  • входное (питающее) напряжение: 3.4V - 4.2V;
  • интерфейсы: UART (последовательный порт) и AT команды;
  • поддерживаемые частотные диапазоны: 850 / 950 / 1800 /1900 MHz;
  • слот для SIM карты: micro SIM;
  • разъем антенны: IPX;
  • диапазон рабочих температур: от -40 до + 85 ° C.

Структурная схема работы проекта

Ключевым элементом нашего проекта является датчик огня/датчик пламени (flame sensor) подключение которого к плате Arduino мы рассматривали в данной статье. Структурная схема проекта показана на следующем рисунке и включает в себя датчик огня, плату Arduino Nano и GSM/GPRS модуль SIM800L.

Структурная схема проекта

Огонь в лесу обнаруживается датчиком огня, который передает эту информацию по цифровому выходу на плату Arduino, которая, в свою очередь, передает эту информацию в сеть интернет (на сервис Thingspeak) с помощью модуля SIM800L.

Принципиальная схема проекта

Схема системы обнаружения лесного пожара на Arduino и GSM модуле представлена на следующем рисунке.

Схема системы обнаружения лесного пожара на Arduino и GSM модуле

Как показано на схеме, датчик огня подключен к цифровому контакту платы Arduino Nano. Модуль SIM800L подключен к плате Arduino Nano с помощью делителя напряжения поскольку он работает с логическими уровнями 3.3v, а на выходе контактов платы Arduino уровни напряжения составляют 5 В. Модуль SIM800L запитывается отдельно от остальной схемы поскольку он работает от напряжения 3.4-4.2V DC, а питающее напряжение 5V DC с внешнего источника подается на плату Arduino Nano. Двух источников питания в данной схеме можно избежать если использовать преобразователь напряжения (Boost converter).

Настройка аккаунта Thingspeak

После сборки схемы проекта настало время настройки нашей платформы IoT, которая будет принимать наши данные в режиме реального времени. В нашем проекте сервис Thingspeak используется для хранения принимаемых данных и их последующего отображения в виде графиков в графическом интерфейсе пользователя (GUI). Для настройки аккаунта Thingspeak выполните следующую последовательность шагов.

Шаг 1. Регистрация на сервисе Thingspeak.

Перейдите по адресу https://thingspeak.com/ и создайте там себе бесплатный Mathworks account (если у вас его еще нет).

Шаг 2. Создание проекта на Thingspeak.

Войдите в свой аккаунт на Thingspeak и в нем нажмите на “New Channel” (новый канал). Заполните детали создаваемого проекта: имя, описание и необходимые поля. Затем нажмите на “Save channel” (сохранить канал).

Создание нового канала на Thingspeak

Шаг 3. Сохранение необходимых данных.

Выберите в меню свой созданный канал и запишите с него (сохраните в файле) следующие данные, которые в дальнейшем нам пригодятся для разработки программы:

  • Channel ID (идентификатор канала), находится вверху страницы канала;
  • API key (API ключ), который находится на вкладке API Keys страницы канала.

Сохранение необходимых данных с сервиса Thingspeak

Шаг 4. Добавление виджетов в графический интерфейс пользователя (GUI).

Нажмите на кнопку “Add Widgets” и добавьте 4 необходимых виджета: средства измерений, цифровые дисплеи и индикаторы. В нашем случае мы использовали индикатор для сигнала тревоги при обнаружении пожара (Fire Alert). Выберите соответствующие имена полей для каждого виджета:

Добавление виджетов в графический интерфейс пользователя в Thingspeak

Пример работы добавленных виджетов

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе нам необходимо подключить используемые библиотеки – в нашем случае это библиотеки “SoftwareSerial.h” и “String.h”.

На следующем шаге с помощью библиотеки SoftwareSerial.h сделаем контакты 10 и 11, к которым подключен модуль SIM800L, контактами последовательного канала связи.

Далее в функции void setup() зададим режимы работы используемых контактов, режим работы последовательного порта, инициализируем его и модуль  SIM800L.

Далее будем использовать AT команды для инициализации модуля SIM800L и определения его состояния. Доступные к использованию AT команды можно найти в даташите на модуль SIM800L. Особого внимания в приведенных ниже командах заслуживает команда “gprsSerial.println("AT+CSTT=\"www\"")”, в которой задается точка доступа к оператору. Убедитесь в том, что в данной команде имя точки доступа (Access point name) заменено на “www”.

Внутри функции loop() мы будем считывать состояние с контакта 12 платы и сохранять его в переменной fire.

Далее, если будет обнаружен огонь, мы будем передавать соответствующие сообщения на сервер Thingspeak. Команда AT+CIPSTART используется для соединения с сервером Thingspeak и начала соединения. Команда AT+CIPSEND используется для передачи данных на сервер. Но не забудьте в представленном фрагменте программы заменить в поле “Thingspeak write API Key” представленный API ключ на свой API ключ, который вы ранее записали.

После завершения передачи данных команда AT+CIPSHUT используется для закрытия соединения.

Тестирование работы проекта

Перед началом работы проекта вставьте в модуль SIM800L SIM карту формата micro SIM как показано на рисунке ниже. Затем подайте питание на модуль и вы увидите как на нем начнет мигать светодиод. Если светодиод начнет мигать медленнее, чем при запуске модуля в работу, это будет означать что модуль обнаружил сеть и готов к соединению к сервером. После этого мы на сервере Thingspeak сможем смотреть состояние нашей системы.

Тестирование работы проекта

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
617 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *