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

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

Moseich

Member
nikolz, Спасибо, найду время буду изучать. вот мой рабочий скетч. он ведь очень простой? и работает.
Код:
[code]

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS D2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

char auth[] = "
char ssid[] = "
char pass[] = "

BlynkTimer timer;
void myTimerEvent()
{
  Blynk.virtualWrite(V5, millis() / 2000);
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
sensors.begin();

pinMode (D5,OUTPUT);
pinMode (D6,OUTPUT);
digitalWrite(D5,1);
digitalWrite(D6,1);

//контроль   девайса. Счет секунд
timer.setInterval(1000L, myTimerEvent);
}
void sendTemps()
{
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
float temp1 = sensors.getTempCByIndex(1);
float temp2 = sensors.getTempCByIndex(2);

delay(2000);
Serial.println(temp);

Blynk.virtualWrite(V0, temp);
delay(100);
Blynk.virtualWrite(V1, temp1);
delay(100);
Blynk.virtualWrite(V2, temp2);
delay(100);

}
void loop()
{
  Blynk.run();
  timer.run(); // Initiates BlynkTimer
sendTemps();
}
[/cod
 

CodeNameHawk

Moderator
Команда форума
Это я прошу уточнить.
Посмотреть, подключена ли есп к интернету (без отсылки данных в интернет), нет возможности.
А вот проверить есть ли подключение к WiFi возможно. (Мой роутер 4G, при потере связи с интернетом (со своей станцией) уходит в перезагрузку, локальная сеть перестает работать)
Поэтому перед каждой отсылкой данных в сеть проверяю наличие соединения WiFi.
Примерно так:
Код:
//Handle OTA
if (WiFi.status() == WL_CONNECTED) ArduinoOTA.handle();
Для восстановления соединения тоже использую
Код:
WiFi.setAutoReconnect(true);
Будет ли работать с вашим кодом не знаю, (не использую Blynk) но попробовать можете.
 

CodeNameHawk

Moderator
Команда форума
Попробуйте в основной цикл добавить
Код:
Serial.println(ESP.getFreeHeap());
и выключить с розетки роутер.
Посмотрите программой терминал, как себя ведет есп(насчет перезагрузки) и есть ли потери памяти.
 

Alegz

New member
Чтобы реле не включалось без вашей команды, обычно достаточно добавить в схему подтягивающий резистор.
Вы хоть уточняйте, что за схема. Ключ на транзисторе, если на выходе не логический ноль, таким образом как раз откроется, но никак не наоборот.
 

CodeNameHawk

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

CodeNameHawk

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

Alegz

New member
Alegz, не зная о чем вы, но резистором можно подтянуть, как к плюсу, так и к минусу.
ОК, немного разнобой в формулировках. У нас так сложилось, что "подтягивающий" - только к плюсу :). К минусу я подтягивал по входу логику конденсатором последний раз .. ну ооочень давно. Подтягивать реле к минусу - изначально вообще сомнительное решение, т.к. если есть необходимость такого, то где-то явный косяк, который лучше устранить в зародыше, а не подобным костылём, но тоже вариант решения проблемы.
 

Alegz

New member
Там где обычно один транзистор, реле срабатывает от лог. единицы, но у автора сработка от лог. нуля
Что не исключает наличия у автора геркона без транзистора, который тоже нулём включается. Я к тому, что для решения локального вопроса с конкретной схемой используется глобальный совет "использовать подтяжку", который может работать по-разному, если делать это не задумываясь.
 

Alegz

New member
Да, подтормаживает форум. Хотел добавить, что включение геркона нулём тоже справедливо для случая, когда геркон к плюсу подключен, но можно ж и иначе коммутировать :). В общем, формулировки имеют значение. Извините за шум.
 

CodeNameHawk

Moderator
Команда форума
ОК, немного разнобой в формулировках. У нас так сложилось, что "подтягивающий" - только к плюсу :).
Видать это только у вас так.
Подтягивающий резистор — Википедия
К минусу я подтягивал по входу логику конденсатором
Вот это уже оригинальное название, я понимаю времязадающий, гасящий, но подтягивающий по входу, да еще и логику.
 

Alegz

New member
Вот это уже оригинальное название, я понимаю времязадающий, гасящий, но подтягивающий по входу, да еще и логику.
Ну это тоже костыль такой был. Надо было в одной схеме добиться четкого уровня на выходе при включении. Не придумал ничего лучшего, чем поставить по входу небольшую ёмкость, которая при включении давала ноль на нужном входе и дальше на работу никак не влияла. Тогда схема работала стабильно. Иначе уровень на выходе был непредсказуем. Схемотехнически неправильно, но тогда и в том применении сгодилось, как мера.
 

CodeNameHawk

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

Alegz

New member
Как по мне нормальное решение, и так ставлю на входную кнопку, защиту от помех, хоть это и не совсем правильно. (разряд конденсатора на кнопку, без резистора)
Если от дребезга, то он программно неплохо отсекается. Конечно, если время в пару десятков мс на обработку не критично. Если от наводок, то вроде тоже ничего страшного - больше, чем на подключенных выводах, на нём не накопится. Там же не полностью заряженные микрофарады, чтобы контакты кнопки при кз пригорели :).
 

Moseich

Member
Если от дребезга, то он программно неплохо отсекается. Конечно, если время в пару десятков мс на обработку не критично. Если от наводок, то вроде тоже ничего страшного - больше, чем на подключенных выводах, на нём не накопится. Там же не полностью заряженные микрофарады, чтобы контакты кнопки при кз пригорели :).
Я очень много лет занимался наладкой микропроцессорных систем управления подъемниками и лифтами и имею свою точку зрения на защиту от помех ( дребезг это ведь тоже помеха, но слабая):
более надежно работают системы, у которых активным является логический ноль ( не обрыв цепи), т.к. любая помеха всегда выше нижнего уровня. Если разработчик этого не предусматривал, то проблема решали емкостью на входной цепи. Но это считалось нарушением правил Госгортехнадзора. Сами же разработчики старались решать изменениями кода. В редких случаях вносили конструктивные изменения в платы интерфейса. Однако емкость на клемме работала лучше, поскольку речь идет об отечественном силовом оборудовании - качество мощного электропривода величина неоднозначная по уровню раздаваемых мощных помех. ИМХО
 

duser

New member
@sasha294 вводы от 9 до 14 (gpio 6-11) используются для доступа к внутренней памяти. В программе их использовать нельзя. И подключать что либо тоже.
Если их использовать нельзя, тогда объясните, зачем эти порты SPI разработчики вывели на контакты платы NodeMCU ?
Возможно потому, что наверное всё-таки можно одновременно использовать эти порты SPI ESP8266 (GPIO6, GPIO7, GPIO8, GPIO11), и для работы со встроенной flash-памятью, и для работы с внешними устройствами, поддерживающими SPI .
---
В общем, мне тоже нужно как-то заставить работать эти порты у NodeMCU (GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11 --- пины с левой стороны) с внешними устройствами по протоколу SPI .
Несколько пользователей задавали этот вопрос (esp8266.com , github.com), но аргументированный ответ так и не получили.
 

duser

New member
@sasha294 вводы от 9 до 14 (gpio 6-11) используются для доступа к внутренней памяти. В программе их использовать нельзя. И подключать что либо тоже.
Если их использовать нельзя, тогда объясните, зачем эти порты SPI разработчики вывели на контакты платы NodeMCU ?
Возможно потому, что наверное всё-таки можно одновременно использовать эти порты SPI ESP8266 (GPIO6, GPIO7, GPIO8, GPIO11), и для работы со встроенной flash-памятью, и для работы с внешними устройствами, поддерживающими SPI (например, используя порты GPIO9, GPIO10 или др. для адресации конкретного устройства).
 

duser

New member
В общем, мне тоже нужно как-то заставить работать эти порты у NodeMCU (GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11 --- пины с левой стороны) с внешними устройствами по протоколу SPI .
Несколько пользователей задавали этот вопрос (esp8266.com , github.com), но аргументированный ответ так и не получили.
 
Сверху Снизу