Страница 1 из 1

Специфика подключения GPIO ESP8266/ESP-12

Добавлено: Пн янв 31, 2022 6:23 pm
Дмитрий_od
На карантине занялся одним проектом где нужна была информация по ESP-12. Особенно как подключать GPIO0,02,15,16. и т.д.
Разобравшись с работою gpio многие вопросы отпадут сразу.
На просторах интернета нашел информацию и решил выложить выдержки на форум.
Может сначала покажется, что информации много, но я рекомендую особенно, тем кто впервые присоединился к проектам на ESP8266, в том числе и к проекту 1M Smartphone c ними ознакомится и посетить нижеупомянутые сайты.

Если здесь окажется что эта информация не достоверная, с точки зрения прошивок 1М, то пусть админы подправят.


ИСТОЧНИКИ:

https://esp8266.ru/esp8266-podkluchenie ... proshivki/
https://blog.sci-smart.ru/2016/11/esp8266-esp-12.html
https://www.esp8266.com/wiki/doku.php?i ... ly#esp-12f
https://tsibrov.blogspot.com/2018/02/pu ... stors.html - "Что такое подтягивающий (стягивающий) резистор"

- выдержки из текста сайтов -

.....самая годная схема подключения приведена в этой статье https://esp8266.ru/esp8266-podkluchenie ... proshivki/. Тут предусмотрено и использование режима сна (GPIO16 к ресету через 470R), и перемычка прошивки (Burn), и все нужные "подтяжки" - reset, gpio2, gpio0, gpio15, ch_pd (enable).
Да уж, целая гора ног должна быть подтянута для старта железяки, я по незнанию боялся, что эти ноги не удастся использовать, однако напрасно - gpio 0, 2 и 15 доступны в приложении.

GPIO0 управляет режимом загрузки. Подтяжка к земле - режим программирования, заливки прошивки. Подтяжка к питанию - нормальная загрузка модуля
GPIO2 - должно быть притянуто к питанию всегда. низкий уровень инициирует специальные режимы загрузки
GPIO15 - должно быть притянуто к земле всегда. высокий уровень инициирует специальные режимы загрузки
GPIO16 должно быть замкнуто с пином RESET, если планируется использовать спящий режим. иначе модуль из спячки не выйдет никогда.
Вообще по вышеуказанной статье все намного лучше расписано.


Что имеется в распоряжении ESP?
Свободных GPIO - 9 ног: GPIO 0/2/4/5/12/13/14/15/16.
Последний (GPIO16) ограничен в функционале.
GPIO9 и 10 хоть и выведены, однако вообще не работают в модуле версии ESP-12-E. Более того, попытка их использовать ведет к зависанию и ребуту по watchdog.

Есть ADC - можно контроль разряда батареи сделать или опрос клавы, но только что-то одно. Т.е. модуль измеряет либо внутреннее напряжение vdd33, либо внешнее, подаваемое на ногу ADC.

Выведены пины SPI, однако забудьте о них - в версии ESP-12-E они точно не пашут.

Внимание! Допустимый диапазон напряжения питания модуля ESP8266 от 3,0 до 3,6 вольт. Подача повышенного напряжения питания на модуль гарантированно приведет к выходу ESP8266 из строя.

Внимание! На правом рисунке подключение UTXD (TX) и URXD (RX) модуля ESP8266 к пятивольтовой TTL логике вы осуществляете на свой страх и риск! Документация на SoC ESP8266 сообщает, что модуль толерантен только к 3.3 вольтовой логике. В большинстве случаев подключение ESP8266 к пятивольтовой логике НЕ ПРИВОДИТ к выходу из строя ESP8266, однако именно вашему модулю может не повезти. Для исключение риска выхода модуля ESP8266 из строя рекомендуется использовать USB-TTL конвертер на 3,3 вольта, либо TTL 5v-3.3v конвертеры либо делитель на резисторах (на рисунке не показан). Более подробно о согласовании логических уровней можете прочитать здесь. Рисковые гики, вроде меня, подключают ESP8266 к пятивольтовой TTL логике напрямую и не заморачиваются.

Внимание! В вышеприведенных, реально работающих, примерах подключения ESP8266 используется подключение выводов ESP8266 «напрямую» к земле и питанию, либо «висячее в воздухе», как у нас никуда не подключен RESET, что является абсолютно неправильным и пригодно только для пары первых экспериментов, хотя и вполне работоспособно на подавляющем большинстве модулей. «Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты (pullup) к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Если вы планируете и дальше экспериментировать с ESP8266, то сделайте грамотное подключение, впрочем так же как и для любых других микроконтроллеров. Детальное описание pullup и pulldown выходит за рамки данной статьи, но вы сможете легко нагуглить описание правильного подключения портов ввода-вывода. «Правильное» подключение позволит вам избежать множества «чудес» и проблем и будет неизбежно необходимым при возникновении затруднений с запуском или перепрошивкой модуля ESP8266.

На этих схемах не показано подключение ADC и свободных GPIO — их подключение будет зависеть от того, что вы захотите реализовать, но если хотите стабильности, то не забудьте притянуть все GPIO к питанию (pullup), а ADC к земле (pulldown) через подтягивающие резисторы.

Резисторы на 10k могут заменены на другие от 4,7k до 50k, за исключением GPIO15 — его номинал должен быть до 10k. Номинал конденсатора, который сглаживает высокочастотные пульсации, может быть другим.

Соединение RESET и GPIO16 через резистор deep sleep на 470 Ом вам потребуется, если вы будете использовать режим deep sleep: для выхода из режима глубокого сна модуль перезагружает сам себя, подавая низкий уровень на GPIO16. Без этого соединения глубокий сон будет вечным для вашего модуля.

На первый взгляд на этих схемах кажется, что GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) заняты и вы не можете их использовать для своих целей, но это не так. Высокий уровень на GPIO0 и GPIO2, низкий на GPIO15 требуются только для старта модуля, а в последующем вы можете использовать их по своему усмотрению, только не забудьте обеспечить требуемые уровни до перезагрузки модуля.

Можно использовать и TX, RX как GPIO1 и GPIO3 соответственно, не забывая о том, что при старте модуля любая прошивка будет дергать TX, отправляя отладочную информацию в UART0 на скорости 74480, но после успешной загрузки вы можете использовать их не только как UART0 для обмена данными с другим устройством, но и как обычные GPIO.

Для модулей, имеющих меньшее количество разведенных пинов, как например, ESP-01 подключение неразведенных пинов не требуется, т.е. на ESP-01 разведены только: VCC, GND, GPIO0, GPIO2, CH_PD и RESET — вот только их и подтягиваете. Нет никакой необходимости припаиваться прямо к микросхеме ESP8266EX и притягивать неразведенные пины, только если вам это действительно необходимо.
ESP8266_1.jpg
ESP8266_2.jpg
Данные схемы подключения родились после множества экспериментов, собраны по крупицам из разрозненной и недоступной изначально документации нашим сообществом, я всего лишь постарался объединить эти знания в одном месте.

Внимание! Даже эти схемы нельзя назвать «идеальными». Неплохо будет подключить резисторы малого номинала к выводам обоих UART, поставить диод в линию RTS, добавить конденсатор в линию питания для гашения низкочастотных импульсов и т.д. Очень удобно, например, сделано в этой отладочной плате: на все GPIO подключены светодиоды, на ADC подключен фоторезистор, но жаль, что нет кнопки RESET и перемычка только одна на GPIO0.

Правильным будет сказать вам, что не существует идеальной и в тоже время универсальной схемы подключения ESP8266. Все дело в том, что очень многое зависит от прошивки, которую вы собираетесь туда залить. Вышеприведенные схемы рассчитаны на новичков, которые только начинают осваивать ESP8266, для экспериментов. Для реальных проектов, возможно, вам придется немного изменить схему. Например, для прошивки TCP2UART нужно подключить RTS к GPIO15, а CTS к GPIO13. Также в реальных проектах рекомендую уделить особое внимание питанию.

Re: Специфика подключения пинов GPIO ESP8266/ESP-12

Добавлено: Пн янв 31, 2022 6:32 pm
Caps
Подключал по такой схеме.
Называют такую обвязку минимальной требуемой.
ESP-12 и ESP-07 работают