Умная розетка на ардуино своими руками

Обновлено: 04.07.2024

SMS розетка (аналог SenseIt GS1\ МегаФон розетка) своими руками на Arduino

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

Возниклла мысль создать аналог смс розетки от мегафона. Подробнее об оригинале по ссылкам:

или целая россыпь обзоров и отзывов:

Так как в нём используется модуль не SIM900 то сразу отказываемся от библиотеки SIM900, будем использовать SoftwareSerial (програмный серийный порт). После продолжительных поисков на этом форуме и просмотра его веток, я не нашёл похожей темы и\или устройства. Глобальный поиск привёл меня к страничке с описанием точно такого устройства как мне нужно, на радастях был переделан скетч (изменены номера портов) и залит. Увы устройство "с коробки" не заработало и мне пришлось брать учебник и садится по строчно разбирать код, вот тут то и возникли проблемы, я не понял всю логику работы этого скетча

Далее по коду вопросы:

1. Почему начинается и заканчивается строками " / / 5.03 . 2013 12.48 " и " / string.h> / softwareserial.h> "

2. Зачем нужны функции " powerUp " " powerDown",


Для программирования микроконтроллера ESP8266 вам понадобятся:

  • адаптер FTDI Usb 3,3 В
  • повода-коннекторы

Шаг 2: Предупреждение!



Высокое напряжение опасно для здоровья и жизни!! Пожалуйста, будьте осторожны. Если вы не знакомы с техникой безопасности при работе с высоким напряжением, обязательно ознакомьтесь с ней. Я вас предупредил.

Шаг 3: Делаем блок питания









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

Я заменил провод от входа на чуть более длинный провод. Еще я убрал коннектор USB, потому что это соединение занимает слишком много места. После этого я собрал все обратно в корпус.

Шаг 4: Проводка для высокого напряжения





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

Шаг 5: Подключаем микропроцессор и реле




  • Ground
  • RX
  • TX
  • GPIO0 (замыкается на землю при включении питания, чтобы перевести контроллер в режим программирования)
  • Reset (перезапуск, опционально)

На фото видно, что я спаял всю проводку вокруг модуля реле, вместо того, чтобы установить реле на макетную плату. Линейный регулятор AMS1117 и микропроцессор ESP8266 я установил вокруг модуля реле. Провода достаточно жесткие, чтобы удержать модуль вай-фай на месте. Напряжение 3В от линейного регулятора выводится на средний штырь И на теплоотвод, так удобнее фиксировать модуль вай-фая на месте.

Шаг 6: Программирование




Что касается программного обеспечения, выбор у вас обширен. Простейшая программа, что я нашел – Blynk. Скачайте бесплатное приложение для Android или iPhone, зарегистрируйтесь и получите аутентификатор.

В программе Arduino IDE откройте Менеджер библиотек (Скетч> Включить библиотеку> Управление библиотеками) чтобы установить библиотеку Blynk. Файл> Образцы> Blynk> Платы и шилды> ESP8266_StandAlone

Пропишите в скетче ваш аутентификатор, SSID (имя) вашего домашнего вай-фая и пароль.
Заземлите GPIO0 (можно временно припаять провод на землю, или с помощью переключателя), и включите питание, чтобы перевести контроллер в режим программирования. Как только загрузка будет завершена, можно отсоединить USB-шнур.
В приложение Blynk настройте кнопку и на этом ваша работа над умной розеткой завершена!

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Сделал устройство включающее и выключающее 220 вольт переменного тока. Управление устройством осуществляется с компьютера через bluetooth.


Ток в розетке смертельно опасен. Без знания и соблюдения техники безопасности в розетку лезть не надо!

Сейчас можно купить готовое устройство. Например, Broadlink.

Есть решения дешевле. Например, Sonoff. Но здесь уже необходимы знания и опыт работы с переменным током 220 вольт.

Чем самодельное устройство лучше? Его можно сделать на любой ток, любую мощность. И оно будет работать именно так как нужно. Алгоритм, в любой момент, можно подкорректировать.

У меня включение и выключение 220 вольт осуществляется твердотельным реле


Для этих реле есть специальные радиаторы



Без радиаторов твердотельные реле сильно греются, даже при токе в несколько ампер.

Реле управляется ардуино нано


Для ардуино нано есть удобный сенсор шильд

И bluetooth модуль


Соединяется всё согласно приведенным ниже инструкциям.

Выводы 1 и 2 твердотельного реле включаются в разрыв цепи переменного тока 220 вольт. Проще говоря, один из проводов идущий к нагрузке разрезается и получившиеся выводы подключаются к разъемам 1 и 2 твердотельного реле.

Arduino Nano --- SSR
GND --- 4
D13 --- 3

Arduino Nano --- Bluetooth Module
VCC --- VCC
GND --- GND
D0 --- TXD
D1 --- RXD

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

Для питания ардуино нано от сети 220 вольт переменного тока нужна специальная платка


Или можно взять обычную пятивольтовую зарядку


Программа для ардуино нано (C/C++)


Программа для компьютера (python)


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

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

Управлять устройством можно через монитор порта Arduino IDE. Только это совсем не удобно. Поэтому и была написана специальная программа для компьютера.

После запуска программа пытается открыть порт COM3. Если ничего не получается, то работа программы завершается. Если всё получается, то появляется запрос на завершение работы программы. Нажав [Enter] продолжим работу программы. Появится запрос времени работы нагрузки в минутах. Можно ввести целое число от 0 до 240. Затем нужно нажать [Enter]. И появится запрос времени в течении которого нагрузка будет отключена. Здесь всё аналогично предшествующему пункту.

Программа передает введенные данные устройству. Полученный от устройства ответ выводится на экран. Звездочка показывает текущее состояние устройства.

Если на все запросы жмакать только [Enter], то будут показаны ранее введенные параметры и текущее состояние.

Если на запрос on ввести 0, а на запрос off ввести число от 1 до 240, то устройство отключит питание на нагрузке. Ток через реле идти не будет. Это состояние будет сохранятся до введения новых команд.

Если на запрос on ввести число от 1 до 240, а на запрос off ввести 0, то устройство включит питание на нагрузке. Ток через реле будет идти. Это состояние также будет сохранятся до введения новых команд.

Если на запрос on и на запрос off ввести 0, то устройство будет зафиксировано в текущем состоянии. Я пока не решил баг это или фича, поэтому ничего и не делаю с этим.

Программа консольная, но вполне удобная. В будущем, возможно, сделаю веб-интерфейс.

Умная розетка для утюга

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

Розетка на уровне 30 см от пола

Розетка на уровне 30 см от пола

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

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

Гладильная доска с утюгом

Гладильная доска с утюгом

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

Умная розетка для утюга

Умная розетка для утюга

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

Сигнальный светодиод на розетке гладильной доски

Сигнальный светодиод на розетке гладильной доски

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

Умная розетка - фронтальный вид

Умная розетка — фронтальный вид

Процесс работы умной розетки продемонстрирован в этом видео:


Рассмотрим процесс создания дешевой умной розетки на esp8266 с управлением по MQTT. За основу взять модуль ESP-01S (покупался на aliexpress) и модуль с двумя реле с опторазвязкой.

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

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

Подключаем все элементы устройства следующим образом (как показано на рисунке).


Управляющие входы блока реле нужно соединить между собой и подключить на вход GPIO0 контроллера ESP-01S. Также нужно подключить контакты VCC и GND. На клеммы реле нужно подключить вилку 220в. и контакты колодки (используем нормально открытые контакты).

За логику контроллера будет отвечать прошивка ESPEasy. Текущая стабильная версия R120. Как залить прошивку подробно описано тут.

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


Протокол, который будет использоваться для управления розеткой называется OpenHAB MQTT.
Указываем IP-адрес брокера, порт, пользователя и пароль, если требуется авторизация.


В нашем случае используется gpio0, поэтому на закладке Devices создаём новое устройство Switch input — Switch, даём имя socket1, ставим галку PullUP, назначаем gpio , Switch Button Type выбираем Push Button Active LOW, Value называем state.
Имя устройства и имя параметра (value) потребуется для работы скриптов.

Далее нужно создать правило, которое определит реакцию на кнопку и публикацию в MQTT состояния gpio0.

Пояснения к скриптам: сначала проверяется состояние кнопки по имени socket1 и свойству state, когда кнопка нажата (активный НОЛЬ то есть LOW уровень) gpio0 выставляется в лог.1 и публикуется состояние в соответствующем топике, иначе gpio0 выставляется в лог.0 и так же публикуется состояние.
Во второй части скрипта прослушивается соответствующий топик, при публикации в нём 1 gpio0 выставляется в лог.1, при публикации 0 gpio0 выставляется в лог.0.

В итоге все работает как задумывалось при бюджете не более 300 рублей. Мощность подключаемых к розетке приборов не должна превышать 10А. Это обусловлено максимально допустимой мощностью реле.

Читайте также: