Digitrode
цифровая электроника вычислительная техника встраиваемые системы
«Умная» розетка на основе Arduino своими руками
Данный проект позволит вам самостоятельно собрать «умную» розетку, управляемую с компьютера. Основу такой розетки составляют популярная плата Arduino Uno и твердотельное реле.
В первую очередь нужно собрать приведенную ниже схему твердотельного реле на основе оптопары MOC3041 и некоторыми дополнительными компонентами. MOC3041 представляет собой простой недорогой оптрон со светодиодом и фотодиодом. Затем подключите плату Arduino к разъему J1 собранного силового переключателя. Для управления реле мы задействуем линию ввода/вывода D12. Входные разъемы J2 будут представлять собой непосредственно розетку для подключения высокого напряжения 220 В переменного тока, а к разъемам J3 будет подключаться нагрузка, в данном случае лампа. Внимание: будьте предельно осторожны при работе с сетевым напряжением! При контакте с незащищенной кожей оно может вызвать непоправимые повреждения, ожоги или даже летальный случай!
Теперь подключите плату Arduino Uno к вашему компьютеру через порт USB, скопируйте нижеприведенный код в Arduino IDE и загрузите его в Arduino. Этот скетч довольно прост. Он считывает через последовательный порт символ в ASCII-кодировке и меняет логическое состояние линии D12/ При получении «1» линия D12 переходит в высокое логическое состояние (реле замыкается), при «2» в низкое (реле размыкается).
Плата Arduino Uno спроектирована таким образом, что у программного обеспечения имеется возможность сброса этой платы, когда она соединена с компьютером. Одна из линий аппаратного управления потоком данных (DTR) на ATmega8U2 подключена к линии сброса ATmega328 через конденсатор 100 нф. Когда на этой линии появляется низкий логический уровень, микросхема сбрасывается. Программное обеспечение использует эту функцию, чтобы вы могли программировать Arduino по одному нажатию кнопки в Arduino IDE. Но здесь есть некоторые неприятные для нас моменты — плата сбрасывается каждый раз, когда она подключается программно к компьютеру. К счастью, на Arduino Uno есть дорожка RESET-EN, перерезав которую можно отключить автоперезапуск. Чтобы снова включить его, достаточно просто запаять контактные площадки этой дорожки.
В качестве альтернативы аппаратному решению проблемы с автосбросом можно воспользоваться программными решениями. Например, установить терминал HTERM или попробовать гугловский монитор последовательной передачи данных Chrome Browser Serial Port Monitor.
Умная розетка с управлением со смартфона по Bluetooth
Умная розетка на Arduino, что может быть проще. Статья о проекте Arduino умной розетки с управлением со смартфона по Bluetooth. Управление реализовано с использованием сервиса RemoteXY. Две розетки, раздельно управляемые со смартфона, размещены на одной платформе со всей необходимой электроникой. Область применения умной розетки достаточно большая. Вы сможете удаленно включать и отключать электрические устройства. Так же данный проект может быть использован как пример для создания более сложных устройств управления электрическими устройствами.
Для реализации проекта мы использовали следующие комплектующие:
- Arduino UNO или совместимая плата.
- Релейный модуль 2 канала с питанием 5В.
- AC-DC миниатюрный блок питания 12В, 0.15A.
- Bluetooth модуль HC-05.
- Розетка 220В 2 шт. (внешняя установка)
- Вилка 220В с проводом.
- Контрактная площадка.
Все комплектующие мы разместили на платформе из плиты ДСП размером 155×135 мм. Крепление всех комплектующих к платформе выполнено при помощи шурупов и предварительно просверленных в платформе отверстий. Вариант размещения комплектующих вы можете посмотреть на рисунке. Плата Arduino размещена таким образом, что бы иметь легкий доступ к USB разъему для программирования.
На рисунке изображена схема соединения комплектующих. Модуль Bluetooth подсоединен к пинам 2 и 3 Arduino. Для управления реле использованы пины 4 и 5. Вся схема питается от сети 220В через блок питания — миниатюрный AC-DC преобразователь на напряжение 12В. Это напряжение подается на Arduino через пин Vin.
Все высоковольтные соединения выполнены алюминиевым проводом диаметром проводника 1.2 мм. Для соединения высоковольтных проводов использована контактная площадка. Будьте очень осторожны и внимательны при монтаже высоковольтных проводов!
Программное обеспечение
В онлайн редакторе RemoteXY создайте интерфейс. На интерфейсе разместите два больших выключателя. В свойствах выключателей для одного из них выберите свойство «Привязывать к пину» пин 4, для другого пин 5. Это позволит автоматически получить код по управлению пинами с этих выключателей. В настройках проекта выберите тип подключения модуля Bluetooth через SoftwareSerial.
Сформируйте исходный код проекта и загрузите его в Arduino. Исходный код приведен ниже.
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__SOFTWARESERIAL
#include
#include
/* настройки соединения */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
< 2,0,30,0,2,5,2,0,6,2
,88,29,1,79,78,0,79,70,70,0
,2,0,6,33,88,29,6,79,78,0
,79,70,70,0 >;
/* структура определяет все переменные вашего интерфейса управления */
struct <
/* input variable */
unsigned char switch_1; /* =1 если переключатель включен и =0 если отключен */
unsigned char switch_2; /* =1 если переключатель включен и =0 если отключен */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
#define PIN_SWITCH_1 4
#define PIN_SWITCH_2 5
void setup()
<
RemoteXY_Init ();
pinMode (PIN_SWITCH_1, OUTPUT);
pinMode (PIN_SWITCH_2, OUTPUT);
// TODO you setup code
void loop()
<
RemoteXY_Handler ();
digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);
digitalWrite(PIN_SWITCH_2, (RemoteXY.switch_2==0)?LOW:HIGH);
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
Теперь вы можете при помощи приложения RemoteXY для Android соединиться с вашим устройством и управлять розетками.
Умная Wi-Fi розетка на модуле ESP8266
Wi-Fi розетки в настоящее время приобретают все большую популярность по мере того как системы «умного дома» становятся все более востребованными в современном мире. Подобные розетки выпускаются различными производителями (в основном китайскими, конечно же), но их цена в ряде случаев не такая «толерантная» как хотелось бы. К тому же никто не отменял чувство удовольствия от того, когда сделаешь что-либо полезное своими руками.
Поэтому в данной статье мы рассмотрим создание собственной умной Wi-Fi розетки на основе модуле ESP8266. Управлять данной розеткой можно будет со своего смартфона. Нашу Wi-Fi розетку можно будет включать в обычную розетку, а к другому концу нашей розетки можно будет подключать нагрузку переменного тока.
Автор данного проекта (ссылка на оригинал приведена в конце статьи) устал от того, чтобы ему постоянно приходится перезапускать свой Wi-Fi роутер из-за проблем со связью (а живет он в Индии). Поэтому изначально данный проект Wi-Fi розетки рассматривался как устройство, позволяющее ему дистанционно, со своего смартфона, отключать и снова подавать питание на свой роутер, таким образом, перезапуская его.
Вы скажете каким образом будет работать Wi-Fi розетка если у роутера проблемы со связью? Здесь дело в том, что модуль ESP8266 может самостоятельно работать в качестве точки доступа, то есть выполнять функции роутера. Управлять его работой мы будем с помощью специальной веб-страницы, с которой мы сможем включать/выключать нашу Wi-Fi розетку.
Также на нашем сайте вы можете посмотреть другие рассмотренные проекты автоматизации дома.
Необходимые компоненты
- Модуль ESP8266 (купить на AliExpress).
- Link AC to DC Converter (3.3V) (конвертер 220 Вольт в постоянное напряжение 3.3V (купить на AliExpress).
- Реле на 3V.
- NPN транзистор BC547 (купить на AliExpress).
- FTDI плата (купить на AliExpress).
- Соединительные провода.
В данном проекте его автор для программирования модуля ESP8266 использовал специальный Arduino Wi-Fi Shield, который он ранее собрал и схему для его сборки можно посмотреть по следующему адресу. Но если у вас нет такого шилда, то для программирования модуля ESP8266 можно применить стандартный подход с помощью Arduino IDE.
Схема проекта
Схема Wi-Fi розетки на основе модуля ESP8266 представлена на следующем рисунке.
Питание наша схема получает от сети переменного тока через конвертер 220 Вольта в 3,3 Вольта. Учтите, что на контактах GPIO0 и GPIO2 модуля необходимо поддерживать напряжение высокого уровня (while) во время загрузки модуля. Иначе модуль ESP перейдет в режим программирования и тогда код нашей программы работать не будет. Поэтому мы использовали резистор сопротивлением 10 кОм (можно использовать резистор в диапазоне от 3,3 кОм до 10 кОм) чтобы подать на эти контакты напряжение высокого уровня. Для ограничения тока через базу транзистора используется резистор 1 кОм.
Изготовление корпуса для проекта
Чтобы сделать проект Wi-Fi розетки на основе модуля ESP8266 максимально компактным его автор решил напечатать его корпус на 3D принтере. Он использовал дизайн корпуса, представленный на следующем рисунке.
STL файлы для печати на 3D принтере данного корпуса можно скачать по следующей ссылке с thingiverse.
После печати корпуса автор закрепил в нем электронную часть проекта с помощью болтов как показано на следующем рисунке.
Внешний вид собранной конструкции проекта показан на следующем рисунке.
После сборки автор проекта подключил к нему свой роутер, но вы можете подключить к нему любую другую нагрузку переменного тока (лишь бы по мощности реле выдержало).
Объяснение программы для модуля ESP8266
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Первым делом при написании программы подключим используемые библиотеки и установим DNS сервер.
Управляем розеткой по SMS
Хочу представить вам очень простой способ удаленного управления электропитанием.
Мы будем использовать готовые радиоуправляемые розетки, поэтому нам не потребуется ничего паять. Это очень здорово, потому что 220 В (начинающим) лучше не трогать.
P.S. вчера был похожий топик, но использовался Raspberry Pi, управляемый через чат. Наш вариант несколько попроще и универсальнее, потому что ему не нужен Интернет и смартфон, а вместо Raspberry будет обычное Arduino.
Нам понадобится
Железо
- Arduino UNO или аналог. В принципе можно и Mega.
- GSM/GPRS Shield. Подойдет любой. Я использовал шилд от китайского Seeedstudio, т.к. его проще всего купить из России.
- Передатчик 443MHz — на AliExpress пара приемник-передатчик стоит чуть ли не 20 руб. Мой называется FS1000A/XY-FST, где FS1000A — это передатчик.
- Управляемая розетка(и) 443MHz. Я брал комплект AB440S из трех розеток-переходников с пультом в немецком интернет-магазине. Сейчас, кажется, можно найти что-то подобное и у нас — видел недавно в Чип-и-Дип.
- Библиотека для управления GSM-шилдом. Скачайте код с сайта производителя. Для моего шилда такого кода не было, поэтому я скачал универсальную библиотеку для SIM900 GSMSHIELD
- Библиотека rc-switch для управления розетками.
Принцип работы
В диапазоне 433MHz могут работать без лицензии маломощные рации и устройства дистанционного управления. В продаже можно найти готовые диммеры, выключатели, патроны и розетки, управляемые пультом по радио в этом частотном диапазоне. Для наших целей лучше всего подходят «промежуточные» розетки-переходники: в обычную розетку вставляется радиоуправляемая, а уже в нее само устройство.
Чтобы такие розетки можно было различать между собой у них есть адрес, задаваемый DIP- или поворотными переключателями. За счет этого можно управлять несколькими розетками независимо. Или наоборот — установить им одинаковый адрес, чтобы они включались и выключались одновременно.
Наша схема элементарна: Ардуино получает SMS с командой, затем с помощью радиомодуля посылает сигнал «включить» или «выключить» на розетки. SMS-ки будут вида A1B0C0, где A, B, C… — имена розеток, 0 — выкл., 1 — вкл.
Собираем устройство
- Вставляем симкарту в GSM-шилд, а шилд в ардуину.
- Подключаем ноги передатчика: GND→GND, VCC→5V, DATA→в один из пинов, например в 12.
- Также я припаял проводок 15 см к ANT в углу платки передатчика. Но мне кажется, что это опционально.
Проверяем GSM-модуль
Если вы еще не работали с GSM-шилдом до этого, я рекомендую сначала залить тестовый код (взят отсюда)и проверить его работу.
Код все данные из Serial передает в SoftwareSerial и обратно, таким образом, подключив шилд к SoftwareSerial, мы можем отправлять команды модему через Serial Monitor в Arduino IDE.
Заливаем код в Ардуино, открываем Serial monitor. Вводим команду AT — ответ должен быть OK. Если ответа нет, значит что-то не так. Возможно, нужно поменять скорость передачи?
Дальше можно проверить, что мы зарегистрировались в сети:
AT+COPS?
+COPS: 0,0,»MTS-RUS»
OK
Я рекомендую понизить скорость UART-модема. Не знаю точно насчет SMS, но GPRS точно работает надежнее на низких скоростях — у Ардуинки маленький буфер и часть информации может теряться. Установим скорость 2400 бод.
AT+IPR=2400
OK
Если вы хотите еще поиграться с модемом, то рекомендую использовать готовый java-апплет для браузера. Ну и можно почитать мануал по командам.
Смотрим/меняем адреса розеток
У розеток есть аппаратный адрес из двух частей. Первые 5 бит — одинаковые у всего комплекта и совпадают с адресом пульта. Последние 5 бит — индивидуальные. Адрес можно поменять, отвернув крышечку. На других моделях задание адреса может отличаться — см. сайт rc-switch.
Если вы используете не GSMSHIELD, а какую-то другую библиотеку, то код разумеется будет отличаться, но принцип будет один и тот же. Через определенные интервалы времени мы проверяем, нет ли у нас непрочитанных SMS, парсим их, и если пришла валидная команда с авторизованного номера, то посылаем радиосигнал функциями mySwitch.switchOff или mySwitch.switchOn , передавая им адрес розетки.
Прим. в моем случае для шилда от Seeedstudio нужно было залезть в GSM.cpp и поменять заданные пины на 7 и 8.GitHub.
Проблемы?
Если розетки ни в какую не хотят переключаться, можно попробовать принять сигнал от родного пульта на приемник. В rc-switch есть пример кода.