Wemos d1 mini не подключается к wifi

Обновлено: 06.07.2024

Инструкция по Wemos D1 mini: управление с мобильного телефона

Привет друзья, меня зовут Алексей, и я решил написать небольшой курс статей, по использованию платы Arduino Nano и адресной ленты, на основе светодиодов ws 2812 b . На сегодня это уже восьмая статья. На данный момент мы придерживаемся изначальной идеи, за исключением маленького нюанса, - мы уже перестали использовать плату Arduino Nano . И на замену пришла Wemos D 1 mini , но это практически ничего не меняет, только увеличивает наши возможности. В прошлой статье мы занимались подключением Wemos , настраивали и писали программу. Так что логичнее всего прочитать статьи, предшествующие этой.

Перед тем, как начать что-либо делать, хочу дать небольшое уточнение, которое я забыл сделать в прошлой статье. Дело в том, что Wemos , ну а если говорить точнее ESP 8266, потребляет достаточно большой ток, так что я бы рекомендовал изначально использовать эту плату в связке с блоком питания. Кстати, хочу напомнить, что не будет никаких проблем, если при включенном в розетку блоке питания, подключить плату к компьютеру, посредством USB провода.

Сегодня мы организуем управление цветом светодиодной ленты с помощью смартфона. Причем совершенно не важно, на какой именно операционной системе работает Ваш телефон: на Android или IOS . Думаю, это будет достаточно интересно и актуально. И в любом случае данная статья является продолжением предыдущей, там мы занимались настройкой Wemos и улаживали нюансы, если не читали, обязательно ПРОЧИТАЙТЕ ;) Тем более, что, не прочитав прошлой статьи, высока вероятность того, что у Вас ничего не получится.

Донастройка IDE Arduino

Теперь создадим новый проект в IDE Arduino . И нам необходимо скачать библиотеку. Библиотека для связи с сервисом Blynk . Так что нажимаем Скетч -> Подключить библиотеку -> Управлять библиотеками.

8_01.jpg

В поиске появившегося окна вбиваем – « Blynk ». И устанавливаем одноимённую библиотеку.

8_02.PNG

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

Давайте приступим к написанию скетча. Для начала добавляем необходимые библиотеки. Их всего две: первая служит для использования внутреннего Wi - Fi микроконтроллера, а вторая - для связи с сервисом Blynk . А также сразу я записал еще несколько строк кода, но о них мы поговорим далее.

8_03.PNG

В 4, 6 и 7 строках указаны следующие данные: идентификационный ключ, название Wi - Fi сети и пароль от Wi - Fi сети. На данный момент мы не будем указывать ключ, так как мы его просто не знаем. Но имя и пароль указать нужно, конечно же, вы указываете свои данные. В девятой строке начинается функция setup (). Тут мы передаем указанные данные Blynk объекту, и библиотека уже сама выполнит подключение. В 14 строке начинается функция loop (), тут в каждой итерации цикла мы запускаем Blynk объект методом run (). Думаю, данный код достаточно простой и особых пояснений не требует.

Теперь давайте подключим Wemos к компьютеру посредством USB -кабеля и загрузим данный скетч на МК. Кстати, процесс компиляции и загрузки на ESP 8266 занимает гораздо больше времени, чем на Arduino Nano , но думаю, что результат того стоит. В общем после того, как мы увидим надпись «Загрузка завершена», заходим на свой маршрутизатор и смотрим, появилось ли новое подключенное устройство. Тут уже интерфейс у всех будет разный, в зависимости от маршрутизатора. У меня это выглядит следующим образом:

8_04.PNG

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

Хочу заострить Ваше внимание, что мы только что, написав буквально пару строк, подключились к домашней сети. И, по сути, если домашняя сеть подключена к интернету (а только так мы получим доступ для управления), Вы уже можете управлять устройством у себя на столе с любой точки мира. Это очень впечатляет.

Настройка Blynk на смартфоне

Хоть статья, по сути, целиком и полностью посвящена Blynk , говорить об этом мы начали с вами только сейчас. Можно было бы, конечно, и раньше, в самом начале, но именно сейчас самое время. Сейчас я вам расскажу, что же это такое.

Теперь о том, что такое Blynk и для чего он нам нужен. Как я уже говорил ранее, Blynk – это сервис, который можно разделить на 3 части:

- интерфейс управления и мониторинга.

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

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

8_05.jpg

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

8_06.jpg

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

8_07.jpg

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

8_08.jpg

8_09.jpg

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

8_10.PNG

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

8_11.jpg

Данные элементы даются не просто так, а покупаются за местную валюту, под названием «энергия». Изначально у вас имеется 2000 на энергетическом балансе. Это не очень много, но тем не менее достаточно, чтобы управлять своей системой. Конечно же, баланс возможно пополнить, для этого есть кнопка «Добавить»( Add ). Стоит энергия небольшие деньги, особенно если сразу покупать много. Данные средства идут на поддержку проекта, так как проект открытый и бесплатный для использования. Пользоваться данной услугой или нет, решать только Вам, лично я еще не разу не покупал энергию. И своего читателя тоже не призываю, это дело сугубо каждого.

8_12.jpg

Теперь вернемся к выбору графических контролов. Нас интересует элемент под названием zeRGBa , дальше по тексту я буду называть этот элемент «зеброй». По сути, это обычный RGB контрол для выбора цвета, просто выполненный в виде зебры. Давайте добавим его на рабочую область проекта, для этого достаточно просто кликнуть по зебре и элемент появится на рабочей области.

8_13.jpg

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

8_14.jpg

Отлично, готово. Теперь настроим графический элемент. Для этого достаточно короткого клика по нему, и мы попадаем в настройки контрола. Настроек, кстати, не так уж и много.

8_15.jpg

Первая настройка отвечает за имя контрола, но так как у нас будет всего один графический элемент такого типа, то смысла пользоваться этим никакого нет. Вторая настройка отвечает за тип отправляемых на МК данных: либо значения цветов отправляются отдельно, как в первом положении, либо эти же значения отправляются массивом, как в случае, когда переключатель в положении MERGE . Выберем второй вариант, мне кажется, он гораздо удобнее. И на картинке сразу же имеется пример того, как стоит поступить с кодом проекта. Но об этом немного позже.

8_16.jpg

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

8_17.jpg

Я выбрал виртуальный пин V 0 и подтвердил свой выбор. Теперь, где было написано PIN , написано V 0.

8_18.jpg

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

И осталась еще одна настройка – SEND ON RELEASE . Тут речь идет о том, что значения цвета будут отправляться только после полного изменения и выбора цвета (то есть нажали, выбрали, отпустили, значение отправилось) или же прямо во время изменения цвета (то есть цвет на адресной ленте будет меняться в процессе выбора, отпускать не нужно). Конечно же, второй вариант более эффектный и поэтому выберем его, для этого переведем ползунок в противоположную сторону. И тут станет доступна еще одна настройка - это интервал задержки, между отправлением пакетов с данными. Я выставил минимальный, думаю, понятно почему. Кстати, это аж сто миллисекунд, что достаточно большая задержка, но стоит учитывать, что и сервера Blynk не резиновые, да и пакет может идти по очень длинному маршруту и тогда в огромной скорости отправки изменений не будет смысла. Так что значение в сто миллисекунд не так уж и велико.

8_19.jpg

На этом все, выходим из настройки, контрол полностью настроен и нажимаем последнюю из кнопок в шапке приложения - кнопку запуска программы (треугольник - play ). На этом наше приложение готово управлять МК. Теперь необходимо дописать скетч, чтобы принимать эти команды и правильно ими распорядиться. Так что выходим из настроек и запускаем приложение кнопкой треугольной формы. И вот мы уже видим вполне рабочую программу, с одной единственной функцией – выбор цвета. Кстати, теперь, если закрыть приложение и открыть вновь, программа будет по-прежнему открыта на рабочем приложении.

8_20.jpg

Финальная программа

Как я говорил ранее, у Blynk есть три составляющих: библиотеки связи, интерфейс и сервера. Связь организованна, интерфейс настроен, сервера работают и без нашего вмешательства. Осталось организовать логику работы программы, чтобы МК, получая данные, мог правильно их использовать. В рамках данной статьи мы уже начали писать программу и не будем бросать ее недописанной. Сейчас я покажу, как выглядит уже ее финальная версия, а потом все объясню.

Платы ESP8266 оснащены микроконтроллером ESP8266 с интерфейсом Wi-Fi, подключаются к компьютеру через WiFi или USB порт.

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

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

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

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


Откройте «Arduino IDE» и выберите пункт меню: «Файл» > «Настройки»



Запустите «Менеджер плат» выбрав пункт меню «Инструменты» > «Плата» > «Менеджер плат».


В открывшемся окне «Менеджер плат» выберите пункт «esp8266 by ESP8266 Community» из списка сборок и нажмите на кнопку «Установка» (при желании можно выбрать версию устанавливаемой сборки).


Дождитесь окончания установки сборки. «Менеджер плат» загрузит примерно 150 Мбайт данных.


После успешной установки сборки, в списке, напротив её названия «esp8266 by ESP8266 Community» появится фраза «INSTALLED». Закройте «Менеджер плат» нажав на кнопку «Закрыть».

На этом настройка «Arduino IDE» завершена! Теперь в списке плат есть раздел «ESP8266 Boards».

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

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


Для работы с платами ESP 8266 нужно в пункте меню «Инструменты» > «Плата» > «ESP8266 Boards» выбрать соответствующую плату или «Generic ESP8266 Module»


Так же нужно выбрать COM-порт после подключения платы к компьютеру через USB порт. На рисунке выбран порт «COM10», но Вам нужно выбрать тот порт, который появился у Вас в списке доступных портов после подключения платы. Если после подключения платы новый порт не появился, значит не установлен драйвер для чипа CH340G / CP2104, ссылки на драйверы указаны в конце данной статьи.


Осталось загрузить скетч и проверить его работу. На рисунке загружается простой скетч для мигания светодиодом, установленным на плате и подключённым катодом к выводу D4. При написании скетчей, обратите внимание на то что константы имён выводов D0 . D8 хранят нумерацию выводов GPIO микроконтроллера, а не нумерацию выводов платы, так например: digitalWrite(D5, HIGH); // установит «1» на выводе платы D5 (он же вывод GPIO-14 микроконтроллера).
digitalWrite(5, HIGH); // установит «1» на выводе платы D1 (он же вывод GPIO-5 микроконтроллера).


Предыдущий скетч можно не писать вручную, а загрузить из примеров, большое количество которых стало доступно в меню «Файл» > «Примеры» > «Примеры для Generic 8266 Module», после выбора платы «Generic ESP8266 Module».

В примере «Файл» > «Примеры» > «ESP8266» > «Blink» светодиод включается на 1 секунду через паузу в 2 секунды, а вывод к которому подключён светодиод указывается не константой D4, а константой LED_BUILTIN. Обратите внимание на то, что светодиод включается подачей логического «0».

Сегодня мы рассмотрим как сделать обновление прошивки по WI-FI на Wemos D1 R2.

Зачем обновлять

Как-то очень быстро стало не хватать возможностей стандартного Arduino Uno R3 для мелкой домашней автоматизации. Почему-то захотелось подключать собираемые устройства к сети не витой парой, а через Wi-Fi, забрезжила потребность в большем количестве свободных пинов, захотелось иметь возможность использовать PWM и прерываний больше, чем на двух пинах.

WeMos D1 R2 обновление прошивки по WiFi (OTA)

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

В поисках более интересной и удобной платы, я совершенно случайно наткнулся на нечто, совмещающее в себе почти все, а может быть, даже и все "хотелки". Речь далее пойдет о платах для домашней автоматизации и интернета вещей производства WeMos на чипе ESP8266EX.

ESP8266EX и WeMos

Чип EPS8266 от китайской компании Espressif появился на рынке в 2014 году и сразу же привлек внимание общественности. С одной стороны, EPS8266 — чип максимально интегрировавший обвязку и позволяющий создавать очень простые платы с минимум элементов, да еще и со встроенным современным Wi-Fi. А с другой стороны, стоимость чипа неимоверно низкая (к 2016 году цена опустилась вдвое).

По этой причине множество производителей принялись, с неистощимым энтузиазмом, выпускать новые платы, на основе чипа от Espresiff. Хотя, при мало-мальском умении использовать в своих проектах можно и голый чип ESP8266, благо самая нужная обвязка встроена сразу в него. Что неимоверно удобно.

Espresiff создала свой чип с прицелом на «Интернет вещей», поэтому он обладает весьма скромными размерами, вместительной памятью, способностью к разгону и нескольким режимам энергосбережения. К слову, в ESP8266 реализован даже суперэкономичный режим, в котором устройство потребляет самый мизерный мизер энергии, но при этом не отключается от сети Wi-Fi. У разработчиков открывается невероятная возможность по реализации первоклассных проектов с питанием от батарей.

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

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

Кстати, многие называют чип EPS8266 именно так, но в спецификации он обзывается как EPS8266EX. Два это разные чипа или просто называются безалаберно непонятно. Ни поиск по форумам, ни чтение спецификаций производителя, не помогли мне разобраться в этом вопросе. Посему будем считать, что оба названия обозначают одно и то же.

В моем распоряжении оказалась плата Wemos D1 R2. Приведу ее некоторые характеристики:

80 MHz 32-bit процессор Tensilica Xtensa L106 . Возможен негарантированный разгон до 160 МГц. 16 портов ввода/вывода, SPI, I 2 C, I 2 S, UART, 10-bit АЦП. Питание 3,0–3,6 В. Среднее потребление 80 мА. Потребление до 170 мА в режиме передачи, 60 мА в режиме приема, пиковое потребление возможно до 500 мА. Присутствует режим пониженного потребления с сохранением соединения с точкой доступа

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

Установка программного обеспечения

Устанавливаем ПО для работы с WeMos на ПК под управлением Windows 10.

Напомню, что чип EPS8266 способен работать одинаково хорошо с различными типами прошивок, в том числе и с Arduino. И именно под Arduino с его Arduino IDE я и попробую провернуть фокус, при котором плата WeMos D1 R2 будет подключаться к моей Wi-Fi сети, а я смогу обновлять прошивку без подключения платы к компьютеру шнурком и прямо из Arduino IDE. Все это под Windows 10 x64.

Шаг 1

Для начала необходимо установить более-менее современную версию Arduino IDE. Нужна версия не ниже 1.6.4.

Шаг 2

Шаг 3


При установке Python, стоит установить галочку, чтобы исполняемые файлы прописались в путь поиска. Иначе сию операцию придется делать вручную. А мало кто помнит, как это делается.

Шаг 4


Я не пробовал запускать плату без драйвера для обновления OTA. Без драйвера, но с установленными описаниями Arduino IDE видит плату и может загружать в плату новые прошивки. Возможно, что драйвер нужен как раз для беспроводного обновления.

Шаг 5

Устанавливаем утилиты для компиляции исходных кодов для EPS8266 и описания платы для Arduino IDE. Важно установить все это в нужную директорию. Установка осуществляется путем вызова в созданной директории esp8266com команды:

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


Правильный путь установки в директорию туда, куда установлена Arduino IDE. Например:

Переходим в созданную поддиректорию tools. И в этой директории запускаем:

Все необходимые компоненты автоматически скачиваются в директорию esp8266.

Шаг 6

Скачиваем примеры с сервера GitHub командой

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

Шаг 7

После установки примеров перезаходим в Arduino IDE или просто его запускаем, открываем любой из примеров для WeMos, например, Hello World, выбираем требуемые параметры настройки платы через меню "Tools" Arduino IDE. Здесь выбираем плату WeMos D1 и запускаем его на исполнение.


Прошу обратить внимание на то, что WeMos D1 R2 хоть и Arduino совместимая плата, но ожидать, что на ней будут нормально работать любые скетчи от Arduino не стоит. Как минимум впаянный светодиод тут привязан к совсем другому пину, нежели на платах Arduino, например, на Arduino UNO R3.


Еще одна особенность при работе с D1 и другими платами от WeMos, а скорее всего от всех реализованных на ESP8266 — вывод в терминал может осуществляться с мусором либо постоянно, либо при начале отображения. Иногда все начинает работать само по себе, иногда требуется поиграть со скоростями последовательного порта (в окне терминала и в скетче), дабы подобрать скорость, которая будет работать именно у вас.

Собственно, на этом настойка подключения WeMos платы к Arduino IDE завершена. Если что-то не работает или работает как-то не так, необходимо попробовать пройти все шаги еще раз, внимательно относясь к каждому из них.

Обновления Over The Air (OTA) для WeMos D1 R2

А теперь подбираемся к самому интересному. К тому, как обновлять прошивку у устройства по воздуху используя соединение Wi-Fi. Итак, у нас есть рабочая Arduino IDE с возможностью использования плат WeMos и чипов ESP8266.

В обновлении по воздуху нет ничего сверхъестественного. В модуль загружается скетч, который подключается к Wi-Fi сети и в цикле loop, при помощи функции, слушает на определенном порту сигналы от удаленного загрузчика. Как только поступает требуемый сигнал, то в память устройства закачивается свежая прошивка, которая и загружается после рестарта.

[/red]Важно! Новая прошивка должна содержать тот же самый код по загрузке посредством OTA, что и в оригинальной, со всеми паролями, именами сетей и т.п., иначе устройство просто не сможет загрузить следующую прошивку по воздуху и придется подключить его к компьютеру кабелем.[/red]


Код программы

Для того чтобы настроить загрузку прошивок OTA, необходимо открыть скетч BasicOTA из примеров для Arduino от WeMos.

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

Ну и собственно все. В дальнейшем можно встроить функциональность OTA в ваш код или же нарастить свой код используя BasicOTA как материнский контейнер. Обновление по воздуху будет работать в том случае, если будет вызываться соответствующий метод ArduinoOTA в цикле loop. Если ваша прошивка слишком сложная, содержит длительные циклы или занята какими-то сложными расчетами, то есть риск того, что обновление не будет подхватываться с первого раза. Поэтому стоит соблюдать баланс интересов в вашей прошивке.

Некоторые особенности

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

  1. Первое, что нужно уяснить, так это то, что WeMos работает с напряжением 3.3 Вольта, а большинство полноформатных плат Arduino с напряжением 5 вольт. И даже если на плате есть выход 5 вольт, то использовать это напряжение стоит с осторожностью.
  2. Цифровые входы платы выдают напряжение в диапазоне от 1.8 и до 3.3 Вольта с пиковым током до 200 мА. Единственный аналоговый вход способен работать с напряжением в диапазоне от 3.0 и до 3.6 вольт. Возможно, что в ваших проектах потребуется согласование напряжений.
  3. Отличается плата WeMos D1 R2 от аналога Arduino и по языку программирования, вернее, набором функций и прочими тонкостями. Например, описание пинов задаются не просто номерами, а с четким указанием цифровой это пин или нет. Так пин с номером 1 обозначается как D1.

На текущий момент (конец лета 2016) функция Serial Monitor для OTA пока не реализована в IDE. По этой причине рекомендуется использовать внешний терминал и подключить его к соответствующему сетевому порту.

Ответы на вопросы

Не получается установка платы-при вводе URL адреса, кликаю и никакой реакции плата не установлена.

  • Чтобы "URL" появился в разделе плат, нужно предварительно прошить в модуль прошивку с OTA и не забыть в цикле крутить обработчик прошивки по воздуху. Разумеется, плата должна быть подключена к той же самой сети, что и компьютер. Т.е. сначала нужно установить библиотеки для ESP в систему, потом сконфигурировать и прописать скетч в саму плату, после этого она появляется как "порт" для прошивки.


Давненько я не ковырял эту суперштуку под названием Wemos D1 mini, а тут оказия.
В общем есть электропечь Indesit:

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

Я пробовал конечно их разбирать, чистил контакты, регулировал, но видимо металл уже изменил своих свойства и толку от этого практически не было.
И тут возникла мысль: «У меня есть Wemos D1 mini, в шаговой доступности есть твердотельные реле, почему нет?»
Итак беру пару вот таких твердотельных реле SSR-10DA:

Они популярные, есть на каждом углу. Есть несколько моделей, в маркировке нас интересуют цифра 10 (ток в амперах) и буквы DA (наша нагрузка будет работать на переменном напряжении, а управлять ею мы будем постоянным напряжением).
Напряжения Wemos D1 mini 3.3V вполне хватает, чтобы закрывать и открывать реле.

Итак, подключаем реле в разрыв питающего конфорку провода (между конфоркой и родным регулятором мощности конфорки). Сделал так на всякий случай, для дополнительной защиты. Т.е. чтобы наш Wemos D1 mini управлял конфоркой, нам нужно вручную ее включить (поставить на макс огонь). На управляющие контакты кидаем провода от пинов Wemos D1 mini (не забываем про полярность), осталось только запилить скетч.

Пока подпаивал пины, вспомнил, что у меня валяются без дела несколько датчиков, остались от старых проектов. И снова «почему нет?».
Подключил к Wemos D1 mini датчик атмосферного давления BMP180 (на борту он кстати имеет и датчик температуры), и датчик температуры и влажности DHT-21. Вот такие:


Подключение описывать не буду, в интернете море информации. Они очень популярные.

Пара слов о скетче.
1. Наш скетч периодически опрашивает датчики. Показания каждого датчика заносятся в массив на 10 значений, после чего вычисляется среднее арифметическое (для большей точности можно вычислять медиану). Соотвественно эти данные о текущих показаниям могут быть в любой момент получены от него.
2. Показания датчиков один раз в час (период можно регулировать) заносятся в массив из 100 значений. И в любой момент этот массив по запросу может быть выдан. Это история показаний датчиков. 100 значений по часу, чуть более 4 суток получается.
3. Алгоритм работы собственно конфорок. Вычисляется время включения и выключения с учетом установленной мощности, установленного цикла. К примеру, длительноть рабочего цикла у нас установлена 10 секунд, а мощность 10%. Следовательно конфорка включится на 1 секунду, затем выключится на 9 секунд и далее по кругу.
4. Запоминаются время включения (для последующего отображения времени готовки) и также устанавливается таймер с обратным отсчетом, о нем позже.
5. Все эти данные могут быть получены с помощью GET-запроса. Ну например, наберем в адресной строке браузера домашнего компьютера следующий адрес:
192.168.0.100/set?info, в ответ получим строку в CSV-формате следующего вида
0|0|0|0|0|0|0|0|3600000|5.00
Числа, разделенные вертикальной чертой, каждое из которых отображает данные о текущем режиме (мощность первой конфорки, время ее работы, таймер, то же для второй, период истории, установленный цикл).
192.168.0.100 — это локальный адрес нашего Wemos D1 mini, он назначается роутером и узнать его можно при подключении Wemos D1 mini к компьютеру в мониторе порта.
192.168.0.100/set?klimat, нам вернет 751.26|21.69|49.16|23.68 — показания датчиков.
192.168.0.100/set?history нам вернет строку длиной почти в 4 тыс. символов примерно в таком виде:
746.28|23.69|54.19|26.14|133351518@746.21|25.09|52.78|25.34|132751517@…
Это показания датчиков с отметкой времени каждого (в ms назад от текущего момента).
Управление будет происходить запросами в виде
192.168.0.100/set?power_1=50 — этот запрос установит мощность первой конфорки на 50%.
Остальные запросы можно посмотреть в скетче.
Вопросы по скетчу можете задавать в комментариях или в личке, отвечу. Зачем там строка длиной в 4500 нулей? Это старая длинная история поиска путей стабильности работы Wemos. К слову, успешная. Wemos немножко неправильно работает с памятью при наращивании строк, и вот эти нули решают эту проблему.

Итак, уже все работает, можем получать информацию и отдавать команды. Осталось только выбрать UI-среду, которая будет делать это чуть более элегантно, чем строчки в браузере. Ну тут у кого к чему душа лежит. Можно сделать локальную веб-страничку с Ajax-запросами. Можно накодить простенькую windows-прогу в WPF. Но разумеется удобнее всего будет смартфон. Я выбрал конечно последнее, тем более, что немножко поверхностно могу кодить на Jave для Android. Кто не может, можете воспользоваться потрясной штукой MIT App Inventor 2. Эта среда позволяет писать проги для Андроида прям на коленке, без знания языка, просто на алгоритмах. В своем прошлом обзоре я пользовался именно ею и подробно о ней рассказывал. Причем результат визуально будет мало отличаться от «взрослой» проги, написанной в Android Studio.
Итак, написанная за пару вечеров программка выглядит так:

На главном экране вверху находятся кнопки выбора конфорки. Поскольку реле подключены к дальней левой и правой ближней, кнопки расположены именно в таком порядке. Кроме этого они служат индикатором текущего режима (меняют цвет от зеленого к красному в зависимости от установленной мощности, белые — если выключены). Для каждой конфорки все параметры (мощность, время, таймер) отдельные.
Ниже время, прошедшее с момента включения конфорки. Удобно сразу видеть, сколько готовится блюдо, без запоминания когда включил и т.д.
Еще ниже таймер. Выполняет 4 функции:
— во-первых, устанавливается ползунком,
— во-вторых, ведет обратный отсчет, показывая сколько осталось,
— в-третьих, выключает конфорку по истечении времени,
— в-четвертых, оповещает хозяина звуковым сигналом и вибрацией по окончании отсчета.
Ниже ползунок для установки мощности в процентах. Еще ниже кнопки для быстрой установки стандартных значений. К примеру, после пары недель использования мы поняли, что суп приятно кипит на 7% мощности, а мясо имеет идеальную золотистую корочку при 53% жарки, можем назначить на кнопки эти предустановленные значения в настройках:

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

Температуры две (цифровых), т.к. у нас два датчика, которые ее отображают.
А левая кнопка ведет нас в историю показаний:

Вот график с давлением действительно полезная штука. Тенденция его изменения очень хорошо кореллируется с самочувстсвием.

Пара слов об опыте использования. Супер, что сказать, даже лучше, чем мне казалось вначале. Во-первых, возможность выставить очень точно силу огня, которая будет поддерживаться идеально. Обычные регуляторы так не могут. У них меньше градаций, плюс каждый имеет свой разброс. Угадать не просто. Для блюд, которые хорошо выкипают, это важно.
Во-вторых, время и таймеры. Честно, лично я ленюсь каждый раз засекать время готовки, приходится делать на глаз, пробуя. Плюс частенько поставил, зачитался интересным обзором на Mysku и забыл. А таймер всегда напомнит и выключит огонь. Плюс иногда бывает нужно готовить блюдо несколько часов. Можно поставить и отлучиться в магазин, не переживая, что задержишься.
Дискомфорта от доставания телефона для включения конфорки нет, быстро привыкаешь. Не так это часто делается.


Ну конечно мне тоже пришла в голову мысль попробовать использовать пищевой температурный датчик. Опускаем его в кастрюльку с пельменями и следим за температурой воды, как только температура приближается к 95-99 градусам, ставим мощность на слабый огонь, пельмени никуда не убегают. Профит. Может как-нибудь попробую. Вроде бы попадались такие датчики в продаже.
Спрашивайте, что не понятно, с радостью отвечу. Спасибо за внимание.
Вот так на меня смотрела кошка, пока я все это делал:

Arduino и электроника (AlexGyver)

Павел Фендык

Павел Фендык запись закреплена

Ребят, плата Wemos D1 mini esp8266 при подключении к компу для заливки прошивки задымилась и чуток загорелась ) Чо могло быть не так ?) Делал впервые

Алексей Кроптовский

Павел Фендык

Андрей Делон


Андрей Делон

Фото в студию.
И питание подавали тольк с порта компа?

Павел Фендык

Александр Ольшанников

Андрей Делон


Андрей Делон ответил Александру

Александр Ольшанников

Павел Фендык

я тош к 3.0 подключал, и тоже эта же херь загорелась что на твоей фотке указана )

Андрей Делон


Андрей Делон ответил Павлу

Павел, Это исправимо, если чип не погорел то решается 2-мя тычками паяльника

Андрей Делон


Андрей Делон ответил Александру

Это исправимо, если чип не погорел то решается 2-мя тычками паяльника

Александр Ольшанников

Андрей Делон


Андрей Делон ответил Александру

Павел Фендык

вы тоже конденсатор не правильно припаяли ? Или у вас другой косяк ? )

Александр Ольшанников

Павел, я не паял кондер..думал припаять его после заливки
только втыкнул в юсб 3.0 и вемос задымился

Павел Фендык

Александр Ольшанников

Андрей, а как полярность на плате определить если он сгорел?

Андрей Делон


Андрей Делон ответил Александру

Александр Ольшанников

Андрей Делон


Андрей Делон ответил Александру

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

Павел Фендык

Она у вас только из за 3.0 разъема перегорела, правильно понял, или нет ?

Александр Ольшанников

Павел Фендык

Алексей Кроптовский

Прежде чем паять диод, необходимо найти где ты КЗ устроил по 5 вольтам. Да и идиотом надо быть, чтобы подключать к USB, не запитав нагрузку от нормального источника, в случае, если КЗ нет. Гайвер везде говорит про порядок подключения

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