ESP8266
Описание
WI-FI модуль ESP8266 - это полноценный 32 битный микроконтроллер со своим набором GPIO, в том числе SPI, UART, I2C. При этом схема модуля состоит из минимального количества деталей: самого чипа ESP8266, flash памяти, кварца.
Модуль продается с загруженной прошивкой, которая образует WI-FI--UART мост для подключения к другому микроконтроллеру, в том числе и к Arduino. Настройка и обмен данными происходят с помощью АТ команд.
Данный модуль не является полной заменой других вариантов беспроводных технологий, т.к. энергопотребление все же у ESP8266 намного выше, чем например у nRF24LO1/nRF24LE1. В режиме WI-FI--UART моста модуль не пойдет для создания полноценного веб интерфейса на простейших 8 битных м/к, а только как простейшее управление с помощью небольших TCP пакетов.
Сейчас в продаже можно найти готовые модули 12 видов: с подключением внешней антенны, с керамической антенной, с антенной из дорожек, в экранированном корпусе. Так же бывает выведено разное количество GPIO.
Встречаются варианты модулей, с установленной памятью 512 кбайт(4 мегабита) , а так же 4мбайт(32 мегабита). Редко, но попадаются с флеш памятью 1 мбайт(8 мегабит). Почти все разновидности ESP-12 и новые ESP-07 имеют на борту 4 мегабайта. Объем памяти можно определить по маркировке flash чипа, посмотреть в программе Flash Download Tool или на вкладке /debug. Маркировка имеет вид 25QXX, где XX - объем в мегабитах, например 25Q32 имеет на борту 32 мегабита=4 мегабайта.
Технические характеристики
- Процессор: одноядерный Tensilica L106 частотой до 160 MHz.
- Поддерживаемые стандарты WI-FI: 802.11 b/g/n.
- Поддерживаемые типы шифрования:WEP, WPA, WPA2.
- Поддерживаемые режимы работы: Клиент(STA), Точка доступа(AP), Клиент+Точка доступа(STA+AP).
- Напряжение питания 1.7..3.6 В.
- Потребляемый ток: до 215мА в зависимости от режима работы.
- Количество GPIO: 16 (фактически до 11). Доступно на модулях: ESP-01 - 4, ESP-03 - 7+1, включая UART. Существуют и другие варианты модулей.
- Интерфейсы: 1 ADC, I2C. UART, SPI, PWM.
- Внешняя Flash память может быть установлена от 512кб до 4мб.
- RAM данных 80 кб, RAM инструкций - 64 кб.
- Спецификация чипа Медиа:ESP8266_Specifications_v4.pdf
NodeMCU
NodeMCU LUA Amica R2 ESP8266 Wifi Board - версия ESP8266 (чаще всего ESP-12) с прошивкой NodeMCU и интерпретатором языка Lua. Имеет встроенный microUSB порт и CP2102 чип, что позволяет подключить для отладки к компьютеру через microUSB кабель. Распаянная и подписанная «гребенка» с tx, rx, gnd, 3v3, 8ю цифровыми портами и сколько то аналоговых (вроде 3). Плата удобна для быстрого прототипирования без пайки.
Преимущества
- уже содержит интерфейс UART-USB с разъемом micro USB. Поэтому для его подключения к компьютеру нужен лишь кабель USB-microUSB.
- имеет выводы всех доступных сигналов с ESP8266. Вот моя схема подключения к модулю различных датчиков.
- имеет flash 4 Mбайт, а NODEMCU имеет встроенную файловую систему spiffs.
- есть возможность обновлять прошивку из облака или через USB.
- можно создать множество скриптов на LUA и записать их в файловую систему. После чего через WIFI можно вызывать нужные скрипты на исполнение.
Библиотека расширения LUA содержит следующие модули:
json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart и system api.
Контракты платы могут быть запрограммированы для gpio, i2c, pwm. Доступны две версии прошивки с форматом целых, либо вещественных чисел.
Следует отметить, что можно программировать свои разработки на СИ. Но проблема в том, что для отладки каждого изменения в своей программе необходимо собирать прошивку объемом 200 KБ и грузить в модуль примерно 1 минуту. Т.е. сколько ошибок — столько минут.
Другой путь — отладка модулей на LUA и в последствии (если есть необходимость) перенос их на СИ с помощью API CИ для LUA.
Недостатки
Основной недостаток в том, что VM LUA исполняет LUA скрипты лишь размещенные в оперативной памяти кристалла. А этой памяти для скриптов всего лишь 20 Кбайт. Этого объема памяти хватает на исполнение скрипта примерно в 110 строк. Поэтому создание сравнительно больших скриптов для данного модуля имеет свою специфику.
- необходимо алгоритм разделить на линейные блоки.
- записать эти блоки в отдельные файлы файловой системы модуля
- исполнять эти модули с помощью оператора dofile.
При написании модулей надо придерживаться следующих правил:
- В конце каждого модуля явно вызвать сборщик мусора;
- Для обмена данными между модулями использовать глобальные переменные, а для вычислений внутри модулей -локальные.
Ссылки по NodeMCU ESP8266
- NodeMCU LUA Amica R2 ESP8266 Wifi Board - ESP8266 для "чайников"
- Особенности создания программ в NODEMCU ESP8266 для «интернета вещей»
Алгоритм прошивки
1. Скачиваем программу для прошивки Медиа:XTCOM_UTIL.zip или Медиа:Esptool-master.zip или Медиа:FLASH_DOWNLOAD_TOOLS_v0.9.3.1_141118.rar [1]
2. Отключите от последовательного порта вашу терминальную программу.
3. Отключите CH_PD от питания, подключите GPIO0 модуля к GND, подключите обратно CH_PD модуля.
4. Запускайте программу для прошивки модуля и загружайте новую прошивку в модуль ESP8266. [2]
AT команды
ESP8266 AT команды | |||||
---|---|---|---|---|---|
Команда | Описание | Тип | Выполнение | Запрос/Тест | Параметры |
AT | Проверка модуля. Если модуль успешно стартовал, то отвечает "OK" | базовая | AT | - | - |
AT+RST | Перезапуск модуля. После успешного перезапуска возвращает "OK" | базовая | AR+RST | - | - |
AT+GMR | Отобразить версию прошивки. Версия отображается в виде 8 или 10 цифр. Первая группа 4 цифры - версия AT (например, 0019), вторая группа 4 или 6 цифр - версия SDK (например, 000902) | базовая | AT+GMR | - | - |
AT+GSLP | Переход в режим пониженного энергопотребления | базовая | AT+GSLP=<время в мс> | - | Пример: AT+GSLP=5000 (5сек)
Для того, чтобы модуль вышел из режима сна, необходимо соединить выводы XPD_DCDC и EXT_RSTB |
ATE | включить/выключить эхо | базовая | ATE0
ATE1 |
- | Замечание: ATE без 0 или 1 приводит к ошибке. |
AT+RESTORE | Сбросить на заводские настройки | базовая | AT+RESTORE | - | Примечание: после сброса настроек произойдет перезагрузка модуля |
AT+ UART | Настройка последовательного интерфейса | базовая | AT+ UART=baudrate,databits,stopbits,
parity,flow control |
- | скорость
data bits 5:5 bits data 6:6 bits data 7:7 bits data 8:8 bits data stop bits 1:1 bit stop bit 2:1.5 bit stop bit 3:2 bit stop bit parity 0:None 1:Odd 2:EVEN flow control 0:disable flow control 1:enable RTS 2:enable CTS 3:enable both RTS and CTS (MTCK - UART0 CTS , MTDO - UART0 RTS) Пример: AT+UART=115200,8,1,0,0 |
AT+CWMODE | Переключение режима wifi. Для вступления в силу требуется перезапуск модуля командой AT+RST | wifi | AT+CWMODE=<режим> | AT+CWMODE?
AT+CWMODE=? |
1=Station, 2=AP, 3=Оба режима (Station+AP) |
AT+CWJAP | Подключение к AP | wifi | AT+CWJAP ="идентификатор сети","пароль" | AT+CWJAP? | SSID и пароль указываются в двойных кавычках |
AT+CWLAP | Отобразить список доступных AP. Выводит SSID, метод шифрования, силу сигнала. Типы шифрования: 0:Open, 1: WEP, 2:WPA_PSK, 3:WPA2_PSK,4:WPA_WPA2_PSK | wifi | AT+CWLAP | - | - |
AT+CWQAP | Отключение от AP | wifi | AT+CWQAP | AT+CWQAP=? | - |
AT+CWSAP | Установить параметры для режима AP | wifi | AT+CWSAP= <идентификатор сети>,<пароль>,<канал>,<тип шифрования> | AT+CWSAP? возвращает текущие параметры | SSID и пароль указываются в двойных кавычках. Типы шифрования: 0:Open, 1: WEP, 2:WPA_PSK, 3:WPA2_PSK, 4:WPA_WPA2_PSK |
AT+CWLIF | Отобразить IP адреса (только для режимов 2-SoftAP и 3-Station+SoftAP) подключенных клиентов | wifi | AT+CWLIF | - | - |
AT+CWDHCP | <режим>
0 : ESP8266 softAP 1 : ESP8266 station 2 : softAP и station <вкл> 0 : Включить DHCP 1 : Выключить DHCP |
wifi | AT+CWDHCP=<режим>,<вкл> | - | - |
AT+CIPSTAMAC | посмотреть/установить MAC адрес в режиме station | wifi | AT+CIPSTAMAC= | AT+CIPSTAMAC? | - |
AT+CIPAPMAC | посмотреть/установить MAC адрес в режиме softAP | wifi | AT+CIPAPMAC= | AT+CIPAPMAC? | - |
AT+CIPSTA | посмотреть/установить IP адрес в режиме station | wifi | AT+CIPSTA= | AT+CIPSTA? | - |
AT+ CIPAP | посмотреть/установить IP адрес в режиме softAP | wifi | AT+CIPAP= | AT+CIPAP? | - |
AT+CIPSTATUS | Отобразить статус подключения.
Возвращает =ID соединения 0-4"=тип соединения "TCP" or "UDP",=IP адрес,=порт,=тип связи: 0: подсоединен как клиент, 1: как сервер |
TCP/IP | AT+CIPSTATUS | - | 2: Получен IP
3: Connected 4: Disconnected id соединения (0~4), "TCP" или "UDP" IP port 0: ESP8266 клиент 1: ESP8266 сервер |
AT+CIPSTART | Установить подключение TCP или UDP. | TCP/IP | 1. Одиночное подключение (+CIPMUX=0)
AT+CIPSTART= ,, [,(),()] 2. Множественное подключение: (+CIPMUX=1) AT+CIPSTART= ,, [,(),()] |
AT+CIPSTART=? | ID
соединения 0-4, <тип>=TCP или UDP, <адрес>=IP адрес удаленного хоста, <порт>= порт удаленного хоста. [] только для UDP [] только для UDP Возвращает "OK", "ERROR" или "ALREADY CONNECT" 0 : destination peer entity of UDP will not change. 1 : destination peer entity of UDP can change once. 2 : destination peer entity of UDP is allowed to change. |
AT+CIPSEND | Отправить данные | TCP/IP | 1. Одиночное подключение (+CIPMUX=0)
AT+CIPSEND=<длина> 2. Множественное подключение: (+CIPMUX=1) AT+CIPSEND= <идентификатор>,<длина> |
AT+CIPSEND=? | Длина данных в пакете до 2048 байт. Между пакетами интервал 20мс. После получения данной команды модуль возвращает ">" и переходит в режим приема данных по RX, после приема данных необходимой длины передает их в радиоканал. При успешной передаче возвращает "SEND OK". Прервать режим приема данных и перейти в командный режим можно последовательностью "+++" |
AT+CIPCLOSE | Закрыть подключение TCP или UDP | TCP/IP | 1. Множественное подключение:
(+CIPMUX=1) AT+CIPCLOSE= 2. Одиночное подключение (+CIPMUX=0) AT+CIPCLOSE |
AT+CIPCLOSE=? | Возвращает "LINK IS NOT" или "UNLINK" если ID соединения уже разорвано, ERROR если соединения нет. |
AT+CIFSR | Отобразить IP адрес, который получили от AP и адрес softAP | TCP/IP | AT+CIFSR | AT+CIFSR=? | - |
AT+CIPMUX | Выбрать режим одиночных или множественных подключений | TCP/IP | AT+CIPMUX=<режим> | AT+CIPMUX? | 0=одиночные подключение,
1=множественные подключения. Изменить режим можно только после закрытия всех подключений. Если запущен сервер, то требуется перезагрузка модуля. |
AT+CIPSERVER | Запустить (перезапустить) сервер | TCP/IP | AT+CIPSERVER= <режим>[,<порт> ] | - | 0=сервер отключен,
1=сервер запущен. Порт по умолчанию:333. Для запуска сервера модуль должен быть в режиме множественных подключений AT+CIPMUX=1. |
AT+CIPSTO | Установить таймаут сервера | TCP/IP | AT+CIPSTO=<таймаут> | AT+CIPSTO? | таймаут в секундах от 0 до 7200 |
AT+CIPMODE | Установить сквозной режим | TCP/IP | AT+CIPMODE=<режим> | AT+CIPMODE? | 0=обычный режим,
1=unvarnished transmission mode |
AT+CIUPDATE | Обновление прошивки через облако. Модуль должен быть в режиме 1 или 3 и быть подключен к AP с доступом к интернет. | TCP/IP | AT+CIUPDATE | - | 1 found server
2 connect server 3 got edition 4 start update |
AT+PING | Пинг по имени хоста или IP адресу | TCP/IP | AT+PING=ip | - | Примеры:
AT+PING="192.168.1.1" AT+PING="ya.ru" |
+IPD | Получить данные из сети | TCP/IP | (+CIPMUX=0)
+IPD,: (+CIPMUX=1) +IPD,,: |
- | 1. Одиночные подключения
(+CIPMUX=1) +IPD,<длина>:<данные> 2. Множественные подключения (+CIPMUX=1) +IPD,,<длина>,<данные> |
Ссылки
- Прошивка и запуск модуля ESP8266
- Пример использования через облако IBM
- Сайт посвященный чипу esp8266
- Очень короткое знакомство с WiFi модулем ESP8266 ESP-03
- Пример программирования в среде SDK первая прошивка
- http://tim4dev.com/2015/03/esp8266-wifi-direct-programming/
- https://geektimes.ru/post/242669/ - esp8266 + noolite
- Настройки с MODBUS ::
- Скачать и установить python - https://www.python.org/downloads/release/python-2711/
- запустить cmd(windows), перейти в каталог cd c:\Python27 , набрать команду pip install pyserial
- форум тут - http://esp8266.ru/forum/threads/razrabotka-biblioteki-malogo-webservera-na-esp8266.56/page-80
Сноски
- ↑ для Win систем подойдет XTCOM UTIL (удобно работать, если прошивка состоит из одного файла), мультиплатформенный esptool (требуется python, нужно указывать параметры в командной строке), FLASH DOWNLOAD TOOL (много настроек, удобно прошивать прошивки, состоящие из нескольких файлов, позволяет «собрать» прошивку в один файл из нескольких). Также вы найдете и другие программы для прошивки ESP8266 — попробуйте разные и пользуйтесь той, которая вам больше понравится.
- ↑ Загрузка прошивки в модуль обычно осуществляется на скорости 115200, но режим прошивки модуля поддерживает авто определение скорости и прошивка может быть осуществлена на скорости от 9600 и выше. Максимальная скорость зависит от многих факторов (вашего USB-TTL конвертера, длины проводов и прочего) и может быть определена экспериментально на конфигурации именно вашего оборудования.