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

Использование GPIO 0 или GPIO 2, как цифрового выхода.

CCat

Member
В общем, ESP-01 у меня работает вместе с Arduino Mega и обеспечивает последнюю связью с внешним миром. :)
То есть, они соединены по RX/TX.
На Меге навешано не так мало и иногда она виснет напрочь. Хотелось бы ESP-01 использовать заодно, как аппаратный watchdog. То есть если не получает от Ардуины секунд 10 чего-то типа "status=ok" по RX , перегружает её к чертям. Но для этого же нужно, чтобы она сажала Reset Ардуины на землю, например, на 100 мс. Могу ли я на ESP-01 GPIO0 или GPIO2 выставить на какое-то время в LOW, (в среде Arduino IDE) или эти пины на ESP-01 "нечистые" и только сами могут ждать LOW или HIGH на этих пинах, чтобы войти в режим перепрошивки и проч?
Пардон, если бестолково сформулировал.
 

Сергей_Ф

Moderator
Команда форума
@CCat можете, а gpio2 вообще не участвует в выборе режима загрузки. Но учтите, после прошивки esp скетчем из Ардуино она будет общаться по uart так как заложено в скетче. Никаких АТ команды там не будет.
 
  • Like
Реакции: CCat

CCat

Member
@CCat можете, а gpio2 вообще не участвует в выборе режима загрузки. Но учтите, после прошивки esp скетчем из Ардуино она будет общаться по uart так как заложено в скетче. Никаких АТ команды там не будет.
Спасибо! Да меня уже давно отговорили от AT-команд на этом форуме, так что у меня давно ESP-01 прошита под Arduino IDE. И там вертится скетч, который принимает определенные команды от Ардуины (имя точки доступа, пароль, URL, с которого нужно взять инфу) и отправляет полученную строку Ардуине.

Значит, GPIO2 вообще свободно. Хотя для начала попробую GPIO0, просто она у меня удобно выведена (думал, буду прошивать, не доставая из корпуса, поэтому вывел на "гребенку" reset и GPIO0), так что можно не откручивать и не паять.
 

pvvx

Активный участник сообщества
@CCat можете, а gpio2 вообще не участвует в выборе режима загрузки. Но учтите, после прошивки esp скетчем из Ардуино она будет общаться по uart так как заложено в скетче. Никаких АТ команды там не будет.
GPIO2 участвует в выборе типа загрузки:
Boot_Pins_ESP8266_ESP8285.gif
На GPIO0 при старте выводится 26 МГц - частота кварца.
На GPIO2 выводятся сообщения logUART загрузки.
На GPIO2 при старте включен PullUp - от этого вам показалось, что он не задействован на тип загрузки.

Jump Boot не поддерживается в Arduino и других прошивках, кроме Web-свалки.
 
Последнее редактирование:
  • Like
Реакции: CCat

Сергей_Ф

Moderator
Команда форума
GPIO2 участвует в выборе типа загрузки
согласитесь что в данном случае это совсем не важно. Для всех допустимых вариантах он в высоком уровне, что ТС и нужно.
С выводом log загрузки посложнее, но тоже решаемо.
 
  • Like
Реакции: CCat

Алексей.

Active member
pvvx, Вы ещё забыли про тот звон на gpio про который говорили раньше
Стандартными методами стартовый вывод в GPIO0, TX(GPIO1), TX2(GPIO2) у ESP8266 не отключается.
На них будут все КЗ, которые только возможны при подключении туда I2C.
Примерно то, что твориться на этих выводах во время старта:
https://raw.githubusercontent.com/pvvx/Rapid_Loader/master/ESP-01-StartSignals.gif
У меня на gpio реле подключено и звон нивелируется :)
 
  • Like
Реакции: CCat

CCat

Member
У меня на gpio реле подключено и звон нивелируется
На каком gpio? 0? А как именно - через оптопару?

Вот видел такую схему

Там еще отслеживание нажатия кнопки (зачем-то между GPIO0 и GPIO2, пока не постиг мудрости решения)
How to Use the ESP8266-01 Pins
(Это там "Step 5: Another Trick – Driving a Relay and Reading a Push Button Using GPIO0 / GPIO2")
Решит задачу оптопара с релейного модуля? С одной стороны +3.3 и GPIO0, с другой - земля и RESET Ардуины?
 

Сергей_Ф

Moderator
Команда форума
@CCat в случае gpio2 вполне можно ограничиться механической фильтрацией реле, с gpio0 сигнал лучше отфильтровать RC фильтром, иначе при загрузке esp ваша мега тоже будет перезагружаться, скорее всего. По вашей схеме с оптроном, кнопку выкидывание, между gpio0 и n1-com ставите резистор на 100 Ом, и между n1 оптрона ставите конденсатор 0.01-0.1 мкФ. Хотя может заработает напрямую, если оптрон сам отфильтрует 26 МГц.
 
Последнее редактирование:
  • Like
Реакции: CCat

Алексей.

Active member
Реле не работает на 26 МГц ? :)
В режиме програмирования реле тоже включена?
Смешно :):)
Немного не так, при программировании модуль извлекается из изделия, после программирования устанавливается обратно в изделие, при включении питания на том звоне который длиться во время инициализации сдк, реле вообще никаких звуков не издает.
 

CCat

Member
@CCat в случае gpio2 вполне можно ограничиться механической фильтрацией реле, с gpio0 сигнал лучше отфильтровать RC фильтром, иначе при загрузке esp ваша мега тоже будет перезагружаться, скорее всего. По вашей схеме с оптроном, кнопку выкидывание, между gpio0 и n1-com ставите резистор на 100 Ом, и между n1 оптрона ставите конденсатор 0.01-0.1 мкФ. Хотя может заработает напрямую, если оптрон сам отфильтрует 26 МГц.
111.png

(Исправлено по уточнению из поста ниже)
Я правильно понял? Такая схема имеет право на жизнь?
Если я правильно понял ту схему, "земля" идет от GPIO0 "по команде", поскольку по умолчанию на GPIO0 после инициализации ESP "HIGH"
Посмотреть вложение 5895
 
Последнее редактирование:

CCat

Member
О, действительно, у меня же RC-фильтр не туда. :)
Я просто смотрел на резистор как на токоограничивающий, вот и поставил к питанию автоматически.
Исправил предыдущий пост.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Смешно :):)
Немного не так, при программировании модуль извлекается из изделия, после программирования устанавливается обратно в изделие, при включении питания на том звоне который длиться во время инициализации сдк, реле вообще никаких звуков не издает.
Т.е. её время срабатывания более 150 мс? :)
И режим deep_sleep у вас не используется. Иначе пришлось бы ставить логику на увеличение времени удержания reset от GPIO_16, дабы не защелкнулось состояние "программирования" по фронту RESET с описываемых тут пинов, пока там разрядятся емкости, навешанные на пины :)
PS: А чё "смешного"? ШИМ никогда не видели? При выводе туда 26 MHz для вашего транзистора через резистор это равно 1.65 В.
Ну вот этим ШИМ приближаем контакты для создания дуги - без этого то как в вашем устройстве? :)
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
вот этим ШИМ приближаем контакты для создания дуги
Вы любите всем задачки давать. Ну вот и посчитайте сами, на сколько надо сблизить контакты для создания дуги при напряжении на контактах 5В? Мы же про говорим про замыкание пина Ардуино. Что то мне кажется, что никакой дуги там не будет вообще.
П.С. коммутировать 220 таким способом, безусловно, не стоит.
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
@CCat, вот напрямую транзистор оптрона на ресет Ардуино может потребовать значительно бОльшего конденсатора фильтра. Я предполагал что реле вы оставите.
Хотя по расчетам должно хватить и этого.
Ну и в скетче что-то типа:
Код:
#define ARDUINO_RESET_PIN 0
#define STAY_UP 1
#define ARDUINO_RESET 0

void setup(){
pinMode(ARDUINO_RESET_PIN,OUTPUT);
digitalWrite(ARDUINO_RESET_PIN, STAY_UP);
...  

}

И там где надо
digitalWrite(ARDUINO_RESET_PIN, ARDUINO_RESET);
delay(500);
digitalWrite(ARDUINO_RESET_PIN, STAY_UP);
 
Последнее редактирование:

pvvx

Активный участник сообщества
Вы любите всем задачки давать. Ну вот и посчитайте сами, на сколько надо сблизить контакты для создания дуги при напряжении на контактах 5В? Мы же про говорим про замыкание пина Ардуино. Что то мне кажется, что никакой дуги там не будет вообще.
П.С. коммутировать 220 таким способом, безусловно, не стоит.
Внимательнее надо немного... но все люди, а они ошибаются...
Я отвечал @Алексей. - ю, а у него приложена схема c реле. :)
Ну и на пины у ESP8266 есть ещё аппаратный sigma-delta, кривой, с ошибками, но при слете программы включиться может - там несложно - всего битик в регистрах сменить... Ну и прочих чудес с реле не оберешься, особенно если коммутировать ~230В (650В p-p)
 
Последнее редактирование:

Алексей.

Active member
Ну вот и посчитайте сами, на сколько надо сблизить контакты для создания дуги при напряжении на контактах 5В?
Вы меня по радовали, вспомнил дедушка когда был молодым, в 83-м 84-м я делал видеоконтрольное устройство на электронно лучевой трубке, электрический пробой воздуха я проходил на себе (высокое бьется больно, но терпимо), пробой сильно зависит от многих факторов, от влажности сильнее всего, пробой одного миллиметра воздуха возникал при напряжении от 1-го до 3-х киловольт. Зависимость расстояния от напряжения не линейная, сложно для определить расстояние для 5-ит вольт, но думаю исчисляется микронами.
 
Сверху Снизу