• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Подскажите как U0RXD и U0TXD использовать как GPIO

Dron

New member
Проясните пожалуйста как возможно в Arduino IDE отключить вывод отладки в UART0 после загрузки и использовать GPIO1 GPIO3? Я так понимаю GPIO1, он же U0RXD единственный пин который не дергается во время загрузки у модуля ESP-01? Есть потребность клацать соленоидом электрозамка и дергание не хорошо:) Достаточно будет в скетче pinMode(1, OUTPUT) и клацать замком? Извините если сумбурно изложил, нет у меня ясности как погасить UART....
 
Последнее редактирование:

kab

New member
Проясните пожалуйста как возможно в Arduino IDE отключить вывод отладки в UART0 после загрузки и использовать GPIO1 GPIO3? Я так понимаю GPIO1, он же U0RXD единственный пин который не дергается во время загрузки у модуля ESP-01? Есть потребность клацать соленоидом электрозамка и дергание не хорошо:) Достаточно будет в скетче pinMode(1, OUTPUT) и клацать замком? Извините если сумбурно изложил, нет у меня ясности как погасить UART....
Были предложения решать эту проблему схемотехнически, т. е. в систему встраивать дополнительные элементы, которые обеспечивали бы задержку подключения информационных пинов к нагрузке после старта ESP.
 

Алексей.

Active member
он же U0RXD единственный пин который не дергается во время загрузки у модуля ESP-01?
Странно... GPIO0/GPIO2 на есп-01 у меня почему то не дергаются при загрузки. Не хватало мне пинов на есп-01 для подключения реле, и я их и задействовал, а на U0RXD кнопка подключена, я ей свет включаю (реле включаю).
 

kab

New member
Вы в этом уверены? В сдк есть функция переопределяющая вывод os_install_putc1, и сама ардуина ей пользуется например в gdbstub_init, подставляет свой gdb_semihost_putchar1
@Алексей.
Вы наверно еще не поняли, что нам, ардуинщикам, присущи некоторые особенности мышления... Блин, мысль потерял... :)

Короче, были бы благодарны, если бы Вы завершили свою мысль, как переопределить или отключить вывод - в виде фрагмента программы для Arduino IDE. Спасибо.
 

kab

New member
Странно... GPIO0/GPIO2 на есп-01 у меня почему то не дергаются при загрузки. Не хватало мне пинов на есп-01 для подключения реле, и я их и задействовал, а на U0RXD кнопка подключена, я ей свет включаю (реле включаю).
По моему, если я ничего не путаю, дергается пин или нет - зависит от того к чему пин был притянут внешне.
 

Алексей.

Active member
Вы наверно еще не поняли, что нам, ардуинщикам, присущи некоторые особенности мышления
Не оправдание, маны курить всёж хоть иногда надо, ESP8266 Non-OS SDK API Reference, вроде понятно описывают, про os_printf и os_install_putc1
реализовали свою фейковую
void ICACHE_FLASH_ATTR dummy_putc(char c) {}
и когда нужно запретить вывод вызвали в Вашем ардуинском loop-е
os_install_putc1(dummy_putc);
захотели вернуть вывод обратно, вызвали
os_install_putc1(uart0_write_char);

А собственно что значит "ардуинщики"? пока я действительно не понял.
 

kab

New member
А собственно что значит "ардуинщики"? пока я действительно не понял
Ну, тут, на форуме, были выражения типа - "те, которые с ардуиной головного мозга" и т. п.
Короче, недолюди, которые из-за своего слабого развития не умеют напрямую пользоваться трансляторами, make`ами и т.п.

и когда нужно запретить вывод вызвали в Вашем ардуинском loop-е
- так ведь изначально задавали вопрос, как отключить вывод в UART информации при загрузке ESP, когда до setup@loop дело еще не дошло...
 

Алексей.

Active member
так ведь изначально задавали вопрос, как отключить вывод в UART информации при загрузке
Видимо "отключить вывод отладки в UART0 после загрузки" нужно понимать как при загрузки.
Проясните пожалуйста как возможно в Arduino IDE отключить вывод отладки в UART0 после загрузки
Простите, в таком случае, вообще что либо советовать смысла нет.

Ну, тут, на форуме, были выражения типа
Ничего личного, никого вообще я ни хотел обидеть, извините, но если говорят "посмотрите на эту функцию" а тебе отвечают нет, нас это не устраивает, вы сами нам всё расскажите, вот и возникает вопрос, а что Вы имели ввиду говоря "ардуинщики".
 

Алексей.

Active member
Есть потребность клацать соленоидом электрозамка и дергание не хорошо
Если свободные пины GPIO0/GPIO2 задействовать (по непонятным мне причинам) Вы не можете, то отключив вывод только после загрузки (менее 400мсек), дергание можно подавить проинтегрировав выход TXD.
 

pvvx

Активный участник сообщества
Странно... 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, который будет управлять большинством выводов модуля.
 
Последнее редактирование:

kab

New member
Ничего личного, никого вообще я ни хотел обидеть, извините, но если говорят "посмотрите на эту функцию" а тебе отвечают нет, нас это не устраивает, вы сами нам всё расскажите, вот и возникает вопрос, а что Вы имели ввиду говоря "ардуинщики".
Говорить буду только о себе.
Если речь про меня, то я вообще не очень обидчивый :)
И раскрою секрет - некоторую степень "нахальства" в своём вопросе допустил осознанно. Так как английским владею достаточно слабо (разберусь, если особо приспичит, но без всякого удовольствия). И пока воздерживаюсь от того чтобы лезть в SDK. Хочу на настоящем этапе глубже осознать возможности Arduino IDE (+ESP8266) как такового.
 

Алексей.

Active member
pvvx,
что либо советовать смысла нет, когда отвечаешь на вопрос ТС-ра как отключить вывод после старта, а тебе говорят нет это не то, мы хотим чтоб во время старта или говоришь посмотрите вот эту функцию, а тебе в ответ, мы не курим маны, ты сам нам всё расскажи, о чем тогда говорить.

Из своего опыта отключения вывода отладочной информации могу сказать, что полностью отключить таки не удается, после переключения на свою функцию, всякий лог сыпется в неё, но ругань вотчдог таймера всё равно попадает на uart0 (но до этого не нужно доводить), проинтегрируя выход TXD можно и его использовать, надо проверить.
чтобы обойти все описываемые беды ESP8266 для рабочих применений, это установить к нему внешний MCU
Дорого, теряется вся прелесть копеечного есп.

Все же не понятно почему TC отказался от GPIO0/2, на есп-01 сделал я управление реле на GPIO0, которое свет включает, а на U0RXD выключатель завел, и проблем нет.
 

Dron

New member
Все же не понятно почему TC отказался от GPIO0/2, на есп-01 сделал я управление реле на GPIO0, которое свет включает, а на U0RXD выключатель завел, и проблем нет.
Очень даже понятно почему, pvvx любезно выложил ссылку на картинку с лог. анализатора: https://raw.githubusercontent.com/pvvx/Rapid_Loader/master/ESP-01-StartSignals
Красиво и в доступной форме видно что творится на пинах этого китайского поделия во время старта, не претендую на истину так как всерьез esp8266 не изучал, но при первом знакомстве у меня отложилось что только RX0 у ESP-01 на что то годен для реле замка. Как GPIO0/2 для этого Вы используете реально не понимаю(смотрим лог с картинки), каким то чудом работает. Спасибо за обсуждение моего вопроса, я понял что поморгать светодиодиками в образовательных целях предел применения модуля, соленоид конечно как то приколхожу, благо дверь больше от честных людей за этим замком, хоть и добавлять еще один контроллер обесценивает всю идею модуля :)
 

Алексей.

Active member
каким то чудом работает
работает чудом реле, но не на 26MHz(смотрим лог с картинки):)

благо дверь больше от честных людей
Вот тут как раз начинаются вопросы безопасности
Взаимодействовать с MQTT брокером на есп, используя защищенное ssl-лем соединение, в общем то не плохо, только остается вопрос проверки подлинности сертификата.
Для меня этот вопрос пока остается открытым.
 

Вложения

pvvx

Активный участник сообщества
Достаточно будет в скетче pinMode(1, OUTPUT) и клацать замком?
В принципе достаточно, если предусмотрите подтяжку этого пина к "1" и RC на RESET, время заряда-разряда которой до перехода логического уровня будет значительно больше времени перезарядки через подтяжку GPIO. Заодно малая емкость на RESET будет защищать от приема на него мелких ЭМИ, обязательно присутствующих при коммутации реле нагрузок....
К примеру можно на RESET повесить 10 нФ (больше не стоит, чтобы не возникал длительный большой обратный ток на вывод при отключении питания) и 10 кОм к 3.3В (или супервизор с задержками в десятки ms), а на GPIO1 резистор в 10 кОм к 3.3В и транзистор типа IRML2402 (у него емкость Cg-s порядка 110 пФ).
Вообще ставить механическую реле для коммутации бытовых приборов в ~220 В ныне это моветон. Ну типа для бедных, которым уже терять нечего :) Дуговой передатчик помех? :) (У ESP-01 половина выводов чипа висит в воздухе и принимает всё на свете, включая собственные наводки от передатчика WiFi - от этого в них ESP8266 часто выгорают, о чем есть множественные свидетельства в форуме за 3 года... Так-же на ESP-01 надо учитывать, что GPIO15 посажен на GND и не заливать в него что попало, не скорректировав установки GPIO. Желательно все его висящие пины хотя-бы перевести в OUTPUT.)
Обычно ставят какой электронный ключ с коммутацией по переходу 50Гц через нуль...
 
Последнее редактирование:

AndrF

Active member
pvvx,
Дорого, теряется вся прелесть копеечного есп.
Да что там дорогого... Сотня лишних рублей? Если для домашнего проекта, то это вообще ни о чем.

Кроме того если нужно больше выводов или параллельная шина, то это более чем нормальный выход. А ESP-шка останется для связи с внешним миром. Сам вчера себе такую платку развел...
 
Сверху Снизу