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

Постоянная загрузка данных.

pvvx

Активный участник сообщества
например какой? Если что датчик цепляется по i2s, под ардуины есть библиотеки, подойдут ли они под этот ble?
i2s - это звуковая шина. Обычно для разных звуковых кодеков и есть не всегда.
i2c для цифровых датчиков есть практически в любом SoC с BLE.
Arduino нескольких производителей есть на nRF (Nordic) чипы. Но если на чип есть Arduino - это обычно означает, что товар плохой и не сбывается и производителю остается только слить его на рынок DIY, т.е. без гарантий.
 

ART_HA

Member
как раз врач. Кто ж еще?
Никто.
Потому как врач занят.

Есть такое слово "прерывание". В нашем примере аналогом будет звонок главврача типа "Семенова почему у вас в очереди больше 4 человек!!
Такого звонка не будет НИКОГДА. А вот явиться к главврачу - запросто. Оно потому и называется прерывание, т.е. посылай всех пациентов нафиг.

а как вы это проверяете?
Доверяю собственным глазам путем наблюдения за отображаемыми данными на экране компа. Ибо практика - критерий истины. Или от добра добра не ищут.
 
Потому как врач занят.
Ох. Гуглить про прерывания решили не ходить? Как вы думаете что делает вот это фрагмент кода из моего текущего проекта?
Заодно подумайте зачем нужна пара ETS_GPIO_INTR_DISABLE(); ETS_GPIO_INTR_ENABLE();

Код:
void ICACHE_RAM_ATTR  handleInterrupt(){
    ETS_GPIO_INTR_DISABLE();
    led_state=!led_state;
    ETS_GPIO_INTR_ENABLE();
}
void setup() {
  ...
  attachInterrupt(pinGPIO1, handleInterrupt, FALLING);  // define interrupt for GPI01 pin output of VL53L0X
  ...
}
Доверяю собственным глазам путем наблюдения за отображаемыми данными на экране компа
Вы и наблюдаете скорость отработки скрипта на странице вашего локального компа, а не скорость отработки ардуины.
Я к слову свои глазам не доверю оценивать промежутки в 0.1 сек. это значительно быстрее смены кадров в кино.
 

pvvx

Активный участник сообщества
Еще как возможно. Подумайте а кто именно в ESP отличает 5 человека скажем от 4 и кто рассаживает их по стульям? Насколько помню отдельного процессора под это не предусмотрено, будет использоваться тот-же самый что считает вашу задачу.
Вы не правильно понимаете что там происходит.
WiFi работает с LwIP. Пакеты поступающие по WiFi обрабатывает LwIP. Ваш код только управляет открытием и закрытием сокета, взаимодействующего с LwIP.
С читайте, что у LwIP свой тред, который активен постоянно совместно с WiFi.
А писанина Arduino сидит в сокет и по событиям отдает команды что делать с уже разобранными данными порта стека TCP в LwIP. Но LwIP обрезан в ресурсах Arduino-писателями по самое...
И управление сокетом дает дикие команды LwIP. Например вместо нормального закрытия TCP соединения - дает Abort! :) И т.д.
 

ART_HA

Member
Вы и наблюдаете скорость отработки скрипта на странице вашего локального компа, а не скорость отработки ардуины.
Вот тут Вы не правы, потому как параллельно на вывод этого же значения Serial.println заряжен.

Я к слову свои глазам не доверю оценивать промежутки в 0.1 сек. это в 4 раза быстрее смены кадров в кино.
В данном случае меня интервал 0,5 сек более чем устраивает, а вот 1 сек. уже нет.
И если я проблем на 0,1 сек не вижу, то ожидается, что на 0,5 сек. их тем более не будет.
 

pvvx

Активный участник сообщества
Доверяю собственным глазам путем наблюдения за отображаемыми данными на экране компа. Ибо практика - критерий истины. Или от добра добра не ищут.
Практически любой автомобиль едет без колеса, если туда воткнуть лом. Вам, наверно, так будет дешевле и практичнее - Ибо практика - критерий истины. :)
 

pvvx

Активный участник сообщества
В данном случае меня интервал 0,5 сек более чем устраивает, а вот 1 сек. уже нет.
И если я проблем на 0,1 сек не вижу, то ожидается, что на 0,5 сек. их тем более не будет.
Интервал чего? Одной открытой страницы? Другие вы запретили всем устно открывать? Или потребовали это под расписку? :)
 

ART_HA

Member
Интервал чего?
Интервал отображения данных с ESP.

Практически любой автомобиль едет без колеса, если туда воткнуть лом. Вам, наверно, так будет дешевле и практичнее - Ибо практика - критерий истины. :)
Автомобиль без колеса уедет очень недалеко. И это опять та самая практика, которая критерий истины.
 

pvvx

Активный участник сообщества
Интервал отображения данных с ESP.
10 страниц - 10 запросов в сек при интервале в 1 сек.
Автомобиль без колеса уедет очень недалеко. И это опять та самая практика, которая критерий истины.
Война тоже дает обогащение, не всем правда... Но практика она такая - значит надо воевать?
То-то и гляжу - ESP со всей сетью воюет, а кто попробовал ESP - тот истинный воин и ничего другого уже не воспринимает :)
 
который активен постоянно совместно с WiFi.
Но ядро процессора то все равно одно, и скорее всего тред Wifi будет приоритетнее в планировщике чем юзерский код, иначе бы мы своим кодом походя ложили бы весь WIFI?
Думаю на нашем уровне абстракции :) такими нюансами можно пренебречь.

потому как параллельно на вывод этого же значения Serial.println заряжен.
Посмотрите в мониторе время через которое он появляется. что то мне подсказывает что 0.1 сек там не будет и даже 0.5.

Интервал отображения данных с ESP.
Упс. Так вам интервал отображения или интервал получения данных нужен. это разные вещи.

ps: разъясню загадку кода из предыдущего сообщения, там я припаял на один из входов esp выход датчика на котором появляется нолик когда датчик заканчивает измерение. При появлении нолика ESP откладывает выполнение текущего кода(где бы она не находилась) и переходит на процедуру handleInterrupt в которой взводит флажек, а затем возвращается к выполнению текущей задачи. То есть аналог "звонка главврача с выходом в коридор" из моего примера. Указанные функции нужны для того чтобы никто еще раз не позвонил пока врач в коридоре. :)

pps: студент лаба? :)
 

ART_HA

Member
10 страниц - 10 запросов в сек при интервале в 1 сек.
Меня интересуют исключительно данные.

Война тоже дает обогащение, не всем правда... Но практика она такая - значит надо воевать?
И ведь, заметьте, воюют!!!! Вот только с ядерной войной не получается, потому как обогащения с неё никому нет, одни убытки.

pvvx, что Вы можете предложить взамен ESP8266 в примере, показанным мной по ссылке выше (измерение влажности и температуры с автоматической отсылкой их в браузер) с периодичностью не менее 0,5 сек. Само собой в той же нише доступности.
 

ART_HA

Member
Посмотрите в мониторе время через которое он появляется. что то мне подсказывает что 0.1 сек там не будет и даже 0.5.
Не придумывайте, интервал 1 сек от 0,5 сек глаз отлично обнаруживает.

Так вам интервал отображения или интервал получения данных нужен. это разные вещи..
А касательно экрана компа это разве не одно и то же?

ps: разъясню загадку кода из предыдущего сообщения, там я припаял на один из входов esp выход датчика на котором появляется нолик когда датчик заканчивает измерение.
В указанных выше примерах информация в комп не передается в тех случаях когда измеренное значение не изменилось. То есть передается только значение, отличное от измеренного ранее. Почти дельта-модуляция. Дело хорошее, но, к сожалению, мне не нужное.

pps: студент лаба? :)
Глубокий Оймякон по обоим версиям.
 
Не придумывайте,
Имелся в виду монитор серийного порта из Arduino, куда пишет ваш Serial.println() там слева время есть.
А касательно экрана компа это разве не одно и то же?
Абсолютно разные вещи.. можно опрашивать ардуину раз в час, а на экран выводить результат хоть 100 раз в секунду...
В указанных выше примерах
речь шла о том, что "пациент" сидящий в кабинете вовсе не обязывает "врача" сидеть там-же. Выполнение вашего кода сотни раз прерывается и ставится на паузу различными внутренними задачами контроллера.
 

pvvx

Активный участник сообщества
Меня интересуют исключительно данные.
Про это уже сказано - абориген в авто...
ESP прямо как Далики – вместо закрытия соединения – убить! Вместо завершения сессии wifi – убить!
Если TCP в TIME_WAIT – убить! Если что-то непонятное – убить! Если 5 соединений – убиться. :)
что Вы можете предложить взамен ESP8266 в примере, показанным мной по ссылке выше (измерение влажности и температуры с автоматической отсылкой их в браузер) с периодичностью не менее 0,5 сек. Само собой в той же нише доступности.
Вот так прямо и всё готовое? - https://github.com/pvvx/ATC_MiThermometer
240 рупь за всё.

Или вам обязательно надо собирать и тратить побольше средств и времени -
https://github.com/pvvx/UBIA
Там только модуль стоит 80..100 рупь, плюс надо ещё датчики, инструменты и прочее.
Ну и только на просторах github наверно к тысяче примерно таки-же примеров...

Есть базовые примеры в Arduino к нескольким чипам. Именно типа DHT и BLE.
 

pvvx

Активный участник сообщества
Для ESP32 есть примеры...
Для RTL872xDx тоже:
Код:
#include "BLEDevice.h"
#include "DHT.h"

#define UART_SERVICE_UUID      "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"

#define STRING_BUF_SIZE 100

// The digital pin we're connected to.
#define DHTPIN 8

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

BLEService UartService(UART_SERVICE_UUID);
BLECharacteristic Rx(CHARACTERISTIC_UUID_RX);
BLECharacteristic Tx(CHARACTERISTIC_UUID_TX);
BLEAdvertData advdata;
BLEAdvertData scndata;
bool notify = false;

void writeCB (BLECharacteristic* chr, uint8_t connID) {
    printf("Characteristic %s write by connection %d :\n", chr->getUUID().str(), connID);
    if (chr->getDataLen() > 0) {
        Serial.print("Received string: ");
        Serial.print(chr->readString());
        Serial.println();
    }
}

void notifCB (BLECharacteristic* chr, uint8_t connID, uint16_t cccd) {
    if (cccd & GATT_CLIENT_CHAR_CONFIG_NOTIFY) {
        printf("Notifications enabled on Characteristic %s for connection %d \n", chr->getUUID().str(), connID);
        notify = true;
    } else {
        printf("Notifications disabled on Characteristic %s for connection %d \n", chr->getUUID().str(), connID);
        notify = false;
    }
}

void setup() {
    Serial.begin(115200);

    advdata.addFlags();
    advdata.addCompleteName("AMEBA_BLE_DEV");
    scndata.addCompleteServices(BLEUUID(UART_SERVICE_UUID));

    Rx.setWriteProperty(true);
    Rx.setWriteCallback(writeCB);
    Rx.setBufferLen(STRING_BUF_SIZE);
    Tx.setReadProperty(true);
    Tx.setNotifyProperty(true);
    Tx.setCCCDCallback(notifCB);
    Tx.setBufferLen(STRING_BUF_SIZE);

    UartService.addCharacteristic(Rx);
    UartService.addCharacteristic(Tx);

    BLE.init();
    BLE.configAdvert()->setAdvData(advdata);
    BLE.configAdvert()->setScanRspData(scndata);
    BLE.configServer(1);
    BLE.addService(UartService);

    BLE.beginPeripheral();
    dht.begin();
}

void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }

    String msg = ("Humidity: " + String((int) h) + "%\t" + "Temperature: " + String((int) t) + "°C\n");

    Tx.writeString(msg);
    if (BLE.connected(0) && notify) {
        Tx.notify(0);
    }
    delay(5000);
}
Для вас это наверно сложно - UUID имеют "многобукав".
 

ART_HA

Member
Имелся в виду монитор серийного порта из Arduino, куда пишет ваш Serial.println() там слева время есть.
Абсолютно разные вещи.. можно опрашивать ардуину раз в час, а на экран выводить результат хоть 100 раз в секунду...
Чего-то Вы всё слишком усложняете. :)
Берете ESP, цепляете к нему потенциометр и крутите его, наблюдая значение на экране.
Интервал в 1 сек. неудобен, а вот 0,5 сек. уже нормально.
Всего и делов-то в данном случае.

речь шла о том, что "пациент" сидящий в кабинете вовсе не обязывает "врача" сидеть там-же. Выполнение вашего кода сотни раз прерывается и ставится на паузу различными внутренними задачами контроллера.
Обязывает должностной инструкцией врача. Но как Вы верно заметили, начальник главнее пациента. Поэтому по приказу начальника врач понесет затребованные им медицинские документы, бросив пациентов, а вернувшись, продолжит заниматься тем, кто сидит у него в кабинете.
 
ам только модуль стоит 80..100 рупь,
Проблема. ни на амазоне, ни на али так с места не могу найти для них каких либо монтажек с распаянным чипом , а ля D1 mini :(
А сам чип слишком мелкий чтобы его могли на скорую руку припаять в ближайшей телефонной мастерской. Я то паять умею, и чип этот смогу на скоч приклеить к монтажке и развести проводками. :) Но мне надо чтобы это смог повторить менеджер с другой стороны земного шара. :) ардуиновскими монтажками он пользоваться умеет и все.
Это к вопросу почему esp так популярен.
 
и крутите его, наблюдая значение на экране.
При этом половина пакетов... иногда .. будет пропадать, ручка будет двигаться дергано, и реальная скорость вращения будет в реальности какой угодно. Главное чтобы нравилось. :) Ведь мерять реальное положение дел вы принципиально отказываетесь :)
 
Сверху Снизу