Макетная плата ESP8266

Макетная плата ESP8266

О ESP8266

Однокристальные системы ESP8266 получили большую популярность благодаря своей низкой цене и достаточно мощной начинки. Помимо Wi-Fi-модуля этот контроллер содержит 32-битный процессор Xtensa L106, работающий на частоте 80 МГц с возможностью негарантированного разгона до 160 МГц. К имеющимся 17 портам ввода-вывода возможно подключать различную периферию. Имеются интерфейсы SPI, UART, I2C (программный), I2S и 10-битный АЦП.

Особенностью этой системы является отсутствие встроенной флеш-памяти у микроконтроллера. Программа храниться во внешней микросхеме памяти, подключаемой по интерфейсу ISP (как правило, эта микросхема скрывается под металлическим экраном модуля вместе с процессором, кварцем и прочими элементами обвязки). Перед тем, как программа будет исполнена, она загружается в оперативную память контроллера. Самой оперативной памяти доступно около 80 кБ, плюс ещё 32 кБ используется в качестве кеша инструкций. Подгрузкой инструкций в кэш управляет компилятор, хитрым образом вставляющий в нужных местах кода вызовы соответствующих функций.

Питается контроллер от источника напряжения 2.2 … 3.6 В, потребляемый ток при этом может достигать 215 мА в режиме передачи, 100 мА в режиме приема, и 70 мА в режиме ожидания. В режиме пониженного энергопотребления потребляемый ток сокращается до 15 мкА в режиме Deep sleep (либо до 15 мА и 0.4мА в режимах Modem и Light sleep соответственно.

Для того, чтобы "поиграться" с контроллером ESP8266 была сделана печатная плата, которая, помимо самого контроллера, содержит различную периферию, подключить и отключить которую можно джамперами на плате. Если встроенной периферии окажется недостаточно, то монтажными проводами можно можно подключить всё, что угодно.

Фотографии платы:

Фото лицевой стороны Фото задней стороны

Схема и описание платы

Центральным элементом макетной платы является сам ESP8266. Почти все его выводы разведены на разъёмы, которые можно подключить к различной встроенной периферии либо джамперами, либо монтажными проводами. Кроме джамперов есть три кнопки:

  • RESRT. Служит для сброса контроллера
  • SPI_CS2. Служит для загрузки прошивки по UART
  • CH_PD. Служит для перевода модуля в энергосберегающий режим

Чтобы “поиграться” со встроенным АЦП на плате имеется переменный резистор, на котором собран делитель напряжения. Ко входу АЦП он также подключается джампером.

контроллер, джамперы и кнопки

ESP8266 поддерживает два интерфейса UART для которых на плате разведено два USB-UART преобразователя на микросхемах CH340G с разъёмами miniUSB. Первый используется для загрузки прошивки в микроконтроллер, второй - для вывода отладочных логов (либо любых других целей).

usb и usb-uart

Из периферии на плате есть разъём для подключения цветного дисплея на контроллере ST7735 (в правом верхнем углу), разъём для SD-карты и пищалка с транзисторным ключом. Подсветка дисплея также управляется транзисторным ключом. Её можно просто включить джампером, либо управлять её включением со свободного пина ESP.

LCD, дисплея и пищалка

Т.к. выводов GPIO у ESP не так много, на плате (снизу) установлена микросхема расширения портов PCA9555, добавляющая ещё 16 линий GPIO, управляемых по шине I2C. Адрес PCA9555 можно выставить джамперами.

К этим дополнительным пинам подключена линейка из 8 светодиодов и 5-кнопочный “джойстик”. Если же светодиоды и кнопки не нужны (полностью, либо частично), то можно просто их не использовать и подключить другую периферию к распаянным контактам.

I2C, PCA9555, кнопки и светодиоды

Питается плата от USB-порта (любого из двух), для питания ESP8266 и всей периферии установлен линейный стабилизатор на 3.3В. Также на плате расположена группа разъёмов, к которым можно подключать другую периферию.

модуль питания 3.3V

Работа с платой

Для работы с платой потребуется установить утилиту esptool. Сделать это можно командой (предполагается, что python/pip уже установлены)

pip install esptool

Программа имеет следующий опции командной строки:

usage: esptool [-h] [--chip {auto,esp8266,esp32}] [--port PORT] [--baud BAUD]
               [--before {default_reset,no_reset,no_reset_no_sync}]
               [--after {hard_reset,soft_reset,no_reset}] [--no-stub]
               [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
               {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,version}
                        Run esptool {command} -h for additional help
    load_ram            Download an image to RAM and execute
    dump_mem            Dump arbitrary memory to disk
    read_mem            Read arbitrary memory location
    write_mem           Read-modify-write to arbitrary memory location
    write_flash         Write a binary blob to flash
    run                 Run application code in flash
    image_info          Dump headers from an application image
    make_image          Create an application image from binary files
    elf2image           Create an application image from ELF file
    read_mac            Read MAC address from OTP ROM
    chip_id             Read Chip ID from OTP ROM
    flash_id            Read SPI flash manufacturer and device ID
    read_flash_status   Read SPI flash status register
    write_flash_status  Write SPI flash status register
    read_flash          Read SPI flash content
    verify_flash        Verify a binary blob against flash
    erase_flash         Perform Chip Erase on SPI flash
    erase_region        Erase a region of the flash
    version             Print esptool version

optional arguments:
  -h, --help            show this help message and exit
  --chip {auto,esp8266,esp32}, -c {auto,esp8266,esp32}
                        Target chip type
  --port PORT, -p PORT  Serial port device
  --baud BAUD, -b BAUD  Serial port baud rate used when flashing/reading
  --before {default_reset,no_reset}
                        What to do before connecting to the chip
  --after {hard_reset,soft_reset,no_reset}, -a {hard_reset,soft_reset,no_reset}
                        What to do after esptool.py is finished               

Убедиться в том, что всё работает правильно, можно, например, командой read_mac, отображающей mac-адрес ESP. Команда запуска будет выглядеть следующим образом (тут /dev/tty.wchusbserial1410 - это имя COM-порта в моей системе, у вас оно, почти наверняка будет другим):

python esptool.py --baud 115200 --port /dev/tty.wchusbserial1410 read_mac

После запуска команды надо перевести ESP в режим управления по SPI. Для этого требуется нажать и удерживать кнопку SPI_CS2 после чего кратковременно нажать кнопку RESET на плате.

Результат в моей системе:

esptool.py v3.0-dev
Serial port /dev/tty.wchusbserial1410
Connecting.....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:78:ee:a5
Uploading stub...
Running stub...
Stub running...
MAC: 80:7d:3a:78:ee:a5
Hard resetting via RTS pin...

Сохранить резервную копию прошивки можно командой read_flash:

python esptool.py --baud 115200 --port /dev/tty.wchusbserial1410 read_flash 0 1024000 backup.bin

В результате должны увидеть что-то подобное:

esptool.py v3.0-dev
Serial port /dev/tty.wchusbserial1410
Connecting.....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 80:7d:3a:78:ee:a5
Uploading stub...
Running stub...
Stub running...
1024000 (100 %)
1024000 (100 %)
Read 1024000 bytes at 0x0 in 97.5 seconds (84.1 kbit/s)...
Hard resetting via RTS pin...

Теперь можно заливать в контроллер свою прошивку (командой write_flash) предварительно стерев старую (командой write_flash).

Рейтинг: 
0
Голосов еще нет