воскресенье, 10 мая 2015 г.

Знакомство с контроллером ESP8266 и обновление его прошивки

Уже неделю в загашнике томятся два модуля esp8266, которые я заказывал на поиграться. Прелесть этого микроконтроллера в том, что он достаточно производительный и с wifi на борту. Использовать его сетевые возможности можно через AT команды (при подключении через UART к другому MCU), либо как самостоятельный контроллер (существуют прошивки вроде NodeMCU, позволяющие программировать его непосредственно). Все это в совокупности с низкой ценой принесло ему популярность в среде самоделкиных.

Для начала я заказал вариант ESP-01, который больше всего подходит для старта. Выглядит он вот так:


Контроллер нуждается в питании 3.3VDC и такое же напряжение должно использоваться для ввода/вывода. Для тестирования его работы достаточно переключить USB-TTL адаптер в режим 3.3V, но для связи с другой периферией, например Arduino, нужно обеспечить конвертирование 5V <-> 3.3V. Для этих целей я прикупил level shifter:


Минимальная схема подключения выглядит так:


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

Оказалось, что два моих модуля имели разные прошивки. Один инициализировался на скорости 115200, а второй на 9600. Чтобы привести их к общему знаменателю решил обновить прошивку у того, который на 9600.

Для начала скачиваю прошивку и утилиту esptool. Ссылки и прочую информацию брал с esp8266.ru. Чтобы перевести контроллер в режим прошивки нужно:
  • выключить питание контроллера (отключить пин VCC от USB-TTL конвертора, но не выключать сам конвертер)
  • соединить пин GPIO0 к GND
  • включить питание контроллера (подключить пин VCC к USB-TTL конвертеру)
  • запустить прошивальщик
$ ./esptool.py -p /dev/ttyUSB0 -b 9600 write_flash 0x000000 ./AT21SDK95-2015-01-24.bin

Прошивка длится довольно долго. По окончании нужно отключить питание, отключить пин GPIO0 от GND и включить питание снова. Теперь скорость связи возросла до 115200. Позже попробую цепляться к домашнему WiFi и что-нибудь слать на сервер.

Комментариев нет:

Отправить комментарий