Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Железные вопросы по esp8266", создана пользователем sasha294, 10 мар 2019.

Метки:
  1. sasha294

    sasha294 Новичок

    Сообщения:
    30
    Симпатии:
    0
    Ты бред написал
     
  2. Moseich

    Moseich Новичок

    Сообщения:
    40
    Симпатии:
    3
    Прошу объснить почему так резко, если не затруднит.
     
  3. Moseich

    Moseich Новичок

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

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.148
    Симпатии:
    226
    @Moseich не обращайте внимание. В принципе, вы написали всё верно, но @sasha294 наверное вас не понял. Бывает.
    То что вы сделали - это программная инверсия.
    Позвольте дать несколько рекомендаций, что бы в следующий раз всё сделать немного изящнее и понятнее.
    Рекомендации (раскрыть)

    В начале скетча глобально определите значения
    Код (Text):
    1. #define RELEY_GPIO 2
    2. #define RELEY_ON 0
    3. #define RELEY_OFF 1
    или
    Код (Text):
    1. const uint8_t RELEY_GPIO=2;
    2. const uint8_t RELEY_ON=0;
    3. const uint8_t RELEY_OFF=1;
    последнее считается предпочтительнее, но по сути будет одно и тоже.

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

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.564
    Симпатии:
    178
    Чтобы реле не включалось без вашей команды, обычно достаточно добавить в схему подтягивающий резистор.
    А вот перегружаться есп, если пропал интернет, не должна.
     
  6. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.148
    Симпатии:
    226
    Чем поможет подтягивающий резистор, если по умолчанию значение выхода устанавливается в логический 0, а логический 0 - это команда включения модуля реле?
     
    Moseich нравится это.
  7. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.564
    Симпатии:
    178
    Я не проверял, но разве выводы, после старта, не в высокоимпендансном состоянии, настроены на вход?
     
  8. Сергей_Ф

    Сергей_Ф Moderator Команда форума

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

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.564
    Симпатии:
    178
    Возможно, что назначение вывода на выход он не считает своей командой, а только установку вывода в единицу.

    А так сперва дается команда установки "нужного" уровня на выводе и только после этого назначают вывод на выход.
     
    Последнее редактирование: 16 мар 2019
    Moseich нравится это.
  10. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.148
    Симпатии:
    226
    может там чужая программа. А команды - это то что через интернет поступает. :) Как то так.
     
    Moseich нравится это.
  11. Moseich

    Moseich Новичок

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

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.564
    Симпатии:
    178
    Есть принцип, работает - не трогай.
     
  13. Moseich

    Moseich Новичок

    Сообщения:
    40
    Симпатии:
    3
    Может я не в тот форум попал? Здесь только разработчики?
    Я его знаю, но произношу :"от добра - добра не ищут"
     
  14. nikolz

    nikolz Гуру

    Сообщения:
    4.506
    Симпатии:
    444
    [​IMG]
     
  15. nikolz

    nikolz Гуру

    Сообщения:
    4.506
    Симпатии:
    444
  16. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.148
    Симпатии:
    226
    то что я рекомендовал - это только для человеческого восприятия. Код по сути останется тот же, что был у вас. А подтяжки распаяны на плате только те, которые нужны для старта. Никто же не может знать какие подтяжки вам будут нужны в вашем устройстве.
     
  17. Moseich

    Moseich Новичок

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

    Moseich Новичок

    Сообщения:
    40
    Симпатии:
    3
    Возможно я интуитивно использовал те пины, которые без подтяжек. Когда подключал одинаковые платы они вели себя по- разному, имели разные уровни. Я в схему и не смотрел . теперь буду осуществлять входной контроль.
     
  19. Moseich

    Moseich Новичок

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

    nikolz Гуру

    Сообщения:
    4.506
    Симпатии:
    444
    в настройках wifi в ESP есть опция autoconnect
    посмотрите ее. Она обеспечивает автоматическое восстановление соединения при потере
    посмотрите данный вопрос в инете
    ESP8266/ESP32 Connect WiFi Made Easy - Hackster.io
    WiFiManager with ESP8266 - Autoconnect, Custom Parameter and Manage your SSID and Password
    и т д
     

Поделиться этой страницей