Оглавление
- Введение
- Работа схемы
- Собираем всё вместе
- Режимы работы ESP8266
- Библиотеки
- Код прошивки
- Шаг 6. Загрузите скетч в Arduino.
- Поиск библиотек
- Файлы библиотек (из чего состоит)
- Подключение библиотеки
- Распиновка esp8266
- Удивительные проекты на Ардуино Уно
- Подготовка bin файлов (Compilation)
- WeMos Mini
- Сборка макетной платы ESP8266
Введение
Эта статья рассказывает о классах, функциях и свойствах библиотеки ESP8266WiFi. Если вы новичок в C++ и Arduino, ничего страшного. Мы начнем с общих концептов и постепенно перейдем к более детальному описанию каждого класса, включая примеры использования.
Функционал библиотеки ESP8266WiFi обширен и разнообразен, поэтому в этой статье мы ограничимся лишь общим описанием классов, а более подробные описания, с примерами и описанием функций, будут выведены в отдельные статьи.
Быстрый старт
Надеемся, вы уже знаете, как загрузить на ESP8266 скетч «Blink.io» и управлять миганием светодиода. Если нет, ознакомьтесь с этим руководством о HUZZAH ESP8266 или этим руководством о ESP8266 Thing.
Чтобы подключить ESP8266 к WiFi (как мобильный телефон к точке доступа), потребуется вот такой код:
1 #include <ESP8266WiFi.h> 2 3 void setup() 4 { 5 Serial.begin(115200); 6 Serial.println(); 7 8 WiFi.begin("network-name", "pass-to-network"); 9 10 Serial.print("Connecting"); // "Подключение" 11 while (WiFi.status() != WL_CONNECTED) 12 { 13 delay(500); 14 Serial.print("."); 15 } 16 Serial.println(); 17 18 Serial.print("Connected, IP address: "); 19 // "Подключились, IP-адрес: " 20 Serial.println(WiFi.localIP()); 21 } 22 23 void loop() {}
В строчке WiFi.begin(«network-name», «pass-to-network») вместо network-name и pass-to-network впишите название и пароль к WiFi-сети, к которой вы хотите подключиться. Затем загрузите скетч на ESP8266 и откройте монитор порта. В нем будет примерно следующее:
Как это работает? В первой строчке мы пишем #include <ESP8266WiFi.h>, подключая к скетчу библиотеку ESP8266WFi. Она нужна нам, т.к. содержит функции, с помощью которых ESP8266 осуществляет подключение к WiFi.
Подключение к WiFi инициализируется вот этой строчкой:
WiFi.begin("network-name", "pass-to-network");
Процесс подключения может занять несколько секунд. Проверка подключения выполняется в этом цикле:
1 while (WiFi.status() != WL_CONNECTED) 2 { 3 delay(500); 4 Serial.print("."); 5 }
Цикл while() будет прокручивать функцию WiFi.status() до тех пор, пока она не вернет значение WL_CONNECTED. Другими словами, этот цикл завершится только тогда, когда статус WiFi-подключения поменяется на WL_CONNECTED.
Последняя строчка печатает IP-адрес, который DHCP присвоил ESP8266:
Serial.println(WiFi.localIP());
Если в мониторе порта вместо строчки с IP-адресом появляется лишь все больше и больше точек, то это значит, возможно, что вы указали неправильные название сети или пароль к ней. Проверить название и пароль можно, подключившись к этой WiFi-сети с помощью компьютера или смартфона.
Примечание: Если соединение было установлено, а потом по какой-то причине потеряно, то ESP8266 автоматически переподключится к последней рабочей точке доступа, когда она снова будет доступна. Это будет выполнено автоматически самой WiFi-библиотекой, без вмешательства пользователя.
Вот и все, что нужно для подключения ESP8266 к WiFi. Ниже мы расскажем о том, на что способен ESP8266, будучи уже подключенным к WiFi-сети.
Кто есть кто
Устройства, подключаемые к WiFi-сети, называются станциями (STA). Подключение к WiFi предлагает точка доступа (AP, что значит «access point»), которая служит хабом для одной или нескольких станций. Сама точка подключена к проводной сети. Точка доступа, как правило, интегрирована с роутером, что обеспечивает доступ из WiFi-сети к интернету. Каждая точка доступа имеет SSID (что значит «Service Set IDentifier», что можно перевести как «идентификатор служебного устройства»), который является, в сущности, названием сети, которую вы выбрали при подключении устройства (станции) к WiFi.
Библиотека ESP8266WiFi содержит большой набор функций и свойств языка C++, используемых для настройки и поддержания ESP8266 в режиме станции и/или программной точки доступа. Все они будут описаны ниже.
Работа схемы
Схема устройства представлена на следующем рисунке.
Примечание: чтобы видеть ответы модуля ESP8266 на поступающие команды откройте монитор последовательного порта (Serial Monitor) в программной среде Arduino IDE.
В программе первым делом нам необходимо будет соединить наш Wi-Fi модуль с Wi-Fi роутером чтобы подключить Wi-Fi модуль к сети интернет. Затем мы должны сконфигурировать локальный сервер, передать данные на веб-страницу и закрыть соединение. Для этого нам необходимо выполнить следующую последовательность действий:
1. Сначала нам необходимо произвести тест Wi-Fi модуля при помощи передачи ему AT команды, он должен ответить OK.
2. После этого мы должны выбрать необходимый режим работы с помощью команды AT+CWMODE=mode_id , мы будем использовать Mode id =3. Полный же список доступных режимов выглядит следующим образом:
1 = Station mode (client) (режим станции, клиента)
2 = AP mode (host) (режим базовой станции, хоста)
3 = AP + Station mode (Yes, ESP8266 has a dual mode!) (режим станции + хоста – модуль ESP8266 поддерживает этот двойной режим).
3. Затем мы должны отсоединить наш Wi-Fi модуль от прежней Wi-Fi сети с помощью команды AT+CWQAP поскольку модуль ESP8266 по умолчанию автоматически соединяется с предыдущей использованной сетью Wi-Fi.
4. После этого можно сбросить модуль командой AT+RST – это необязательный шаг.
5. После этого мы должны соединить модуль ESP8266 с Wi-Fi роутером с помощью команды:AT+CWJAP=”wifi_username”,”wifi_password”.
6. После этого мы должны получить IP адрес с помощью команды AT+CIFSR, которая вернет нам IP адрес.
7. После этого нам необходимо задействовать режим мультиплексирования с помощью команды AT+CIPMUX=1 (1 для соединения с мультиплексированием и 0 для одиночного соединения).
8. Теперь сконфигурируем ESP8266 как сервер с помощью команды AT+CIPSERVER=1,port_no (port может быть 80). Теперь наш Wi-Fi готов. В представленной команде ‘1’ используется для создания сервера и ‘0’ для удаления сервера.
9. Теперь с помощью соответствующих команд можно передавать данные на созданный локальный сервер:AT+CIPSEND =id, length of data
Id = ID no. of transmit connection (номер соединения)
Length = Max length of data is 2 kb (максимальная длина данный 2 Кбайта).
10. После передачи ID (номера, идентификатора) и Length (длины данных) на сервер мы можем передавать данные, к примеру: Serial.println(“circuitdigest@gmail.com”);
11. После передачи данных нам необходимо закрыть соединение с помощью команды:AT+CIPCLOSE=0
После этого данные будет переданы на локальный сервер.
12. Теперь вы можете набрать IP адрес в строке адреса вашего браузера и нажать Enter. После этого вы увидите переданные данные на веб-странице.
Все описанные шаги можно более наглядно посмотреть в видео в конце статьи.
Собираем всё вместе
На приведенной ниже схеме показаны соединения, необходимые для ESP-01, а на фотографиях показан завершенный макет на беспаечной макетной плате. Цвета проводов на схеме соответствуют цветам проводов на фотографиях.
Соберите макет, как показано на рисунке, но не подключайте кабель USB-TTL конвертера к компьютеру, пока не установите перемычку на плате конвертера в положение 3,3В, и дважды перепроверьте правильность всех соединений. Использование 5В для питания ESP-01 может вывести модуль из строя, после чего тот не будет подлежать ремонту.
Схема подключения модуля ESP-01 к компьютеруМакет подключения модуля ESP-01 к компьютеру (вид сверху)Макет подключения модуля ESP-01 к компьютеру (вид спереди)Макет подключения модуля ESP-01 к компьютеру (вид сзади)
Для сборки макета вам может понадобиться дополнительная информация:
- USB-TTL конвертер, показанный на фотографиях, использует UART микросхему FTDI232 и хорошо работает с операционными системами Windows, Mac и Linux. Он также предоставляет напряжение 3,3В для питания ESP-01. Убедитесь, что перемычка на печатной плате преобразователя установлена в положение 3,3В; что обеспечит как напряжение питания 3,3В, так и правильное напряжение на линии TxD. Использование более высокого напряжения может повредить ESP-01.
- Независимо от того, какой USB-TTL конвертер вы решите использовать, он должен быть проверен перед использованием с ESP-01. Драйвера устройств на FTDI можно найти на сайте FTDI.
- Величина тока, необходимого для ESP-01 во время работы Wi-Fi, варьируется от 250 мА до 750 мА. Ток, поставляемый USB-TTL преобразователем, должен быть достаточным для программирования ESP-01, но может оказаться недостаточным для длительного использования. Лучшим выбором является стабилизированный источник постоянного напряжения 3,3В, рассчитанный на ток 1 А и выше.
- Выводы DTR и CTS USB-TTL конвертера остаются неподключенными.
- Два коммутатора на схеме – это нормально разомкнутые однополюсные кнопки.
- Одним из расхождений в доступных источниках информации об ESP-01 является то, должен ли CH_PD быть подключен к +3,3В напрямую или через подтягивающий резистор 10 кОм. Автор протестировал оба способа, и оба они работают. После того, как вы собрали и проверили схему, как показано здесь (с CH_PD, подключенным к +3,3В напрямую), попробуйте использовать подключение через резистор 10 кОм. Если схема работает с подтягивающим резистором 10 кОм, то оставьте его в схеме.
Как видите на приведенных выше фотографиях, использование свободных проводов от USB-TTL конвертера не оптимально. Лучшим вариантом является замена шести загнутых выводов разъема конвертера на шесть прямых выводов на нижней части печатной платы. Эта модификация позволит устанавливать преобразователь USB-TTL непосредственно в беспаечную макетную плату, что приведет к значительно более аккуратной и менее хрупкой сборке макета, как показано на фотографии ниже.
Альтернативная сборка макета подключения ESP-01 к компьютеру
Режимы работы ESP8266
Одна из важнейших функций, которую обеспечивает ESP8266, заключается в том, что он может не только подключаться к существующей Wi-Fi сети и работать в качестве веб-сервера, но он также может устанавливать собственную сеть, позволяя другим устройствам подключаться непосредственно к нему и получать доступ к веб-страницам. Это возможно, потому что ESP8266 может работать в трех разных режимах: режим станции, режим точки доступа и оба первых режима одновременно. Это обеспечивает возможность построения ячеистых сетей.
Режим станции (STA)
ESP8266, который подключается к существующей сети W-iFi (созданной вашим беспроводным маршрутизатором), называется станцией (Station, STA).
Рисунок 2 – Демонстрация режима Station ESP8266 NodeMCU
В режиме STA ESP8266 получает IP адрес от беспроводного маршрутизатора, к которому подключен. С этим IP адресом он может настроить веб-сервер и выдавать веб-страницы на все подключенные к существующей Wi-Fi сети устройства.
Режим точки доступа (AP)
ESP8266, который создает свою собственную сеть Wi-Fi и действует как концентратор (точно так же как маршрутизатор Wi-Fi) для одной или нескольких станций, называется точкой доступа (Access Point, AP). В отличие от Wi-Fi роутера, он не имеет интерфейса к проводной сети. Такой режим работы называется Soft Access Point (soft-AP). Максимальное количество станций, которые могут к нему подключиться, ограничено пятью.
Рисунок 3 – Демонстрация режима Soft Access Point ESP8266 NodeMCU
В режиме AP ESP8266 создает новую сеть Wi-Fi и устанавливает для нее SSID (имя сети) и присваивает себе IP адрес. По запросу на этот IP адрес он может выдавать веб-страницы всем подключенным к этой сети устройствам.
Библиотеки
Чтобы управлять OLED-дисплеем, вам нужно установить в IDE Arduino библиотеку «esp8266 oled ssd1306». Для этого сделайте следующее:
- Распакуйте этот ZIP-архив. В результате у вас должна появиться папка под названием «esp8266-oled-ssd1306-master».
- Переименуйте ее на «esp8266_oled_ssd1306».
- Переместите папку «esp8266_oled_ssd1306» в папку «libraries» IDE Arduino.
- Перезапустите IDE Arduino.
Кроме того, нам нужно будет измерять температуру, для чего понадобится датчик DHT11, а для работы с этим датчиком – библиотека «DHT_sensor_library». Чтобы установить ее, сделайте следующее:
- Распакуйте этот ZIP-архив. В результате у вас должна появиться папка под названием «DHT-sensor-library-master».
- Переименуйте ее на «DHT_sensor_library» (все верно, тире нужно поменять на нижние подчеркивания)
- Переместите папку «DHT_sensor_library» в папку «libraries» IDE Arduino.
- Перезапустите IDE Arduino.
Код прошивки
Для прошивки всех используемых ниже модулей используем один и тот же код.
Основные функции:
-
Установка Wi-Fi соединения
-
Подключение к объекту на платформе Rightech IoT Cloud по протоколу MQTT
-
Отправка рандомных значений по температуре («base/state/temperature») и влажности («base/state/humidity») каждые 5 секунд (PUB_DELAY)
-
Получение сообщений о переключении света («base/relay/led1»)
Работоспособность кода будем проверять на платформе Rightech IoT Cloud, именно поэтому в качестве адреса MQTT-брокера указан dev.rightech.io. Идентификаторами клиентов служат идентификаторы объектов, созданных на платформе. Под каждую проверку я завела на платформе отдельный объект, именно поэтому во всех скринах кодов, которые будут далее представлены, отличается только строка <ric-mqtt-client-id>.
Прим. — Можно подключаться и к одному и тому же объекту, тогда можно использовать один и тот же код для прошивки всех плат без изменений, однако следите, чтобы в таком случае платы не подключались к одному и тому же объекту одновременно, иначе случится коллизия.
Шаг 6. Загрузите скетч в Arduino.
Скетч загружается в Arduino обычным способом. Однако из за того что модуль ESP8266 подключен к контактам 0 и 1, программирование становится невозможным. Компилятор будет показывать ошибку.
Перед программированием отсоедините провода идущие к ESP8266 от контактов 0 и 1. Произведите программирование. Затем верните контакты на место. Нажмите кнопку сброса Arduino.
Примечание: Первый признак того, что программирование прошло успешно, это мерцание синего светодиода на модуле ESP8266 в течении полсекунды сразу после сброса. Мерцание синего светодиода означает обмен данными между Arduino и ESP8266. В эти полсекунды Arduino производит настройку ESP8266 для работы в качестве точки доступа.
Поиск библиотек
Искать библиотеки можно вручную или через среду разработки Ардуино IDE (Integrated development environment).
Переходим в меню среды:
Скетч -> Подключить библиотеку -> Управлять библиотеками
Выглядите это так:
Мы откроем «Менеджер библиотек», о котором мы говорили выше.
Здесь мы увидим поле поиска и два выпадающих меню с названиями Тип и Тема. Введя в поисковое поле нужное название библиотеки нам Менеджер покажет подходящие варианты библиотек.
Выбираем библиотеку и видим появления кнопок Версия и Установка:
Далее жмем Установка и потом уже подключаем библиотеку в скетч нашего проекта:
Файлы библиотек (из чего состоит)
Итак, перед тем как начать пользоваться методами и функциями библиотеки, её нужно:
- скачать (загрузить на Ваш компьютер),
- установить (разместить в нужной папке),
- подключить (вставить текст в скетч).
Каждая библиотека должна содержать 2 файла с расширениями .h и .cpp.
Файлы первого типа (.h) содержат:
- описание класса,
- константы,
- переменные.
Второй тип (.cpp) содержит коды методов.
Дополнительно нужно понимать, что файлы .h и .cpp могут не лежать в корне скачанного архива.
Примечание. С основными файлами также могут идти «keywords.txt» и папка с примерами («examples»).
library.properties (файл) — файл с информацией о библиотеке для менеджеров библиотек и различных агрегаторв. Данный файл содержит:
- название,
- версия,
- автор,
- категория
- и т.д.
src (папка) — в ней находятся основные файлы библиотеки — .h, .cpp, .c.
examples (папка) – здесь находятся примеры использования библиотеки.
Подключение библиотеки
Подключить любую библиотеку можно одной командой:
<файл.h> – это и есть имя той библиотеки, которую вы хотите подключить.
Например, в статье Wi-Fi WebServer на WeMos D1 R2 мы подключаем библиотеку ESP8266WiFi.h следующим образом:
Дополнительные примеры подключения библиотек:
Кроме того, есть вариант размещения библиотеки в одной папке проекта со скетчем, т.е. файл библиотеки располагается рядом с файлом .ino.
Тогда для подключения библиотеки мы используем кавычки:
В таком варианте подключения компилятор сперва проверит наличие библиотеки в паке со скетчем. Такой вид подключения нужен только в том случае, если в код библиотеки вносятся изменения, необходимые только для этого проекта.
Но важно понимать — такой способ не подходит для библиотек со множеством файлов
Распиновка esp8266
Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.
Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.
Распиновка для ESP01 изображена на картинке.
Описание контактов:
1 – земля, 8 – питание
По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
7 и 0 – RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
3 – GPIO2, порт ввода и вывода.. Распиновка ESP-12
Распиновка ESP-12
Основные отличия Ардуино от ESP8266
- ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
- Процессор ESP8266 быстрее, чем у Ардуино;
- Наличие Wi-Fi у ESP8266;
- ESP8266 потребляеn больше тока, чем для Ардуино;
Удивительные проекты на Ардуино Уно
Большинство профессионалов в сфере разработки электронных проектов на Аrduino uno любят экспериментировать. Вследствие этого появляются интересные и удивительные устройства, которые рассмотрены ниже:
- Добавление ИК-пульта в акустическую систему. В бытовой электронике пульт дистанционного управления является компонентом электронного устройства, такого как телевизор, DVD-плеер или другой бытовой прибор, используемый для беспроводного управления устройством с короткого расстояния. Пульт дистанционного управления, в первую очередь, удобен для человека и позволяет работать с устройствами, которые не подходят для непосредственной работы элементов управления.
- Будильник. Часы реального времени используются для получения точного времени. Здесь эта система отображает дату и время на ЖК-дисплее, и мы можем установить будильник с помощью кнопок управления. Как только время сигнала тревоги наступит, система подает звуковой сигнал.
-
Шаговый двигатель. Шаговый двигатель означает точный двигатель, который можно поворачивать на один шаг за раз. Такое устройство делают с помощью робототехники, 3D-принтеров и станков с ЧПУ.- Для этого проекта возьмите самый дешевый шаговый двигатель, который вы можете найти. Двигатели доступны в режиме онлайн. В этом проекте используется шагомер 28byj-48, который подходит для большинства других подобных проектов. Его легко подключить к плате Arduino.
— Вам понадобятся 6 кабелей с разъемами типа «женщина-мужчина». Вам просто нужно подключить двигатель к плате, и все! Вы также можете добавить небольшую часть ленты на вращающуюся головку, чтобы увидеть, что она производит вращательные движения. - Ультразвуковой датчик расстояния. В этом проекте используется популярный ультразвуковой датчик HC-SR04, чтобы устройство могло избежать препятствий и двигаться в разных направлениях.
Когда вы закончите работу, на экране появится результат ваших действий. Чтобы все было просто и понятно, рекомендуется использовать ЖК-дисплей с конвертером I2C, поэтому вам нужно всего лишь 4 кабеля для подключения к плате Arduino.
Подготовка bin файлов (Compilation)
Иногда случаются ситуации, когда под рукой нет нужного DevKit для компиляции и upload проекта. Это самый правильный вариант формирования нужных bin файлов проекта.
В этом случае можно скомпилировать бинарники без upload, а затем добавить нужные bin файлы bootloader_ {flash_mode}_{flash_freq}.bin и boot_app0.bin. В идеале если ранее уже выполнялся upload и есть информация о том, какие бинарные файлы нужны для загрузки, адреса загрузки и сами bin файлы boot_app0.bin и bootloader_ bootloader_ {flash_mode}_{flash_freq}.bin уже есть в наличии. Если нужных бинарников нет после выполнения upload, то можно попробовать взять их в SDK.
Например, для примера с flash_mod=dio и flash_freq=80 файл bootloader_dio_80m.bin находится в папке:
C:\Users\\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1\tools\sdk\bin
Файл boot_app0.bin можно взять в папке:
C:\Users\\Documents\ArduinoData\packages\esp32\hardware\esp32\1.0.1\tools\partitions
Для компиляции используется следующая последовательность:
- Включить детализацию upload Arduino IDE: File -> Preferences -> Show verbose output during: -> Compilation.
- Запустить компиляцию (Compilation) скетча на DevKit board с помощью Arduino IDE.
- В логах найти строчку с нужными бинарниками проекта {SKETCH_NAME}.ino.bin и {SKETCH_NAME}.ino.partitions.bin:
"C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.2/tools/gen_esp32part.exe" -q "C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.2/tools/partitions/default.csv" "C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Temp\\arduino_build_898429/{SKETCH_NAME}.ino.partitions.bin" "C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\esptool_py\\2.6.1/esptool.exe" --chip esp32 elf2image --flash_mode dio --flash_freq 80m --flash_size 4MB -o "C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Temp\\arduino_build_898429/{SKETCH_NAME}.ino.bin" "C:\\Users\\{YOUR_NAME}\\AppData\\Local\\Temp\\arduino_build_898429/{SKETCH_NAME}.ino.elf" esptool.py v2.6
Отправить все бинарники на удаленную сторону.
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 – шилд питания.
Сборка макетной платы ESP8266
ESP8266 – недорогой SoC-чип со встроенным микроконтроллером и полным стеком протоколов TCP/IP, что означает, что он может напрямую обращаться к вашей Wi-Fi сети.
Поскольку у этого чипа есть свой микроконтроллер, вы можете поместить в него код своего приложения или можете использовать модуль просто как Wi-Fi приемопередатчик, что мы и собираемся сделать в данном проекте. Более эффективно было бы использовать этот модуль и как приемопередатчик, и как контроллер, но в целях обучения мы будем взаимодействовать с модулем, используя Arduino.
Чип ESP8266 поставляется в разных модулях. Мы будем использовать модуль ESP-01. Конечно, вы можете использовать любой другой модуль.
Во-первых, вы должны знать, что модуль работает с напряжением 3,3 В, и напряжение высокого логического уровня от Arduino должно быть таким же, чтобы не повредить наш модуль. Для этого требуется преобразователь уровня напряжения между платой Arduino (которая работает на 5 В) и модулем. Хорошей новостью является то, что в преобразователе будет нуждаться только вывод для передачи на Arduino, поскольку приемный вывод обычно распознает логические сигналы с напряжением 3,3 В от ESP8266.
Одним из простейших способов выполнения этого преобразования является схема от Sparkfun. Вы можете заказать готовый модуль.
Преобразователь уровня 5В → 3,3В
На рисунке ниже показана распиновка нашего модуля на ESP8266:
Распиновка Wi-Fi модуля ESP8266 (вид сверху, не в масштабе)
Вывод | Назначение |
---|---|
UTXD | Передача данных через UART |
URXD | Прием данных через UART. Выход, к которому он подключается, должен быть 3,3 В. |
CH_PD | Выключение: низкий уровень на входе выключает чип, высокий уровень на входе включает его; для нормальной работы модуля необходимо подтянуть его к линии питания. |
GPIO0 | При загрузке: должен быть высокий уровень, чтобы входить в нормальный режим загрузки; низкий уровень вводит в специальные режимы загрузки. |
GPIO2 | При загрузке: низкий уровень заставляет загрузчик войти в режим загрузки флеш-памяти; высокий уровень вызывает нормальный режим загрузки. |
RST | Сброс; активный уровень – низкий. |
GND | Земля. |
VCC | Питание/3,3В. |
Я использовал LM317, настраиваемый линейный регулятор напряжения с выходным током до 1,5 А, для обеспечения модуля подходящим источником питания 3,3 В.
Примечание: Не используйте вывод 3,3 В от Arduino, так как стабилизатор напряжения 3,3 В на плате Arduino не может обеспечить необходимую для модуля величину тока, особенно при пиковом потреблении энергии во время передачи.
Принципиальная схема макетной платы ESP8266
Я использовал BS170 (вместо BSS138) для преобразователя логических уровней; оба работают хорошо.
Макетная плата ESP8266
Теперь вы можете подключить свой модуль к компьютеру, используя USB-TTL преобразователь, и испытать его.