WiFi протоколы: | 802.11 b/g/n |
---|---|
Частотный диапазон: | 2,4ГГц–2,5ГГц (2400М–2483,5М) |
Периферийные шины: | UART/HSPI/I2C/I2S/инфракрасный интерфейс удаленного управления |
Рабочее напряжение: | 3,0 – 3,6 В |
Рабочий ток: | около 80 мА |
Размеры: | 16мм x 24мм x 3мм |
WiFi режим: | станция, программная точка доступа, программная точка доступа + станция |
Безопасность: | WPA/WPA2 |
Шифрование: | WEP/TKIP/AES |
Обновление прошивки: | загрузка через UART / OTA (через сеть) / загрузка и запись прошивки через хост |
Разработка ПО: | поддержка Cloud Server Development / SDK для разработки пользовательских прошивок |
Сетевые протоколы: | IPv4, TCP/UDP/HTTP/FTP |
Пользовательская настройка: | Набор AT команд, Cloud Server, приложение Android/iOS |
WiFi модуль ESP-12E разработан компанией Ai-thinker и построен на базе процессора с ядром ESP8266, отличительной особенностью которого является наличие радиоинтерфейса WiFi. Ядро ESP8266 интегрировано в Tensilica L106 – 32-битный микроконтроллер с ультранизким энергопотреблением. Поддержка тактовых частот 80 и 160 МГц, поддержка RTOS, встроенные Wi-Fi MAC/BB/RF/PA/LNA, микрополосковая антенна на плате модуля.
Модуль поддерживает стандарт IEEE802.11 b/g/n, полный стек TCP/IP протоколов. Пользователи могут использовать модули либо в качестве дополнения для подключения какого-либо устройства к сети, либо в качестве отдельного сетевого контроллера.
MCU
ESP8266EX встроен в 32-битный микроконтроллер (MCU) Tensilica L106, который отличается ультранизким энергопотреблением 16-битной RISC архитектурой. Тактовая частота CPU составляет 80 МГц. Также она может достичь максимального значения 160 МГц.
ESP8266EX часто интегрируется с внешними датчиками и другими специальными устройствами через его выводы GPIO; код для подобных приложений поставляется в примерах в SDK.
Внутренние SRAM и ROM.
Однокристальная WiFi система ESP8266EX встраивается вместе с контроллером памяти; включая SRAM и ROM. MCU может обращаться к памяти через интерфейсы iBus, dBus и AHB.
Согласно текущей версии SDK, пользователю доступно следующее пространство памяти: Размер RAM < 36 Кбайт, то есть, когда ESP8266EX работает в режиме клиентской станции и подключен к роутеру, программируемое пространство, доступное пользователю в куче и секции data, составляет около 36 Кбайт;
в однокристальной системе нет программируемой памяти ROM; пользовательская программа должна храниться во внешней SPI флеш-памяти.
Внешняя SPI флеш-память
В модуль для хранения пользовательских программ установлена внешняя SPI флеш-память размером 4 Мбайта. Если необходимо больший объем, то необходимо установить флеш-память большего размера. Теоретически, поддерживается емкость до 16 Мбайт.
Предполагаемая емкость SPI флеш-памяти:
OTA выключено: минимальный размер флеш-памяти, который будет поддерживаться, составляет 512 Кбайт;
OTA включено: минимальный размер флеш-памяти, который будет поддерживаться, составляет 1 Мбайт; Поддерживается несколько SPI режимов, в том числе, Standard SPI, Dual SPI и Quad SPI.
Перед загрузкой во флеш-память выбирайте правильный SPI режим, иначе прошивки/программы, которые вы загрузили, могут работать неправильно.
Привет Хабр. Тема ESP8266, как и IoT(интернет вещей), всё больше набирает популярности, и уже Arduino подхватывает инициативу — добавляя эти Wi-Fi модули в список поддерживаемых плат.
Но как же его подключить к ардуино? И возможно как-то обойтись вообще без ардуино? Сегодня именно об этом и пойдёт речь в этой статье.
Забегая наперёд, скажу, что будет вторая статья, уже более практическая, по теме прошивки и программирования модуля ESP8266 в среде разработки Arduino IDE. Но, обо всём по порядку.
Этот видеоролик, полностью дублирует материал, представленный в статье.
На данный момент, существует много разновидностей этого модуля, вот некоторые из них:
А вот распиновка ESP01, ESP03, ESP12:
* Данную картинку можно посмотреть в хорошем качестве на офф. сайте pighixxx.com.
Лично мне, больше всего нравится версия ESP07. Как минимум за то, что тут есть металлический экран (он защищает микросхемы от внешних наводок, тем самым обеспечивает более стабильную работу), своя керамическая антенна, разъём для внешней антенны. Получается, подключив к нему внешнюю антенну, например типа биквадрат, то можно добиться неплохой дальности. К тому же, тут есть немало портов ввода вывода, так называемых GPIO(General Purpose Input Output — порты ввода-вывода общего назначения), по аналогии с ардуино — пинов.
Давайте вернёмся к нашим баранам Wi-Fi модулям и Arduino. В этой статье, я буду рассматривать подключение ESP8266(модели ESP01) к Arduino Nano V3.
Но, данная информация будет актуальна для большинства модулей ESP8266 и так же разных Arduino плат, например самой популярной Arduino UNO.
Пару слов по ножкам ESP01:
Vcc и GND(на картинке выше это 8 и 1) — питание, на ножку Vcc можно подавать, судя по документации, от 3 до 3. 6 В, а GND — земля (минус питания). Я видел, как один человек подключал этот модуль к двум AA аккумуляторам (напряжение питания в этом случае было примерно 2.7 В) и модуль был работоспособным. Но всё же разработчики указали диапазон напряжений, в котором модуль должен гарантированно работать, если вы используете другой — ваши проблемы.
Внимание! Этот модуль основан на 3.3 В логике, а Arduino в основном — 5 В логика. 5 В запросто могут вывести из строя ESP8266, потому на него нужно отдельно от ардуино подавать питание
.— На моей ардуинке есть ножка, где написано 3.3 В, почему бы не использовать её?
Наверное подумаете вы. Дело в том, что ESP8266 довольно таки прожорливый модуль, и в пиках может потреблять токи до 200 мА, и почти никакая ардуинка по умолчанию не способна выдать такой ток, разве что исключением является Arduino Due, у которой ток по линии 3.3 В может достигать 800 мА, чего с запасом хватит, в других же случаях советую использовать дополнительный стабилизатор на 3. 3 В, например AMS1117 3.3 В. Таких валом как в Китае, так и у нас.
Ножка RST 6 — предназначена «железной» для перезагрузки модуля, кратковременно подав на неё низкий логический уровень, модуль перезагрузиться. Хоть и на видео я этим пренебрёг, но всё же вам советую «прижимать» данную ногу резистором на 10 кОм к плюсу питания, дабы добиться лучшей стабильности в работе модуля, а то у меня перезагружался от малейших наводок.
Ножка CP_PD 4(или по-другому EN) — служит, опять же, для «железного» перевода модуля в энергосберегающий режим, в котором он потребляет очень маленький ток. Ну и снова — не будет лишним «прижать» эту ногу резистором на 10 кОм к плюсу питалова. На видео я тупо закоротил эту ногу на Vcc, потому как под рукой не оказалось такого резистора.
Ноги RXD0 7 TXD0 2 — аппаратный UART, который используется для перепрошивки, но ведь никто не запрещает использовать эти порты как GPIO(GPIO3 и GPIO1 соотвественно). GPIO3 на картинке почему-то не размечен, но в даташите он есть:
К стати, к ножке TXD0 2 подключен светодиод «Connect», и горит он при низком логическом уровне на GPIO1, ну или когда модуль отправляет что-то по UART.
GPIO0 5 — может быть не только портом ввода/вывода, но и переводить модуль в режим программирования. Делается это подключив этот порт к низкому логическому уровню(«прижав» к GND) и подав питание на модуль. На видео я делаю это обычной кнопкой. После перепрошивки — не забудьте вытащить перемычку/отжать кнопку(кнопку во время перепрошивки держать не обязательно, модуль при включении переходит в режим программирования, и остаётся в нём до перезагрузки).
GPIO2 3 — порт ввода/вывода.
И ещё один немаловажный момент, каждый GPIO Wi-Fi модуля может безопасно выдавать ток до 6 мА, чтобы его не спалить, обязательно ставьте резисторы последовательно портам ввода/вывода на… Вспоминаем закон Ома R = U/I = 3.3В / 0.006 А = 550 Ом, то есть, на 560 Ом. Или же пренебрегайте этим, и потом удивляйтесь почему оно не работает.
В ESP01 все GPIO поддерживают ШИМ, так что к нашим четырём GPIO, то есть GPIO0-3 можно подключить драйвер двигателя, аля L293 / L298 и рулить двумя двигателями, например катера, или же сделать RGB Wi-Fi приблуду. Да, да, данный модуль имеет на борту много чего, и для простеньких проектов Arduino не нужен, только для перепрошивки. А если использовать ESP07 то там вообще портов почти как у Uno, что даёт возможность уже уверенно обходиться без ардуино. Правда есть один неприятный момент, аналоговых портов у ESP01 вообще нет, а у ESP07 только один, ADC зовётся. Это конечно усугубляет работу с аналоговыми датчиками. В таком случае ардуино аналоговый мультиплексор в помощь.
Всё вроде как по распиновке пояснил, и вот схема подключения ESP8266 к Arduino Nano:
Видите на Arduino Nano перемычка на ножках RST и GND? Это нужно для того, чтобы ардуинка не мешала прошивке модуля, в случае подключения ESP8266 при помощи Arduino — обязательное условие.
Так же если подключаете к Arduino — RX модуля должен идти к RX ардуинки, TX — TX. Это потому, что микросхема преобразователь уже подключена к ножкам ардуино в перекрестном порядке.
Так же немаловажен резистивный делитель, состоящий из резисторов на 1 кОм и 2 кОм (можно сделать из двух резисторов на 1 кОм последовательно соединив их) по линии RX модуля. Потому как ардуино это 5 В логика а модуль 3.3. Получается примитивный преобразователь уровней. Он обязательно должен быть, потому что ноги RXD TXD модуля не толерантные к 5 В.
Ну и можно вообще обойтись без ардуино, подключив ESP8266 через обычный USB-UART преобразователь. В случае подключения к ардуино, мы, по сути, используем штатный конвертер интерфейсов usb и uart, минуя мозги. Так зачем тратиться лишний раз, если можно обойтись и без ардуино вообще? Только в этом случае, мы подключаем RXD модуля к TXD конвертора, TXD — RXD.
Если вам лениво заморачиваться с подключением, возится с резисторами и стабилизаторами — есть готовые решения NodeMcu:
Тут всё значительно проще, воткнул кабель в компьютер, установил драйвера и программируй, только не забывай задействовать перемычку/кнопку на GPIO0 для перевода модуля в режим прошивки.
Ну вот, с теорией наверное всё, статья получилась пожалуй довольно таки большая, и практическую часть, аля прошивка и программирование модуля, я опубликую немного позже.
Я, у себя на ютуб канале, открыл целый плейлист посвящённый моим видео по теме этого Wi-Fi модуля. В планах построили машинку, или лодку, на Wi-Fi управлении, где вместо пульта ДУ будет обычный смарт. Но пока что я к этому ещё не пришёл, так что это всего лишь планы на будущее.
Продолжение этой статьи.
Даташиты на:
ASM1117 3.3 B;
ESP8266EX(микроконтроллер, что стоит в модуле);
Ещё ссылки:
Русскоязычное сообщество по ESP8266;
Схемы рисовал в программе Fritzing;
Почему многие не любят Arduino;
Все мои публикации на geektimes.
By Сергей ПоделкинЦ ака MrПоделкинЦ.
P.S.
Уже на подходе плата на базе esp32:
http://www.pighixxx.com/test/2015/12/esp32-pinout/
Которая значительно круче чем esp8266, так что нас скоро ждёт бум, как мне кажется, темы IoT(интернет вещей).
Это рекомендуемый метод установки для конечных пользователей.
Arduino 1.6.8, получить от Arduino Веб-сайт.
Интернет-соединение
Интерпретатор Python 3 (только для Mac/Linux, для установки Windows предоставляется собственный)
Запустите Arduino и откройте окно настроек.
Войти https://arduino.esp8266.com/stable/package_esp8266com_index.json
в поле Дополнительные URL-адреса диспетчера плат . Вы можете добавить несколько
URL-адреса, разделяя их запятыми.
Откройте Диспетчер досок в меню «Инструменты» > «Плата» и найдите esp8266 . Платформа.
Выберите нужную версию из раскрывающегося списка.
Нажмите кнопку установить .
Не забудьте выбрать плату ESP8266 в меню «Инструменты» > «Плата». после установки.
Для получения дополнительной информации о Arduino Board Manager см.:
https://www.arduino.cc/en/guide/cores
Это рекомендуемый метод установки для участников и библиотеки Разработчики.
Arduino 1.6.8 (или новее, текущая рабочая версия 1.8.5)
гит
Python ≥3.7 (https://python.org)
терминал, консоль или командная строка (в зависимости от вашей ОС)
Интернет-соединение
Удаление любой версии ядра, установленной через Board Manager
Во-первых, убедитесь, что у вас еще не установлена основная версия ESP8266. с помощью Board Manager (см. выше). Если вы это сделаете, удалите его из Совет менеджера, прежде чем продолжить. Также желательно стереть Arduino15 содержание.
Установите git для Windows (если это еще не сделано; см. https://git-scm.com/download/win)
Откройте командную строку (cmd) и перейдите в каталог Arduino по умолчанию. Обычно это альбом для рисования каталог (обычно C:\users\{username}\Documents\Arduino
, где переменная среды %USERPROFILE%
обычно содержит C:\users\{username}
)
Клонируйте этот репозиторий в каталог hardware/esp8266com/esp8266.
cd %USERPROFILE%\Documents\Arduino\ если аппаратное обеспечение mkdir не существует оборудование для компакт-дисков если не существует esp8266com mkdir esp8266com компакт-диск esp8266com клон git https://github.com/esp8266/Arduino.git esp8266
Вы должны получить следующую структуру каталогов в
C:\Users\{ваше имя пользователя}\Documents\
Ардуино | --- библиотеки --- аппаратное обеспечение | --- esp8266com | --- esp8266 | --- загрузчики --- ядра --- документ --- библиотеки --- упаковка --- тесты --- инструменты --- варианты --- платформа. txt --- программисты.txt --- README.md --- доски.txt --- ЛИЦЕНЗИЯ
Инициализировать субмодули
cd %USERPROFILE%\Documents\Arduino\hardware\esp8266com\esp8266 обновление подмодуля git --init
Если в процессе сборки возникают сообщения об отсутствующих файлах, связанных с
SoftwareSerial
, это должно быть связано с тем, что этот шаг был пропущен и является обязательным.
Скачать бинарные инструменты
компакт-диск инструменты python3 get.py
Перезапустите Ардуино
При использовании среды разработки Arduino IDE для Visual Studio (https://www.visualmicro.com/) обязательно щелкните Инструменты — Visual Micro — Повторное сканирование наборов инструментов и библиотек
При последующем обновлении локальной библиотеки перейдите в каталог esp8266 и выполните git pull
cd %USERPROFILE%\Documents\Arduino\hardware\esp8266com\esp8266 статус git git тянуть
Обратите внимание, что теоретически вы можете установить в C:\Program Files (x86)\Arduino\hardware
, однако это имеет последствия для безопасности, не говоря уже о том, что каталог часто сбрасывается при переустановке Arduino IDE. У него есть преимущество (или недостаток, в зависимости от вашей точки зрения) — он доступен для всех пользователей вашего ПК, использующих Arduino.
Во-первых, убедитесь, что у вас еще не установлена основная версия ESP8266. с помощью Board Manager (см. выше). Если вы это сделаете, удалите его из Совет менеджера, прежде чем продолжить. Также желательно стереть .arduino15 (Linux) или содержимое Arduino15 (MacOS).
Откройте консоль и перейдите в каталог Arduino. Это может быть либо ваш каталог Sketchbook (обычно
), или
каталог самого приложения Arduino, выбор за вами.
Клонируйте этот репозиторий в каталог hardware/esp8266com/esp8266. В качестве альтернативы, клонируйте его в другое место и создайте символическую ссылку, если ваша ОС поддерживает их.
компакт-диск оборудование мкдир esp8266com компакт-диск esp8266com клон git https://github. com/esp8266/Arduino.git esp8266
Вы должны получить следующую структуру каталогов:
Ардуино | --- аппаратное обеспечение | --- esp8266com | --- esp8266 | --- загрузчики --- ядра --- документ --- библиотеки --- упаковка --- тесты --- инструменты --- варианты --- платформа.txt --- программисты.txt --- README.md --- доски.txt --- ЛИЦЕНЗИЯ
Инициализировать субмодули
компакт-диск esp8266 обновление подмодуля git --init
Если в процессе сборки возникают сообщения об отсутствующих файлах, связанных с
SoftwareSerial
, это должно быть связано с тем, что этот шаг был пропущен и является обязательным.
Скачать бинарные инструменты
компакт-диск инструменты python3 get. py
Если вы получите сообщение об ошибке, в котором говорится, что python3 не найден, вам необходимо установить его (большинство современных UNIX-подобных ОС предоставляют Python 3 как
часть установки по умолчанию). Для установки вам нужно будет использовать sudo yum install python3
, sudo apt install python3
или brew install python3
по мере необходимости. На Mac вы можете получить сообщение об ошибке, например:
python3 get.py Платформа: x86_64-яблоко-дарвин Загрузка python3-macosx-placeholder.tar.gz Traceback (последний последний вызов): Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", строка 1317, в do_open encode_chunked = req.has_header («Передача-кодирование»)) ... Файл "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/ssl.py", строка 1117, в do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: не удалось получить сертификат локального эмитента (_ssl. c:1056) Это связано с тем, что Homebrew на Mac не всегда устанавливает необходимые SSL-сертификаты по умолчанию. Установите их вручную (настройте Python 3.7 по мере необходимости) с помощью: ..код::баш cd "/Applications/Python 3.7/" && sudo "./Install Certificates.command"
Перезапустите Ардуино
При последующем обновлении локальной библиотеки перейдите в каталог esp8266 и выполните git pull
компакт-диск оборудование\esp8266com\esp8266 статус git git тянуть
PlatformIO — это экосистема с открытым исходным кодом для разработки IoT с кроссплатформенной система сборки, менеджер библиотек и полная поддержка Espressif (ESP8266) разработки. Он работает на следующих популярных хостах, работающих системы: macOS, Windows, Linux 32/64 и Linux ARM (например, Raspberry Pi, BeagleBone, CubieBoard).
Что такое PlatformIO?
PlatformIO IDE
PlatformIO Core (инструмент командной строки)
Расширенное использование — пользовательские настройки, загрузка в LittleFS, беспроводная связь (OTA), промежуточная версия
Интеграция с облачными и автономными IDE — Cloud9, Codeanywhere, Eclipse Che (Codenvy), Atom, CLion, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, VIM, Visual Studio и VSCode
Примеры проектов
В следующих примерах я буду использовать плату разработки NodeMCU и программировать ее с помощью программного обеспечения Arduino. Надеюсь, вы уже настроили среду разработки ESP8266 и смогли загрузить скетч. Если нет, сначала следуйте этому руководству.
ESP8266 может обмениваться данными через WiFi в двух разных режимах. Он может подключаться к существующей беспроводной точке доступа или точке доступа, подобно тому, как вы подключаете свой телефон или компьютер к Интернету. Это называется режимом «станция». В режиме станции плата ESP8266 может подключаться к Интернету, а также может взаимодействовать с другими устройствами, подключенными к той же сети, включая другие модули ESP8266. Вот простой пример. Не забудьте заменить значения для ssid и пароль переменные с именем и паролем для вашей беспроводной сети!
После того, как вы загрузите код в свой модуль ESP8266, откройте последовательный монитор и перезапустите модуль (нажатие кнопки сброса на плате NodeMCU поможет). Весь код выполняется в функции настройки, поэтому он будет запущен только один раз. Вы должны увидеть что-то вроде этого, если все в порядке:
Режим станции ESP8266Если у вас есть доступ к экрану администратора маршрутизатора, вы должны увидеть модуль ESP8266 в списке подключенных устройств.
Точки доступа Wi-Fi (AP) действуют как концентратор для одной или нескольких станций (например, вашего телефона или ПК). Точка доступа подключается к проводной сети и часто интегрируется с маршрутизатором, чтобы обеспечить доступ подключенных к ней станций к Интернету. Если точка доступа не подключена к Интернету через проводную сеть, она называется программной точкой доступа
Модуль ESP8266 может работать как программная точка доступа (Soft AP) и поддерживать до 5 клиентских устройств или станций Wi-Fi , подключен к нему. Вот базовый пример кода для превращения ESP8266 в программную точку доступа:
Когда вы загружаете этот скрипт в модуль ESP8266, вы должны увидеть следующий последовательный вывод:
Теперь, если вы откроете меню подключения Wi-Fi вашего телефона и проверите доступные сети, вы должны увидеть новую в список.