Странно... GPIO0/GPIO2 на есп-01 у меня почему то не дергаются при загрузки.
Видимо вы перепутали чип. Тут вроде тема про ESP8266.
Не хватало мне пинов на есп-01 для подключения реле, и я их и задействовал, а на U0RXD кнопка подключена, я ей свет включаю (реле включаю).
У ESP8266 на пины U0TXD и U1TXD (GPIO1 и GPIO2) выводится лог старта ROM-BIOS и загрузки SDK с Flash. Это к паре сотен символов с момента старта на нестандартной низкой скорости UART, в течении не менее 0.1 секунды, и это невозможно отключить.
На GPIO0, пока не выполнится инициализация SDK, выводиться 26 МГц. В режиме "программирования" 26 МГц выводится на этот пин постоянно. (After reset, the default is function5 to export the clock)
Все эти три пина так-же отвечают за тип загрузки и должны быть аппаратно притянуты внешними элементами соответственно к логической "1" или "0" для выбора типа требуемой загрузки.
Переназначение вывода printf не влияет на аппаратную функцию пина (к какому внутреннему оборудованию он подключен - к UART или контроллеру GPIO и т.д.), прописанную в регистрах управления микшированием пинов.
Вам надо изменить регистры управления по адресам с 0x60000804 по 0x60000840 и аппаратно создавать правильные стартовые уровни на пинах, которые защелкиваются в регистр Strapping по фронту RESET на всё время работы чипа для определения в каком режиме он будет работать...
Для автономных устройств вы должны учесть и реактивное сопротивление от пайки внешних компонентов к выводу выводящему 26 МГц с фронтами к 1..2 нс, обусловленные их емкостью чтобы не нарушались максимальные токи на GPIO и не увеличивалось потребление чипа при старте. Реактивное сопротивление конденсатора можно посмотреть тут
Расчёт реактивного сопротивления
Уменьшить время "дергания" ног возможно с помощью применения нестандартного лоадера, не совместимого с Arduino.
https://raw.githubusercontent.com/pvvx/Rapid_Loader/master/ESP-01-StartSignals.gif
По моему, если я ничего не путаю, дергается пин или нет - зависит от того к чему пин был притянут внешне.
От этого зависит сможет ли ESP8266 правильно стартануть после deep_sleep - какие значения защелкнуться с GPIO
по любому фронту RESET (хоть ЭМИ) с чувствительностью (скоростью срабатывания) в 1 нс.
Если вы туда припаяли интегратор на RC - то и защелкнется значение которое установилось на C c прошлого раза...
Для Arduino это всё безразлично - нажмете кнопку RESET снова или передернете питание модуля и вперед.... Для работающего изделия ESP8266 всё равно не годится из-за массы ошибок и недочетов в самом чипе и его ПО. А вот для изучения и обучения (как не стоит делать) - изумительная вещь.
Простите, в таком случае, вообще что либо советовать смысла нет.
Почему-же?
У всех разные цели. Вам жалко "бракованный" и недоделанный чип ESP8266 по 100 руб использовать для обучения начальным знаниям в электронике?
Ну а далее возникает деление в использовании - для обучения и экспериментов или для создания работающих устройств. И всегда можно посоветовать и вывести оптимальное решение по разным критериям...
Наверно самое простое решение, чтобы обойти все описываемые беды ESP8266 для рабочих применений, это установить к нему внешний MCU, который будет управлять большинством выводов модуля.