Пишем свою прошивку для модулей Sonoff TH10/16

logo4

Недавно на Geektimes был обзор про модули ITEAD TH10. Хочу поделиться опытом разработки собственной прошивки для этих устройств.

SONOFF — серия выключателей, розеток и других приборов категории «Интернета вещей» от компании ITEAD. Их характеризует довольно низкая цена, использование «народного WiFi модуля» ESP8266 и работа в собственном сервисе, расположенном в облаке Amazon AWS global server.

Для этих модулей есть сторонние прошивки. Например, MQTT OTA, собираемой с ESP SDK илитоже самое но в среде Arduino IDE

Я хочу поделиться опытом создания собственной прошивки на Sonoff TH10 в среде Ardiono IDE.

Модули Sonoff мне понравились сразу. Начиная от упаковки:

000

Внешнего вида:

101

100

Качественной сборки и пайки:

102 104

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

page1 page2

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

По сути своей Sonoof TH10/16 — это ESP8266 с сетевым блоком питания, периферией в виде реле, светодиодов, датчиков температуры и влажности, с колодкой подключения и в приличном корпусе.

300

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

Для этого нужно впаять 4-х штырьковый разъем для подключение к USB/TTL конвертеру.

103

Имея негативный опыт перепрошивки Sonoff POW, очень рекомендую все работы по программированию проводить с отключенной силовой частью Sonoff и питанием через штырек 3.3В.

Последний USB/TTL у меня героически погиб вместе с модулем Sonoff POW, поэтому использую для подключения Arduino UNO с RESETот подтянутым к земле. 3.3-вольтовый стабилизатор Уны отлично справляется с нагрузкой в виде ESP8266 и всей периферии модуля.

200

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

Как устанавливать ESP8266 Core for Arduiono IDE я уже писал. От себя хочу рекомендовать версию Arduino IDE 1.6.5, как имеющую меньше всего глюков при работе с ESP.

arduino-ide-1

 

Так как на плате установлена микросхема памяти на 1Мбайт, выбираем соответствующую конфигурацию при загрузке в Board Manager:

arduino-ide-4

Теперь достаточно нажать кнопку контроллера Sonoff и передернуть питание, устройство переходит в режим загрузки прошивки.

arduino-ide-5

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

Итак, что мы имеем:

GPIO0 — кнопка (это понятно, когда мы включали бутлоадер)
GPIO12 — красный светодиод и реле
GPIO13 — синий светодиод
GPIO14 и GPIO4 выведены на разъем подключения датчиков.

Причем оба датчика однопроводные и используют GPIO14. GPIO4 еще нужно включить перемычкой на плате.

Да. Не густо, хотя и больше чем у ESP01.

GPIO2 и GPIO15 имеют подтягивающие резисторы на плате, можно подпаяться к ним. GPIO5 и ADC вообще никуда не распаяны и нужно подключаться прямо к микросхеме ESP. Оставим эти четыре вывода в покое и приступим к программированию.

Скетч мигания светодиодами Sonoff

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

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

Теперь сенсоры. Мне прислали датчик температуры/влажности AM2301 и датчик температуры DS18B20 в водонепроницаемом исполнении.

301

AM2301 совместим с сенсором DHT21. Для его работы нужна библиотека DHT. Форков библиотеки DHT существует великое множество, я рекомендую брать версию от Adafruit в которой есть автонастройка на частоту контроллера и которая корректно работает на ESP8266.

Скетч работы с сенсором AM2301

302

Для подключения DS18B20 нужна библиотека OneWire. Полностью совместима с ESP мультиплатформенная версия этой библиотеки

Алгоритм опроса датчика берем из примера:

Скетч работы с сенсором DS18B20

  • 303

    Ну вот, периферия работает. Дальше я использую существующие свои наработки. Полностью всю прошивку можно взять отсюда

    Особенности прошивки:

    • Автоматическое определение сенсоров AM2301 и DS18B20
    • Длинное нажатие кнопки — вкл/откл режима точки доступа
    • Короткое нажатие кнопки — вкл/откл реле
    • Синий светодиод горит — соединение установлено, двойная вспышка — нет подключения, одинарное мигание — режим точки доступа
    • Локальный WEB-сервер в режиме точки доступа 192.168.4.1
    • при подключении к WiFi по тому IP адресу который настроен
    • Авторизация доступа по паролю. По умолчанию admin/12345
    • Сохранение параметров на сервер в интернете обычным HTTP запросом. Можно настроить любой сервер, например, народный мониторинг. А можно и локальный без всякого интернета.
    • Сохранение настроек в EEPROM
    • При подключении к интернету установка времени по NTP

    config root

    Итог

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

    Тем кто знаком с ESP8266 — Sonoff это экономия на сборке, пайке и деталях, при условии, что вам нужна именно такая конфигурация устройства, как заложена в конкретном модуле Sonoff.

    Самый большой недостаток данных модулей то, что часть GPIO не разведены на разъемы. Ну что стоит сделать компании ITEAD гребенку с 8 pin и завести туда все свободные GPIO от ESP. Я думаю, популярность бы таких модулей при существующей цене сильно бы выросла.

    Для себя я нашел такие сферы приложения данного проекта:

    Контроллер управление вентилятором в ванной. . Правда датчик освещенности придется заменить на цифровой с компаратором, а от дисплея отказаться.

  • Управление фитолампами по расписанию с мониторингом температуры, и датчиком влажности почвы, выдающим частоту на порт GPIO4
  • Сторожевой таймер для роутера DIR320, который я использую для подключения всех ESP у себя дома и который имеет неприятную особенность раз в месяц подвисать не зависимо от прошивки. Заодно мониторить температуру процесора этого роутера

c01

Вы можете оставить отзыв или трекбек со своего сайта.

Ваш отзыв