Найти тему
5277

IoT, Atmega вместо ESP8266 или ESP32

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

Здесь я хочу рассказать, почему я предпочитаю использовать проводные решения на базе Atmel микроконтроллеров(серии ATmega).

Вот пример сегодня спаянных мной прототипов:

Мой двухканальный блок управления 2A 250V с RS-485 шиной на базе Atmega168
Мой двухканальный блок управления 2A 250V с RS-485 шиной на базе Atmega168

Но, сейчас подобные решения в большинстве случаев строятся на ESP8266. Если загуглить, найдем что-то подобное этому:

Фото из интернета
Фото из интернета

Посмотрим на функционал данных плат(без программной составляющей).

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

AliExpress предлагает блокировщик Wi-Fi всего-лишь за 2 тысячи рублей
AliExpress предлагает блокировщик Wi-Fi всего-лишь за 2 тысячи рублей

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

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

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

https://www.quarta-rad.ru/useful/emp/bytovoe-emi/
https://www.quarta-rad.ru/useful/emp/bytovoe-emi/
https://www.quarta-rad.ru/useful/emp/bytovoe-emi/
https://www.quarta-rad.ru/useful/emp/bytovoe-emi/

Вы готовы такие устройства ставить в своей спальне?

А еще блоки питания часто(после нескольких лет или даже месяцев непрерывной работы) выходят из строя. А в моем решении питание можно даже сделать резервным используя обычный 12В аккумулятор.

Представьте что у вас сотни таких устройств. А что там про плотность Wi-Fi устройств? Пара ссылок из Гугла:

https://www.tp-link.com/ru/business-networking/solution/high-density-environment/

Wi-Fi высокой плотности не существует

Мое устройство управляется и питается от шины(т.е. все устройства могут быть подключены к одному кабелю как елочная гирлянда) для которой применим обычный не дорогой UTP кабель(можно и экранированный):

-6

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

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

Теперь программная часть:

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

Большим плюсом в ESP я вижу возможность писать код на MicroPython и это действительно круто. https://micropython.org/download/?port=esp8266. Лично я написал несколько простых решений для ESP32.

Других преимуществ для себя в ESP я не вижу. Потому что:

- это обыкновенное управляемое двухканальное реле. Зачем Вам чуть-ли не суперкомпьютер в виде ESP? Какой функционал Вы туда хотите вложить, что Вам не достаточно 16КБ Flash памяти и 1KB оперативной памяти?

- лучшим языком программирования для 8 бит микроконтроллеров(с малым количеством ресурсов) всегда был и будет ассемблер. Ассемблер, он как BASIC, лучше всех подходит для изучения периферии микроконтроллера. У него минимальный набор команд - все что Вам нужно для изучения периферии МК - это знание этого минимального набора и умение строить алгоритмы. Главное отличие - у Си большое количество наработанных библиотек, которые Вам значительно упростят задачу. Ранее у Си был еще один плюс - в виде адекватного сообщества, но лично я уже давно таких сообществ не вижу. Но для ATmega тоже кое-что есть, например мой открытый проект операционной системы реального времени для AVR https://github.com/w5277c/core5277. В нем не так уж мало процедур и драйверов.

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

Когда-то давно я работал в компании интеграторе, мы автоматизировали работу различного оборудования в городе и в крупных компаниях с огромных количеством различных подстанций. И видел профессиональное оборудование и участвовал в создании программных решений. Тогда у меня и зародилась идея создать что-то свое, что не имело бы таких жирных минусов как решения например Phoenix Contact. Что могло бы быть также полезно и для простых DIY любителей.

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

У него много преимуществ, но в рамках этого текста я выделю только одно - в моем проекте интегратору не нужно ничего кодить и не нужно писать конфиги. Достаточно обычного(но к сожалению пока без дизайна) UI интерфейса:

http://5277.ru
http://5277.ru

Думаю на сегодня хватит.