Температура по смс ардуино – Контролируем температуру по SMS (Arduino Nano + Neoway M660) / Habr

Температура по смс ардуино – Контролируем температуру по SMS (Arduino Nano + Neoway M660) / Habr

Бюджетный GSM термометр на Arduino Nano

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.

Команды управления не чувствительны к регистру. Система мониторинга температуры и расхода газа на Arduino: пошаговая инструкция

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

Компоненты системы мониторинга на базе Arduino

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

  • Arduino Uno R3 или аналогичный микроконтроллер
  • Ethernet Shield W5100 для подключения к интернету
  • Датчик температуры и влажности DHT22 или DHT11
  • Датчик газа MQ-5 для детекции утечек природного газа
  • Датчик угарного газа MQ-7
  • Счетчик импульсов IN-Z61 для газового счетчика
  • Светодиоды для индикации
  • Резисторы, провода, макетная плата

Ключевым элементом является микроконтроллер Arduino, который будет собирать данные с датчиков и отправлять их на сервер. Ethernet Shield обеспечит подключение к интернету по проводной сети.

Подключение датчиков к Arduino

Схема подключения основных компонентов системы выглядит следующим образом:


  • Датчик DHT22 подключается к цифровому пину 2
  • Датчик MQ-5 — к аналоговому входу A0
  • Датчик MQ-7 — к аналоговому входу A1
  • Счетчик импульсов IN-Z61 — к цифровому пину 3
  • Светодиоды — к цифровым пинам 4, 5, 6, 7

Для корректной работы датчиков газа MQ-5 и MQ-7 необходимо подключить нагрузочные резисторы 10 кОм между выходом датчика и землей.

Настройка передачи данных на ThingSpeak

Для отправки данных на сервер ThingSpeak потребуется выполнить следующие шаги:

  1. Зарегистрироваться на сайте ThingSpeak и создать новый канал
  2. Получить API ключ для записи данных в канал
  3. Установить библиотеку ThingSpeak для Arduino
  4. Настроить подключение к Wi-Fi или Ethernet в скетче
  5. Использовать функции библиотеки для отправки данных на сервер

В скетче Arduino необходимо указать API ключ и ID канала ThingSpeak. Данные с датчиков будут отправляться на сервер с заданным интервалом, например, раз в 5-10 минут.

Функции системы мониторинга

Разработанная система позволяет реализовать следующий функционал:

  • Измерение температуры и влажности внутри и снаружи помещения
  • Контроль утечек природного газа
  • Мониторинг уровня угарного газа
  • Подсчет расхода газа по импульсам со счетчика
  • Световая индикация режимов работы и аварийных ситуаций
  • Передача данных на сервер ThingSpeak для удаленного мониторинга

Все измеренные параметры отображаются на графиках в личном кабинете ThingSpeak. При превышении пороговых значений система может отправлять уведомления.


Программирование микроконтроллера Arduino

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

  • Инициализация всех используемых датчиков и устройств
  • Настройка подключения к сети через Ethernet Shield
  • Считывание данных с датчиков с заданным интервалом
  • Обработка импульсов от газового счетчика
  • Проверка пороговых значений для сигнализации
  • Формирование пакета данных для отправки на ThingSpeak
  • Управление светодиодной индикацией

В основном цикле программы происходит последовательный опрос всех датчиков, проверка пороговых значений и отправка данных на сервер с заданной периодичностью.

Тестирование и отладка системы

После сборки устройства и загрузки скетча необходимо провести тщательное тестирование всех функций системы мониторинга:

  • Проверить корректность измерений температуры и влажности
  • Убедиться в правильной работе датчиков газа
  • Протестировать подсчет импульсов от газового счетчика
  • Проверить передачу данных на сервер ThingSpeak
  • Настроить пороговые значения для срабатывания сигнализации
  • Убедиться в корректной работе световой индикации

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


Установка и эксплуатация устройства

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

  • Обеспечить надежное электропитание устройства
  • Разместить датчики в оптимальных местах для измерений
  • Защитить устройство от пыли и влаги
  • Обеспечить стабильное подключение к интернету
  • Настроить уведомления о критических ситуациях
  • Периодически проверять работоспособность системы

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

Возможности расширения функционала

Разработанную систему мониторинга можно в дальнейшем расширять и дополнять новыми возможностями:

  • Добавление других типов датчиков (давления, освещенности и т.д.)
  • Реализация управления отопительным оборудованием
  • Интеграция с системами «умного дома»
  • Разработка мобильного приложения для мониторинга
  • Внедрение алгоритмов машинного обучения для прогнозирования
  • Добавление резервного канала связи (GSM-модуль)

Открытая архитектура Arduino позволяет гибко модифицировать систему под конкретные задачи пользователя.



Бюджетный GSM термометр на Arduino Nano

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.

Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:

AddPhone:2+71234567891risp
AddPhone:3+71234567892s
AddPhone:4+71234567893sp
AddPhone:5+71234567894r

Синтаксис команды:

AddPhone — команда
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.


DeletePhone — Удалить номер телефона.
Пример команды:
DeletePhone:+71234567891

Синтаксис команды:

DeletePhone — команда

: — разделитель
+71234567891 — номер телефона


EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
EditMainPhone:spri

Синтаксис команды:

EditMainPhone — команда
: — разделитель
srpi — параметры


RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
RingTime:40

Синтаксис команды:

RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.


ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
ModemID:2

Синтаксис команды:

ModemID — команда
: — разделитель
2 — ID модема.


NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:
NetCheckTime:10

Синтаксис команды:

NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.


TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:
TempCheckTime:10

Синтаксис команды:

TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.


LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:
LowTemp:25

Синтаксис команды:

LowTemp — команда
: — разделитель
25 — температура


HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:
HighTemp:60

Синтаксис команды:

HighTemp — команда
: — разделитель
60 — температура


WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerTime:5

Синтаксис команды:

WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения


WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).

WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff — выключить контроль внешнего питания

BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

BalanceNum:#103#L24

Синтаксис команды:

BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.


Reboot — перезагрузка устройства (только Arduino)

ResetConfig — сброс настроек на заводские установки

ResetPhone — удаление из памяти всех телефонных номеров

FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.

GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры

Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о текущей температуре, нижней и верхней границах контроля температуры, о частоте автоматического обновления температуры, и о том с какого номера было включено или выключено оповещение при изменении температуры и текущее состояние.

TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.

LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.

Money — запроса баланса.

ClearSms — Удалить из памяти все sms

ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов

Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

ListConfig — вывод в монитор порта текущей конфигурации устройства.

mysku.ru

Бюджетный GSM термометр на Arduino Nano

Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.

Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:

AddPhone:2+71234567891risp

AddPhone:3+71234567892s

AddPhone:4+71234567893sp

AddPhone:5+71234567894r

Синтаксис команды:

AddPhone — команда
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение при постановке или снятии с охраны
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.

DeletePhone — Удалить номер телефона.
Пример команды:

DeletePhone:+71234567891

Синтаксис команды:

DeletePhone — команда
: — разделитель
+71234567891 — номер телефона

EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:

EditMainPhone:spri

Синтаксис команды:

EditMainPhone — команда
: — разделитель
srpi — параметры

RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:

RingTime:40

Синтаксис команды:

RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.

ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:

ModemID:2

Синтаксис команды:

ModemID — команда
: — разделитель
2 — ID модема.

NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:

NetCheckTime:10

Синтаксис команды:

NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.

TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:

TempCheckTime:10

Синтаксис команды:

TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.

LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:

LowTemp:25

Синтаксис команды:

LowTemp — команда
: — разделитель
25 — температура

HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:

HighTemp:60

Синтаксис команды:

HighTemp — команда
: — разделитель
60 — температура

WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:

WatchPowerTime:5

Синтаксис команды:

WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения

WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).

WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено

WatchPowerOff — выключить контроль внешнего питания

BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:

BalanceNum:#103#L24

Синтаксис команды:

BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.

Reboot — перезагрузка устройства (только Arduino)

ResetConfig — сброс настроек на заводские установки

ResetPhone — удаление из памяти всех телефонных номеров

FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.

GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры

Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о текущей температуре, нижней и верхней границах контроля температуры, о частоте автоматического обновления температуры, и о том с какого номера было включено или выключено оповещение при изменении температуры и текущее состояние.

TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.

LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.

Money — запроса баланса.

ClearSms — Удалить из памяти все sms

ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов

Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.

ListConfig — вывод в монитор порта текущей конфигурации устройства.

musku.ru

Мониторинг температуры через интернет. Урок 2.

В предыдущем уроке мы разобрались как в теории работает устройство, передающее данные о температуре на сервер и принимающее от него команды для реле. Настало время перейти от теории к практике и собрать это устройство. Поехали…

Собираем передающее устройство

Шаг 1: Устанавливаем модуль SIM900 на плату Arduino Mega:

Рис. 1

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

Обратите внимание, что пины D7, D8 (интерфейс последовательного порта) на плате модема SIM900 нужно отогнуть, т.к. они не должны вставляться в соответствующие разъёмы Arduino Mega. Это обеспечивает совместимость этих модулей, поскольку соответствующие пины у Arduino Mega не могут быть назначены как линии последовательного порта.

Пин «5V» на плате SIM900 также нужно отогнуть, чтобы модем не получал питание напрямую с платы контроллера. Его нужно запитать через реле, чтобы можно было аппаратно перезагружать SIM900.

Шаг 2: Соединяем последовательный порт модуля SIM900 с последовательным портом Arduino :

Рис. 2

Пин «D7(RX)» модуля SIM900 соединяем с пином «19 (RX1)» модуля Arduino Mega, а пин «D8(TX)» c пином «18 (TX1)».

Шаг 3: Создаём вспомогательные контактные линии с помощью макетной платы:

Рис. 3

На плате контроллера:

  • Пин 5v – линия питания 5 В
  • пин 42 — линия данных датчика DS18B20
  • пин 49 — линия управления светодиодом «В работе»
  • пин 50 — линия управления светодиодом «Запрос»
  • пин 52 — линия управления светодиодом «GPRS»
  • пин GND – линия «Земля»

Вспомогательные точки удобны для сборки схемы.

Горизонтальные линии макетной платы объединены между собой «внутри», поэтому чтобы сделать из одной точки четыре, установим соответствующую перемычку для каждой из «размножаемых» точек.

Шаг 4: Подключаем датчик температуры DS18B20:

Рис. 4

У датчика DS18B20:

  • красный провод – питание
  • чёрный провод – земля
  • белый (жёлтый) провод – шина данных

Вставляем провода датчика в соответствующие контактные линии на макетной плате. Между линией питания и шиной данных датчика устанавливаем нагрузочный резистор 4,7 кОм.

Шаг 5: Подаём питание на релейный модуль:

Рис. 5

С помощью двух перемычек соединяем  пины  VCC и GND релейного модуля с линиями макетной платы 5V и GND соответственно.

Шаг 6: Подключаем линии управления релейным модулем:

Рис. 6

Пин 38 модуля Arduino Mega отвечает за включение/выключение выходного реле (К1). Соединяем этот пин с пином «IN1» релейного модуля.

Пин 48 модуля Arduino Mega отвечает за аппаратную перезагрузку модема и управляет реле К2. Соединяем этот пин с пином «IN2» релейного модуля.

Шаг 7: Подаём питание на модем через нормально-закрытый контакт реле:

Рис. 7

Ещё раз напоминаем, что пин «5V» на плате модема SIM900 нужно отогнуть, чтобы он не вставлялся в соответствующий пин на плате Arduino Mega.

Шаг 8: Подключаем светодиоды:

Рис. 8

Устанавливаем светодиоды, как показано на рисунке.

Готово! В результате должна получиться следующая схема:

 
Рис. 9

Заключение

На этом мы заканчиваем второй урок! Надеемся, что он вам понравился! В следующем уроке мы изучим алгоритм работы собранного нами устройства, посмотрим, как оно обменивается данными с сервером. До скорой встречи на LAZY SMART! Чтобы не пропустить новую статью, вступай в нашу группу Вконтакте, а также подписывайся на наш канал YouTube.


lazysmart.ru

Измеряем температуру, влажность и отслеживаем показания газового счетчика с использованием ThingSpeak. Часть 1. Используем Arduino Uno R3.

Внезапно, в порыве очередной энергетической оптимизации загородного хозяйства, мне в голову пришла интересная мысль. Мне захотелось понимать какой расход природного газа происходит на моем деревенском объекте. Что-то счета за голубое топливо, в последнее время, начали заставлять задумываться о его экономии. А эффективно экономить можно только тогда, когда понимаешь где у тебя происходит нецелевое расходование ресурса.

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

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

В общем, решил я собирать статистику потребления газа. Благо счетчик газовый установлен в моем помещении, да еще и оборудован дополнительным счетчиком импульсов, который, по идее, должен был передавать сведения в газовую компанию, но последняя на этот факт просто забила. Осталось только подключить к счетчику импульсов микроконтроллер, считать им импульсы и передавать их в какой-нибудь сервис или складывать в базу данных, дабы имелась возможность для проведения последующего статистического анализа.

Итак, дано:

  1. Счетчик газовый мембранный марки BK-G6 производства Elster. Впрочем, марка счетчика большой роли не играет, важен счетчик импульсов.
  2. Счетчик импульсов IN-Z61 все от той же Elster. Впрочем, марка счетчика тоже большой роли не играет, поскольку все они, за редким исключением, выполнены в виде магнитного реле, читай «геркон», с защитой от внешнего магнитного поля. А все остальное работает идентично. На выходе всего несколько проводков.

Немного информации по счетчику импульсов газового счетчика.

Схема подключения счетчика импульсов IN-Z61

Счетчик импульсов в силу своей простоты имеет всего четыре провода для подключения, но нас интересует всего два: зеленый и коричневый. Ресурс чувствительного элемента в нем составляет 20.000.000 импульсов, что мне кажется весьма и весьма много, хотя, может быть, производитель и обманывает. Максимальное напряжение 24 В постоянного тока, с максимальным током до 50 мА. Напомню, что максимальная нагрузка на порт в Arduino всего 40 мА. Минимальное время замкнутого контакта внутри счетчика 0.25 секунды, а сопротивление всего 0.5 Ома.

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

Желаемые функции

Помимо простого чтения импульсов со счетчика импульсов, я решил отправлять их на сервер ThingSpeak. Где удобно создавать графики из полученных данных, проводить исследования или же применять мощную визуализацию:

  1. Считать импульсы от счетчика импульсов газового счетчика.
  2. Отправлять считанные импульсы через интернет на сервер ThingSpeak.

Но ведь подсчет импульсов да их отправка в далекие дали совсем не загрузит микроконтроллер под завязку. Нужны дополнительные функции. Поскольку газовый счетчик, а, следовательно, и микроконтроллер, установлены в котельной, где подразумевается наличие котла, то хорошо бы иметь функции по контролю за утечкой природного газа и превышению уровня СО. Микроконтроллер должен уметь:

  1. Контролировать и сигнализировать об утечке природного газа.
  2. Контролировать и сигнализировать уровень CO.

Котельная в моем строении является частью гаража. И хочется, особенно зимой, понимать, что там в этом гараже происходит в плане температуры. А поскольку распространенные датчики температуры объединены еще и с гигрометрами, то можно одновременно получать сведения о влажности в помещении. Но если уж пошла такая пьянка, то имеет смысл заодно контролировать температуру и влажность вне помещения. Благо отделены они всего-то одной стеной:

  1. Контроль температуры и влажности в помещении.
  2. Контроль температуры и влажности вне помещения.

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

  1. Индикатор работоспособности устройства.
  2. Индикатор импульсов газового счетчика.
  3. Индикатор ошибок.
  4. Индикатор опасных концентраций газа в воздухе.

В результате получилось десять функций, которые и предстояло навесить на микроконтроллер и в дальнейшем их обосновано использовать.

Реализация

Поскольку в моих закромах нашлось аж сразу несколько контроллеров Arduino Uno R3 от RobotDyn, то было решено реализовывать проект именно на них. Точнее, всего на одном микроконтроллере. Для связи с глобальной сетью была выужена из закромов родины плата Ethernet Shield W5100 все от той же RobotDyn. В качестве датчиков для определения газов я решил использовать доступные MQ-5 и MQ-7 снова от RobotDyn. Для определения температуры и влажности я порешил использовать датчики серии DHT.

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

Выявленные проблемы

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

blog.kvv213.com