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

image

Мой план заключался в том, чтобы создать простое и дешевое устройство, оснащенное двумя датчиками температуры, датчиком влажности, GSM модулем, а также твердотельным реле и розеткой для подключения нагрузки. То, что получилось в итоге, можно увидеть на фото. В качестве датчика температуры и влажности был выбран климатический сенсор BME280, его канал давления не используется. На фото его можно увидеть под прозрачным колпачком слева от основного модуля. Такое расположение уменьшает влияние тепловыделения внутри корпуса на показания датчика. В качестве колпачка используется китайская пластиковая пробирка с двумя отверстиями для вентиляции. Второй датчик температуры выносной, сделан на DS18B20. Он расположен внутри металлического зонда, с корпусом соединен кабелем через обычный аудио разъем для наушников. Зонд предназначен для измерения температуры непосредственно отопительной системы. Основной объем корпуса занимает твердотельное реле (я выбрал помощнее) и преобразователь из 220В в 5В для питания схемы. Розетка для подключения нагрузки смонтирована на задней стороне корпуса, на фото она не видна. OLED дисплей на базе контроллера SH1106 отображает показания датчиков, а также показывает, включена ли нагрузка. Для управления всей системой используется модуль Arduino Pro Mini в версии 3.3В 8МГц. Я не большой фанат этой платформы, но обилие библиотек, в том числе заботливо выпиленных автором, делает ее оптимальным выбором, когда нужно быстро сделать что то простое.

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

image

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

В гаражах, где я частенько бываю, недавно поставили на въезде шлагбаум, который открывается, если позвонить на определенный номер. Судя по всему, он сделан на похожем GSM модуле. Меня удивило, как сложно бывает дозвониться по этому номеру, чтобы он открылся. Теперь я знаю множество причин для этого. Это знание стоило мне нескольких месяцев экспериментов и внушительного количества потраченных на них денег. Я надеюсь, что теперь это знание послужит кому то еще. Рассмотрим, на что важно обратить внимание, продвигаясь от очевидных аппаратных проблем к менее очевидным программным.

Первое, что важно сделать правильно, — вставить сим-карту


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

Чтобы хорошо работать, нужно хорошо питаться


Требования к питанию у GSM модуля достаточно специфические. Он сделан на базе микросхемы, разработанной для кнопочных мобильных телефонов, и рассчитан на питание непосредственно от литиевого аккумулятора. Поэтому, 5В для него много, а 3.3В — мало. К тому же, в режиме передачи на максимальной мощности он способен потреблять ток до 2А. Если источник питания не способен обеспечить нужный ток, GSM модуль может перезагрузиться при попытке регистрации в сети и продолжить перезагружаться в бесконечном цикле. Периоды пикового потребления обычно длятся меньше секунды, поэтому есть соблазн применить слаботочный стабилизатор с накопителем энергии для периодов пиковой нагрузки. В качестве такого накопителя можно применить литиевый аккумулятор. При этом важно обеспечить возможность его отключения и важно не забыть ей воспользоваться, иначе отключение устройства от сети закончится глубоким разрядом аккумулятора и его необратимым повреждением. Другой вариант — это поставить вместо аккумулятора ионистор (суперконденсатор). Он не боится глубокого разряда. Но у него тоже есть проблемы с надежностью. Одна ячейка ионистора обычно рассчитана на напряжение от 2.5 до 3В. Ионисторы, рассчитанные на большее напряжение, состоят из нескольких ячеек (обычно из 2-х). При этом, однако, дисбаланс напряжения на ячейках может закончится пробоем ячейки. Такой дисбаланс легко получить за счет разницы в емкости ячеек или разницы в токе утечки. Следует также учитывать параметр внутреннего сопротивления ионистора. Ионисторы с большим внутренним сопротивлением на больших токах бесполезны, а ионисторы с малым сопротивлением стоят не дешевле аккумулятора. После того, как у меня ионистор скоропостижно скончался из-за дисбаланса ячеек, я просто применил преобразователь из 220В в 5В достаточной мощности. Чтобы понизить напряжение до нужного GSM модулю, я поставил между преобразователем и модулем обычный кремниевый диод. На таком диоде обычно падает 0.7В, так что модулю достаются необходимые 4.3В. После диода полезно поставить электролитический конденсатор большой емкости. Он сгладит провалы напряжения при внезапном включении передатчика.

От передающей антенны лучше держаться подальше


Даже после того, как я обеспечил GSM модулю требуемое питание, симптом перезагрузки периодически проявлялся, но на этот раз перезагружалась Arduino. Наблюдение за ее питанием при помощи осциллографа показало, что питание тут непричем. Судя по всему помеху создавал передатчик модуля, поскольку проблема возникала тем чаще, чем хуже были условия приема сигнала базовой станции. Столь радикальный эффект помех от передающей антенны вполне объясним, если вспомнить, что передатчик модуля способен выдать в антенну 2 ватта. Такая мощность может за 5 минут вскипятить миллилитр воды или нагреть ваше ухо на несколько градусов. Для борьбы с этой проблемой были опробованы разные методы. Для начала я подключил внешнюю антенну, которая располагалась снаружи корпуса и соединялась с модулем коротким коаксиальным кабелем. Однако, ожидаемого эффекта это не дало. Тогда я расположил модуль в отдельном металлическом корпусе, к которому снаружи крепилась антенна. Стало лучше, но не сильно. Радикально улучшил ситуацию только вынос антенны на некоторое расстояние от устройства за счет ее подключение коаксиальным кабелем достаточной длины.

Почему так происходит, легко понять из физических соображений. Типичная антенна — это 'четвертьволновой штырь', то есть половинка от дипольной антенны. Но, чтобы создать электрическое поле, половинки диполя недостаточно, нужна вторая половинка, тогда между отрицательно и положительно заряженными элементами антенны возникнет электрическое поле. У правильной штыревой антенны второй половиной является либо поверхность земли, либо корпус прибора, либо специальные проводящие 'противовесы'. Но для маркетологов все это слишком сложно, поэтому нам обычно продают только половинку от нормальной антенны. Как же она работает? Очень просто — второй половинкой является кабель, которым подключена антенна. То, что он экранирован, ничего не меняет. Внешняя поверхность его оплетки играет роль второй половинки дипольной антенны. При этом помеха легко наводится на проходящие по соседству провода несмотря на то, что кабель казалось бы экранирован. Ну а если кабеля нет, например мы спрятали модуль в металлический экран, из которого торчит антенна? Если экран большой (по сравнению с длиной волны), то он работает, как вторая половина излучателя, а если маленький, то излучают прочие провода, которые подведены к этому модулю, совершенно не важно, какие. Следующий рисунок иллюстрирует вышесказанное (плюсы и минусы показаны для наглядности, в реальности заряд элементов антенны меняет знак с частотой несущей).

image

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

Мораль заключается в том, что единственный надежный способ защититься от помех, создаваемых передающей антенной, — унести ее подальше от остальной электроники, подключив коаксиальным кабелем достаточной длины. Какая длина является достаточной? Расстояние естественно соизмерять с длиной волны, в данном случае это максимум 30 см. Это и есть минимальное расстояние на которое следует отнести антенну, но чем дальше, тем лучше.

Не все последовательные порты одинаково полезны


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

Суть проблемы в том, что программная реализация последовательного порта запрещает прерывания на все время передачи или приема очередного символа. Казалось бы, что в этом плохого, так многие делают. Например, реализация протокола 1-Wire для чтения термометров Dallas Semiconductor тоже запрещает прерывания на время передачи одного бита, то есть на 65 микросекунд. Это конечно тоже не слишком хорошо. Если в системе есть другие обработчики прерываний, они не смогут обеспечить время реакции на прерывание меньше этих 65 микросекунд. Если запрос на прерывание приходит, когда они запрещены, он будет обработан только после того, как прерывания разрешат снова. Например, аппаратный последовательный порт использует прерывания для того, чтобы положить в буфер приемника очередной принятый символ. Если следующий символ придет, пока не обработано прерывание от предыдущего, тот будет потерян. Это значит, что работать со скоростью больше 115200 бит в секунду аппаратный последовательный порт не сможет. В случае программной реализации последовательного порта все хуже. Для его работы нужно, чтобы время реакции на прерывание было меньше времени передачи одного бита. Это ограничивает нас скоростью 9600 бит в секунду.

Более серьезная проблема заключается в том, что программная реализация последовательного порта сама запрещает прерывания. Причем время, на которое она их запрещает (время передачи или приема одного символа) всегда примерно в 10 раз больше, чем максимальное время обработки прерывания, требуемое для корректной работы приемника того же программного последовательного порта. То есть, он всегда мешает сам себе до такой степени, что одновременно не может принимать и отправлять данные. Конечно, в большинстве случаев это и не требуется. В большинстве, но не в нашем случае с GSM модулем. Он таки может неожиданно для нас по собственной инициативе начать передавать данные (например при получении SMS сообщения). И в случае применения программной реализации последовательного порта это легко может привести к сбою протокола обмена с модулем. Поэтому, я просто применил один и тот же аппаратный последовательный порт и для программирования Arduino и для общения с GSM модулем. Неудобно конечно, но это единственный способ сделать надежно работающее устройство.

Асинхронному протоколу — асинхронный обработчик


Асинхронный протокол — это такой протокол, при котором одна сторона обмена может начать передавать информацию неожиданно для другой стороны, то есть без всякой синхронизации с ее сообщениями. Именно таков протокол обмена с GSM модулем. Он исправно отвечает на запросы со стороны Arduino, но может и начать передавать что то свое, например сообщить о принятом SMS сообщении. И это создает реальную проблему, поскольку ни одна из известных мне библиотек для работы с модулем под Arduino асинхронность протокола не учитывает вообще никак. Представим себе, что Arduino передала модулю команду, а модуль в тот же самый момент передал информацию о принятом SMS сообщении. Эта информация будет принята вместо ответа на команду. В результате в качестве ответа на команду библиотека вернет ошибку (в лучшем случае, в худшем все 'повиснет'), а сообщение о принятом SMS будет потеряно.

Починить это легко — нужно просто написать свой, асинхронный обработчик протокола. Асинхронный обработчик предъявляет только необходимый минимум требований к ответам модуля на его команды. На каждую команду модуль в итоге отвечает либо OK, либо ERROR. И это все, что нужно для того, чтобы зафиксировать ответ. Все остальные строки, которые приходят от модуля, обрабатываются независимо от того, пришли они в ответ на команду или сами по себе. Смысл этих строк всегда можно определить по их началу. Если строка начинается с +CSQ, то она содержит информацию о качестве сигнала. Если она начинается +CMT, то это информация о полученном SMS, и в ней содержится адрес отправителя. Первая строчка посылается в составе ответа на команду AT+CSQ, а вторую модуль присылает по собственной инициативе, но для нас это различие абсолютно несущественно. Принятые SMS сообщения модуль направляет непосредственно в последовательный порт. Это позволяет избежать чтения их из памяти и последующего удаления. Чтобы мы могли распознать SMS сообщения в общем потоке сообщений от модуля, они должны начинаться с символа #, в противном случае сообщение игнорируется.

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

Чтобы получать строки, начинающиеся с определенной последовательности символов, клиент создает специальный объект — ловушку. Таких ловушек он может создать любое количество. Полученные от модуля строки, отличные от OK, ERROR, которые не попали ни в одну из ловушек, просто игнорируются. Поскольку такая архитектура не требует полного анализа ответов модуля на множество различных типов команд, код библиотеки в разы компактнее любой из известных мне библиотек.

Что в итоге?


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

image

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

github.com/olegv142/GsmMon

Комментарии (60)


  1. lebedinskiy
    20.07.2019 22:58

    Старый добрый SMS.


  1. pokryshkin
    20.07.2019 23:44
    -1

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


    1. dikiykot
      21.07.2019 00:02

      в такой штуке реле на 10А (2.2 кВт), в устростве ТС 40А (8.8 кВт). ну и выносная антенна, датчик влажности, герметичный корпус бонусом


      1. pokryshkin
        21.07.2019 01:37

        Ввод в дом обычно 5 кВт либо 3 по 5 кВт, так что 8 кВт — мягко говоря перебор.
        Извините, что гадаю по фотографии, но провода там точно не на такую мощность.
        Если очень хочется большую нагрузку, существуют контакторы. Вообще слабо представляю себе обогреватель такой мощности на даче.

        Устройство будет стоять на улице? Нет? Зачем герметичный корпус? Да и автор про герметичность вроде ничего не пишет, там и джек обычный, и провода к датчику влажности непонятно как выходят.

        Единственное преимущество (только если покрытие очень плохое) — выносная антенна.


        1. oleg_v Автор
          21.07.2019 10:33

          Да, на погружение в воду устройство не рассчитано)
          Вообще, конкурировать с готовыми устройствами сложно. Но этого и не требуется, если вам просто хочется что то сделать руками.


    1. pyrk2142
      21.07.2019 00:32

      Есть достаточно общая проблема у разных готовых GSM-устройств: если предполагается использовать их для чего-то более серьезного, чем включение и выключение отопления (например, открытие или закрытие дверей, включение систем, которые могут бахнуть при включении в неподходящее время), то стоит очень хорошо подумать о их безопасности. В последнее время довольно активно этим занимался, почти одинаковые устройства могут как быть неплохими, так и быть подвержеными проблемам с брутфсором, а некоторые проклятые модели вообще содержат уязвимости, которые позволяют их удалённо контролировать. При этом довольно сложно сказать, как неопытный в вопросах безопасности устройств пользователь может это проверить. Только учитывать потенциальный риск и не втыкать в розетки/контроллеры с удаленнным управлением опасные устройства или ворота.


      1. pokryshkin
        21.07.2019 01:42
        +1

        Тут соглашусь: для серьезных задач ни дешевые китайские GSM розетки, ни самоделки (в большинстве случаев) не подходят.
        Не зря же: The S in IoT stands for Security


        1. oleg_v Автор
          21.07.2019 10:36

          Кстати, пароли там предусмотрены. Про это можно посмотреть на страничке проекта в github.


    1. proton17
      22.07.2019 15:44

      «Вот такая штука» им этот дом когда-нибудь и спалит.


  1. screep123
    20.07.2019 23:55

    Питать модем нужно только через LDO-стабилизатор, как указано в Integration Manual на SIM800. Помимо номинального напряжения, которое, как верно заметил автор может быть равно 4.3в там указано максимальное падение напряжения питания во время передачи данных. В соответствии с мануалом, оно не может превышать 350мв. В случае питания через диод, падение напряжения будет явно больше. В результате модем в лучшем случае будет выключаться, в худшем — странно глючить. По опыту электролит этом месте помогает слабо. Гораздо надежнее — нормальный стабилизатор — LDO или импульсный.


    1. oleg_v Автор
      20.07.2019 23:56

      С чего бы напряжению на диоде настолько увеличиваться? Это не резистор.


      1. screep123
        21.07.2019 00:03
        +1

        На «обычном кремниевом диоде» падает от 0.7 до 1.1в в зависимости от нагрузки. см. например характеристики Vf vs If для SM4007. Ну и так — абстрактно, настоятельно не рекомендую игнорировать требования и рекомендации документации производителя. Полагаю, если бы можно было обойтись диодом при питании от 5в, они бы так и нарисовали.

        mt-system.ru/sites/default/files/documents/sim800_hardware_design_v1.09.pdf раздел 4.1


        1. oleg_v Автор
          21.07.2019 10:38

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


          1. vau
            21.07.2019 15:30

            Она простая, но не легко воспроизводимая, так как первичные пробразователи AC/DC обычно не рассчитаны на перепад тока от минимума до максимума и назад за короткое время. Обратная связь не успевает. Образуются большие просадки и выбросы при плохом покрытии сетью GSM, так как потребление модуля зависит еще и от уровня сигнала. Так же имеется ряд проблем с большим алюминиевым конденсатором. Он низкочастотный и не успевает за короткими просадками и выбросами. Поэтому ставят параллельно несколько разнотипных. Опять таки ESR у него сильно зависит от температуры.


            1. oleg_v Автор
              22.07.2019 16:35

              Правильный LDO из даташита оказывается есть у китайских товарищей по 200р за 10 штук. Заказал, попробую.


              1. Godless
                23.07.2019 11:24

                А вас не затруднит поделиться ссылочкой? можно в личку


              1. vau
                23.07.2019 19:47

                Будьте бдительны. Это будет или отбраковка или перемаркировка или еще что-то интересное. За оригинал производитель желает 1,25$ за шт. при покупке разом 5к.


      1. juray
        21.07.2019 01:53
        +1

        Диод не идеален, и активное сопротивление у него вполне имеется, причем нелинейное.
        Потому и ставят иногда вместо диодов полевики.


  1. dikiykot
    20.07.2019 23:58

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


    1. oleg_v Автор
      21.07.2019 10:39

      Думаю, минимум 2 тысячи рублей. Самые дорогие детали — корпус и розетка)


      1. 200sx_Pilot
        21.07.2019 23:22

        То есть при размещении в распредщитке можно отказаться от дорогих составляющих и оптимизировать расходы?


        1. oleg_v Автор
          22.07.2019 16:36

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


  1. ebt
    21.07.2019 01:35

    Скажите, пожалуйста, что поменяется в архитектуре Вашего решения при смене ардуино на распберри?


    1. oleg_v Автор
      21.07.2019 10:40

      Ну теоретически линукс может выполнять функцию микроконтроллера, только смысла в этом немного.


      1. ZaitsXL
        22.07.2019 11:46

        Не нужно ему выполнять функцию микроконтроллера, Малина может принимать СМС через 3G модем и делать все то же самое что вы тут описали, только все делается на баше (ну или что юзернейм больше любит)


        1. oleg_v Автор
          22.07.2019 16:37

          Да, только в чем смысл менять простое на сложное?


          1. ZaitsXL
            22.07.2019 16:56

            а что сложного в баше и подключении одного единственного ЮСБ кабеля в розетку? а если есть хотя бы GPRS покрытие то и простое удаленное управление можно запилить


            1. oleg_v Автор
              22.07.2019 18:11

              Вы меняете систему из 1000 строк кода на систему, где их несколько миллионов. Конечно, она сложнее минимум на 4 порядка. Допустим, вам эта разница не интересна, коль скоро она в глаза не бросается. Но есть еще принципиальное отличие — малина грузится с карты памяти и постоянно что то на нее пишет. Такое устройство не может считаться надежным. Конечно, это можно исправить с помощью yocto, но сложно, и этим мало кто заморачивается, особенно для самоделок. Так что надежность Arduino просто несопоставима с малиной. Да и цена тоже ведь имеет значение.


              1. ZaitsXL
                22.07.2019 18:25

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


    1. NetBUG
      21.07.2019 12:22

      Мне кажется правильнее взять контроллер типа Mega32U4 и использовать аппаратный UART


      1. osmanpasha
        22.07.2019 20:37

        Есть и Arduino Pro Micro в схожем форм-факторе, что в статье.


  1. IRT
    21.07.2019 06:30

    Я так понимаю, что GSM модуль используется из-за наличия только голого голосового/sms GSM сигнала сети?
    Если есть сигнал EDGE/3G/4G хотя бы на небольшой скорости, то гораздо проще раздать мобильный интернет по wi-fi и использовать esp8266.


    1. HardWrMan
      21.07.2019 06:37

      Проблема такой схемы в отсутствии статичного IP и закрытых входящих портов у сотовых провайдеров. Чтобы это всё открыть надо покупать юртариф. А это совсем не для дачи. А для использования только исходящего, надо где-то разместить сервер. Думаешь, почему многие так борятся за CSD, который изначально в дизайне GSM и который так старательно пытаются выпилить опсосы (статьи на хабре уже были). Так что голос и SMS — единственный выход для дачника.


      1. IRT
        21.07.2019 06:50

        Понятное дело, что статический внешний IP у сотовых операторов будет достаточно затратен. Но сейчас цены на облачные VPS снизились до 1 евро в месяц. Если нужно совсем бесплатно включить удаленно пару устройств на даче, то, к примеру, я давно использую www.cloudmqtt.com, до 5 соединений бесплатно. esp8266 или raspberry цепляется к этому сервису, через приложение-клиент MQTT на телефоне можно управлять.


        1. osmanpasha
          22.07.2019 20:46

          Мой бесплатный сервер на cloudmqtt попал под ковровую блокировку во время борьбы с телеграмом, потому что был на Aws, и, как назло, оказался срочно нужен. А за год до этого тот же cloudmqtt переставал принимать сообщения из-за исчерпания какой-то квоты на диск и требовал ручной перезагрузки.Так что надеяться на эти сервера в публичных облаках — такое себе занятие.


          А где за евро дают vps?


          1. IRT
            23.07.2019 08:46

            На www.arubacloud.com в 2018 году можно было зарегистрировать VPS по 1 евро в месяц. Сейчас цены у них от 2.79 евро, но у уже работающих серверов плата осталась прежняя.


    1. romanetz_omsk
      21.07.2019 10:28

      esp8266 (а ещё лучше esp32) сама умеет в pppos, это в esp-idf входит в качестве примера и в ардуиновские библиотеки
      более того, esp32 хватает памяти и процессора на ssl, что делает применение avr вообще очень странным решением


    1. oleg_v Автор
      21.07.2019 10:42
      +1

      Сетевая инфраструктура очень уязвима, особенно сейчас, когда стало модным надругаться над трафиком. У меня провайдер на даче вообще рандомно проксирует https из-за чего половина интернета не работает. Живое творчество админов — страшная вещь)


      1. sav1812
        21.07.2019 12:26

        У меня провайдер на даче

        Живут же люди!.. ;) :))


    1. s-a-u-r-o-n
      21.07.2019 11:34

      А если использовать протокол STUN, позволяющий передавать пакеты по UDP, даже если и отправитель, и получатель сидят за NAT?


      1. IRT
        21.07.2019 11:37

        Проще дождаться повсеместного внедрения IPv6, и проблемы с NAT уйдут сами собой. Например, в России у МТС уже есть услуга IPv6 для всех абонентов.


        1. romanetz_omsk
          21.07.2019 11:47
          +1

          Уже лет десять ждём
          У проводных провайдеров были попытки внедрения IPv6 в 2012-2013 (ТТК, Уфанет), а потом начались всякие сормы, яровые, и провайдерам стало не до того.


  1. IRFC
    21.07.2019 08:14

    Первое, что важно сделать правильно, — вставить сим-карту

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

    А я почему-то думал, что все нормальные люди для этих целей используют isp программатор, а порт используют по назначению для других задач.


    1. ks0
      21.07.2019 08:21

      Это же ардуино. Да хоть бы и не ардуино, а мк с загрузчиком


      1. IRFC
        21.07.2019 08:25

        Загрузка прошивки через uart сильно не мешает модулю. Во время загрузки прошивки модуль можно отключить.


        1. HardWrMan
          21.07.2019 10:35

          Достаточно надёжно удерживать сброс модуля, который, я надеюсь, управляется с МК.


    1. oleg_v Автор
      21.07.2019 10:46
      +1

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


      1. romanetz_omsk
        21.07.2019 11:17
        +1

        Ардуиновская среда не запрещает использовать любые другие библиотеки. Так, для esp32, стандартный loop() — это просто одна из задач во FreeRTOS (!!!!), ничто не мешает её завершить, запустив в setup() свои задачи.


  1. sav1812
    21.07.2019 10:44
    +1

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

    На металлическом корпусе разъёма SIM выдавлена «картинка», показывающая, «как правильно засунуть». ;) :))

    И да, питание модуля «надо делать так, как надо», а не как вздумается — и тогда оказывается, что никаких проблем тут нет и модуль работает, «как часы».


  1. dmitryrf
    21.07.2019 11:44

    «С неделю я пытался понять, почему модуль не желает регистрироваться в сети»

    команда at+cpin сокращает это время до секунды


  1. sav13
    21.07.2019 12:31

    Мне для подобных решений понравился такой контроллер
    www.elecrow.com/catalogsearch/result/?q=gsm
    Все получается очень компактно.
    Модем A9 имеет встроенную поддержку MQTT для желающих в виде AT команд


  1. ILya63
    21.07.2019 14:36

    а вы не боитесь, что трердотельное реле нагреет или даже расплавит пластмассовый корпус?


    1. oleg_v Автор
      21.07.2019 19:05

      При нагрузке 2.5кВт почти не греется. Я потому и поставил с большим запасом по току.


      1. KonstantinSpb
        22.07.2019 04:04

        Как долго работало реле при такой нагрузке?
        Даже с таким запасом, я бы все-таки поставил бы радиатор, тогда корпус нужен будет другой, или для безопасности можно всё это поместить в аллюминиевый корпус, тогда радиатор не нужен будет.


  1. vau
    21.07.2019 15:56

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


  1. vindy123
    21.07.2019 16:25

    Вспомнил теплые ламповые дачные сигнализации на телефонах Сименс. Эх, были времена!


  1. toxicdream
    22.07.2019 08:31

    А что если синхрофазантроном по шурупам?
    Дешёвый андроид-телефон с IrDA. Накалякать приложение: по запросу фотографирует панель, передаёт команды по инфракрасному вместо родного пульта.
    Хотя не, некаждая отопительная система имеет пульт :(


  1. ZaitsXL
    22.07.2019 11:18

    Я делал очень похожую вещь из Raspberry Pi, USB GSM модема, UPS и реле для удаленного управления поливом на даче, но в целом реле конечно может включать что угодно. Паять ничего не пришлось и танцевать с чем либо, просто все подключитьк малине и настроить соответствующие сервисы под обычным линуксом


  1. Mixbap
    22.07.2019 16:40

    А есть какие-то особенности которые стоит учитывать при выборе антенны?


    1. oleg_v Автор
      22.07.2019 16:46

      Главное, чтобы она была для GSM, а не WiFi, или sub-GHz. Разъем подходить должен. Большие по размерам антенны обычно лучше маленьких, так как они больше похожи на дипольный излучатель. Ну и лучше сразу подыскать удлинитель на 2-3 метра для выноса антенны подальше и повыше. К нему требование одно — чтоб разъем подходил к остальным элементам конструкции.