ESP8266. Начало.
После майских (2015 год) праздников получил я посылку из Китая, где, в числе прочего, приехали два модуля ESP-01. Вообще, фирма Esspressif Systems выпускает целый ряд модулей на платформе ESP8266EX, самый первый является наиболее массовым и самым дешевым. На плате, кроме самого "чуда", имеется перепрограммируемая ПЗУ-шка и "нарисованная" антенна. Число внешних контактов весьма скромно: кроме питания, есть "вывод из спячки" - типа "сброс" (иначе - GPIO16), линия "выбора модуля" (CH_PD - перевод кристалла в Power Down Mode), TxD и RxD, две линии GPIO0 и GPIO2. Т.е. в нашем распоряжении "без выкрутасов" только одна линия GPIO2 для "экспериментов", т.к. GPIO0 определяет режим работы при включении модуля: загрузка с UART или работа загруженной программы.
Есть и "более продвинутые" в плане доступных GPIO (pin-ы ввода/вывода) модули, например ESP-07, где есть еще четыре линии. Есть так же умельцы, способные припаять недостающие линии прямо к выводам кристалла, но... это уже "за гранью".
Есть и "более продвинутые" в плане доступных GPIO (pin-ы ввода/вывода) модули, например ESP-07, где есть еще четыре линии. Есть так же умельцы, способные припаять недостающие линии прямо к выводам кристалла, но... это уже "за гранью".
Первым делом, естественно, хочется проверить - работает ли модуль. Тут нам в помощь статья с esp8266.ru про первое включение. Неожиданно встала проблема питания: модуль питается VCC = 3.3В и это напряжение не может быть выше 3.6В, при этом потребляемый ток в пике может достигать 350мА, так что простым 78L33 не обойдешься. Обычно всегда под рукой есть источники 5В, для получения 3.3В рекомендуют LM1117-3.3... Поскреб по сусекам - приспособил модуль питания для макетной платы - там если пять вольт подать на вход трехвольтового стабилизатора, то все получается как надо! Итак, подаем питание на VCC и CH_PD; ноль - на GND. Включаем! С "замиранием сердца" смотрим сети Wi-Fi телефончиком - ЕСТЬ!!! Обнаружена сеть "ESP8266", закрытая, подключиться не удается...
Вторая серия: хочется "пощупать" устройство АТ командами... Нужен UART-TTL (а лучше TTL 3.3) - вспоминаем, что таким мы программируем Arduino Pro-mini. Линию UTXD цепляем прямо на вход RxD преобразователя USB-UART (3.3В должно восприниматься ТТЛ логикой как логическая единица!). А вот вход модуля URXD напрямую подключать к выходу ТТЛ "как-то страшно"... Мастерим делитель из резисторов 10К / 20К на входе приемника модуля ESP8266. Включаем, в качестве терминальной программы, на первых порах, попробовал использовать HiperTerminal... После подбора скоростей удалось отловить ready на скорости 9600. Однако команды с клавиатуры модуль отказывался воспринимать напрочь!!! Проблема была в терминальной программе. Выручил Arduino IDE - там есть прекрасный монитор последовательного порта: и скорость можно выбрать, а главное - включить передачу NL & CR при вводе строки... Дело пошло:
at+gmr
ERROR
AT+GMR0018000902-AI03
OK
(!!! Обратите внимание - маленькие буквы - НЕ понимает!)
Вот такую информацию получил я на той же скорости 9600. Прошивка явно не самая свежая: v 0.18! А на май 2015 уже есть v 0.22!!!
Вторая серия: хочется "пощупать" устройство АТ командами... Нужен UART-TTL (а лучше TTL 3.3) - вспоминаем, что таким мы программируем Arduino Pro-mini. Линию UTXD цепляем прямо на вход RxD преобразователя USB-UART (3.3В должно восприниматься ТТЛ логикой как логическая единица!). А вот вход модуля URXD напрямую подключать к выходу ТТЛ "как-то страшно"... Мастерим делитель из резисторов 10К / 20К на входе приемника модуля ESP8266. Включаем, в качестве терминальной программы, на первых порах, попробовал использовать HiperTerminal... После подбора скоростей удалось отловить ready на скорости 9600. Однако команды с клавиатуры модуль отказывался воспринимать напрочь!!! Проблема была в терминальной программе. Выручил Arduino IDE - там есть прекрасный монитор последовательного порта: и скорость можно выбрать, а главное - включить передачу NL & CR при вводе строки... Дело пошло:
at+gmr
ERROR
AT+GMR0018000902-AI03
OK
(!!! Обратите внимание - маленькие буквы - НЕ понимает!)
Вот такую информацию получил я на той же скорости 9600. Прошивка явно не самая свежая: v 0.18! А на май 2015 уже есть v 0.22!!!
Третья часть - обновляем АТ прошивку на v 0.21. Тут нам придется "допилить" схему - приделать GPIO0 к "земле". Полный вариант схемы подключения - на рисунке. Статья про обновление микропрограммы - тут. В качестве программы-прошивальщика используем ту, что советуют: XTCOM_UTIL. Маленькая, без "выкрутасов", но на практике "пошла" не сразу... пришлось несколько раз перечитать форум и статью. Главное - не лениться отключать питание от модуля перед любой процедурой! К тому же пришлось менять название СОМ порта в Windows: по умолчанию мой PL2303 встал как COM10, а в программе XTCOM_UTIL самый большой - СОМ6(!?). Сошлись на СОМ2! К скорости обмена стенд оказался не критичен - порт открывался на любой, но работа пошла нормально только на 115200. Долго не отрабатывалась команда "Connect" - пока питанием не передернул... Для загрузки выбрал версию 21, т.к. флешка в модуле у меня была на 512КБайт... "Затаив дыхание" ждал пока индикатор процесса не дойдет до конца - ОК!!! Выключаем программу, отключаем GPIO0 от GND, запускаем монитор СОМ порта из Arduino IDE и смотрим, что выдаст "новенький" модуль (!!! но теперь уже на скорости 115200):
ready
AT
OK
AT+GMRAT version:0.21.0.0
SDK version:0.9.5
OK
- вот уже видно, что-то более современное...
Смотрим телефончиком сети Wi-Fi... и обнаруживаем открытую сеть "ESP_A4C3E4", даже подключиться можно, но... что толку?
Сразу уж и второй модуль обновил - с ним все прошло уже "по накатанной"...
ready
AT
OK
AT+GMRAT version:0.21.0.0
SDK version:0.9.5
OK
- вот уже видно, что-то более современное...
Смотрим телефончиком сети Wi-Fi... и обнаруживаем открытую сеть "ESP_A4C3E4", даже подключиться можно, но... что толку?
Сразу уж и второй модуль обновил - с ним все прошло уже "по накатанной"...
На этом первое знакомство с модулями ESP-01 завершилось...
опубликовано 22.05.2015