Wemos d1 r2 обновление прошивки по wifi (ota)

STM32 (STM32F103C8T6)

Данная отладочная плата известна также под названием проект «Blue pill». Опенсорсное решение на базе ARM процессора. Плата призвана заменить собой платформу Arduino Nano и имеет следующие характеристики:

  • Архитектура Микроконтроллера ARM Cotrex M3
  • Разрядность 32 Бит
  • Максимальная частота 72 Мгц
  • Объем памяти программ (FLASH): 64 / 128 кБайт
  • Объем памяти данных (RAM): 20 кБайт
  • Выводы: 37
  • UART: 3
  • SPI: 2
  • I2C: 2
  • CAN: 1
  • USB: 1
  • АЦП: 2 АЦП, 10 каналов, время преобразования 1 мкс
  • Напряжение питания микроконтроллера 2 … 3,6 В
  • Напряжение питания платы 5 В
  • Ток потребления до 50 мА

По сравнению с основным конкурентом — Arduino Nano, характеристики более чем впечатляющие. Да и зона применения этого микроконтроллера гораздо шире. Однако без нюансов не обходится. Стоит учитывать, что напряжение питания у микроконтроллера на этой плате составляет в среднем 3,3 вольта, соответственно и логика работы микроконтроллера трехвольтовая. У Arduino Nano напряжение питания 5 Вольт и логика соответствующая.

Однако, не все так печально. Разработчики предусмотрели такой вариант и ряд выходов платы сделали толерантными к 5ти вольтовой логике. Данная информация представлена на изображении ниже:

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

На китайских торговых площадках мне встречались преобразователи на 4 и 8 каналов, стоят копейки, но позволяют избавиться от головной боли :). Вот ссылка на 4х канальный преобразователь:

Устройства на базе STM32 в последние годы все больше и больше набирают популярность. На них строят как примитивные устройства, так и квадрокоптеры. А с выходом marlin 2.0 количество 3Д принтеров на подобной платформе значительно увеличится.

Свои модули STM32  (STM32F103C8T6) я заказывал вот тут:

Ну а теперь поговорим о модулях на микроконтроллерах с WIFI.

Так или иначе рано или поздно любому радиолюбителю или инженеру становится скучно и не интересно разрабатывать автономные устройства, либо обстоятельства вынуждают разрабатывать устройства взаимодействующие друг с другом или через интернет. У Адруино есть шилды, которые позволяют подружить микроконтроллер с сетью, но прогресс не стоит на месте и был разработан новый микроконтроллер уже имеющий у себя на борту интерфейс wifi. Представляю Вашему вниманию микроконтроллер ESP8266.

Основные характеристики ESP8266 следующие:

  • Тактовая частота 80 МГц с возможностью разгона до 160 МГц без гарантии стабильности работы
  • Платформа 32 Бит
  • Поддержка Wifi стандартов b/g/n
  • Количество портов GPIO 14, из них доступно 11
  • Количество аналоговых входов 1
  • АЦП 10 Бит
  • Питания от 2,6 до 3,6 В
  • Потребляемая мощность до 215 мА в режиме передачи, 100 мА в режиме приема, 70 мА в режиме ожидания.
  • Поддерживаются три режима пониженного потребления, все без сохранения соединения с точкой доступа: Modem sleep (15 мА), Light sleep (0.4 мА), Deep sleep (15 мкА)

Имеются следующие интерфейсы:

  • UART
  • SPI
  • I2C

Вот основные особенности данного микроконтроллера. Как видим, есть свои достоинства и недостатки. К достоинствам можно отнести:

  • Производительная платформа
  • Наличие Wifi
  • Наличие поддержки самых востребованных интерфейсов
  • Наличие режимов низкого энергопотребления
  • Совместимость со средой Arduino IDE

К недостаткам можно отнести следующее:

  • Мало количество портов GPIO
  • Только один аналоговый вход
  • Высокое энергопотребление в режиме передачи

Однако, недостатки не такие уж и критичные и для ряда проектов просто несущественные.

За счет своей функциональности микроконтроллер ESP8266 приобрел широкую популярность в среде разработчиков устройств и модулей для умного дома и интернета вещей. О чем свидетельствует популярность модулей Sonoff, обзоры которых я делал ранее. (Обзоры модулей Sonoff). Также данные микроконтроллеры используются во всяких устройствах с Wifi на борту, таких как кондиционеры, роботы-пылесосы и т.д.

Перечень наиболее принципиальных преимуществ

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

Справка. Блочная схема микроконтроллера WeMos дает возможность превратить каждый кристалл на плате устройства с записанной программой в полноценный функциональный модуль с низкой производственной себестоимостью. Интеграция таких модулей позволяет создавать на плате универсальное контрольное устройство с любой требуемой схемой управления.

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

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

Внимание! Системная плата WeMos, что называется, по карману даже непрофессионалам.

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

Возможности микроконтроллеров

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

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

Миникомпьютер WeMos не является конечным продуктом для потребителей. Это электронный компонент для создания полезных устройств, если есть знания по подключению платы и программированию.

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

Wemos D1 Release 1 (R1) and Release 2 (R2)~

Here you can find information for the big brother of the Wemos D1 mini which can be found here.

R1 vs. R2 — The Difference

When you take a look at the figure 1 you will see it with one blink of the eye thet the old Wemos is different against the new verion R2. The old version has an ESP8266 12B or 12E model. The new one has a ESP8266 12F model on the pcb board. You see this in the defference of the Wifi antenna. Here is a Wiki link to the different ESP8266 modules. The next part for R2 are the 2×4 solder pins for the serial and I2C interface which is not on the old model R1. The techncal data/specifiactions are the same. SO as you see they look like an Arduino UNO inculding the stacks to mount different shields. Later i will give more information over shields which i have tested and there are a lot of them.

Figure 1: WeMos D1 R1 vs. WeMos D1 R2

Settings in Arduino IDE (v1.8.7):

Both releases

First we will check that the right json index file is chosen. For that open File -> Preferences. Search for «Additional Boards Manager URLs:» (Figure 2). There you have an input filed. If that field is empty add this to it via copy&paste: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Then close that window by hitting the OK button. If you have more then one link in that input field you have to use a comma after every link. So as done in Figure 2.

Figure 2: Additional Boards Manager URLs

Second we will look at the Boards Manager of Arduino IDE. As you can see in Figure 3 that the following things has to be installed. Possibile you have done this already together with the first installtion. Open Tools -> Board Selection -> Boards Manager, then search for esp8266 by ESP8266 Community. If you have fund it you will the same as in Figure 3. On the right side of that text you have searched for you can see the installed verion. Here in the sample it is 2.4.2. It is not installed you can make a choice under Select Version. If you start a new installation you can use the version 2.4.2. It works very well with both releases of Wemos D1.

Figure 3: Boards Manager

Settings to Flash a firmware on R1:

Open Tools -> Board and select the WeMos D1 R1 board. For the settings of release R1 see Figure 4. Don’t forget to select the right COM port so far your USB/Serial adapter is connected. Otherwise you can change this later after you have verified your code and you are ready to compile and flash. Then you have to connect your adapter and after the typical PING under Windows you can set your COM port.

Figure 4: Arduino Settings Wemos D1 R1

Settings to Flash a firmware on R2:

Open Tools -> Board and select the LOLIN(WEMOS) D1 R2 & mini board. And for the settings of release R2 see Figure 5, please. Don’t forget to set your COM port.

Figure 5:

As you can see the settings are the same only the name of the board is different. Internal there some different settings but we dont need to know that. Arduino IDE does the work for you.

WeMos Mini

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

Распиновка 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, примеры скетчей

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

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


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(); // запуск сервера

Choosing a Microcontroller with WiFi

First off, if you don’t need WiFi for your project, you do not need to use the Wemos or NodeMCU. A traditional Arduino Uno or Mega might be sufficient. So, for this article, I’m going to assume your project requires WiFi connectivity.

Related Article: WeMos WiFi Controlled Robot using L298N

Before we dive into the full review of what controller to use (Wemos D1 Mini or NodeMCU), I’m going to give a quick technical overview of each. If you already know about each controller, feel free to  and skip down to the review portion.

Wemos D1 Mini Technical Overview

The Wemos D1 Mini is a small microcontroller made by the Chinese company, Wemos Electronics. The D1 Mini is only one of six families that the Wemos company makes. You can learn more about their other products, here. For this article, when I say Wemos, I’m referring to the D1 Mini controller. Feel free to let me know in the comments below if you’d like to see a full review of all of the Wemos Electronics products.

Now, let’s talk tech specs for the D1 Mini.

The D1 Mini is a 4MB flash controller based on the ESP8266 chip. It includes 11 digital input/output pins (I/O) each with an interrupt, PWM, I2C (except D0). There’s also 1 analog pin (A0). It’s compatible with Arduino, NodeMCU, and MicroPython. And, it also has a built-in Micro USB port, which you can use for power or download programs.

Related Article: How to use Dweet.io with Wemos D1 Mini (Arduino Tutorial)

The controller weighs only 3g and has a very small footprint at 34.2mm long by 25.6mm wide. There is also an assortment of “shields” compatible with the Wemos, which are neat if you’re looking to create a rapid prototype.

Lastly, the Wemos D1 Mini is very affordable ($5-$10 per controller). You can find them on Amazon, Aliexpress, or Banggood for exceptionally good prices. If you are based out of the US, I recommend getting your Wemos from Amazon, or you’ll be waiting anywhere from 20-50 days to save $5. Depending on your scenario, it may or may not be worth the wait from Aliexpress or Banggood.

Now that we’ve spoken a bit about the Wemos D1 Mini, let’s review the tech specs for the NodeMCU.

NodeMCU Technical Overview

The NodeMCU chip is marketed as an “open-source, interactive, programmable, low cost, WiFi-enabled” controller. You can access the API documentation here.

The controller has 10 GPIO pins that can be PWM, I2C, or 1-wire. There’s also a built-in ADC for your analog devices. The NodeMCU has a slightly longer footprint than the Wemos D1 Mini at 48.0mm long by 23.88mm wide. And, it weighs about 50g vs the 3g of the Wemos D1 mini.

Sale

Lastly, the NodeMCU is slightly more expensive than the Wemos D1 mini at about $8 per chip. But, like the Wemos, the NodeMCU can be bought at Amazon, Aliexpress, and Banggood.

Related Article: NodeMCU, dweet.io, & Freeboard.io Tutorial for IoT

Another thing to note about the NodeMCU is that the GPIO PINs are referenced differently than the I/O pins in software. Therefore, GPIO5 is not pin 5 in the code. It’s pin D1. (Refer to the pinout diagram above.)

Technology is forever changing

I was recently informed about the upgraded ESP32 chip on some NodeMCU’s. (Shoutout to Javier Corado for mentioning this on Facebook!) This chip provides a much better spec in comparison to the ESP8266 (and for about the same price).

If you plan on using the NodeMCU, I recommend checking out the version with an ESP32.

  • Small Footprint
  • Lower Cost ~ $5/ea
  • 11X GPIO (multi-purpose)
  • Programmable with Arduino, NodeMCU, and MicroPython
  • Not programmable with Lua
  • Pins aren’t aligned with breadboard
  • Programmable with Arduino, MicroPython, and Lua
  • LOTS of documentation + API
  • ESP32 Version with enhanced specs
  • Larger Footprint & Weight
  • Affordable, A few dollars more ~$8/ea
  • 10X GPIO (multi-purpose)
  • Reference I/O in code not GPIO

Related Article: WeMos WiFi Controlled Robot using L298N

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

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

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

Шаг 2

Устанавливаем Git (клиентское приложение для работы с онлайн-репозиторием контроля версий исходного кода) https://git-scm.com/download/win.

Шаг 3

Устанавливаем Python (среда для скриптового языка Python). Нужна версия из бранча 2.7 и берем ее с сайта python.org. С более свежей, 3-й веткой, работать, скорее всего, не будет.

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

Шаг 4

Скачиваем и устанавливаем драйвер по статье на нашем сайте.

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

Шаг 5

Устанавливаем утилиты для компиляции исходных кодов для EPS8266 и описания платы для Arduino IDE

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

git clone https://github.com/esp8266/Arduino.git esp8266

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

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

C:\Program Files (x86)\Arduino\hardware\esp8266com\

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

python get.py

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

Шаг 6

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

git clone https://github.com/wemos/D1_mini_Examples.git

Директорию для закачки примеров необходимо выбирать ту, где сами примеры и располагаются на вашем ПК. В моем случае, это оказалась директория в папке 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 завершена. Если что-то не работает или работает как-то не так, необходимо попробовать пройти все шаги еще раз, внимательно относясь к каждому из них.

Прошивки для esp8266 NodeMcu

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

  • Подключение к Wi-Fi точке доступа;
  • Работа в роли Wi-Fi точки доступа;
  • Переход в режим глубокого сна для уменьшения потребления энергии;
  • Включение или выключения светодиода на выходе GPIO16;
  • Выполнение различные операции с файлами во флэш-памяти;
  • Поиск открытой Wi-Fi сети, подключение к ней;
  • Вывод MAC адреса;
  • Управление пользовательскими таймерами.

Для программирования NodeMCU можно использовать Arduino IDE или комплекс средств разработки SDK – ESPlorer. Этот комплекс обладает рядом отличий:

  • Он может работать на множестве различных платформ;
  • Обладает поддержкой нескольких открытых файлов;
  • Позволяет подсвечивать код языка Lua;
  • Возможность умной отправки файлов;
  • Возможность поддержки нескольких видов прошивки одновременно.

Для обеспечения корректной и стабильной работы нужно обновить прошивку до последней версии. Существует несколько способов обновления – облачный сервис, Docker Image и компилирование в Linux. Каждый из этих способов обладает своими плюсами и минусами. Наиболее простым и понятным является первый способ.

Сбор прошивки в облачном сервисе

После начала сборки придет письмо на почту, сигнализирующее о начале запуска процесса. Через некоторое время придет и второе письмо – будет предложено выбрать версию float (дробные числа) или integer (целые числа).

После перехода по полученной ссылке нужно будет скачать файл bin и поместить его в Resources – Binaries. Там будет расположен файл nodemcu_integer_0.9.5_20150318.bin, который нужно удалить. В итоге содержимое папки будет выглядеть следующим образом.

Обновление прошивки Node Mcu

Для правильной и стабильной работы платы требуется перезаписать esp_init_data_default.bin. Скачать его можно на официальном сайте. Нужный файл нужно поместить снова в систему для прошивки NodeMCU Flasher по пути Resources – Binaries, предварительно удалив из него старый файл.

Затем можно подключать  NodeMCU и приступить к обновлению. Для начала нужно поменять настройки – в NodeMCU Flasher во вкладке Config нужно выбрать файл собранной прошивки вместо INTERNAL://NODEMCU.

Остальное оставить без изменений, перейти на Operations и нажать Flash. Как только окончится прошивка, нужно снова перейти на Config и в первой строке указать путь esp_init_data_default.bin. Также дополнительно указывается адрес, куда нужно переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. После этого нужно снова вернуться на Operations и нажать Flash.

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

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

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

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

Распиновка плат WeMos отличается от Ардуино, поэтому важно проверить в коде константы с номерами пинов. Для устройств WeMos контакт, к которому подключается, задается не просто номером, а с указанием, цифровой пин(D1) или нет(1)

Для мигания используется скетч Blink.ino, который можно установить с архива https://github.com/wemos/D1_mini_Examples/archive/master.zip.

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

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

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

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

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

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

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

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

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

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

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

How to pick the better controller

I recommend choosing your controller based on the application. Some considerations might be space (footprint), weight requirements, number of I/O required, available libraries, the language you want to write in, etc.

If you’re looking for a small footprint, the Wemos D1 Mini is a clear winner. However, if you want to script in Lua, you may want to choose the NodeMCU.

Better is relative

Both of these controllers can handle very similar projects. I think the biggest deciding factor is not which one is better, but which one do you prefer. In this scenario, it’s a lot like choosing a sedan. Do you like Toyota Corollas or Honda Civics? Both provide reliability and roughly the same features for a similar price. It all comes down to which brand or model do you like better.

And in case you’re wondering, I’m team Wemos D1 Mini all the way. I’m sure this could change in the future, but I’ve enjoyed creating projects in such a small footprint! Feel free to read my Wemos tutorials out here.

So with all that said, what controller do you like better? Wemos D1 mini or NodeMCU? Drop a comment below, and feel free to link to your project using either device!

ESP8266EX и WeMos

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

А с другой стороны, стоимость чипа неимоверно низкая (к 2016 году цена опустилась вдвое).

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

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

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

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

Что же до компании Wemos. Получить внятную информацию о самой компании мне так и не удалось. Известно только, что она китайская, продает свою продукцию, в том числе, и через фирменный магазин на AliExpress, зарегистрирована на GitHub в 2014 году, аккурат в момент выпуска описываемого чипа. По слухам, какая-то команда разработчиков, учувствовавшая в другом проекте, организовала WeMos и наладила выпуск плат. Но какого-либо подтверждения я так найти и не смог. В общем — полная анонимность J, даже номера телефона на сайте нет.

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

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

  • 80 MHz 32-bit процессор Tensilica Xtensa L106 . Возможен негарантированный разгон до 160 МГц.
  • IEEE 802.11 b/g/n Wi-Fi. Поддерживается WEPи WPA/WPA
  • 16 портов ввода/вывода, SPI, I2 C, I2 S, UART, 10-bit АЦП.
  • Питание 3,0–3,6 В. Среднее потребление 80 мА. Потребление до 170 мА в режиме передачи, 60 мА в режиме приема, пиковое потребление возможно до 500 мА. Присутствует режим пониженного потребления с сохранением соединения с точкой доступа ~1 мА.
  • Установлена Flash память объемом 4 Мб.

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

Шаг 4: Запускаем код

Теперь давайте рассмотрим пример для Wemos D1 Mini Pro

Обратите внимание, что есть три ключевых компонента, которые вам необходимо включить:

  1. char auth [] = «»; выбирается для вашего проекта (приложение Blynk).
  2. char ssid [] = «»; выбирается для сети к которой мы подключаемся (имя сети). Вы также можете раздавать со своего телефона.
  3. char pass [] = «»; выбирается для сети к которой мы подключаемся (пароль).
#define BLYNK_PRINT Serial
 
#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include <DHT.h> 

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "";
 
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "";
char pass[] = "";
 
#define DHTPIN D4          // What digital pin we're connected to
#define DHTTYPE DHT11     // DHT 11<p>DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
float t;
float h;

void setup()
{
  // Debug console
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  timer.setInterval(1000L, sendSensor);
}
 
void loop()
{
  Blynk.run();
  timer.run();
}
 
 
// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  h = dht.readHumidity();
  t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
//  l = analogRead(LDR);
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}

Подключение 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, и в Файл – Примеры появятся новые коды, которые можно использовать в своих проектах. Чтобы проверить, правильно ли все подключено, можно запустить скетч для мигания светодиодом.

Заключение

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

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

Оцените статью:
Оставить комментарий
Adblock
detector