Андрей Смирнов
Время чтения: ~23 мин.
Просмотров: 139

Wemos D1 R2 и mini на основе esp8266

Платы WeMos на основе esp8266 давно пользуются большой популярностью у мейкеров. Они совместимы с большинством датчиков ардуино и позволяют писать скетчи в Arduino IDE. Благодаря WeMos вы получаете возможность работать с WiFi, организуя сеть устройств или взаимодействуя с модулем через интернет. В этой статье мы рассмотрим варианты подключения плат Wemos D1 v2, Wemos D1 mini к Arduino IDE, распиновку плат и примеры скетчей для работы с WiFi.

Описание WeMos D1 R2

WeMos-1.jpgПлата WeMos D1, которая производится в Китае, выполнена на основе WiFi модуля ESP8266 ESP-12. На модуле имеется разъем под внешнюю WiFi антенну – благодаря этому можно расширить площадь покрытия сетью. Программирование платы осуществляется с помощью стандартной среды разработки Arduino IDE. Контроллер включает в себя процессор, периферию, оперативную память и устройства ввода/вывода. Наиболее часто микроконтроллеры применяются в компьютерной технике, бытовых приборах и других электронных устройствах. WeMos отличается дешевой стоимостью и простотой подключения и программирования.

Технические характеристики WeMos:

  • Входное напряжение 3,3В;
  • 11 цифровых выходов;
  • Микро USB выход;
  • 4 Мб флэш-памяти;
  • Наличие WiFi модуля;
  • Частота контроллера 80МГц/160МГц;
  • Рабочие температуры от -40С до 125С.

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

Распиновка модуля WeMos D1

  • TX;
  • RX;
  • GND земля;
  • 5В;
  • 3v3;
  • RST – reset, кнопка сброса;
  • D0 – D8 –порты общего назначения GPIO. Все пины, кроме D0, поддерживают прерывание, ШИМ, I2C.

WeMos-2.jpg

Отличие WeMos D1 R1 от R2

На данный момент существует два поколения платы D1. Наиболее популярной версией является R2. Стоимость R1 немного ниже, но старые платы практически исчезли из интернет-магазинов. Отличие первого от второго поколения не очень большие, и касаются в первую очередь распиновки. При прочих равных условиях рекомендуется использовать WeMos второго поколения R2.

Распиновка D1 R1:

2017-12-30_13-45-11.png

Распиновка D1 R2:

WeMos Mini

По сравнению с Wemos D1 микроконтроллер WeMos Mini имеет меньшие габариты. Плата обладает размерами в ширину 2,5 см, а в длину 3,5 см, в то время как полная версия Wemos D1 идентична Ардуино UNO.

Плата базируется на 32-разрядном микроконтроллере ESP8266 и обладает WiFi модулем. Объем флэш-памяти устройства достигает 4 МБ. В усовершенствованной модели WEMOS D1 mini объем памяти равен 16 МБ, имеется SMD-антенна и выход для присоединения внешней антенны.  Размеры и расположение контактов у обоих видов плат одинаковы.

Распиновка WeMos D1 mini

Схема платы и расположение выходов изображены на рисунке.

Технические характеристики WeMos Mini:

  • 11 цифровых контактов;
  • Наибольшее входное напряжение 3,2В;
  • 4 МБ памяти;
  • WiFi модуль;
  • Коннектор для внешней антенны.

Преимуществом платы является возможность сохранения соединения при низком потреблении энергии 1мА.  Благодаря этому можно делать различные приборы, которые будут работать от батареек.

Шилды для WeMos Mini

Существует большое количество шилдов, которые могут быть подключены WeMos D1 mini:

  • WeMos Dual Base и WeMos Tripler Base – удваивает и утраивает основу установки шилда;
  • WeMos DS18B20 – шилд с цифровым датчиком;
  • WeMos Battery – шилд для дополнительного питания от батарейки;
  • WeMos Relay – шилд, управлящий реле;
  • WeMos OLED – шилд, оснащенный экраном OLED;
  • WeMos 1-Button – модуль, оснащенный тактовой кнопкой;
  • WeMos Micro SD-Card – шилд для добавления карты памяти микро SD;
  • WeMos Motor – шилд для двигателей до 15В;
  • WeMos DHT D4, WeMos DHT I2C, WeMos SHT30 – модули, реализующие измерение давления, температуры и влажности (первый подключается через шину onewire, второй – через I2C);
  • WeMos WS2812B RGB – шилд, реализующий управление светодиодом;
  • WeMos Matrix LED – шилд для индикации, базирующийся на матрице светодиодов;
  • WeMos Buzzer – шилд для звукового излучателя;
  • WeMos ProtoBoard – макетная плата;
  • WeMos DC Power – шилд питания.

Подключение Wemos к Arduino IDE

Инструкция по настройке IDE для работы с WeMos

Чтобы начать работать с Wemos D1, нужно установить драйвер CH340 и Arduino IDE. Найти драйвер можно на официальной странице  https://www.wemos.cc/downloads.

Чтобы начать работу, нужно выбрать Файл – Настройки, ввести в строку «дополнительные ссылки для менеджера плат» ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать ОК.

Затем в Инструменты – Плата – менеджер плат найти esp8266 by ESP8266 Community, установить и закрыть окно.

В меню Инструменты будет добавлен микроконтроллер WeMos D1.

Перед тем, как загрузить программу, нужно установить режимы работы микроконтроллера – загрузка кода (Upload Using), задать нужную частоту (CPU frequency), выбрать размер флеш памяти (Flash Size), задать скорость передачи (Upload Speed) и выбрать нужный порт.

Для подключения версии WeMos Mini выполняются такие же шаги, как и для WeMos D1.

Можно дополнительно скачать и установить примеры кодов для микроконтроллера. Для этого скачанный файл с кодами нужно распаковать по адресу arduinoexamples. Нужно перезагрузить Arduino IDE, и в Файл – Примеры появятся новые коды, которые можно использовать в своих проектах. Чтобы проверить, правильно ли все подключено, можно запустить скетч для мигания светодиодом.

Прошивка WeMos, примеры скетчей

Мигание светодиодами

Давайте сначала рассмотрим скетч, благодаря которому встроенный в плату светодиод будет мигать при нажатии кнопки. Распиновка плат WeMos отличается от Ардуино, поэтому важно проверить в коде константы с номерами пинов. Для устройств WeMos контакт, к которому подключается, задается не просто номером, а с указанием, цифровой пин(D1) или нет(1). Для мигания используется скетч Blink.ino, который можно установить с архива https://github.com/wemos/D1_mini_Examples/archive/master.zip.

Сам скетч выглядит следующим образом:

    int inputPin = D4; // подключение кнопки в контактам D4 и GND. Можно выбрать любой пин на плате    int val = 1; // включение/выключение хранения значения    void setup() {    pinMode(BUILTIN_LED, OUTPUT); // подключение светодиода, перевод в режим OUTPUT    pinMode(inputPin, INPUT); // включение пина для входных данных    }    void loop() {    val = digitalRead(inputPin); // чтение входных данных    digitalWrite(BUILTIN_LED, val); // включение/выключение светодиода по нажатию кнопки    }    

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

Для автоматического мигания светодиода интервалом в две секунды используется следующий код:

    void setup() {    pinMode(3, OUTPUT); // инициализация контакта GPIO3 с подключенным светодиодом    }    void loop() {    digitalWrite(2, HIGH);   // светодиод загорается    delay(2000);              // ожидание в течение двух секунд    digitalWrite(2, LOW);    // светодиод гаснет    delay(2000);              // ожидание в течение двух секунд    }    

WeMos и подключение к WiFi для передачи данных на удаленный сервер

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

Фрагменты скетча:

    const char* ssid = "****"; //требуется записать имя точки доступа, к которой будет произведено подключение    const char* password = "****"; //введение пароля точки доступа, который должен содержать не менее восьми символов    WiFiServer server(80);  //создание сервера на 80 порту    WiFi.begin(ssid, password); // подключение к заданной выше точке доступа, ее имя и пароль    pinMode(3, OUTPUT);   //присоединение к пину GPIO3 и земле    while (WiFi.status() != WL_CONNECTED) //показывает статус подключения, WL_CONNECTED указывает на установку соединения;    Serial.println(WiFi.localIP()); //получение IP адреса. Его нужно ввести в строку адреса в браузере для получения доступа к управлению устройством    Serial.println(WiFi.macAddress()); //получение MAC адреса    Serial.println(WiFi.SSID()); //получение имени сети, к которой подключился WeMos    WiFiClient client = server.available(); //проверяет, подключен ли клиент    Serial.println("client");    while(!client.available()) //ожидание отправки данных от клиента    String req = client.readStringUntil('r');    Serial.println(req);    client.flush(); //Чтение первой строки запроса    

Создание точки доступа на WeMos

В данном примере модуль WeMos будет сконфигурирован в качестве самостоятельной точки доступа.

Создание точки доступа выполняется по следующему алгоритму:

  • Подключение модуля;
  • Запуск среды разработки Arduino IDE;
  • Выбор порта, частоты, размера флэш-памяти;
  • Запись с коде программы имени сети и создание пароля;
  • Компиляция и загрузка скетча;
  • Установить скорость 115200;
  • Должно произойти подключение к сети, будет получен IP и выведен в терминал;
  • Для проверки можно ввести в адресной строке в браузере IP/gpio/1, если все работает корректно, должен загореться светодиод на плате.

Фрагменты программы:

    const char *ssid = "****"; //в этой строке нужно задать имя создаваемой сети    const char *password = ""; //указывается пароль сети, если не указывать пароль, то сеть будет открыта. При создании пароля важно помнить, что он должен состоять не менее чем из восьми знаков    WiFiServer server(80);    WiFi.softAP(ssid, password); //создание точки доступа с именем и паролем, которые указывались выше. Если пароль не указывался, softAP(ssid, password) меняется на softAP(ssid)    IPAddress myIP = WiFi.softAPIP(); //получение адреса IP    Serial.print("AP IP address: "); //вывод полученного адреса в терминал    server.begin(); // запуск сервера    

Заключение

Платы на базе esp8266 – лучший способ организовать работу с сетью в ваших DIY проектах. Вы можете использовать большое количество разнообразных модулей и готовых плат, но WeMos – один из самых удобных способов. Плата похожа на Arduino Uno, достаточно легко подключается к датчикам и прошивается через Arduino IDE.

Уменьшенный аналог WeMos mini вообще можно назвать уникальным устройством, т.к. в очень компактном корпусе вы получаете не только почти все удобства и возможности Arduino, но и полноценный WiFi модуль. Можно даже обойтись без монтажа – просто вставляя различные модули расширения (шилды) WeMos как в матрешке, одну в другу. А недорогая цена делает эту плату абсолютным фаворитом для тех, кто делает умные устройства с возможностью выхода в интернет.

Первое включение:

Платы WEMOS D1 mini / WEMOS D1 mini Pro имеют много общего: они оснащены микроконтроллером ESP8266 с интерфейсом Wi-Fi, имеют одинаковое расположение и назначение выводов, подключаются к компьютеру через WiFi или USB порт. К основным отличиям этих плат можно отнести: разный объем flash памяти (4 Мбайт / 16 Мбайт), разные типы антенн (PCB / SMD) и разные чипы USB-UART преобразователей (CH340G / CP2104), так же у первой платы нет разъема IPX для подключения внешней антенны.

  • При первом подключении платы WEMOS D1 mini к компьютеру через USB порт, потребуется установить драйвер для чипа СH340G.
  • При первом подключении платы WEMOS D1 mini Pro к компьютеру через USB порт, драйвер для чипа CP2104 скорее всего не понадобится, но его можно скачать с сайта Silicon Labs.

О том как загружать скетч из «Arduino IDE» в платы WEMOS D1 mini / WEMOS D1 mini Pro по WiFi (без подключения их к USB порту компьютера), рассказано в конце данной статьи.

О том как установить «Arduino IDE» можно прочитать в статье Wiki — Установка среды разработки Arduino IDE для Windows.

Настройка Arduino IDE:

Писать скетчи под микроконтроллер ESP8266 можно в среде разработки «Arduino IDE», но перед загрузкой скетча нужно выбрать тип используемой платы из списка меню «Инструменты» > «Плата», а там по умолчанию нет платы WEMOS D1 mini / WEMOS D1 mini Pro. Вся настройка сводится к тому, что бы в этом списке меню появились платы WEMOS D1 mini / WEMOS D1 mini Pro.

В среде «Arduino IDE» имеется «Менеджер плат» который поможет быстро добавить интересующие платы в список. Для этого нужно выполнить следующие действия:

Откройте «Arduino IDE» и выберите пункт меню: «Файл» > «Настройки».
В открывшемся окне заполните поле «Дополнительные ссылки для Менеджера плат» введя в него строку:http://arduino.esp8266.com/stable/package_esp8266com_index.jsonИ нажмите на кнопку «Ok».Если вы хотите указать конкретную версию сборки, введите её вместо слова «stable» предыдущей ссылки:http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.jsonВ поле допускается вводить несколько ссылок разделённых запятыми.
Запустите «Менеджер плат» выбрав пункт меню «Инструменты» > «Плата» > «Менеджер плат».
В открывшемся окне «Менеджер плат» выберите пункт «esp8266 by ESP8266 Community» из списка сборок и нажмите на кнопку «Установка» (при желании можно выбрать версию устанавливаемой сборки).

На этом настройка «Arduino IDE» завершена! Теперь в списке плат есть раздел «WeMos D1 R2 & mini» который и нужно выбрать при загрузке скетчей в платы WEMOS D1 mini / WEMOS D1 mini Pro.

Первая программа:

Самая первая программа для любой платы под управлением микроконтроллера — это «HelloWorld» (вывод надписи) или «Blink» (мигание светодиодом). Данная статья не будет исключением, загрузим скетч для мигания светодиодом.

Для работы с платами WEMOS D1 mini / WEMOS D1 mini Pro нужно выбрать пункт меню «Инструменты» > «Плата» > «WeMos D1 R2 & mini».
Осталось загрузить скетч и проверить его работу. На рисунке загружается простой скетч для мигания светодиодом, установленным на плате и подключённым катодом к выводу D4.При написании скетчей, обратите внимание на то что константы имён выводов D0 … D8 хранят нумерацию выводов JPIO микроконтроллера, а не нумерацию выводов платы, так например:digitalWrite(D5, HIGH); // установит «1» на выводе платы D5 (он же вывод JPIO-14 микроконтроллера).digitalWrite(5, HIGH); // установит «1» на выводе платы D1 (он же вывод JPIO-5 микроконтроллера).
Предыдущий скетч можно не писать вручную, а загрузить из примеров, большое количество которых стало доступно в меню «Файл» > «Примеры» > «Примеры для WeMos D1 R2 & mini», после выбора платы «WeMos D1 R2 & mini».В примере «Файл» > «Примеры» > «ESP8266» > «Blink» светодиод включается на 1 секунду через паузу в 2 секунды, а вывод к которому подключён светодиод указывается не константой D4, а константой LED_BUILTIN.Обратите внимание на то, что светодиод включается подачей логического «0».

На плате WEMOS D1 mini Pro установлена flash память на 16 Мбайт, но на момент написания данной статьи в «Arduino IDE» поддерживаются только 4 Мбайта flash памяти. Микроконтроллер работает на тактовой частоте 80 МГц, он может работать на частоте 160 МГц, но такой режим работы не гарантирован производителем. Скорость загрузки скетча 921’600 бит/сек является максимальной из предложенных, её лучше оставить без изменений, так как при каждой загрузке скетча, помимо Вашей программы в микроконтроллер загружаются дополнительные процессы для его работы и уменьшение скорости загрузки скетча увеличит время его загрузки.

Загрузка скетчей по WiFi:

Для загрузки скетчей в платы WEMOS D1 mini / WEMOS D1 mini Pro по WiFi, в них должен быть загружен скетч «BasicOTA» (Basic Over The Air — основной по воздуху). А уже к этому скетчу Вы можете добавлять свой код. Это значит что в коде loop() Вашей программы, обязательно должна присутствовать строка ArduinoOTA.handle(), а в коде setip() должны присутствовать функции инициализации и настройки работы с WiFi и OTA.

Откройте скетч «BasicOTA» из примеров, выбрав пункт меню «Файл» > «Примеры» > «ArduinoOTA» > «BasicOTA».
Загрузите скетч «BasicOTA» в плату WEMOS D1 mini / WEMOS D1 mini Pro по Теперь, если плата подключилась к Вашей WiFi сети, то в пункте меню «Инструменты» > «Порт», к списку «Последовательные порты» должен добавиться список «Сетевые порты».Если сетевые порты не появились, закройте и откройте окно «Arduino IDE», при работающей плате «MeMos…».
Выберите сетевой порт для загрузки скетча из меню «Инструменты» > «Порт» > «esp8266-ID at IP» (вместо ID и IP будут указаны ID чипа и присвоенный ему IP-адрес).
Если у Вас на компьютере ранее была установлена программа «Python» (язык программирования) версии 2.7.X и папка этой программы указана в списке путей каталогов исполняемых файлов. То скетч загрузится без ошибок.
Если у Вас нет программы «Python» версии 2.7.X То скетч выдаст ошибку «Cannot run program «python.exe»: CreateProcess error=2, Не удаётся найти указанный файл».Значит для загрузки скетчей в плату WEMOS D1 mini / WEMOS D1 mini Pro по WiFi, Вам сначала придётся установить программу «Python» версии 2.7.X (о том как это сделать написано в следующей главе данной статьи).После установки программы «Python» можно приступать к загрузке скетчей по WiFi.

Теперь, даже если плата WEMOS D1 mini / WEMOS D1 mini Pro находится в труднодоступном месте, это не станет помехой для обновления скетчей.

Установка программы Python 2.7.X:

Данную программу нужно установить т.к., на момент написания данной статьи, «Arduino IDE» обращается к её ресурсам при загрузке скетчей по WiFi. Возможно что в следующих версиях «Arduino IDE» или сборки «esp8266 by ESP8266 Community», необходимые команды будут интегрированы и установка «Python» не понадобится.

Перейдите на сайт www.python.org и скачайте дистрибутив программы «Python» версии 2.7.X нажав на кнопку «Download Python 2.7.X».Запустите скаченный дистрибутив и следуйте инструкциям.
На шаге выбора устанавливаемых компонентов программы, разрешите прописать путь к папке с файлом python.exe в список путей каталогов исполняемых файлов, выбрав пункт «Will be installed on local hard drive».
Продолжите установку.После установки «Python», перед загрузкой скетчей из «Arduino IDE» по WiFi, нужно закрыть все окна «Arduino IDE» (если они были открыты).При первой загрузке скетча по WiFi возможно появление окна «Брандмауэра Windows» (определившего попытку «Python» войти в сеть), в котором нужно нажать на кнопку «Разрешить доступ».

Если у Вас не появляются сетевые порты после загрузки скетча «BasicOTA», попробуйте выполнить следующие действия:

  • Откройте монитор последовательного порта на скорости указанной в скетче (если Вы её не меняли, то 115000 бод). В мониторе должна появиться строка «IP address: » и адрес присвоенный плате. Если эта строка не появляется, или появляются строки «Connection Failed! Rebooting…», значит плата не может подключиться к вашей сети WiFi, проверьте указанные в скетче имя сети (константа «ssid») и пароль (константа «password»), а так же настройки роутера.
  • Если плата подключилась к WiFi и получила IP-адрес. Откройте командную строку («Пуск» > «Служебные — Windows» > «Командная строка») и выполните команду «ping адрес», указав полученный платой IP-адрес. Если запросы не проходят, то проверьте настройки своей сети.
  • Если плата подключилась к WiFi, получила IP-адрес и команда ping проходит, то закройте и откройте окно Arduino IDE не отключая питание платы.
  • В некоторых случаях помогает отключение VPN и антивирусных программ.
  • Tutorial

Привет, Хабр! Цель этой статьи(цикла) хабраэффект вводный рассказ о моей системе домашней автоматики, конечно я не придумал и создал всё с нуля, а только лишь собрал технологии и проекты которые посчитал наиболее подходящими для этой цели и добавил немного от себя. Уровень любительский но в результате всё работает, люди пользуются и за мной с дубиной не бегают. Делал всё сам. Конструктивная критика приветствуется, будет интересно узнать любое мнение. Система включает в себя оборудование, и набор программ: непосредственно система автоматики для связи оборудования и визуализации, связь и телеметрия для удаленного мониторинга и обновления, голосовой ассистент от Яндекса. Всё (почти всё) открыто и выложено на Github.

Уровень оборудования

Главная и необходимая часть — это сервер на базе Raspberry Pi, но без проблем может работать на PC с Debian или Ubuntu. Операционная система Raspbian. Система должна работать 24/7/365 поэтому нужен качественный блок питания, например отлично подойдёт бп для iPad. _v-jfkopnckaqd6d2url7bbyso4.jpeg Для Удаленного управления, я также навыка для голосового ассистента яндекс нужен сервер с «белым» IP и домен. На сервере запущен MQTT сервер, для безопасности используется SSL/TLS. Поддержка KNX через шлюз BAOS 771-774. BAOS это интерфейс между шиной KNX и LAN. Позволяет обращаться к адресам в шине через веб-службу в формате JSON.Моё оборудование:Проекты для Arduino IDEWifi Контроллер на основе Wemos D1 minirgtk85up8tdsr6xayaj8ocg47-w.jpeg Питание от сети 230 вольт, также возможен вариант без блока питания от общей шины 5 вольт для питания Wemos’а или от оборудования которым он управляет, например привод штор. Возможна установка в монтажных и распаечных коробках достаточной глубины, например за выключателем. Может использоваться вместо радиоуправления различными приводами штор.Схемаoyxk4wsdxrvbw4dpkhtzajo6kt0.png Распиновка управляемых выводов: L1,L2 — Силовые выхода от симисторов BT-137S, управляемых выходами wemos’а D0,D5 через оптопару MOC 3063S с контролем перехода фазы через ноль. Включение и выключение нагрузки будет проходить без создания помех в сети. p1,p2 — pwm выхода для диммеров или моторизированных приводов штор или дополнительные кнопки, зависит от настроек. соответствуют выводам wemos’а D6,D7. A0 аналоговый вход для подключения различных датчиков, например освещённости или дополнительная кнопка. ds — Подключение датчика температуры DS18B20 соответствует выводу D1. DHT — Подключение латчика температуры DHT22соответствует выводу D2. b1,b2 — Кнопки, короткое и долгое нажатие, с функцией счетчика нажатий, можно подключать к импульсным выходам счетчиков электроэнергии, воды и т.д. Демонстрация работы Программа контроллера создана в Arduino IDE. Подходит для всех плат на основе ESP-8266. Настройка сети, управление и работа контроллера осуществляется по MQTT. Для удобного просмотра настроек есть Web-интерфейс, ранее была возможность управления по http, но потом я её посчитал лишней и убрал.Web-интерфейсxsruid9tfryat8x2raxfmv7dggu.png Web-интерфейс можно отключить. Для удобства первичной настройки предусмотрен скрипт winit.sh и инструкция. Чтобы сбросить контроллер на настройки по умолчанию нужно либо ввести команду «default 1» либо нажать одновременно кнопки b1,b2 на 20 секунд. Также есть упрощенная версия программы для управляемых розеток Sonoff.Контроллер на основе Arduino Megald_ecy2suip8ef20lc4nmpqi53k.jpeg Состоит из самой меги и шилда сетевой карты W5100, на плате разведены выхода для диммеров и входа для датчиков и кнопок, выходы реле нужно подключать отдельно с помощю шлейфа к 2-х рядному разъему расположенному на плате меги с противоположной стороны от портов питания и USB. Контроллер рассчитан для корпуса D6MG. Распиновка: D2-9,D11-13 — PWM выходы для диммеров, частота PWM увеличена от штатной. D14-21 — датчики температуры DS18B20 и DHT22. D22-49 — выходы на реле, выходы D22-29 можно настроить для приводов жалюзи, ворот, штор. D10,50-53 — использует сетевая карта W5100. A0-16 — входа для кнопок, короткое и длительное нажатие. A0-A6 можно настроить для аналоговых датчиков. Сетевые настройки для меги задаются в программе перед прошивкой. IP адрес фиксированный.Web-интерфейсtv9gppypwll3i_iyaqbpnjfzhbq.pngДиммер на симисторе BT137-600Essuyahexjpkmq75dsydnyyefyie.jpeg Вход 220 вольт, управление PWM 0-5/3.3 вольт, задается установкой перемычки. 0-5 вольт для работы с Arduino Mega или 0-3.3 вольта в случае wemos’а. Сигнал PWM подаётся на аналоговый вход A0 Arduino Pro где преобразуется в задержку для открытия симистора, предусмотрен разъем для перепрошивки ардуины по месту. Предусмотрено место для радиатора. Со стороны ардуино расположен разъем управления и питания ардуины (PWM,-,+), со стороны смимстора 4-х пиновый силовой разъем — питание и выход на нагрузку, при необходимости на нем также можно установить варистор или снаббер. Плата диммера расчитана на корпус D2MG. Проект диммера: 8a1ec433583539dc1962e14fe1f031cd.pngДемонстрация работыЕще есть блок симисторов на 28 каналов в корпусе D9MG.Извиняюсь за качество снимкаosiyriitdnczwrpxqcxttd3saaq.jpeg Оборудование связано через Локальную сеть, протокол для связи MQTT. Я использую MQTT сервер Mosquitto.

Программная часть

Для удобства, сначало нужно подготовить образ операционной системы со всеми необходимыми программами, я использую Raspbian Stretch Lite. Понадобится установить nodejs, python-pip, python3-pip, supervisor, mosquitto, mosquitto-clients, sqlite3. И pip пакеты: paho-mqtt и psutil. Еще можно установить Node-red, отлично подойдет для всякого рода экспериментов. После выхода Apple Homekit в 2016 году оказалось что все производители и разработчики за всё время существования систем «Умный дом» не смогли сделать ничего близкого по удобству и функционалу по сравнению с хомкитом, это похоже на ситуацию с выходом первого iPhone, когда выяснилось что весь зоопарк телефонов, смартфонов, комуникаторов превратился в кучу ненужного хлама. В любом случае всегда приятно пользоваться качественным и готовым продуктом. Я выбрал проект homekit2mqtt в качестве основной системы визуализации. Конечно можно использовать OpenHUB или Homeassistant, эти системы также работают с MQTT.hjmqtt Homekit2mqtt создаёт Homekit Bridge, его можно найти в программе «Дом» на устройставх от Apple. Аксессуары (освещение, датчики, терморегуляторы и т.д.) нужно прописывать в специальном файле в формате JSON. За создание этого файла отвечаеют скрипы filegen.sh и install.sh. В filegen.sh нужно прописать аксессуары, install.sh добавляет homekit2mqtt в автозагрузку и запускает. В файле hjmqtt.py происходит главное — связь аксессуаров с оборудованием, в файле также в ручную, надо прописать аксессуары и параметры оборудования, адреса для KNX. Функционал для аксессуаров прописан в файлах accessory.py и accessoryknx.py. Статусы устройств хранятся в базе sqlite, для операций с базой данных служит библиотека statdb.py.hjconnect Следующий проект нужен для удаленной телеметрии. Это использование памяти, дисков, нагрузка и температура, для этого и используется пакет psutil. Сейчас в открытый доступ выложена версия hjconnect только для мониторинга и без шифрования и отдельным проектом программа для сопирования файлов таже по MQTT file-transfer-via-mqtt. Настройки находятся прямо в основном файле hjconnect.py. Если его запустить с параметром «-l» то можно протестировать на локальном MQTT сервере, настройки для удаленного сервера находятся на строке 160

rclient.connect("test.mosquitto.org", 1883, 60)

сервер test.mosquitto.org можно заменить на свой домен или IP. Для идентификации Raspberry Pi в топик включен серийный номер процессора, если программу запустить на другом компьютере вместо серийного номера будет строка «SN». Интервал сообщений задаётся в строке 96

th = threading.Timer(9, my_stat) # interval

где 9 — это секунды.Пример как выглядит мониторингxadktutaa2aiieil1rcwxzhz7zs.pngsima Сейчас единственная колонка говорящая на русском есть только у Яндекса. Создать навык для Алисы достаточно легко. В отличии от Siri предоставлена полная свобода действий. И доступ на любых устройствах. Только, к сожалению, пока нет вменяемого способа запуска навыка, постоянно запускать навык неудобно.Демо Это работающий пример навыка. Для начала работы навыка понадобится SSL сертификат, его можно сгенерировать с помощю openssl. В файле sima.py в строке 14 есть пример генерации сертификата

openssl req -new -keyout crt.pem -out crt.pem -x509 -days 365 -nodes -subj '/CN=site.com/O=user/C=RU'

site.com и user нужно заменить на свои данные. Когда навык запускается на новом устройстве, записывается его идентификатор. Для того чтобы связать идентификатор и систему автоматики сначала нужно создать новый csv файл в директории clients по образцу файла my.csv. В файле по шаблону прописывается серийный номер, это тот же серийный номер из программы hjconnect, и прописываются объекты управления: название, тип, топик. Топик это значимая часть MQTT топика аксессуара из JSON файла для homekit2mqtt. Затем с помощю sn.py нужно серийный номер преобразовать в пароль и назвать этот пароль на устройстве с которого вы будете управлять. Связь обеспечивает программа hjconnect, а MQTT сервером мониторинга является этот же самый компьютер на котором запущен навык. Спасибо, пока.Используемые источники:

  • https://arduinomaster.ru/datchiki-arduino/esp8266-wemos-d1-mini-raspinovka/
  • https://wiki.iarduino.ru/page/wemos_start/
  • https://habr.com/post/442600/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации