SetPf
Я к слову не нашел внятного описания ивентов, и не знаю UART_DATA может быть как и ивентом на каждый байт, либо ивентом когда в пустой буфер попало ЧТО ЛИБО
Andy
Так я и не понял, зачем выходить из ожидания :(
Или у вас task не только очередь uart обрабатывает?
Andy
Andy
SetPf
Не зависимо от того нужно ли оно или нет.
romanetz
romanetz
Соответственно, импульсы со счётчика воды входного перестанут идти, концевик с задвижки придёт...
romanetz
Если физические концевики - геморно, магнит и дискретные датчики Холла
SetPf
SetPf
Ткните. Потому что моем чтонибудь это UART_DATA и оно часто прилетает.
Andy
SetPf
SetPf
У меня не ладится что то с еспшными доками
Василий
а я просто - складываю в очередь - одной - строкой - а потом парсер разбирает очередь
Василий
какой детект ?
SetPf
какой детект ?
IDF библиоченый функционал, на обнаружение последовательностей в потоке UART
Василий
а зачем это делать в приёме данных?
это прекрасно работает в парсере очереди
Василий
задача приёма - положить байт/много байт в очередь
Василий
ну вообщем у меня так сделано, - тоже работает
Василий
это когда парсер маленький, а когда патернов пару сотен - тогда уже напряжно
SetPf
А вот это уже дальше =)
SetPf
Нет это не оно. Это именно для интерраптов железных.
SetPf
Все так же приходят UART_DATA евенты, даже после отключения прерываний RX
SetPf
PATTERN_IRQ видимо потому что зынь хуан хай джу
SetPf
И он интерраптом не является, хотя функция его называется именно так
Andy
Нет это не оно. Это именно для интерраптов железных.
Честно сказать я уже запутался в отношении целей вашего изыскания.
Но кажется вы хотите отлавливать команды на "железном" уровне. Для этого есть прерывание UART_AT_CMD_CHAR_DET_INT и одно из решений с его использованием https://esp32.com/viewtopic.php?t=1805
SetPf
Viktor
Доброго дня.Может кто подскажет как решить проблему.
Есть проблема небольшая. На ESP8266 крутится веб сервер.
На нем размещена страница с кнопкой, которая по нажатию меняет состояние либо 0, либо 1.
Есть три клиента, которые раз в минуту должны опросить это состояние и включить моторчик, если 1.
Суть проблемы - при работе с одним клиентом все нормально. Как только запускается второй клиент, то оба начинают работать не стабильно,
то получают состояние, то не получают. То делают это не раз в минуту, а вообще не понятно как.
Веб сервер, который использую:
MDNS.begin(host);
httpUpdater.setup(&server);
server.on("/", HTTP_handleRoot);
server.onNotFound(HTTP_handleRoot);
server.begin();
MDNS.addService("http", "tcp", 80);
Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host);
delay(100);
Serial.println("HTTP server started");
delay(20);
Resident
Доброго дня.Может кто подскажет как решить проблему.
Есть проблема небольшая. На ESP8266 крутится веб сервер.
На нем размещена страница с кнопкой, которая по нажатию меняет состояние либо 0, либо 1.
Есть три клиента, которые раз в минуту должны опросить это состояние и включить моторчик, если 1.
Суть проблемы - при работе с одним клиентом все нормально. Как только запускается второй клиент, то оба начинают работать не стабильно,
то получают состояние, то не получают. То делают это не раз в минуту, а вообще не понятно как.
Веб сервер, который использую:
MDNS.begin(host);
httpUpdater.setup(&server);
server.on("/", HTTP_handleRoot);
server.onNotFound(HTTP_handleRoot);
server.begin();
MDNS.addService("http", "tcp", 80);
Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host);
delay(100);
Serial.println("HTTP server started");
delay(20);
Нужен ассинхронный веб сервер
AntikillerVova 🇷🇺
Господа, есть bme-280 SPI возможно его подключить по I2C ?
AntikillerVova 🇷🇺
Может кто пробовал
AntikillerVova 🇷🇺
Что это?
Andy
Василий
в документации приведены обе схемы подключения
Ivansuper
Да, только у него существуют разные платы распаянные -- на одних 4 контакта только для i2c, а на других больше для spi
Василий
и что - это высшая материя сделать несколько перемычек ?
Василий
скинуть документацию?
Василий
Василий
Andy
AntikillerVova 🇷🇺
AntikillerVova 🇷🇺
А что за VDDio?
Ivansuper
А что за VDDio?
Скачай все таки даташит на bme280. Там должны быть описаны понятия такого рода
Ivansuper
Или у тебя с английским не очень?
Василий
А что за VDDio?
отдельное питание - цифровой части, но в нашем/вашем случае - оно общее, т.е. Vdd и VDDio - запитаны в одной точке
Ivansuper
Судя по всему можно пользоваться шиной питания esp и не заморачиваться
Ivansuper
(только заметил, что мне подсунули даташит на bme180, но у 280 тоже 3.6В максимум)
Василий
по сути 280 продолжение 180
+- все одинаково
AntikillerVova 🇷🇺
Спасибо господа за помощь
AntikillerVova 🇷🇺
👍
AntikillerVova 🇷🇺
Что можно подключить по i2c это очень хорошо
Viktor
Народ, а может кто-то помочь написать ассинхронный веб сервер. У меня esp12 и чет вообще ничего не собирается, даже примеры
Andy
Viktor
https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/index.html
спасибо, но проблемка чуть в другом. Берем пример - /*********
Руи Сантос
Более подробно о проекте на: https://randomnerdtutorials.com
*********/
// Импортируем необходимые библиотеки:
#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include "FS.h"
// Вставьте ниже SSID и пароль для своей WiFi-сети:
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
// Задаем GPIO-контакт, к которому подключен светодиод:
const int ledPin = 2;
// Создаем экземпляр класса «AsyncWebServer»
// под названием «server» и задаем ему номер порта «80»:
AsyncWebServer server(80);
// Меняем заглушку на текущее состояние светодиода:
String processor(const String& var){
// Создаем переменную для хранения состояния светодиода:
String ledState;
Serial.println(var);
if(var == "STATE"){
if(digitalRead(ledPin)){
ledState = "ON";
}
else{
ledState = "OFF";
}
Serial.print(ledState);
return ledState;
}
return String();
}
void setup(){
// Включаем последовательную коммуникацию (для отладки):
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Инициализируем SPIFFS:
if(!SPIFFS.begin(true)){
Serial.println("An Error has occurred while mounting SPIFFS");
// "При монтировании SPIFFS произошла ошибка"
return;
}
// Подключаемся к WiFi:
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi..");
// "Подключаемся к WiFi..."
}
// Печатаем в мониторе порта локальный IP-адрес ESP32:
Serial.println(WiFi.localIP());
// URL для корневой страницы веб-сервера:
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// URL для файла «style.css»:
server.on("/style.css", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(SPIFFS, "/style.css", "text/css");
});
// URL для переключения GPIO-контакта на «HIGH»:
server.on("/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, HIGH);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// URL для переключения GPIO-контакта на «LOW»:
server.on("/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(ledPin, LOW);
request->send(SPIFFS, "/index.html", String(), false, processor);
});
// Запускаем сервер:
server.begin();
}
void loop(){
}
Viktor
и проверяем его. В ответ получаем - Arduino: 1.8.13 (Windows 10), Плата:"Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
C:\111\sketch_jul21b\sketch_jul21b.ino: In function 'void setup()':
sketch_jul21b:47:24: error: no matching function for call to 'fs::FS::begin(bool)'
if(!SPIFFS.begin(true)){
^
C:\111\sketch_jul21b\sketch_jul21b.ino:47:24: note: candidate is:
In file included from C:\Users\User\Documents\Arduino\libraries\ESPAsyncWebServer\src/ESPAsyncWebServer.h:27:0,
from C:\111\sketch_jul21b\sketch_jul21b.ino:8:
C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\cores\esp8266/FS.h:204:10: note: bool fs::FS::begin()
bool begin();
^
C:\Users\User\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\cores\esp8266/FS.h:204:10: note: candidate expects 0 arguments, 1 provided
sketch_jul21b:54:28: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
WiFi.begin(ssid, password);
^
In file included from C:\111\sketch_jul21b\sketch_jul21b.ino:7:0:
C:\Program Files (x86)\Arduino\libraries\WiFi\src/WiFi.h:79:9: error: initializing argument 1 of 'int WiFiClass::begin(char*, const char*)' [-fpermissive]
int begin(char* ssid, const char *passphrase);
^
exit status 1
no matching function for call to 'fs::FS::begin(bool)'
Viktor
библиотека есть - #include "FS.h". Чего ему еще надо то?
Viktor
если - #include "SPIFFS.h", тогда -SPIFFS.h: No such file or directory
Andy
вот же "sketch_jul21b:54:28: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]"
Andy
и вот 9: error: initializing argument 1 of 'int WiFiClass::begin(char*, const char*)'
Viktor
romanetz
В 8266 есть SPIFFS?
romanetz
...
Andy
Viktor
вообще феерия, поправил все. Результат - collect2.exe: error: ld returned 1 exit status
exit status 1
Ошибка компиляции для платы Generic ESP8266 Module.
Viktor
Нужен ассинхронный веб сервер
вопрос - а зачем нужен асинхронный сервер если клиентов всего два?Синхронный сервер должен же справиться с такой сумашедшей нагрузкой
Slava
ㅤ
Может кому то интересно будет. Язык RU #book
ㅤ
Марко Шварц - Интернет вещей с ESP8266 (+file) - 2018
Andrew