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

Вопрос NodeMCU V3 ESP8266 Вопрос про gpio

sasha294

Member
Я только знакомлюсь с NodeMcu v3. Когда делал дистанционное управление проветриванием парника, то в скетче указал предустановку двух GPIO в "1".
Потому что для релейного шилда активным сигналом был "0". Прочитав эту тему, понял что не ошибся.:)
Ты бред написал
 

Moseich

Member
Уточняю. Без программной предустановки в "1", при перезагрузке, реле включались без моей команды. ставить инверторы после GPIO не стал. Перезагрузки . постоянно связаны с мобильным интернетом 3G - дача очень далеко от цивилизации и антенн.
Так в чем я неправ? Уточни свое категоричное утверждение. Я новичек в программировании, но радиолюбитель с 1960г.
 

Сергей_Ф

Moderator
Команда форума
@Moseich не обращайте внимание. В принципе, вы написали всё верно, но @sasha294 наверное вас не понял. Бывает.
То что вы сделали - это программная инверсия.
Позвольте дать несколько рекомендаций, что бы в следующий раз всё сделать немного изящнее и понятнее.
В начале скетча глобально определите значения
Код:
#define RELEY_GPIO 2
#define RELEY_ON 0
#define RELEY_OFF 1
или
Код:
const uint8_t RELEY_GPIO=2;
const uint8_t RELEY_ON=0;
const uint8_t RELEY_OFF=1;
последнее считается предпочтительнее, но по сути будет одно и тоже.

в секции init() обязательно инициируйте все задействованные gpio и присвойте им значение, которые хотите получить при старте. Никогда не надейтесь на значения по умолчанию.
Код:
pinMode(RELEY_GPIO, OUTPUT);
digitalWrite(RELEY_GPIO, RELEY_OFF);
в теле программы loop(), где надо включить
Код:
digitalWrite(RELEY_GPIO, RELEY_ON);
А ещё лучше сразу определить функцию
Код:
inline void reley(uint8_t status){
   digitalWrite(RELEY_GPIO, status);
}
и пользоваться
Код:
reley(RELAY_ON);
или
Код:
reley(RELAY_OFF);
тогда программа будет более читаемой и не надо будет ломать голову, а что же реле сейчас должно сделать? Включиться или выключиться? А такие вопросы через месяц, другой точно возникнут :). Успехов.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Уточняю. Без программной предустановки в "1", при перезагрузке, реле включались без моей команды.
Чтобы реле не включалось без вашей команды, обычно достаточно добавить в схему подтягивающий резистор.
А вот перегружаться есп, если пропал интернет, не должна.
 

Сергей_Ф

Moderator
Команда форума
Чтобы реле не включалось без вашей команды, обычно достаточно добавить в схему подтягивающий резистор.
Чем поможет подтягивающий резистор, если по умолчанию значение выхода устанавливается в логический 0, а логический 0 - это команда включения модуля реле?
 

Сергей_Ф

Moderator
Команда форума
@CodeNameHawk конечно настроены, и реле при этом сработать не должно. У модуля реле обычно есть своя подтяжка к +, если они включаются от логического 0.
А вот внутри программы @Moseich этот пин инициализирует на выход и реле срабатывает. Я так понял. Тут нужна программная инверсия, что он и сделал. Написал немного непонятно, но по сути верно. Если не ошибаюсь, @Moseich более 60 лет уже (если не 70), можно понять и простить :). Конечно, программа его перегружаться не должна при потери связи, но... Что сделано, то сделано. Если опубликует и попросит помощь - поможем?
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
А вот внутри программы @Moseich этот пин инициализирует на выход и реле срабатывает.
Возможно, что назначение вывода на выход он не считает своей командой, а только установку вывода в единицу.

А так сперва дается команда установки "нужного" уровня на выводе и только после этого назначают вывод на выход.
 
Последнее редактирование:

Moseich

Member
Сергей_Ф, CodeNameHawk, Спасибо за пояснения! Да, мне 73, и я взялся обучать электронике своего младшего внука заочно - по скайпу. Надеюсь, этим отдалить наступающий склероз.:) . Кстати в 80 году вел радиокружок в доме пионеров. ESP очень понравилось своим возможностями и уже пользуюсь.
Так вот, я сначала сам изучаю, собираю, испытываю девайс, а потом рассказываю и показываю внуку. Естественно что я пользуюсь чужими скетчами. Простые скетчи на ардуине конечно сочиняю, хотя мне проще сделать на логике ИС.
Установку в единицу я сделал не задумываясь и оно заработало. Переделаю как Вы рекомендовали. Насчет подтяжки -я считал, что если NodeMcu отладочная плата - значит gpio все распаяны. Видимо в дешевых китайских платах не все идеально с наводками. ИМХО.
У меня есть еще пара девайсов для включения питания камер наблюдения и насоса для даче -там я релейный блок 220В сделал сам, поэтому выводы не переназначал.
20190316_131407.jpg работает надежно.
 

nikolz

Well-known member
Сергей_Ф, CodeNameHawk, Спасибо за пояснения! Да, мне 73, и я взялся обучать электронике своего младшего внука заочно - по скайпу. Надеюсь, этим отдалить наступающий склероз.:) . Кстати в 80 году вел радиокружок в доме пионеров. ESP очень понравилось своим возможностями и уже пользуюсь.
Так вот, я сначала сам изучаю, собираю, испытываю девайс, а потом рассказываю и показываю внуку. Естественно что я пользуюсь чужими скетчами. Простые скетчи на ардуине конечно сочиняю, хотя мне проще сделать на логике ИС.
Установку в единицу я сделал не задумываясь и оно заработало. Переделаю как Вы рекомендовали. Насчет подтяжки -я считал, что если NodeMcu отладочная плата - значит gpio все распаяны. Видимо в дешевых китайских платах не все идеально с наводками. ИМХО.
У меня есть еще пара девайсов для включения питания камер наблюдения и насоса для даче -там я релейный блок 220В сделал сам, поэтому выводы не переназначал.
Посмотреть вложение 7273 работает надежно.
 

Сергей_Ф

Moderator
Команда форума
Переделаю как Вы рекомендовали. Насчет подтяжки -я считал, что если NodeMcu отладочная плата - значит gpio все распаяны.
то что я рекомендовал - это только для человеческого восприятия. Код по сути останется тот же, что был у вас. А подтяжки распаяны на плате только те, которые нужны для старта. Никто же не может знать какие подтяжки вам будут нужны в вашем устройстве.
 

Moseich

Member
nikolz, Спасибо за схемы.Уже получил такие модули ., один Wemos попробовал - заработал , но при загрузке никакой индикации не было. ЕСП -32 даже подключить не смог к МАС. Буду пробовать дальше.
 

Moseich

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

Moseich

Member
CodeNameHawk,
........
А вот перегружаться есп, если пропал интернет, не должна.
Это я прошу уточнить. Дома, в Москве, ничего подобного не происходит. Появился интернет - плата . сразу готова к работе. А на даче у меня мобильный интернет, Антенна от земли 10м, прием крайне затруднен - вокруг густые леса , низина. Покрыти там только 2G но у меня все же принимает 3G. Очень часто , примерно каждые пол-часа происходит сбой. И без ресета по питанию нельзя было восстановить связь с облаком BLYNK,
Я пробовал разные рекомендации но это не помогало. Потом вопрос решился очень просто -надо было ограничить частоту передачи данных с датчиков температуры. Кроме того я добавил ресет от ардуино 1 раз в сутки.
 

nikolz

Well-known member
CodeNameHawk,
Это я прошу уточнить. Дома, в Москве, ничего подобного не происходит. Появился интернет - плата . сразу готова к работе. А на даче у меня мобильный интернет, Антенна от земли 10м, прием крайне затруднен - вокруг густые леса , низина. Покрыти там только 2G но у меня все же принимает 3G. Очень часто , примерно каждые пол-часа происходит сбой. И без ресета по питанию нельзя было восстановить связь с облаком BLYNK,
Я пробовал разные рекомендации но это не помогало. Потом вопрос решился очень просто -надо было ограничить частоту передачи данных с датчиков температуры. Кроме того я добавил ресет от ардуино 1 раз в сутки.
в настройках wifi в ESP есть опция autoconnect
посмотрите ее. Она обеспечивает автоматическое восстановление соединения при потере
посмотрите данный вопрос в инете
ESP8266/ESP32 Connect WiFi Made Easy - Hackster.io
WiFiManager with ESP8266 - Autoconnect, Custom Parameter and Manage your SSID and Password
и т д
 
Сверху Снизу