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

RusD

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

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

  • Посещение

Репутация

0 Neutral

Посетители профиля

Блок посетителей профиля отключен и не будет отображаться другим пользователям

  1. RusD

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

    Всем привет. Датчик bme280 начал выпендриваться еще в марте, а недавно ураганным ветром сорвало корпус, в котором был датчик и залило. Теперь показывает неверные данные по температуре и влажности. Я так понимаю, что теперь только на выброс. Что можете посоветовать из неприхотливых и точных датчиков для внешнего размещения? BMP280 или есть что то лучше? Мне, в принципе, влажность и не нужна.
  2. RusD

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

    Здравствуйте. Обновился на 2.0 бета. Сначала все было нормально, но сегодня стало показывать плюс 10 градусов на улице и влажность 28 и десятые и сотые доли бегают туда-сюда. Показания стали явно некорректными. Датчик bme280.
  3. RusD

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

    Спасибо за подсказку. Попытка поменять значения приводит к артефактам в нижней части дисплея. Поищу еще доработанные либы. А касательно adafruit либы нашел много упоминаний о том, что она проблемная.
  4. RusD

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

    В общем, поиски привели меня к данному примеру http://wikihandbk.com/wiki/ESP8266:Примеры/Использование_0,96-дюймового_OLED-дисплея_с_ESP8266_при_помощи_IDE_Arduino На его основе удалось инициализировать дисплей и вывести текст типа температура, влажность, давление. Остались 2 проблемы. Либа для разрешения 128х64 и из за этого текст сплющенный и что добавить после строк текста для вывода информации с датчиков. UPDATE: Чуть-чуть изменил, пойду тестировать. Вот что добавил в код: #include "SSD1306.h" // добавил библиотеку // инициализация OLED-дисплея с помощью библиотеки Wire: SSD1306 display(0x3c, D2, D1); В void setup добавил display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_16); display.setTextAlignment(TEXT_ALIGN_LEFT); В void readSensors() изменил и добавил строки: /* BME280 */ #ifdef TG_BME_280_I2C_H if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr); display.clear(); display.drawString(0, 0, "Temperature: " + String(temperature.data) + "C"); display.drawString(0, 16, "Humidity: " + String(humidity.data) + "%\t"); display.drawString(0, 32, "Pressure: " + String(pressure.data) + "mmHg"); #endif И добавил в void loop() { display.display(); UPD2: Я все же добился работы дисплея. Все выводит как надо. Код выше работает. Осталась 1 проблема. Сплющенный и плохо разборчивый текст из за другого разрешения. Или искать эту либу под 128х32(не нашел), или купить 128х64 дисплей.
  5. RusD

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

    Добавил строки #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> Добавил после bme280: // BME280 #ifdef TG_BME_280_I2C_H Wire.beginTransmission(0x76); if (Wire.endTransmission() == 0) { temperature.status = humidity.status = pressure.status = BME.begin(); } #endif // Инициализация дисплея. display.begin(pin_sda, pin_scl, 0x3C); Ниже этих строк void readSensors() { timerReadSensors = millis(); /* BH1750 */ #ifdef BH1750_h if (light.status) light.data = BH1750.readLightLevel(); #endif /* HDC1080 */ #ifdef _CLOSEDCUBE_HDC1080_h if (temperature.status) temperature.data = HDC1080.readTemperature(); if (humidity.status) humidity.data = HDC1080.readHumidity(); #endif /* SI7021 */ #ifdef si7021_h if (temperature.status) temperature.data = SI7021.getCelsiusHundredths() * 0.01; if (humidity.status) humidity.data = SI7021.getHumidityPercent(); #endif /* HTU21D */ #ifdef HTU21D_ADDRESS if (temperature.status) temperature.data = HTU21D.readTemperature(); if (humidity.status) humidity.data = HTU21D.readHumidity(); #endif /* BMP085 */ #ifdef ADAFRUIT_BMP085_H if (pressure.status) pressure.data = BMP085.readPressure() / 133.3; #endif /* BME280 */ #ifdef TG_BME_280_I2C_H if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr); #endif добавил эти строки: // Вывод данных с датчика. display.setTextSize(1); display.setCursor(0,0); display.println("temperature.data"); display.setTextSize(1); display.setCursor(0,1); display.println("humidity.data"); display.setTextSize(1); display.setCursor(0,2); display.println("pressure.data"); display.display(); } Верно ли поступил?
  6. RusD

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

    Нет, это код, который надо встроить в основной. Под подключением вы имеете ввиду эти строки? /* i2c шина задейстованные пины SDA и SCL */ #define pin_sda 4 // default sda pin #define pin_scl 5 // default scl pin Если да, то эти строки есть в скетче метеостанции. Буду копаться еще... Дорогу осилит идущий.
  7. RusD

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

    Доброе утро. В коде, как я уже говорил, совершенно не понимаю. Попытался сваять скетч, который нужно интегрировать в ваш основной код. При добавлении компилируется без ошибок, но при прошивке датчик bme280 перестает обнаруживаться. Sda и scl дисплея подключены в те же пины, что и датчик. Пробовал другие пины, пытаясь их прописать при инициализации дисплея - так же не работает ни датчик, ни дисплей. Скетч ковырял на основе примера из либы adafruit Adafruit_SSD1306. Чувствую, что я просто навертел там полную чушь. #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); void setup() { // Инициализация дисплея. display.begin(0x3C); // Вывод приветствия при включении питания если нужно display.setCursor(3, 0); display.print("Hello!"); display.display(); delay (300);//Задержка приветствия } void readSensors() { timerReadSensors = millis(); /* BH1750 */ #ifdef BH1750_h if (light.status) light.data = BH1750.readLightLevel(); #endif /* HDC1080 */ #ifdef _CLOSEDCUBE_HDC1080_h if (temperature.status) temperature.data = HDC1080.readTemperature(); if (humidity.status) humidity.data = HDC1080.readHumidity(); #endif /* SI7021 */ #ifdef si7021_h if (temperature.status) temperature.data = SI7021.getCelsiusHundredths() * 0.01; if (humidity.status) humidity.data = SI7021.getHumidityPercent(); #endif /* HTU21D */ #ifdef HTU21D_ADDRESS if (temperature.status) temperature.data = HTU21D.readTemperature(); if (humidity.status) humidity.data = HTU21D.readHumidity(); #endif /* BMP085 */ #ifdef ADAFRUIT_BMP085_H if (pressure.status) pressure.data = BMP085.readPressure() / 133.3; #endif /* BME280 */ #ifdef TG_BME_280_I2C_H if (temperature.status) BME.read(pressure.data, temperature.data, humidity.data, BME280::TempUnit_Celsius, BME280::PresUnit_torr); #endif // Вывод данных с датчика. display.setTextSize(1); display.setCursor(0,0); display.println("temperature.data"); display.setTextSize(1); display.setCursor(0,1); display.println("humidity.data"); display.setTextSize(1); display.setCursor(0,2); display.println("pressure.data"); display.display(); }
  8. RusD

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

    Добрый вечер. А в дальнейшем не планируется добавить поддержку дисплеев как опцию? Т.е. в скетче раскоментируешь нужный тебе дисплей(к примеру, ssd1306 128х32), компилируешь, заливаешь, подсоединяешь дисплей и в настройках метеостанции выбираешь вкл/выкл, когда необходимо. P.S. Был бы благодарен, если бы кто нибудь помог в подключении ssd1306 OLED 128x32. Я в программировании полный ноль. Если не ошибаюсь, для него подходит библиотека https://github.com/adafruit/Adafruit_SSD1306. Наверняка кто то реализовывал вывод давления, температуры и влажности на дисплей? Или если кто нибудь реализует подключение в будущем, был бы рад мануалу, как это сделать.
  9. RusD

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

    Большое спасибо вам и Kitsum за отзывчивость. Проблема оказалась в неродной прошивке роутера(PandoraBox). Смена прошивки на родную обновленную решила все проблемы.
  10. RusD

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

    О, моя сеть необычна из за безысходности. ) Живу в селе, из за отсутствия возможности протянуть кабель, пришлось изворачиваться. В результате в комнате АТС села лежит adsl модем, подключенный к оборудованию. От него организован Wi-Fi мост с помощью двух Ubiquiti Nanostation M2 до моего дома, далее кабель с rj-45 в wan роутера. Роутер по wi-fi раздает интернет. IP adsl модема 192.168.1.1, убиков 192.168.1.2 и 1.3. IP домашнего роутера(прошит PandoraBox) 192.168.31.1, раздает по dhcp ip адреса подключившимся клиентам. ip адрес подключенной станции 192.168.31.197. По ip могу подключиться только с ноутбука. Остальные устройства не могут подключиться к данному ip. По поводу подключения по имени я не понял(не судите строго). С других устройств ip не пингуется, что очень странно.
  11. RusD

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

    Да нет же... ) Там все просто. Заместо строки settings.bme280Addr = 0x76; надо было вставить settings.bme280Addr = BME280I2C::I2CAddr_0x76; и на этом все. После этого у меня все собралось без проблем.
  12. RusD

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

    Добрый вечер. Большое спасибо за ответ. А что касаемо отключения вывода датчика Освещения? Я пробовал закомментировать Освещение в index.htm и сократить ширину с 800 на 600px для выравнивания датчиков, но при этом пропадает вывод данных у датчика давления. Как более корректно удалить или отключить визуализацию Освещения, не подскажете?
  13. RusD

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

    Добрый вечер. Я тоже столкнулся с данной проблемой. Решение нашел в данной теме по адресу
  14. RusD

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

    Большое спасибо за отличную реализацию метеостанции! Основной текст с просьбой удален из за того, что во всем разобрался с помощью гугла(скетчи, ардуино и т.д.), но появился вопрос. У меня есть 0.91 Inch 128x32 IIC I2C Blue OLED LCD Display(SSD1306 Driver), возможно ли реализовать подключение для вывода 3 строчек(температура, влажность, давление)и сложно ли будет? Просто я хочу собрать в компактном корпусе с дисплеем(пока какой есть) и только датчик вывести на улицу. P.S. Еще небольшая проблема в том, что данные температуры заезжают за границу визуализации. Возможно ли исправить и плюс к этому корректно удалить или отключить пункт освещенность из скетча, чтобы его нигде не было? P.S.2. Проявилась проблема. На ноутбуке веб интерфейс метеостанции открывается нормально, другие же устройства(компы, ноутбуки, смартфоны) не могут открыть, появляется ошибка соединения. Все устройства подключены к одной wi-fi сети, использую ip адрес метеостанции, выданный ей роутером(192.168.31.179).
×
×
  • Создать...