Перейти к публикации
iT4iT.CLUB

post125

Пользователи
  • Публикации

    99
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    9

Все публикации пользователя post125

  1. post125

    Метеостанция на ESP8266 от it4it.club

    Уже не актуально, вопрос решен с обычными таймерами
  2. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! Кто в курсе, подскажите, пожалуйста, можно ли использовать Планировщик задач из этого проекта (cron.h) с Mega2560. Пробую сделать себе контроллер теплицы, при компиляции ругается: In file included from /var/folders/1j/57_hl_vj3fxdlg7wc55tb8pr0000gn/T/arduino_modified_sketch_575968/tepl_motor4.ino:7:0: sketch/cron.h: At global scope: cron.h:54:49: error: 'cronEvent::cronUserFunction_t' has not been declared void add(unsigned long interval, cronEvent::cronUserFunction_t fn, const char *id); ^ cron.h:55:49: error: 'cronEvent::cronUserFunction_t' has not been declared void add(unsigned long interval, cronEvent::cronUserFunction_t fn, bool coldStart, const char *id); ^ cron.h:91:51: error: 'cronEvent::cronUserFunction_t' has not been declared void cron::add(unsigned long interval, cronEvent::cronUserFunction_t fn, const char *id = 0) { ^ cron.h:97:51: error: 'cronEvent::cronUserFunction_t' has not been declared void cron::add(unsigned long interval, cronEvent::cronUserFunction_t fn, bool coldStart, const char *id = 0) { ^ sketch/cron.h: In member function 'void cron::add(long unsigned int, int, bool, const char*)': cron.h:99:21: error: 'fn' cannot be used as a function if (coldStart) fn(); ^ sketch/cron.h: In member function 'void cron::handleEvents()': cron.h:108:23: error: 'class cronEvent' has no member named 'function' currentEvent->function(); ^ exit status 1 'function' in namespace 'std' does not name a template type на ESP компилируется, но там пинов слишком мало - не выйдет реализовать задуманное Заранее благодарен за помощь
  3. post125

    Метеостанция на ESP8266 от it4it.club

    остановитесь на SHT-31 -их недорогих самый адекватный и по температуре и по влажности по влажности ошибка до 2%, у SI7021 - до 6-8%
  4. post125

    Метеостанция на ESP8266 от it4it.club

    По имени не помню, по спецсимволам в пароле была проблема; попробуйте имя проще сделать. То ли $, то ли & не проходили
  5. post125

    Метеостанция на ESP8266 от it4it.club

    Проверьте пароль в роутере на наличие спецсимолов. С некоторыми метеостанция не дружит.
  6. post125

    Метеостанция на ESP8266 от it4it.club

    Скрытие иконок даже и не нужно, так даже удобнее- видно сразу, куда надо нажимать, тем более иконки небольшие и не перекрывают обзор.
  7. post125

    Метеостанция на ESP8266 от it4it.club

    Всё супер работает, благодарю. Иконки, правда, какие-то корявые получаются - надо с ними поэкспериментировать. Еще один вопрос, можно ли один и тот же датчик отображать на нескольких страницах?
  8. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! Можно ли добавить закладки в web-интерфейсе помимо "in" и "out". У меня 39 датчиков на одной странице, трудно ориентироваться, хотелось бы распределить на 3-4 страницы. На форуме решения не нашел. Заранее благодарен за ответ
  9. post125

    Метеостанция на ESP8266 от it4it.club

    Положите его в морозилку, результат будет доступен быстрее
  10. post125

    Метеостанция на ESP8266 от it4it.club

    Если будет кому-то необходимо подключить NRF к ESP не напрямую, а через ардуино про мини по I2C, попробую сформулировать это в одном посте, что бы не искать по всему форуму. Всё работает отлично, только пришлось отключить накопление статистики по большинству датчиков, т.к. у ESP не хватает оперативки. В данный момент работают две метеостанции. Хочу отметить, поскольку не разобрался со страничной передачей данных по I2C, у меня на одной метеостации 2 NRFки и на другой 3 NRFки. Каждая NRFка может принимать данные от пяти NRFок, но передаёт на ESP только 16 параметров INT. Структура датчиков в приложенном PDFе. Данные пока сбрасываю только на народный монитор. MQTT работает, проверял, нет времени подключить окончательно комп. метеостанция ESP8266 структура_int 12-7-19.xlsx.pdf
  11. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! А сделать , как у меня с Вашей помощью получилось, через slave-ардуину по I2C чем плохо? порты дополнительные не нужны, прерывания не нужны, лишняя библиотека не нужна, NRFке никто не мешает принимать данные и они не теряются. Небольшая проблема в нехватке оперативки у ESP8266 при большом количестве датчиков, так эта же проблема проявится и при подключении по SPI. Стоимость ардуино pro mini в районе 100р, что не сильно повысит общую стоимость.
  12. post125

    Метеостанция на ESP8266 от it4it.club

    Спасибо! Будем пробовать, лишь бы не слетели ардуины slave. А ESP32 на горизонте не виднеется?
  13. post125

    Метеостанция на ESP8266 от it4it.club

    если это северная сторона , летом всё будет ок; зимой будут показания завышаться
  14. post125

    Метеостанция на ESP8266 от it4it.club

    Я впаивал в ESP память и 8 и 16 МБ и соответственно менял конфигурации а Arduini IDE - никакого смысла в этом нет, работает совершенно так же , как и с 4 МБ. И начальная загрузка дольше, особенно с 8 МБ. И на большом количестве датчиков точно также перестает строить тренды.
  15. post125

    Метеостанция на ESP8266 от it4it.club

    эти указания не очевидны. не надо отвечать вопросом на вопрос. и еще раз озвучу, что на Про Мини скетч работал и из беззнаковых получались знаковые без проблем.
  16. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! Магнитометр QRM3100 корректно работает на ESP8266 c данным скетчем: #include <Wire.h> float xхх, yyy, zzz; void setup() { Serial.begin(9600); Wire.begin(); writeRegister(0b0000001,0b01110001); } void loop() { delay(500); while ((readRegister(0x34) & 0x80) != 0x80) {} int8_t mx2 = readRegister(0x24); uint8_t mx1 = readRegister(0x25); uint8_t mx0 = readRegister(0x26); int8_t my2 = readRegister(0x27); uint8_t my1 = readRegister(0x28); uint8_t my0 = readRegister(0x29); int8_t mz2 = readRegister(0x2A); uint8_t mz1 = readRegister(0x2B); uint8_t mz0 = readRegister(0x2C); xxx = ((int32_t)(mx2 * 256 * 256) | (mx1 * 256) | mx0); yyy = ((int32_t)(my2 * 256 * 256) | (my1 * 256) | my0); zzz = ((int32_t)(mz2 * 256 * 256) | (mz1 * 256) | mz0); Serial.print("M: X\t"); Serial.print(xxx); Serial.print("\t Y\t"); Serial.print(yyy); Serial.print("\t Z\t"); Serial.print(zzz); Serial.println(""); delay(500); } uint8_t readRegister(uint8_t address){ // функция чтения регистра uint8_t output; Wire.beginTransmission(0x23); Wire.write(address); Wire.endTransmission(); delayMicroseconds(2); Wire.requestFrom(0x23, 1); while(Wire.available()) { output = Wire.read(); } return output; } void writeRegister(uint8_t address, uint8_t value){ // функция записи в регистр Wire.beginTransmission(0x23); Wire.write(address); Wire.write(value); Wire.endTransmission(); } но никак не получается на его основе в метеостанции создать новые сенсоры, не видит нкакие данные от QRM3100. Может что-то конфликтует? вставляю в user_sensor след. образом: #ifndef USERS_H #define USERS_H float MAG[3]; ... knob_t *MAG_X = new knob_t(-10000, 10000, ".01", "mag_X", "nG"); knob_t *MAG_Y = new knob_t(-10000, 10000, ".01", "mag_Y", "nG"); knob_t *MAG_Z = new knob_t(-10000, 10000, ".01", "mag_Z", "nG"); ... uint8_t readRegister(uint8_t address){ // функция чтения регистра uint8_t output; Wire.beginTransmission(0x23); Wire.write(address); Wire.endTransmission(); delayMicroseconds(2); Wire.requestFrom(0x23, 1); while(Wire.available()) { output = Wire.read(); } return output; } void writeRegister(uint8_t address, uint8_t value){ // функция записи в регистр Wire.beginTransmission(0x23); Wire.write(address); Wire.write(value); Wire.endTransmission(); } void getMAG() { while ((readRegister(0x34) & 0x80) != 0x80) {} writeRegister(0b0000001,0b01110001); int8_t mx2 = readRegister(0x24); uint8_t mx1 = readRegister(0x25); uint8_t mx0 = readRegister(0x26); int8_t my2 = readRegister(0x27); uint8_t my1 = readRegister(0x28); uint8_t my0 = readRegister(0x29); int8_t mz2 = readRegister(0x2A); uint8_t mz1 = readRegister(0x2B); uint8_t mz0 = readRegister(0x2C); MAG[0] = ((int32_t)(mx2 * 256 * 256) | (mx1 * 256) | mx0); MAG[1] = ((int32_t)(my2 * 256 * 256) | (my1 * 256) | my0); MAG[2] = ((int32_t)(mz2 * 256 * 256) | (mz1 * 256) | mz0); } ... float getmag_x() { return MAG[0]; } float getmag_y() { return MAG[1]; } float getmag_z() { return MAG[2]; } ... void sensors_config() { cron.add(cron::time_10s, getMAG, true); ... sensors.add(MAG_X, device::out, "mag_x", getmag_x, true); sensors.add(MAG_Y, device::out, "mag_y", getmag_y, true); sensors.add(MAG_Z, device::out, "mag_z", getmag_z, true); ... } #endif Диаграммы создаются, но значения совсем не похожи на данные и не меняются. Подскажите, пожалуйста. **************************** почему-то заработало - полтергейст какой-то
  17. post125

    Метеостанция на ESP8266 от it4it.club

    проблема с работоспособностью этого скетча на ЕСП8266 решена: int8_t mx2 = readRegister(0x24); uint8_t mx1 = readRegister(0x25); uint8_t mx0 = readRegister(0x26); int8_t my2 = readRegister(0x27); uint8_t my1 = readRegister(0x28); uint8_t my0 = readRegister(0x29); int8_t mz2 = readRegister(0x2A); uint8_t mz1 = readRegister(0x2B); uint8_t mz0 = readRegister(0x2C); так корректно отображаются отрицательные значения. (помогли братья с форума esp8266)
  18. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! Хочу прикрутить к метеостанции магнитометр QRM3100 для отслеживания изменения магнитного поля. #include <Wire.h> float x, y, z; byte QRM3100_I2C_ADDRESS =0x23; void setup() { Serial.begin(9600); Wire.begin(); writeRegister(0b0000001,0b01110001); } void loop() { delay(500); while ((readRegister(0x34) & 0x80) != 0x80) {} uint8_t mx2 = readRegister(0x24); uint8_t mx1 = readRegister(0x25); uint8_t mx0 = readRegister(0x26); uint8_t my2 = readRegister(0x27); uint8_t my1 = readRegister(0x28); uint8_t my0 = readRegister(0x29); uint8_t mz2 = readRegister(0x2A); uint8_t mz1 = readRegister(0x2B); uint8_t mz0 = readRegister(0x2C); x = ((int32_t)(mx2 * 256 * 256) | (mx1 * 256) | mx0); y = ((int32_t)(my2 * 256 * 256) | (my1 * 256) | my0); z = ((int32_t)(mz2 * 256 * 256) | (mz1 * 256) | mz0); Serial.print("M: X\t"); Serial.print(x); Serial.print("\t Y\t"); Serial.print(y); Serial.print("\t Z\t"); Serial.print(z); Serial.println(""); delay(500); } uint8_t readRegister(uint8_t address){ // функция чтения регистра uint8_t output; Wire.beginTransmission(QRM3100_I2C_ADDRESS); Wire.write(address); Wire.endTransmission(); delayMicroseconds(2); Wire.requestFrom(QRM3100_I2C_ADDRESS, 1); while(Wire.available()) { output = Wire.read(); } return output; } void writeRegister(uint8_t address, uint8_t value){ // функция записи в регистр Wire.beginTransmission(QRM3100_I2C_ADDRESS); Wire.write(address); Wire.write(value); Wire.endTransmission(); } Скетч работает на ProMini, но не хочет на ESP8266. Насколько я понимаю, проблема в разрядности процессоров. ESP не хочет делать отрицательные "int". Пробовал методом "научного тыка" менять типы переменных, ничего хорошего не получается. Ардуино выдает: X 475.00 Y -1268.00 Z 3557.00 ESP выдает: X 593.00 Y 16775842.00 Z 3409.00 т.е. положительные значения похожи, а с отрицательными беда. Работающей библиотеки для датчика QRM3100 не нашел, нарыл только такой код простой записи и чтения регистров датчика. Поскажите, пожалуйста, как его подружить с ESp8266.
  19. post125

    Метеостанция на ESP8266 от it4it.club

    обертывание в фольгу такого экрана для датчика как у den48rus только усугубит проблему с перегревом датчика, т.к. уменьшит воздухообмен. Плюс к этому расположение датчика на стене, освещенной солнцем очень плохое решение, даже если повесить на стену настоящую будку Стивенсона - стена сильно нагревается и передает тепло в окружающее простанство.
  20. post125

    Метеостанция на ESP8266 от it4it.club

    скетч ардуины, принимающей данные с орегонов INT_oregon-arduino_wind_rain_1_3_4_temp_slave1_7-7-19.zip
  21. post125

    Метеостанция на ESP8266 от it4it.club

    Добрый день! У меня все внешние датчики подключаются к ESP через ардуины про мини, подключенные по шине i2c как slave. Данные от датчиков Орегон считываются одной из таких ардуин с приемником на 433МГц. Принимаю данные от 1-го датчика ветра WGR800, 1-го датчика осадков PCR800 и трёх термогигрометров THGR810. Данные всех пяти датчиков принимаются со статусом питания, если его не читать, можно еще добавить два термогигрометр. Полный скетч в приложении. Там еще добавлен экран nextion. Его можно не подключать, без него работает нормально. скетч до конца не отработан. Проверен вебсервер ESP и народный мониторинг. MQTT знаю, что работает, но на всех датчиках еще не проверил. INT_Meteo_D_4slaves_nextion4x16_mqtt_10-7-19.zip
  22. post125

    Метеостанция на ESP8266 от it4it.club

    CCS811 измеряет не только СО2 , но и другие летучие в-ва, которые косвенно то же будут влиять на показания СО2, отсюда точность по СО2 может уплывать. Его удобно использовать для мониторинга качества воздуха в помещении и организации проветривания. MH-Z19 - инфракрасный датчик только для СО2, к летучим органическим в-вам он нечувствителен, он у меня стоит в теплице для "научного мониторинга"
×
×
  • Создать...