Бюджетный GSM термометр на Arduino Nano
- Цена: $13
- Перейти в магазин
Добрый день! Очередной обзор самодельного устройства из дешевых китайских электронных компонентов, в этот раз GSM-термометр. Как обычно, дёшево, себестоимость устройства примерно 850 ₽ или 13$. Сборка так же не составит труда для тех кто хотя бы пару раз в жизни держал паяльник :) Заинтересовало? Прошу под «cut»!
Начнём с технического задания, устройство должно:
1. Отслеживать температуру системы отопления, уведомлять смс сообщением или голосовым вызовом при превышении или понижении температуры ниже заданных границ.
2. Отслеживать наличие или отсутствие сети 220В, уведомлять при отсутствии или восстановлении.
3. Работать автономно не менее 24 часов.
4. Полностью управляться через смс сообщения.
Для сборки нам понадобится:
1. Arduino Nano v3 ATmega328P — 180 ₽.
2. GSM модуль SIM800L — 240 ₽.
3. Контроллер заряда-разряда для Li-ion аккумулятора TP4065 — 30 ₽.
4. Датчик DS18B20 — 80 ₽.
5. Светодиод RGB с общим анодом — 1шт * 10 ₽.
6. Резисторы 2,2 кОм, 3,3 кОм, 4,7 кОм, 10 кОм, 20 кОм — 5 ₽.
7. Выключатель — 15 ₽.
8. Корпус для PowerBank 4x18650 — 190 ₽.
9. Аккумулятор 18650 — 190 ₽.
10. Зарядное устройство 5В 1,5А — из личных запасов.
Не обязательно, но очень желательно:
11. Полевой транзистор IRLML6402 — 5 ₽.
12. Диоды SS26 — 5 ₽.
13. GSM антенна — 80 ₽.
Могу предположить что возникнут вопросы о работе устройства в сети GSM. Почему бы не использовать GPRS/3G/4G? Во-первых GSM — надёжно, во-вторых есть места очень плохим покрытием, при котором голосовая связь и смс сообщения ещё работают но GPRS-трафик передаётся не стабильно. Поэтому выбор пал именно на этот стандарт. В плане надёжности отдаю предпочтение Arduino, хотя устройство можно было бы собрать и на ESP8266, но в последней не могу быть уверен на все 100%.
За основу GSM-термометра была взята GSM-сигнализация из этого обзора, которая после «финальной» прошивки в течение года отработала без сбоев. Из прошивки «выпилено» всё лишнее и добавлен датчик температуры DS18B20. Диапазон измерения температуры датчика от -55°C до 125°C, даташит на русском языке можно взять по ссылке.
Устройство будет использоваться совместно с котлом длительного горения на дровах и отслеживать температуру теплоносителя в системе отопления. Так же необходимо следить за питанием насосов системы отопления от сети 220В, в случае его отключения насосы останавливаются и температура теплоносителя может стремительно увеличиваться.
Схема.
Простая схема для сборки.
Потроха.
Внешний вид.
Пусконаладочные работы или как этим пользоваться?!
Основным моментом после сборки является проверка EEPROM памяти устройства, для этого необходимо выполнить из консоли команду MemTest. Для доступа к консоли можно использовать Putty или монитор порта в Arduino IDE. В настройках необходимо указать нужный COM-порт и скорость порта 9600.
В результате выполнения команды вы должны увидеть следующие строки сообщающие о том, что тест EEPROM пройден успешно, устройство будет автоматически перезагружено и будут восстановлены настройки по умолчанию.
Для дальнейшей настройки необходимо зарегистрировать основной номер, с которого в дальнейшем будет производиться настройка, для этого достаточно совершить голосовой вызов на номер устройства. Номер с которого был совершен вызов будет добавлен в первую ячейку памяти устройства, так же этому номеру автоматически будут добавлены параметры «s», «r», «p», «i», которые в случае необходимости можно изменить командой EditMainPhone.
Далее выставляем пределы температур и интервал опроса датчика температуры, теперь эти действия так же можно выполнить с помощью смс сообщения.
Проверяем настройки командой info из консоли и через смс сообщение.
Основные настройки закончены, устройство готово к работе. В случае необходимости можно добавить ещё не более девяти номеров оповещения. Так же номера можно дублировать, при этом со всех дублей при добавлении будут автоматически сняты все признаки кроме «r» — оповещение голосовым вызовом.
Оповещение.
При изменении температуры выше или ниже заданных пределов, на номера с признаком «s» — будут отправлены смс сообщения с информацией о текущей температуре. Далее устройство совершит голосовые вызовы на все номера с признаком «r» и перейдёт в режим наблюдения с соответствующей световой индикацией. Следующее оповещение будет произведено только после нормализации температуры и последующим уходом температуры за указанные пределы. В случае отключения внешнего питания устройства на все номера с признаком «p» будет отправлено соответствующее уведомление. Номера с признаком «i» будут получать информационные сообщения о включении или отключении оповещения (следить или следить и оповещать), и номера телефона с которого было произведено действие.
Голосовой вызов на устройство с номера ранее занесённого в память переключит режим работы. Если включено оповещение и поступит вызов, устройство будет в переведено в режим наблюдения без оповещения, и наоборот. Голосовой вызов на устройство во время тревожного оповещения отменит оповещение голосовыми вызовами по всем ещё не оповещённым номерам.
Аппаратные баги
Если устройство зависает при отключении питания, смотрим сюда, полное обсуждение тут.
Если устройство «не понимает» смс команды, читать тут.
Если вы решили использовать модем SIM900, смотрим этот комментарий. Спасибо ChSN.
На этом пока всё. Спасибо за внимание! :)
Начнём с технического задания, устройство должно:
1. Отслеживать температуру системы отопления, уведомлять смс сообщением или голосовым вызовом при превышении или понижении температуры ниже заданных границ.
2. Отслеживать наличие или отсутствие сети 220В, уведомлять при отсутствии или восстановлении.
3. Работать автономно не менее 24 часов.
4. Полностью управляться через смс сообщения.
Для сборки нам понадобится:
1. Arduino Nano v3 ATmega328P — 180 ₽.
2. GSM модуль SIM800L — 240 ₽.
3. Контроллер заряда-разряда для Li-ion аккумулятора TP4065 — 30 ₽.
4. Датчик DS18B20 — 80 ₽.
5. Светодиод RGB с общим анодом — 1шт * 10 ₽.
6. Резисторы 2,2 кОм, 3,3 кОм, 4,7 кОм, 10 кОм, 20 кОм — 5 ₽.
7. Выключатель — 15 ₽.
8. Корпус для PowerBank 4x18650 — 190 ₽.
9. Аккумулятор 18650 — 190 ₽.
10. Зарядное устройство 5В 1,5А — из личных запасов.
Не обязательно, но очень желательно:
11. Полевой транзистор IRLML6402 — 5 ₽.
12. Диоды SS26 — 5 ₽.
13. GSM антенна — 80 ₽.
Могу предположить что возникнут вопросы о работе устройства в сети GSM. Почему бы не использовать GPRS/3G/4G? Во-первых GSM — надёжно, во-вторых есть места очень плохим покрытием, при котором голосовая связь и смс сообщения ещё работают но GPRS-трафик передаётся не стабильно. Поэтому выбор пал именно на этот стандарт. В плане надёжности отдаю предпочтение Arduino, хотя устройство можно было бы собрать и на ESP8266, но в последней не могу быть уверен на все 100%.
За основу GSM-термометра была взята GSM-сигнализация из этого обзора, которая после «финальной» прошивки в течение года отработала без сбоев. Из прошивки «выпилено» всё лишнее и добавлен датчик температуры DS18B20. Диапазон измерения температуры датчика от -55°C до 125°C, даташит на русском языке можно взять по ссылке.
Устройство будет использоваться совместно с котлом длительного горения на дровах и отслеживать температуру теплоносителя в системе отопления. Так же необходимо следить за питанием насосов системы отопления от сети 220В, в случае его отключения насосы останавливаются и температура теплоносителя может стремительно увеличиваться.
Схема.
Простая схема для сборки.
Потроха.
Внешний вид.
Используемые порты Arduino Nano v3
D5 — шина данных датчика температуры DS18B20 — желтый провод.
D6 — подключен к RST входу модема, для перезагрузки в случае потери сети.
D7 — подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.
D8 — модем TX
D9 — модем RX
D10 — красный светодиод
D11 — синий светодиод
D12 — зеленый светодиод
D6 — подключен к RST входу модема, для перезагрузки в случае потери сети.
D7 — подключен к делителю напряжения от внешнего источника питания +5В. Верхнее плечо 2,2 кОм, нижнее 3,3 кОм.
Делитель напряжения
D8 — модем TX
D9 — модем RX
D10 — красный светодиод
D11 — синий светодиод
D12 — зеленый светодиод
Прошивка
Программное обеспечение XLoader для прошивки Arduino Nano/Uno берём тут или на гугл диске вместе с прошивкой. Прошивку в виде hex — файла для Arduino Nano/Uno берём тут или на гихабе. Исходник прилагается.
Инструкция по прошивке
— подключаем Arduino в USB-порт
— выбираем нужный hex-файл
— выбираем нужный тип Arduino Nano или Uno
— выбираем COM порт, который создался при подключении Arduino к USB
— скорость 57600
— нажимаем Upload
Инструкция по прошивке
— подключаем Arduino в USB-порт
— выбираем нужный hex-файл
— выбираем нужный тип Arduino Nano или Uno
— выбираем COM порт, который создался при подключении Arduino к USB
— скорость 57600
— нажимаем Upload
Для тех кто будет шиться из исходника
В файл SoftwareSerial.h (C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\SoftwareSerial.h) необходимо внести изменения
было так:
было так:
#define _SS_MAX_RX_BUFF 64
стало так:#define _SS_MAX_RX_BUFF 192
Команды управления
Внимание! Команды выделенные жирным шрифтом могут быть выполнены только с основного номера, так как отвечают за конфигурацию устройства. Команды можно отправлять через смс сообщения или вводить в командной строке монитора порта Arduino IDE.
Команды управления не чувствительны к регистру:
AddPhone — Добавить номер телефона. Всего может быть добавлено не более 9 номеров + 1 основной номер который автоматически сохраняется в память при первом звонке на устройство после сброса на заводские установки командами ResetPhone, FullResetили MemTest. То есть кто первый позвонил на устройство после его сброса на заводские установки тот и «главный», этот номер заносится в первую ячейку памяти и его невозможно изменить или удалить через смс.
Пример команды:
DeletePhone — Удалить номер телефона.
Пример команды:
EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:
TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:
LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:
HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:
WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).
WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено
WatchPowerOff — выключить контроль внешнего питания
BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:
Reboot — перезагрузка устройства (только Arduino)
ResetConfig — сброс настроек на заводские установки
ResetPhone — удаление из памяти всех телефонных номеров
FullReset — сброс настроек, удаление из памяти всех телефонных номеров, восстановление значения по умолчанию команды BalanceNum.
GuardOn — включить оповещение при изменении температуры
GuardOff — выключить оповещение при изменении температуры
Info — проверить состояние, в ответ на это сообщение будет отправлено sms с информацией о текущей температуре, нижней и верхней границах контроля температуры, о частоте автоматического обновления температуры, и о том с какого номера было включено или выключено оповещение при изменении температуры и текущее состояние.
TestOn — включается тестовый режим.
TestOff — выключается тестовый режим.
LedOff — выключает светодиод режима ожидания.
LedOn — включает светодиод режима ожидания.
Money — запроса баланса.
ClearSms — Удалить из памяти все sms
ListPhone — вывод в монитор порта списка сохранённых в памяти телефонов
Memtest — тест энергонезависимой памяти устройства, все настройки устройства будут сброшены, аналогично команде FullReset.
ListConfig — вывод в монитор порта текущей конфигурации устройства.
Команды управления не чувствительны к регистру:
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» телефон заносится в память, но никак не используется.
: — разделитель
5 — записать в пятую ячейку памяти
+71234567890 — номер телефона
s — Параметр «SMS» — будет отправлено sms сообщение при срабатывании датчиков
r — Параметр «Ring» — будет совершен голосовой вызов при срабатывании датчиков
p — Параметр «Power» — будет отправлено sms сообщение при включении/отключении внешнего питания
i — Параметр «Info» — будет отправлено sms сообщение о включении или отключении оповещения при изменении температуры
При отсутствии параметров «s», «r», «p»,«i» телефон заносится в память, но никак не используется.
DeletePhone — Удалить номер телефона.
Пример команды:
DeletePhone:+71234567891
Синтаксис команды:
DeletePhone — команда
: — разделитель
+71234567891 — номер телефона
: — разделитель
+71234567891 — номер телефона
EditMainPhone — Изменить параметры «s», «r», «p», «i» основного телефона, этот номер занесён в первую ячейку памяти.
Пример команды:
EditMainPhone:spri
Синтаксис команды:
EditMainPhone — команда
: — разделитель
srpi — параметры
: — разделитель
srpi — параметры
RingTime — Длительность тревожного голосового вызова, параметр может иметь значение от 10 до 255 секунд.
Пример команды:
RingTime:40
Синтаксис команды:
RingTime — команда
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.
: — разделитель
40 — длительность вызова составит 40 секунд, после чего будет вызван следующий абонент.
ModemID — Принудительная установка модели используемого модема. Возможные значения: 0 — автоопределение модема, 1 — M590, 2 — SIM800l, 3 — A6_Mini.
Пример команды:
ModemID:2
Синтаксис команды:
ModemID — команда
: — разделитель
2 — ID модема.
: — разделитель
2 — ID модема.
NetCheckTime — Интервал проверки регистрации модема в сети оператора в минутах, параметр может иметь значение от 1 до 60 минут. При значении 0 проверка отключена.
Пример команды:
NetCheckTime:10
Синтаксис команды:
NetCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.
: — разделитель
10 — каждые 10 минут будет производиться поочерёдная проверка уровня сигнала сети или проверка регистрации модема в домашней сети оператора, то есть весь цикл проверки будет занимать 20 минут. В случае отсутствия сигнала или регистрации в домашней сети модем будет перезагружен.
TempCheckTime — Интервал автоматического обновления температуры, параметр может иметь значение от 1 до 60 минут.
Пример команды:
TempCheckTime:10
Синтаксис команды:
TempCheckTime — команда
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.
: — разделитель
10 — каждые 10 минут будет производиться снятие показаний с датчика температуры.
LowTemp — Нижний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может превышать или равняться значению параметра HighTemp.
Пример команды:
LowTemp:25
Синтаксис команды:
LowTemp — команда
: — разделитель
25 — температура
: — разделитель
25 — температура
HighTemp — Верхний порог температуры при достижении которого будет отправлено оповещение. Параметр может иметь значение от -50 до 125 и не может быть меньше или равняться значению параметра LowTemp.
Пример команды:
HighTemp:60
Синтаксис команды:
HighTemp — команда
: — разделитель
60 — температура
: — разделитель
60 — температура
WatchPowerTime — Время в минутах по истечении которого будет отправлено смс сообщение об отключении внешнего источника питания. Если внешнее питание будет восстановлено до истечения установленного времени, то сообщение не будет отправлено.
Пример команды:
WatchPowerTime:5
Синтаксис команды:
WatchPowerTime — команда
: — разделитель
5 — 5 минут до отправки смс сообщения
: — разделитель
5 — 5 минут до отправки смс сообщения
WatchPowerOn1 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания будет отправлено при условии что включено оповещение при изменении температуры (GuardOn).
WatchPowerOn2 — включить контроль внешнего питания, смс сообщение об отключении внешнего питания в любом случае будет отправлено
WatchPowerOff — выключить контроль внешнего питания
BalanceNum — Изменение номера запроса баланса и обработка длины ответа запроса. Значение по умолчанию для Beeline: #100#L22.
Пример команды:
BalanceNum:#103#L24
Синтаксис команды:
BalanceNum — команда
: — разделитель
#103# — номер запроса баланса
L24 — Длина (len) пересылаемого ответа 24 символа, обрезаем спам из запроса баланса.
: — разделитель
#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 — вывод в монитор порта текущей конфигурации устройства.
Световая индикация
Светится синим — температура ниже или равна нижней границе контроля, произведено оповещение, оповещение включено.
Светится зелёным — температура между нижней и верхней границей, оповещение включено.
Светится красным — температура выше или равна верхней границе контроля, произведено оповещение, оповещение включено.
Мигает синим — температура ниже или равна нижней границе контроля, оповещение отключено.
Мигает зелёным — температура между нижней и верхней границей, оповещение отключено.
Мигает красным — температура выше или равна верхней границе контроля, оповещение отключено.
Нет индикации — температура между нижней и верхней границей, оповещение включено, включен режим LedOff. При изменении температуры ниже или выше допустимых пределов будет включена световая индикация и произведено оповещение.
Светятся все светодиоды — возможно неисправен датчик температуры, необходима проверка.
Светится зелёным — температура между нижней и верхней границей, оповещение включено.
Светится красным — температура выше или равна верхней границе контроля, произведено оповещение, оповещение включено.
Мигает синим — температура ниже или равна нижней границе контроля, оповещение отключено.
Мигает зелёным — температура между нижней и верхней границей, оповещение отключено.
Мигает красным — температура выше или равна верхней границе контроля, оповещение отключено.
Нет индикации — температура между нижней и верхней границей, оповещение включено, включен режим LedOff. При изменении температуры ниже или выше допустимых пределов будет включена световая индикация и произведено оповещение.
Светятся все светодиоды — возможно неисправен датчик температуры, необходима проверка.
Пусконаладочные работы или как этим пользоваться?!
Основным моментом после сборки является проверка EEPROM памяти устройства, для этого необходимо выполнить из консоли команду MemTest. Для доступа к консоли можно использовать Putty или монитор порта в Arduino IDE. В настройках необходимо указать нужный COM-порт и скорость порта 9600.
В результате выполнения команды вы должны увидеть следующие строки сообщающие о том, что тест EEPROM пройден успешно, устройство будет автоматически перезагружено и будут восстановлены настройки по умолчанию.
Лог консоли - MemTest
memtest
EEPROM: 1024B
Test passed.
GSM Temperature Alarm 2018.12.03-01
Deleting eepromconfig data.
Load default eepromconfig data.
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
Mode: 1
Time: 0
ModemID: Autodetect
Delete balance data.
Load default balance data.
Balance number: #100#
Length to return: 22
Deleting phone data.
Load default phone data.
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> -> 0 -> 0 -> 0 -> 0
2 -> -> 0 -> 0 -> 0 -> 0
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Detected ModemID: 2
Guard ON at boot.
Temperature: 47.81
Для дальнейшей настройки необходимо зарегистрировать основной номер, с которого в дальнейшем будет производиться настройка, для этого достаточно совершить голосовой вызов на номер устройства. Номер с которого был совершен вызов будет добавлен в первую ячейку памяти устройства, так же этому номеру автоматически будут добавлены параметры «s», «r», «p», «i», которые в случае необходимости можно изменить командой EditMainPhone.
Лог консоли - регистрация основного номера
Ring from: +7905xxxxxxx
Primary phone: +7905xxxxxxx
GSM Temperature Alarm 2018.12.03-01
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
Mode: 1
Time: 0
ModemID: Autodetect
Balance number: #100#
Length to return: 22
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> 7905xxxxxxx -> 1 -> 1 -> 1 -> 1
2 -> -> 0 -> 0 -> 0 -> 0
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Detected ModemID: 2
Guard ON at boot.
Temperature: 47.88
Далее выставляем пределы температур и интервал опроса датчика температуры, теперь эти действия так же можно выполнить с помощью смс сообщения.
Лог консоли - настройка температуры
lowtemp:25
LowTemp is: 25
hightemp:50
HighTemp is: 50
TempCheckTime:5
TempCheckTime is: 5
Temperature: 47.94
Проверяем настройки командой info из консоли и через смс сообщение.
Лог консоли - вывод команды info
info
Temperature: 47.81
Current temperature: 47.81
Low: 25
High: 50
TempCheckTime: 5 min
Guard ON at boot.
СМС сообщение - вывод команды info
Основные настройки закончены, устройство готово к работе. В случае необходимости можно добавить ещё не более девяти номеров оповещения. Так же номера можно дублировать, при этом со всех дублей при добавлении будут автоматически сняты все признаки кроме «r» — оповещение голосовым вызовом.
Оповещение.
При изменении температуры выше или ниже заданных пределов, на номера с признаком «s» — будут отправлены смс сообщения с информацией о текущей температуре. Далее устройство совершит голосовые вызовы на все номера с признаком «r» и перейдёт в режим наблюдения с соответствующей световой индикацией. Следующее оповещение будет произведено только после нормализации температуры и последующим уходом температуры за указанные пределы. В случае отключения внешнего питания устройства на все номера с признаком «p» будет отправлено соответствующее уведомление. Номера с признаком «i» будут получать информационные сообщения о включении или отключении оповещения (следить или следить и оповещать), и номера телефона с которого было произведено действие.
Голосовой вызов на устройство с номера ранее занесённого в память переключит режим работы. Если включено оповещение и поступит вызов, устройство будет в переведено в режим наблюдения без оповещения, и наоборот. Голосовой вызов на устройство во время тревожного оповещения отменит оповещение голосовыми вызовами по всем ещё не оповещённым номерам.
Аппаратные баги
Если устройство зависает при отключении питания, смотрим сюда, полное обсуждение тут.
Если устройство «не понимает» смс команды, читать тут.
Если вы решили использовать модем SIM900, смотрим этот комментарий. Спасибо ChSN.
Список изменений
2018.12.03-01 — первая прошивка.
2018.12.09-01 — Добавлена проверка состояния датчика температуры. Если при включении устройства с датчика считывается температура 0.00 или во время работы с датчика температуры два раза подряд считывается температура 0.00, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура отличная от 0.00, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.
2018.12.22-01 — Изменён принцип проверки состояния датчика температуры. Если при включении или во время очередного опроса датчика устройство не может его обнаружить, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.
2019.01.07-01 — Исправлен баг из-за которого неправильно вводилось отрицательное значение температуры. Спасибо magteplo.
2018.12.09-01 — Добавлена проверка состояния датчика температуры. Если при включении устройства с датчика считывается температура 0.00 или во время работы с датчика температуры два раза подряд считывается температура 0.00, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура отличная от 0.00, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.
2018.12.22-01 — Изменён принцип проверки состояния датчика температуры. Если при включении или во время очередного опроса датчика устройство не может его обнаружить, то будет отправлено смс оповещение и совершены тревожные голосовые вызовы, так же будут светиться все три светодиода. Если с датчика будет получена температура, устройство продолжит работу в штатном режиме. Спасибо dmitriynet.
2019.01.07-01 — Исправлен баг из-за которого неправильно вводилось отрицательное значение температуры. Спасибо magteplo.
На этом пока всё. Спасибо за внимание! :)
Самые обсуждаемые обзоры
+75 |
5334
124
|
+30 |
1783
28
|
Если с диодами и полевым транзистором, то аккумулятор зарядится до 4,2В и не будет «использоваться» устройством до тех пор, пока не отключится внешнее питание.
Про антенну надо рассказывать? :)
ЗЫ Можно взять один шоттки на 2А SS26 и один кремниевый RL207 на 2A. На кремниевом падение напряжения 0,6В — 0,8В. SS26 ставится после блока питания, RL207 перед ардуиной.
Как только напряжение на аккумуляторе упадёт ниже 4.2, не должна ли начаться зарядка?
Вам, кстати, указывали на это в том Вашем топике, на который Вы выше дали ссылку. С объяснением.
Еще что-то можете сказать?
Согласен, организация питания тут вообще не вызывает положительных эмоций :)
ЗЫ: и эти же токи утечки создадут на затворе немалый потенциал.
А если напряжение в сети не будет пропадать — аккумулятор будет заряжаться, когда напряжение просядет до 4В?
Не хотите сим800л ставьте м590 или а6_мини, устройство их тоже поддерживает.
Кстати, с чего это вы взяли, что «большинство sim800L» — б/у?
Кстати, микросхемы «камнем» называете?
Это Вы сейчас чем блеснуть решили? :)
Ничем, в отличие от Вас, я блестеть не буду, я просто хочу убедится в уровне. А то «запитка», «выпрямлять руки» — это жаргон гопника-телемеханика, нежели профессионала.
Сдаётся мне, вы кроме описания модуля не имели счастья с ним долго работать. Но, это, как говорится, на вашей совести. Работает, и ладно. У меня тоже сигнализация проработала 2 недели, потом внезапно модем стал перезагружаться сам по себе. И питание в норме, и ток достаточный. Причина оказалась не в «кривых руках», а в модуле.
Я имею к этому отношение?
Во-первых на фото именно sim800l, значит с ним я всё же работал, посмотрите в предыдущие обзоры и даты их публикации, там тоже использую эти модемы.
Т.е., доказательств того, что модули продаются Б/У у Вас нет или основываются на «в Интернете посоны пишут». Я прав? Или у Вас таки есть доказательства? :)
Только по тому, что они стоят пару долларов, а не пару десятков долларов?
Извиняюсь за занудство. Но до сих пор не переношу «камень», когда говорят о микроэлектронике…
Да, это ведь удобно когда есть выбор. Устройство само определяет тип модема sim800l, m590 или A6_Mini, и в зависимости от модема выбирает нужный режим работы.
С принципиальной было бы понятнее, конечно.
У Вас остались вопросы по 3 диодам и одному транзистору? Задавайте, я отвечу.
Такая схема для представления была выбрана по нескольким причинам:
1. Те, кто пару раз держал паяльник в руках по этой схеме с большой вероятностью соберут (повторят) устройство.
2. Разные цвета на схеме для того, чтобы человек который ничего не понимает в схемах, в том числе и принципиальных, не смотал в клубок все провода и запаял их вместе, такое я уже встречал.
3. Те, кто знает что такое принципиальная схема так же без труда смогут её себе нарисовать если появится в этом необходимость Пруфы.
Зачем перерисовывать её? Мы же не reverse engineering тут делаем.
А где я утверждал, что у меня вопросы по диодам?
Но даже вот такие монтажные схемы можно же аккуратнее рисовать :)
Где-то np-переход, допустим, шунтируется, где-то каскад в воздухе повис, где-то полярность диода неправильная (условно).
А если смотреть на вот такие монтажные эскизы — ничего не заметишь; да, это наглядно, но совсем не читаемо.
Специально для таких нарисована схема «припаяй кусок провода вот сюда, второй конец вот сюда», разные цвета — чтобы не перепутали, выложена прошивка в виде файла и простая прога по её заливке в микроконтроллер.
Кому и нафига (мягко говоря) тут нужна «схема по ЕСКД»?
Человек, привыкший к принципиальным схемам, нарисует более понятно, чтобы не нужно было чуть ли не как в детских головоломках карандашом каждый поводок отслеживать :)
С пояснениями автора понятно и что там делают диоды.
Отслеживать куда что и зачем пошло, елозя пальцем по линиям, нужно именно на ч/б «схеме по ЕСКД».
А почему их нет? Потому не привыкли к той аккуратности, к которой приучают нормальные схемы. Эпоха DIY в стиле «повторяй за мной — хренак-хренак и готово» :)
Человек же, понимающий принципиальные схемы, без проблем повторит самоделку и без фритзинга. Возможно, (и скорее всего), его монтажная схема будет не похожа на монтажную схему автора девайса, но работать устройства будут одинаково.
Разница именно в этом: хотя бы общее понимание процессов (подчеркну: я не говорю о глубоком погружении в тему, именно об общем понимании) внутри повторяемой самоделки или слепом копировании по рисункам.
Принципиальные схемы именно это и дают.
mysku.club/blog/ebay/68818.html#comment2924089
Это плохо? Мне кажется — что это цель и автора, и тех кто будет повторять его самоделку.
Собирают — по монтажной схеме, хотя бы с этим согласны?
Перевести схему по ЕСКД в монтажную могут меньше 0.1% (читателей MySku, про тех кто не читает лучше не вспоминать к ночи). Для остальных картинка со «схемой по ЕСКД» будет просто мусором, мешающим чтению обзора.
Отсюда простой вопрос — зачем автору чертить и выкладывать сюда схему по ЕСКД? Для удовольствия двух человек (ну, трёх, если «кирича» считать)? А за пивом для вас не сбегать?
Близки ли вам темы хеджирования фьючерсов опционами? МСФО9? Корзина ОФЗ? MSSQL и Oracle? Вряд ли, и в этом тоже нет ничего плохого.
Именно то и плохо, что Вы спорите о вещах, от которых весьма далеки :)
Я не согласен («спорю») с тем, что эта схема необходима в обзоре.
С утверждением что она интересна менее чем 0.1% читателей вы согласны или нет?
Если «нет» — то как вы оцениваете этот процент?
Понимаете в чём проблема, если рисовать принципиальную схему, то тогда придётся полностью отрисовывать модуль TP4056, диоды, мосфет, и тогда тот, кто «пару раз держал паяльник» просто пройдёт мимо, и даже не будет пытаться пробовать собрать это устройство.
Очевидно, что обе схемы будут правильные и в точности одинаковые…
И это было бы очень полезно — нарисовать этот модуль в виде модуля, указав назначение его выводов. Потому что вот сейчас, например, я никак не понимаю где там что и почему земля делителя тянется аж к этому модулю, да и вообще почему подключение питания разнесено по всем четырем его выходам.
Питание подаётся через разъём MicroUSB или через контактные площадки, специально выделил цветом.
Вы ранее видели этот модуль?
Правда, при срабатывании защиты и разрыве «минуса» — могут быть нюансы. У меня в похожем месте стоит оптопара, просто показывающая наличие напряжения «с той стороны».
Но даже физически — брать землю где-то там далеко отдельным проводом, когда она вот рядом — совершенно безграмотно. Это оправдано только в редких специфических случаях.
Смотря кто собирает, и да монтажники собирают по монтажной схеме.
А ведь, если по-другому расположить элементы на вашей фотографии — модуль туда уместится :) Контроллер параллельно шахте для акку, понижающий сдвинуть на место, где сейчас контроллер — и gsm-модуль аккурат влеезет в нижний правый угол.
RX, TX, земля, питание своё (например 12В).
https://aliexpress.com/item/item/SH-MC35I-for-siemens-MC35I-gsm-gprs-modem-hot-selling/556908579.html
Но для моих экспериментов наверно «и так сойдёт» — я хотел сделать сигналку для бесплатного извещения об открытии двери, просто звонок на зашитый номер, просто увидеть на телефоне входящий от контакта «Дверь». Без управления по SMS и т.п.
MC35i валяется, спас от выбрасывания в помойку при списании (новый, из коробки не доставали).
Внушает больше доверия, чем новые модули с китайских сайтов.
A6_Mini входящий звонок:
M590 тоже без + отдаёт.
SIM800L входящий звонок:
Так же и с чисткой СМС
Нормально они работают, sim800l начинает глючить при напряжении 3.3В, примерно часов через 50-60 автономной работы, в зависимости от состояния аккумулятора, три запараллелить и будет неделя автономности. У меня есть устройства и на sim800l и на m590, работают стабильно. Только m590 не понимает новые симкарты.
интересный проект, взял на заметку, за обзор жирнейший плюс! Спасибо
UPD Хотел уточнить, вы пишите:А какой там из двух архивов?Разобрался, они там уровнем выше.
xod.io/ru/docs/guide/sd-log-example/ — пример создания схожего датчика на этой платформе
Зачем это если устройство питается от сети, и запитывается от аккумулятора только при отсутствии внешнего питания?
Зачем спящий режим если мы в 99% времени питаемся от сети?
Вот я тоже так подумал, и сделал питание от солнечной панели со спящим режимом. Пока солнечный свет есть — всё без сети работает, с ноября по февраль — нужно будет сетевое питание.
ааа, «типа на даче»
Отправить АТ и получить ответ от модема, провести инициализацию. Ответ не получен — дёрнуть пин, отправить АТ проверить ответ.
Или в цепь питания модема поставить мосфет и им включать/выключать модем.
Если на ATI откликается — значит не висит. Тупо сделать проверку val на какое-то значение, если val пустое — перезагрузить модем.
Сильно не пинайте )))
Неужели никто не делал с Ni-Mh?
Выходов порядочно остается, можно под релюхи приспособить, свет на фасаде и прочие мелочи.
Вот такое выдает терминал. Добавлял с телефона. С терминала добавляется корректно.
Проверил работу на этой прошивке и сигнализации. Результат одинаковый
Попробовал добавить через смс, всё хорошо, добавилось полностью:
Addphone:3+380671111111
SMS from: +7905XXXXXXX
Phone added.
listphone
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> 7905XXXXXXX-> 1 -> 1 -> 1 -> 1
2 -> 7961XXXXXXX -> 1 -> 1 -> 1 -> 1
3 -> 380671111111 -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Так выглядит «teston». Обрезает 3 цифры телефона
зы — в последней версии скетча баг: первый присвоенный номер пишется в массив с знаком +. после чего мега пытается отправить смс на номер ++792… с добавленными вторым и тд номерами такого не происходит тк в масссиве они хранятся без знака +
… долго тупил над этим — не хотела слать sim смс в ответ. пришлось ее из монитора всю перещупать. на нее косил. в итоге все работает кроме первого номера. добавил этот же номер вторым — шлет нормально ответы.
зызы — кто будет шиться из под ХР — ставьте в свойствах LD запуск в режиме 98win. у меня крашилось изза этого сперва. IDE — 1.6.13
Дополнительный + может появиться только в случае если неправильно определён модем в системе, или модем прописан вручную, или был заменён модем.
Выполните команду FullReset и снова позвоните на устройство.
ЗЫ Модем можно изменить вручную, в обзоре есть команды.
t-обратки, t-помещения, t-снаружи.
Вопрос к автору… А исходничка, случайно, в .flp нет?
Всё есть. Лежат скетчи к каждой версии там же где и прошивки.В .flp нет.
Тест ЕЕПРОМ проходит. Статистику из порта видно, Температуру измеряет верно. Listphone пишет нули. СИМ-карта МТC 4G,
mySerial.begin(115200);
mySerial.println(«AT+IPR=9600»);
начал откликаться на AT-команды. Хотя в даташите вроде бы присутствует фраза autobouding?
Даже не представляю сколько времени занимает создание таких проектов. И за то что не пожадничали и не пожалели времени на редактирование и обнародовании в интернете.
И еще вопрос — если местный оператор присылает баланс на кирилице, то не получится запросить счет?
Позвоните в поддержку оператора и уточните какой номер для запроса баланса с ответом на латинице.
Феникс Донецк.
Модуль sim800 оказался очень капризным к напряжению питания. При питании по собраной схеме 4,14 вольт часто зависал и терял сеть. Пришлось ставить ещё два диода шотки в его цепь питания. Получилось 3,73 вольта, при этом напряжении работает стабильно.
А да и еще на всякий случай поставил электролит на 6800 микрофарад.
Еще раз спасибо.
Проработала сигнализация несколько часов и перестала ловить сеть. Светодиод на сим модуле мигал три раза с длительными паузами.
Это сигнал того что питание не в порядке. Померял питание 3,73вольта.Поставил по питанию сим модуля dc-dc преобразователь, но изменения напряжения ничего не дали. Думал уже что накрылся модуль. Случайно отсоединил
Вход сим800, и о чудо модуль впоймал сеть. Как оказалось нужно не только ограничивать напряжение питания модуля но и амплитуду входного сигнала с ардуино на сим. Простой делитель из двух сопротивлений исправил ситуацию. Модуль заработал стабильно.
Почему одни модули работают с 5 вольтовым сигналом а другие нетХЗ.
Но по даташиту и на вход сим модуля нельзя подавать больше 3,1 вольта. Так что все закономерно.
Собрал все по схеме. Система конфигурится через COM. Но дозвониться не могу по номеру SIM-карты. В интернете пишут, что модем нуждается в предварительных настройках, и предлагают для этого пользоваться монитором порта и специальный скетч. Вопрос: нужно ли мне это делать, или функции этого скетча уже реализованы? Если да, то как это сделать? Дело в том, что по схеме nano заберет питание +5 c USB, а сим-модуль — с nano, что для него много. И еще: разъясните зачем нужен делитель на D7 подключать? Какова его роль?
Отличие моей схемы: диод с общим катодом (посадил на GND, пины в скетче инвертировал), и RX вход сим-модуля подключил через делитель 2,2-3,3, дабы попасть в интервал напряжений High-уровня, согласно даташиту. Может ли это влиять на работоспособность устройства?
+CMT: "+4850931xxxx",,«19/06/08,11:30:59+08»
Money
SMS from: +4850931xxxx
и больше ничего.
Если я введу Money с консоли, то:
Money
USSD query:
+CUSD: 0,«Pozostalo Ci 1,00zl do wykorzystania do 2019-09-05 23:59:59.»,15
OK
что правильно.
Я отправил смс — Money, не получил ответа.
В мониторе порта:
TestOn
OK
OK
OK
OK
OK
Temperature: 28.50
+CMT: "+4850931xxxx",,«19/06/08,12:03:18+08»
Money
SMS from: +4850931xxxx
+cmt: "+4850931xxxx",,«19/06/08,12:03:18+08»money
AT+CUSD=1,"*101#",15
ERROR
У моего оператора запрос баланса "*101 #"
Тип модема определяется автоматически.
И из хекса и из исходников получаю то же самое
Далее я искал решение, я сделал много попыток. SIM800L никак не отправляет ответ на запрос MONEY. Я проверил это на двух модемах.
То же относится и к модему M590E, без ответа.
Я нашел старый модем SIM300DZ. После автоматического распознавания все заработало, но ответы были с ошибками, появились «китайские иероглифы». Я выбрал модуль M590 вручную (на модеме SIM300DZ), и все стало работать как надо. Все остальные команды также выполняются правильно.
Почему это происходит, я не могу понять. Может быть, это более понятно для вас? Что вы думаете об этом?
Вот так происходит LED уведомление о том, что модем в сети:
По ссылке mysku.club/blog/ebay/68818.html находится статья про Бюджетный GSM термометр на Arduino Nano. Где можно скачать прошивку? По ссылке
drive.google.com/open?id=1Gf6bAJbHKi0jBLE26TaKaCOBukQOFGka
можно найти только два файла PowerModule.lay6 и Xloader.zip. В архиве исходника и hex файла нет.
Содержание архива:
avrdude.conf
avrdude.exe
devices.txt
libusb0.dll
license.txt
XLoader.exe
Спасибо!
Подскажите плиз, купил датчик DS18B20 но у него на др конце мини USB. Мои познания в электронике примерно ниже начинающего, как узнать где в этом выходе ± и data подключены? резать не хочется провод. Есть мультиметр дома.
Необходимо проверить кодировку в которой отправляются смс сообщения с вашего телефона.
Проблема была в согласовании уровней. На форуме я прочитал рекомендации, согласно которым необходимо согласовать уровни выхода Tx ардуино и Rx модема, поэтому связь Tx --> Rx сделал через делитель напряжения 2.2 кОм/3.3 кОм. После соединения напрямую все заработало. Отдельно хочу отметить, что не прошло и суток с момента возникновения проблемы до момента ее решения. Я написал письмо разработчику (Илья, kvolk) и он сам связался со мной и сообщил в чем может быть проблема. Я очень благодарен Илье за этот проект. В прошлом году у меня в загородном доме отключился котел отопления, который должен был поддерживать автоматически заданную температуру дома. Это привело к тому, что дом замерз, лопнули все батареи и вышел из строя окончательно сам котел. Ущерба от этой ситуации было порядка 75 т.р., может быть и больше. Сейчас, применив проект Ильи, я спокоен за систему отопления и даже если что-то произойдет, можно будет приехать раньше, чем там все замерзнет и решить проблему. Еще раз огромное спасибо разработчику!!!
99,9% проблема с питанием.
mysku.club/blog/ebay/68818.html#comment2923826
Если ситуация не изменится меняйте блок питания.
При подключенном usb такого нет потому, что доппитание идёт с usb порта.
mysku.club/blog/ebay/68818.html#comment2925440
В очередной раз повторюсь, попробуйте взять любое «брендовое» зарядное устройство для телефона. У меня в устройствах используются оригинальные от Sony и Xiaomi и такой проблемы нет.
Какой источник питания у вас используется?
mysku.club/blog/ebay/43282.html#comment1995965
Мне удалось разобраться в сути проблемы и решить ее. Используемый полевой транзистор irlml6402 имеет пороговое напряжение затвора от -0,4 до -0,95 В (согласно datasheet), соответственно, при пропадании сетевого питания требуется некоторое время, пока напряжение опустится до уровня открытия полевого транзистора, и пока идет этот переходный процесс, ардуино и все другие модули питаются пониженным напряжением, которое и приводит к зависанию. В моем случае провал питающего напряжения происходит до приблизительно 2.8 В и длительность провала составляет порядка 0,5 с. Потом открывается полевик и питание подается от аккумулятора. Этот переходный процесс и приводит к зависанию модуля ардуино. Видео переходного процесса можно увидеть на видео ниже.
Несколько слов по поводу емкостей. Я попробовал устанавливать емкости в цепи питания ардуино, чтобы подавить этот провал питания, суммарная емкость составляла до 5500 мкФ (2200 + 3300 мкф), но даже такая емкость не смогла подавить переходный процесс. Если емкость убрать совсем, как это указано на принципиальной схеме, то работает все так же, но на осциллографе видны всплески питания во время работы модуля зарядки TP4056. Чтобы подавить эти пульсации я решил оставить емкость 2200 мкф, подключенной к цепи питания ардуино. Это мало на что повлияло, но пульсации от модуля зарядки стали проходить значительно меньше. Теперь по поводу емкости, которая является выходной для блока питания 5В. Там должен быть компромисс, с одной стороны эта емкость должна быть достаточной для подавления пульсаций БП, с другой стороны, не нужно делать ее избыточной, чтобы при пропадании сетевого питания напряжение 5В падало до нуля максимально быстро. Чем быстрее мы опустим напряжение 5В до 0, тем быстрее откроется полевой транзистор. Именно из этих соображений я сделал следующие доработки.
Во-первых, я подключил нагрузочный резистор 150 Ом на шину питания 5В. Этот резистор дает дополнительные 33 мА нагрузки и значительно быстрее разряжает выходную емкость блока питания при пропадании сетевого напряжения.
Во вторых, затвор полевого транзистора я перенес на точку соединения диодов D2 и D2, это тоже сдвигает порог открытия транзистора на 0,25 В ранее, чем было до этого. Видео переходного процесса после доработки представлено ниже.
После проведенных доработок мое устройство заработало стабильно. Еще раз спасибо за чудесный проект и участие.
Ниже добавил фото процесса переключения с некоторыми пояснениями. Всем удачи!
GSM Temperature Alarm 2019.01.07-01
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 0
TempCheckTime: 10
LowTemp: 10
HighTemp: 70
WatchPower
Mode: 1
Time: 0
ModemID: Autodetect
Balance number: #100#
Length to return: 22
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> -> 0 -> 0 -> 0 -> 0
2 -> -> 0 -> 0 -> 0 -> 0
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Guard ON at boot.
Error sensor.
Я на верном пути? загружал при помощи gcUploader
Лог следующий:
Причина такого поведения найдена. GSM модуль не может сразу после приема SMS выполнять команды USD. Требуется задержка. В исходника данный факт предусмотрен, но отключен.
Хочу добавить: Использую модем SIM800C
if (inputString.indexof(«ON_1») > -1){ // Проверяем полученные данные, если ON 1 включаем реле 1 digitalWrite (relay 1, LOW);
delay (1200);
digitalWrite (relay 1, HIGH);
sms (String («Relay 1 — ON»), String("+7xxxxxxxxxx"));} // отправка SMS
if (inputString.indexOf(«OFF_1») > -1){ // Проверяем полученные данные, если ON 1 включаем реле 1 digitalWrite (relay_1, LOW);
delay (4200);
digitalWrite (relay_1, HIGH);
sms (String («Relay 1 — OFF»), String("+7xxxxxxxxxx"));} // отправка SMS
похоже, что на дополнительной платке и на схеме в статье MOSFET разведен по-разному:
выводы 2 и 3 поменяны местами.
На основной схеме вывод 3 (drain) идет на питание всей схемы.
Вывод 2 (source) на выход OUT+ от TP4056.
А на доп плате наоборот.
Где ошибка?
Собрал схемку, прошил hex nano, мемтест проходит и температуру кажет.
Жду SIM800L, на подходе.
Модуль SIM800L перед подключением настраивать надо? (скорость и т.д.)
Один бракованный оказался :)) Ну да ладно, на модуле стояло автоопределение скорости. Подключился автоматом.
Только счастье было не долгим, после отключения питания связь прервалась и никакие перезагрузки не помогали.
Пробовал и скетч и хекс заливать не помогло. Сработало только принудительно установленная скорость 9600 на симмодуле и выбор ид модема в настройках, вот тогда завелось.
Главное сперва модем правильно обозначить, а потом делать первый звонок. Иначе номер с двумя плюсами может прописаться, и соответственно смс уходят в никуда.
В итоге подправил текст приходящих смс, (т.к. буква «w» в смс почему то приходила ввиде крякозабра) и прошился скетчем.
Заметил, что функция «WatchPowerOn1 и WatchPowerOn2» прописывается, но работает только «WatchPowerOn1» — т.е. оповещает только при GuardON
ПС: А можно добавить в " info" статус питания?
И классно было бы добавить вход для охраны (датчик движения или геркон на дверь)
СПАСИБО!
Стояла скорость 115200.
После изменения сразу все заработало с Сим от Тинькофф.
Но грозят же вообще везде 2G выключить для освобождения частот, надеюсь не скоро.
Собрал по урезанной схеме без транзистора и диодов т.к. питание будет автономное, внешнего не будет.
Из изменений — поставил делитель на SIM800L, который рекомендуется по даташиту. 10ком\10ком.
Схема работает, но только тогда, когда ардуина подключена к компу и включен монитор порта. Если выдернуть усб из ардуины, то схема может еще минут 5-10 проработать и все. Всё мигает, связь установлена, но смс ответные не приходят.
Думал проседает напряжение при запросе и адруина отрубается, но напряжения проверял стрелочным прибором, 4.2 везде, нигде не проседает.
В чем может быть проблема? При подключении на горячую к компу, порт сразу же показывает всю инфу. Это нормально? Или это говорит о том, что адруина не была запущена?
Блок питания без нагрузки пульсирует скорее всего сильно, замените его.Какие аккумуляторы используете?2) Добавить ещё одну переменную для хранения второго датчика.
3) В цикле перебирать датчики и заносить значения в переменные в процедуре void GetTemperature().
4)Анализировать значения.
СМС ОПОВЕЩЕНИЕ НЕ ПРИХОДИТ ИЗ-ЗА ЭТОГО?
ListPhone
Read array phone:
№ -> Phone -> s -> r -> p -> i
1 -> +7908***8052 -> 1 -> 1 -> 1 -> 1
2 -> 7906***1585 -> 1 -> 1 -> 1 -> 1
3 -> -> 0 -> 0 -> 0 -> 0
4 -> -> 0 -> 0 -> 0 -> 0
5 -> -> 0 -> 0 -> 0 -> 0
6 -> -> 0 -> 0 -> 0 -> 0
7 -> -> 0 -> 0 -> 0 -> 0
8 -> -> 0 -> 0 -> 0 -> 0
9 -> -> 0 -> 0 -> 0 -> 0
10 -> -> 0 -> 0 -> 0 -> 0
Read eepromconfig:
RingTime: 40
Test: 0
Led: 1
Guard: 1
NetCheckTime: 10
TempCheckTime: 1
LowTemp: 24
HighTemp: 30
WatchPower
Mode: 1
Time: 1
ModemID: Autodetect
Balance number: #100#
Length to return: 24
Проверим настройки оповещения о получение смс
AT+CNMI=?
Ответ, если 2,1,0,0,0
то
AT+CNMI= 2,2,0,1,1 – я такую команду давал, говорят можно и 2,2,0,0,0 но не проверял
и всё должно заработать.
В решении этой проблемы очень помог автор, ему поклон и уважение.
Процесс запуска показан на записи PORT MONITOR. В PORT MONITOR все команды выполняются корректно. Телефон администратора сохранился в eeprom (после звонка). Однако SMS-сообщения в обоих направлениях: с устройства на телефон или с телефона на устройство нет. ПОРТ МОНИТОР показывает, что СМС была отправлена на телефон, сохраненный в eeprom, но на самом деле до указанного телефона не дошла.
Где ошибка? Я загрузил авторский .hex-файл, а также скомпилированный из исходников. В обоих случаях эффект один и тот же — никаких смс-рассылок.
Может быть у кого-то была такая проблема и он может описать, как ее решил?
Если есть возможность найдите сим800л, он намного стабильнее
Сделал мемтест и полный сброс. Я заставил модем М590. При звонке номер звонившего не был идентифицирован. Похоже, проблема в чем-то другом. На данный момент я не делал сброс модема до заводских настроек, потому что мне неловко признаться, что я не знаю, как это сделать. Мне нужно прочитать инструкцию.
SIM800L у меня сейчас нет. Мне нужно его где-то поискать. Как его подключить к Arduino NANO: использовать конвертер для подключения RX и TX или соединить эти линии напрямую?
AT+CSCS=«GSM»
AT+CMGF=1
AT+CLIP=1
Еще раз спасибо за помощь и понимание.
После загрузки .hex-файла на устройство, устройство включилось и загорелся зеленый светодиод.
Из монитора порта я выполнил MemTest и FullReset. Затем я позвонил на устройство с телефона. Телефон прописался как основной со всеми опциями. Далее в Monitor Port я произвел настройку. Все команды выполнялись правильно. Проблема началась, когда я отправил СМС «Info» со своего телефона. В мониторе порта было выполнено следующее:
„+CMT: „+48xxxxxxxxx“,»",«24/10/18,11:15:21+08»
Info
SMS from: +
Temperature: 25.87
Sent! + -> Current temperature: 25.88
Low: 8
High: 30
TempCheckTime: 10 min
Guard ON at boot. ‘’
Однако обратного СМС со статусом устройства на телефон не пришло.
Аналогичная ситуация возникает, когда я хочу установить новый предел температуры со своего телефона, например.
я отправил СМС «HighTemp:30».
В мониторе порта было выполнено следующее:
"+CMT: "+48xxxxxxxxx","",«24.10.18,11:11:46+08»
HighTemp: 30
СМС от: + "
И ничего не происходит. Ни температура не меняется, ни уведомление на телефон не приходит.
Если я отключу питание, в мониторе порта появится следующее:
Sent! +48xxxxxxxxx -> Power supply disconnected
но смс на телефон не приходит.
Аналогично при подключении сетевого питания. В мониторе порта:
Sent! +48xxxxxxxxx -> Power supply restored
и смс на телефон не приходит.
Такая ситуация наблюдается как с M590E, так и с SIM800L. После загрузки Авторского ПО из .hex-файла устройство работает корректно.
Я описал это достаточно подробно, потому что не знаю, есть ли в моей компиляции какие-то ошибки (хотя ошибок и комментариев при компиляции не было), или в самом скетче — Sketch_gsm_termo_2019.01.07-01.ino — чего-то не хватает (ошибка) что я не могу его найти.
Поэтому я хотел бы попросить автора рассказать мне, что я делаю не так. Если виновата моя версия Arduino, можно ли будет скомпилировать скетч с моей вставкой (три строчки программы)?
Возможно, вы и правы, но я думаю, не совсем. Мой предыдущий пост был написан довольно сумбурно и поэтому меня неправильно поняли.
Я скомпилировал Sketch_gsm_termo_2019.01.07-01.ino (перечислен по адресу drive.google.com/drive/folders/1Gf6bAJbHKi0jBLE26TaKaCOBukQOFGka в пакете Прошивка) без каких-либо изменений, чтобы проверить, правильно ли компилируется моя среда. Выяснилось, что либо для компиляции файла Nano.2019.01.07-01.gsm_termo.hex вы использовали другой скетч, либо представленный скетч не содержит внесенных вами исправлений. Я считаю, что поскольку скетч и файл .hex находятся в одном пакете, скетч является основой для создания файла .hex.
После компиляции скетча — Sketch_gsm_termo_2019.01.07-01.ino — я получил сообщение:
«Скетч использует 28632 байта (93%) программной памяти. Максимум — 30720 байт. Глобальные переменные используют 869 байт (42%) динамической памяти, а для локальных переменных остается 1179 байт. Максимум — 2048 байт».
Здесь нет никакой опасности, программа должна выполняться без каких-либо нестабильных действий (при условии, что исходник правильный).
Поэтому поясните, пожалуйста, как был создан файл Nano.2019.01.07-01.gsm_termo.hex и какой скетч послужил исходником для его разработки.
В конце предыдущего поста я написал (может быть не очень понятно), можно ли будет вам скомпилировать скетч — Sketch_gsm_termo_2019.01.07-01.ino — в вашей среде Arduino, учитывая те несколько строк программы, которые я хотел бы добавить в исходник?
Извините за утомительные вопросы.
Если вы не возражаете, я бы хотел, чтобы вы скомпилировали скетч, который находится здесь: ссылка, и опубликовали шестнадцатеричный файл. Я сравню это с тем, что я собрал.
ссылка
Сделав исправление в SoftwareSerial.h этого каталога на #define _SS_MAX_RX_BUFF 192 и перекомпилировав скетч — Sketch_gsm_termo_2019.01.07-01.ino — я получил:
Скетч использует 28792 байта (93%) программной памяти. Максимум — 30720 байт.
Глобальные переменные используют 998 байт (48%) динамической памяти, оставляя 1050 байт для локальных переменных. Максимум — 2048 байт.
После загрузки программы на устройство и правильной настройки устройство начало работать как надо. Все команды выполняются как в Port Monitor, так и посредством отправки СМС с телефона.
Теперь я могу добавить несколько строк программы и проверить, смогу ли я ее правильно скомпилировать, ведь уже известно, что компиляция в моей среде корректна.
Большое спасибо за то, что указали мне неверный путь и помогли найти допущенную мной ошибку (хотя это была неосознанная ошибка, поскольку я до сих пор не знаю, почему эти библиотеки находятся в другом каталоге, чем ваша).
Еще раз спасибо за помощь, терпение и понимание такого утомительного человека, как я.