ESP, IoT [BigClock] Большие часы на WS2812, ESP8266, Народный мониторинг

Какой вариант датчика используется у вас? Интересно, использует ли кто BME280, как у меня?)

  • BMP280

    Голосов: 26 26.5%
  • BME280

    Голосов: 72 73.5%

  • Всего проголосовало
    98

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
@kym13, а что за странная последняя строка в мониторе?)
Перезагрузку делал, после включения тумблера? там должна инициализация быть, иначе он не загрузится)
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
@kym13, значит на датчик ругается, которого нет, сейчас посмотрю)

попробуй закомментировать строку в setup
rtc.begin(); если не сработает, потом bmp280.begin();
 

kym13

★★★✩✩✩✩
14 Ноя 2020
719
118
@ASM, Скрины по очереди с закоментированными RTC, потом ВМР и последний скрин RTC вместе ВМР
 

Вложения

Изменено:

kym13

★★★✩✩✩✩
14 Ноя 2020
719
118
@ASM, Ну всё правильно я после прошивки перезагрузил её из веб
641- это я на плате сброс после прошивки нажал, 829 - это из веб перезагрузил
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
@kym13, так сейчас она перезагружается сама?
на скринах я вижу бутлуп
 

kym13

★★★✩✩✩✩
14 Ноя 2020
719
118
@ASM, Нет, в мониторе всё так и отображает как на скрине ничего не меняется
После "Время верно" ничего не добавилось
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
@kym13, загрузил на чистую ESP, никаких бутлупов нет, что-то не так мне показываешь)
Строку странную вижу, но думаю это из-за либы Сергея) проверю...
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,101
887
Строку странную вижу, но думаю это из-за либы Сергея)
Не, это на json строку какую то похоже или типо того...
В либе кроме как в основном файле примера нет больше нигде вывода в монитор порта...

Попробуйте всё же указать в инициализации пина приёмника не деф пина "D", а именно номер GPIO пина, по моему D5 это 14.
И вообще, мб всё таки использовать другой пин(свободный) для приёмника? D7 например(GPIO 13)?
Тогда можно было бы "на лету" переключаться между физическим датчиком, и радио)
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
Не, это на json строку какую то похоже или типо того...
очень большая строка, попробую разобраться.
если она выводится в монитор, то явно через сериал)
но у меня почти все сериалы закомментированы)

со строкой разобрался, это те переменные, которые постоянно обновляются, только почему они попадают в сериал))

а вот с радио датчиком такая обстановка, написал
Код:
Serial.print("T ");
Serial.println(getTempRX());
получаю
Код:
T 0.00
получается с моей стороны все верно)
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,101
887
а вот с радио датчиком такая обстановка, написал
Ну логично, если не отслеживать флаг обновления буфера приёма, то функция getTempRx() будет всегда возвращать 0.
И ещё момент, после проверки флага availableTempRX() - вызывать функцию getTempRX() более одного раза не имеет смысла, тк после первого чтения данных она будет всегда возвращать 0)

Выделите всё же отдельный пин, как я описывал выше)
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
@Sergo_ST,
Выделите всё же отдельный пин, как я описывал выше)
так я скетч им скидывал, пусть перебирают пины
Обновленный скетч скиньте проверю на железе
скетч выше, я ничего не вносил)

в новом уже рабочие эксперименты))
 
  • Лойс +1
Реакции: kym13

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
  • Лойс +1
Реакции: kym13

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
Ребят, есть предложение.
Дано два прибора.
Один с мониторингом, другой без датчиков(а).
Нужно передавать показания от одного к другому.

Есть два варианта:
:ROFLMAO: 1. на другом приборе делать запрос на сервер, при этом указать в полях датчик или датчики, указать свой ключ и уникальный md5 хэш (хард)
:love: 2. передавать по локалке от одного прибора к другому по udp. (легко)
голосуем соответствующим лайком)


Вместо D5 написал 14 результат на скрине
ошибок нет) а почему не стартует Серегин код, непонятно)
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,101
887
@ASM, Нашёл проблему. Вы считываете флаг настройки c.radioDS до чтения настроек из памяти...

Мне кажется что всё же лучше сделать отдельный пин для инициализации радио, и инициализацию проводить без условий с флагом)
 

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
Нашёл проблему. Вы считываете флаг настройки c.radioDS до чтения настроек из памяти...
у себя исправил, не помогает)

хотя, погоди...
не)
C++:
gh::Timer timerDS(10000);
void ReadingSensors() {
  if (c.htu21d) htu.readTick();
  FtempH = (bmp280.readTemperature()) + o.cor_tempH;
  float pressure = bmp280.readPressure();
  Fpres = pressureToMmHg(pressure) + o.cor_pres;
  if (c.htu21d) hum = htu.getHumidity() + o.cor_hum;
  if (c.htu21d) hum = bmp280.readHumidity() + o.cor_hum;
  Serial.println("Read");
  //if (!c.radioDS) {
    //Serial.println("Read1");
    static uint8_t _st = RECEIVE_IDLE;
    if (_st != getStatusRX()) {
      _st = getStatusRX();
      Serial.print("RX STATUS: ");
      switch (_st) {
        case RECEIVE_IDLE: Serial.println("IDLE"); break;
        case RECEIVE_START: Serial.println("START RECEIVE"); break;
        case RECEIVE_CRC_ERROR: Serial.println("CRC DATA ERROR"); break;
        case RECEIVE_ADDR_ERROR: Serial.println("RECEIVE ADDRESS ERROR"); break;
        case RECEIVE_LENGTH_ERROR: Serial.println("RECEIVE DATA LENGTH ERROR"); break;
        case RECEIVE_STOP_BIT_ERROR: Serial.println("RECEIVE UNEXPECTED STOP BIT"); break;
        case RECEIVE_ADDR_OK:
          Serial.print("RECEIVE ADDRESS OK, TX ADDRESS: 0x");
          Serial.println(getAddrRX(), HEX);
          break;
        case RECEIVE_DATA_OK:
          Serial.println("RECEIVE DATA OK");
          if (availableDataRX() != RECEIVE_DS_TEMP_LENGTH) {
            Serial.print("RECEIVE DATA LENGTH: ");
            Serial.println(availableDataRX());
            Serial.print("RECEIVE DATA HEX: ");
            while (availableDataRX()) {
              Serial.print("0x");
              Serial.print(getDataRX(), HEX);
              Serial.print(" ");
            }
            Serial.println("");
          } else if (availableTempRX()) {
            Serial.print("RECEIVE DS18B20 TEMPERATURE: ");
            Serial.print(getTempRX());
            Serial.println("°C");
            FtempS = getTempRX() + o.cor_tempS;
          }
          break;
      }
    }
// }
/*
  if (!c.radioDS) {
    if (timerDS) ds.requestTemp();
    if (ds.readTemp()) FtempS = ds.getTemp() + o.cor_tempS;
  }*/
}
Read и Read1 отрабатывали успешно)

на сегодня я всё))
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,101
887
@ASM, И замените файл RX на этот, добавил подтяжку пина, чтоб при неподключенном радио модуле не было ненужных прерываний из-за того что пин в воздухе висит...

Read и Read1 отрабатывали успешно)
Я говорил про флаг который в setup():
C++:
if (c.radioDS) initPinRX(ONE_SENSORS_DS);
Нужно оставить так:
C++:
initPinRX(13);
А в чтение результата вот так:
C++:
if (c.radioDS) {
   if (availableTempRX()) FtempS = getTempRX() + o.cor_tempS;
  }
 

Вложения

Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,920
422
Код:
https://raw.githubusercontent.com/Serega88kos/BigClock/main/bin/radiods.bin
повесил на GPIO 13