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

Рекомендованные сообщения

@Alex_DIY Спасибо за Ваши наблюдения. На днях обновлюсь до последнего релиза ESP и продолжу работу над проектом. К сожалению, пока не нашел официальный список изменений для 2.4.0 (максимум 2.3.0), но думаю, что разработчики вскоре восполнят этот пробел.

@EndWar @Serg Мне пришел датчик качества воздуха CCS811. Обязательно поделюсь своими впечатлениями.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Serg сказал:

Я отключил у MH Z19B автокалибровку

именно это я и имел в вид...

 

4 часа назад, Serg сказал:

показания очень хорошо коррелируют с метеостанцией

так вы подключили его к данному проекту.?! Какое используете питание.? Как считываете показания по UART или ADC.? 

@Kitsum , у меня ни каких ошибок с компиляцией 2.4.0 не возникло...

Изменено пользователем EndWar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.01.2018 в 19:49, Serg сказал:

Можете выложить свой текущий вариант? У меня тоже есть MH-Z19B. Протестирую, отпишусь о стабильности.

Какая у вас конфигурация датчиков? (я к тому, что индикацию показаний вместо какого-то из четырёх существующих "спидометров" заменять или пятый "спидометр" прикрутить надо?) ближе к ночи доберусь до компа и поделюсь(но там все примитивно просто). 

Потом можно и в настройки web интерфейса прикрутить "вкл-выкл"  автокалибровки и кнопку ручной калибровки. 

Я в интернете тоже читал размышления о том, что автокалибровка со временем удаляет от истинных значений, но с другой стороны, производитель в datasheet отмечает, что с 2015 года все датчики отгружается с включённой суточной автокалибровка, наверное это не просто так. Не зная точного физического принципа работы этого сенсора и/или поверенного средства измерения судить о том зло автокалибровка или нет. В бытность работы в РАН один профессор у нас мог объяснить любой феномен, развив теорию, объясняю щите результаты экспериментов, а когда приносил ему другие данные, то он развивал противоположную теорию, причём обе его теории были правдоподобными))) Так что размышления людей в интернете, это всего лишь чьи-то размышления, причём мы даже не знаем уровень их знаний предмета, но это ни в коем случае не говорит о том, что они глупы, просто могут чего - то не учитывать. 

У меня за пару суток средние значения ppm CO2 уменьшились. Видимо из-за автокалибровка. Пока не отключал. 

5 часов назад, Serg сказал:

оптический датчик микрочастиц

РМ2.5 тоже на него смотрел, но пока не созрел к восприятию его данных)) мне кажется он в Москве будет зашкаливать. Приоткрытое (щелочка в несколько мм)  на сутки окно оставляет на подоконнике ровный налёт чёрной пыли. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Kitsum сказал:

список изменений для 2.4.0

В общем - то почему я полез на эту версию, да ещё в стадии rc, так это что в этой версии пофиксили  баг KRACK. Собственно,  во всем остальном, стабильная 2.3.0 меня более чем устраивает. 

4 часа назад, Kitsum сказал:

CCS811

С одной стороны,  для оценки качества воздуха этот датчик (ЛОВ)  даже предпочтительнее, чем просто датчик СО2, но попробуйте почистить возле него цитрусовые и расскажите какая будет реакция. Мне кажется, он должен на летучие ароматические масла в воздухе среагировать резким ростом измеряемой величины. То бишь он улавливает всю органику , а не только СО2, а среди органики не все является вредными веществами. А пары какого-нибудь органической растворителя, краски... На них он тоже среагировать должен и они,  действительно, вредны и повод к проветриванию. Я его расцениваю как металлодетектор, который не даёт представления,  что у человека в кармане - пистолет или ключи от квартиры. В любом случае, интересен Ваш опыт использования этого датчика. Может в чем - то заблуждаюсь.

Прям интересно стало, мой MH-Z19B как на пары растворителей отреагирует. Надо поэкспериментировать,по идее не должен на них реагировать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, Kitsum. Спасибо Вам огромное за ваш труд!

Повторил ваш проект с небольшими изменениями, датчики подключены не все (на улице их нет - это пока что статические цифры).

Интересует несколько вопросов:

- датчик освещенности показывает очень низкие показания (когда свечу фонариком с телефона - максимум 600lx выдает), сейчас лежит на столе свет включен (по моим прикидкам должно быть около 100lx).

- график, устройство подключено к сети с утра, но показания толи сбрасываются, то ли что. только за последние 10 минут выводится, при перезапуске браузера

Скрытый текст

2018-01-09_16-37-35.thumb.png.447e2b8b7c8a7c662a3c0ac1b75a4d9a.png2018-01-09_16-37-02.thumb.png.65adb52408f3491baba4bbee2a075cba.png

 и можно ли изменить бар индикации температуры если меньше 0 то синий, если выше то красный (либо краснеет с повышением температуры)

Скрытый текст

myihO.jpg.975e57f67830ddb454517db171febd0a.jpg

 

Изменено пользователем pasha413
редактирование

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 часа назад, pasha413 сказал:

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

В настройках, кажется свойства системы посмотрите "Причина" - "Последний перезапуск контроллера", видимо у Вас также не стабильно работает. Я по отсутствующим графикам, собственно, и обратил внимание на это. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в данный момент подключен к USB компа (с утра) плата Wemos D1 mini, а показания в графике с 15.20... перезапусков небыло

Скрытый текст

2018-01-10_17-17-01.thumb.png.5a8f1382f91393ea98ae2f99562bd8cd.png2018-01-10_17-17-53.thumb.png.0785a55bb9c766799260b4c98e88f5f1.png

 

Изменено пользователем pasha413

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@pasha413 доброе время суток.

В 09.01.2018 в 16:46, pasha413 сказал:

- датчик освещенности показывает очень низкие показания (когда свечу фонариком с телефона - максимум 600lx выдает), сейчас лежит на столе свет включен (по моим прикидкам должно быть около 100lx).

Если Вы не вносили никаких изменений в математику, то все должно работать в штатном режиме. Проверьте работоспособность датчика на стандартном примере из используемой библиотеки и прямо на Вашей физической сборки метеостанции.

В 09.01.2018 в 16:46, pasha413 сказал:

- график, устройство подключено к сети с утра, но показания толи сбрасываются, то ли что. только за последние 10 минут выводится, при перезапуске браузера

График составляется исходя из данных сохраненных в ОЗУ микроконтроллера. Всего 144 точки с интервалом в 10 минут. В данной (вскоре устаревшей) версии прошивки метеостанции значения первой точки снимаются практически сразу при пуске микроконтроллера. Если Вы не вносили каких-либо изменений в логику снятия и логирования показаний, то я предположу, что проблема действительно с питанием. Очень похоже, что контроллер только что запустился. Попробуйте запитать микроконтроллер не от компьютера, а от другого источника, например, внешнего аккумулятора. Другой вариант, оставить все как есть, но при этом подождать 20-30 минут и не давать компьютеру, от которого Вы питаете esp8266, засыпать и убедиться, что не происходит никакой магии с настройками схем управления электропитанием в операционной системе. Дважды перепроверьте, что Вы не затронули логику построения логов. А для эксперимента Вы можете добавить вывод в Serial монитор текущего значения таймера millis() и по его изменению узнать действительное время работы микроконтроллера т.к для переполнения его значения нужно более месяца времени. Но опять же, судя по Вашему графику и наличию данных с 15.20 и до 17, проблема точно с питанием.

Скрытый текст

Ashampoo_Snap_2018.01.11_23h35m00s_001_Chrome Legacy Window.png

В 09.01.2018 в 16:46, pasha413 сказал:

и можно ли изменить бар индикации температуры если меньше 0 то синий, если выше то красный (либо краснеет с повышением температуры)

Думаю, что вполне возможно. Я перед собой не ставил такой задачи, но подумаю о Вашей просьбе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо за отличную реализацию метеостанции! Основной текст с просьбой удален из за того, что во всем разобрался с помощью гугла(скетчи, ардуино и т.д.), но появился вопрос. У меня есть 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).

5a59688b02516_.PNG.5d1402663bc8e27ce5f67ea27d6d4874.PNG

Изменено пользователем RusD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@RusD Доброе время суток. Чтобы быстро избавиться от данной проблемы, я бы рекомендовал уменьшить число отображаемых знаков после запятой. Внесите следующие изменения в файл index.htm

Найдите описание элемента визуализации температуры

<div class="sensor">
    <div class="title">Температура</div>
    <div class="unit">&deg;C</div>
    <input class="knob temperature" data-width="200" data-displayPrevious=true data-fgColor="#FFF" data-skin="tron" data-thickness=".1" value="0" data-min="-40" data-max="125" data-step=".01" readonly>
</div>

В описании элемента input измените значение data-step с ".01" на ".1"

Для более корректного исправления необходимо внести изменения в библиотеку Knob и учесть дополнительный символ "-". Я займусь работой над визуализацией после окончания работы над обновлением кода микроконтроллера.

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не могу связать с датчиком BME280. Если раскомментировать строчки 

//#include <BME280I2C.h>
//BME280I2C BME;

Arduino IDE ругается:

Цитата

 

C:\****************ESP8266_WS_iT4iT.CLUB\ESP8266_WS_iT4iT.CLUB\ESP8266_WS_iT4iT.CLUB.ino: In function 'void setup()':

ESP8266_WS_iT4iT.CLUB:257: error: invalid conversion from 'int' to 'BME280I2C::I2CAddr' [-fpermissive]

exit status 1
invalid conversion from 'int' to 'BME280I2C::I2CAddr' [-fpermissive]

 

А если оставить, как есть, то ESP находит датчик по адресу 0х76, но данные с датчика на главную страницу не выводит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, Forester сказал:

Не могу связать с датчиком BME280. Если раскомментировать строчки 


//#include <BME280I2C.h>
//BME280I2C BME;

Arduino IDE ругается:

А если оставить, как есть, то ESP находит датчик по адресу 0х76, но данные с датчика на главную страницу не выводит.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, Kitsum сказал:

@RusD Доброе время суток. Чтобы быстро избавиться от данной проблемы, я бы рекомендовал уменьшить число отображаемых знаков после запятой. Внесите следующие изменения в файл index.htm

Найдите описание элемента визуализации температуры


<div class="sensor">
    <div class="title">Температура</div>
    <div class="unit">&deg;C</div>
    <input class="knob temperature" data-width="200" data-displayPrevious=true data-fgColor="#FFF" data-skin="tron" data-thickness=".1" value="0" data-min="-40" data-max="125" data-step=".01" readonly>
</div>

В описании элемента input измените значение data-step с ".01" на ".1"

Для более корректного исправления необходимо внести изменения в библиотеку Knob и учесть дополнительный символ "-". Я займусь работой над визуализацией после окончания работы над обновлением кода микроконтроллера.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, RusD сказал:

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

 

Спасибо за быстрый ответ =) Но там решение такое сложное... Я, как настоящий дуремар, решил проблему таким способом:

 

 #ifdef TG_BME_280_I2C_H
    BME280I2C::Settings settings;
    //settings.bme280Addr = 0x76; // 0x76 0x77
    BME.setSettings(settings);
    Wire.beginTransmission(0x76);
    if (Wire.endTransmission() == 0) {
      temperature.status = humidity.status = pressure.status = BME.begin();
    }
  #endif

Строки с BMP180 все закомментировал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
12 минуты назад, Forester сказал:

Спасибо за быстрый ответ =) Но там решение такое сложное... Я, как настоящий дуремар, решил проблему таким способом:

 


 #ifdef TG_BME_280_I2C_H
    BME280I2C::Settings settings;
    //settings.bme280Addr = 0x76; // 0x76 0x77
    BME.setSettings(settings);
    Wire.beginTransmission(0x76);
    if (Wire.endTransmission() == 0) {
      temperature.status = humidity.status = pressure.status = BME.begin();
    }
  #endif

Строки с BMP180 все закомментировал.

Да нет же... ) Там все просто. Заместо строки 

settings.bme280Addr = 0x76;

надо было вставить 

settings.bme280Addr = BME280I2C::I2CAddr_0x76;

и на этом все. После этого у меня все собралось без проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Forester @RusD был обновлен исходник и убраны проблемы с индикацией температуры и убрано определение адреса bme280 на шине i2c. Скачайте и проверьте ушли ли Ваши проблемы. Я постараюсь уделить им более серьезное внимание по завершению работ над большим обновлением для метеостанции.

21 час назад, RusD сказал:

P.S.2. Проявилась проблема. На ноутбуке веб интерфейс метеостанции открывается нормально, другие же устройства(компы, ноутбуки, смартфоны) не могут открыть, появляется ошибка соединения. Все устройства подключены к одной wi-fi сети, использую ip адрес метеостанции, выданный ей роутером(192.168.31.179).

К сожалению данной информации, недостаточно.

  • Как организована Ваша сеть?
  • С проблемных устройств подключаетесь к web интерфейсу метеостанции по имени или по адресу?
  • Проходит ли ping по имени? А по адресу?
10 минут назад, RusD сказал:

А что касаемо отключения вывода датчика Освещения?

Попробуйте закомментировать инициализацию библиотеки и объекта датчика. А также удалить в index.htm объект сенсора, связанный с инициализацией датчика освещенности.

<div class="sensor">
    <div class="title">Освещенность</div>
    <div class="unit">lx</div>
    <input class="knob light" data-width="200" data-displayPrevious=true data-fgColor="#FFF" data-skin="tron" data-thickness=".1" value="0" data-min="0" data-max="65000" readonly>
</div>

Удалить в функции chenge()

animate(".light", obj.light);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, RusD сказал:

Да нет же... ) Там все просто. Заместо строки 

Ну... я имею ввиду, что мне не понятно абсолютно, что там происходит))) Это программирование не для средних умов. А я просто приколхозил чего-то) Интуитивно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Друзья. Спасибо Вам за проявленный интерес к проекту. Хочу еще раз напомнить, что следующее обновление будет очень большим, своего рода v2.0 для всего проекта. В связи с этим, практически все исправления в теме станут не актуальны как в плане доработки, так и в плане их использования для собственных наработок.

  • Like 2
  • Thanks 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Kitsum сказал:

Скачайте и проверьте ушли ли Ваши проблемы

Да, проблема ушла. Спасибо. Но у себя обнаружил другую большую проблему. Если роутер перезагружается, ESP переходит в режим точки доступа. И обратно коннектится к роутеру , только после ручной перезагрузки... Или необходимо подождать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Kitsum сказал:

К сожалению данной информации, недостаточно.

  • Как организована Ваша сеть?
  • С проблемных устройств подключаетесь к web интерфейсу метеостанции по имени или по адресу?
  • Проходит ли ping по имени? А по адресу?

О, моя сеть необычна из за безысходности. ) Живу в селе, из за отсутствия возможности протянуть кабель, пришлось изворачиваться. В результате в комнате АТС села лежит 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 не пингуется, что очень странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, RusD сказал:

О, моя сеть необычна из за безысходности. ) Живу в селе, из за отсутствия возможности протянуть кабель, пришлось изворачиваться. В результате в комнате АТС села лежит 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 не пингуется, что очень странно.

Какой ип-адрес получает ноут, с которого удается подключиться (и пингуется) к метеостанции ?

Как этот ноут подключается к роутеру, по вифи или кабелем ?

Включен ли режим изоляции клиентов вифи в роутере ?

Ну и для общей информации - какие ип-адрес получают устройства, каторые не видят метеостанции ?

 

Видят ли другие устройства, подключенные к роутеру , другие устройства к нему же подключенные, помимо метеостанции ?

Изменено пользователем EVG
  • Thanks 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
42 минуты назад, EVG сказал:

Какой ип-адрес получает ноут, с которого удается подключиться (и пингуется) к метеостанции ?

Как этот ноут подключается к роутеру, по вифи или кабелем ?

Включен ли режим изоляции клиентов вифи в роутере ?

Ну и для общей информации - какие ип-адрес получают устройства, каторые не видят метеостанции ?

 

Видят ли другие устройства, подключенные к роутеру , другие устройства к нему же подключенные, помимо метеостанции ?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

to @Kitsum:

Ну дайте уже хоть приблизительную дату этой RC 2.0!!! Третий пост уже упоминания Вас о ней - штудирую все страницы :)

to all: я так к последним событиям по ip.... Дома обвесил все датчиками с разными проектами, тестовый роутер настроил на подсеть 192.168.2.1 и клиенты по дхсп с роутера ( dir-615 e4 длинковская родная прошивка) . В подсети - роутер 2.1, есп nodemcu - 2.22 с дхцп по маку и витти клауд - та же есп - 2.21 по дхцп по маку. Планшет 2.20 по дхцп и ноут - 2.23 по дхцп. Распберри пи 3 - статик 2.200 с мктт рсислогом и опенхабом. Еспешки с разными проектами метеостанций. В данном случае я насиловал РАСПБИАН ( или он меня своим стретчем) :) . Цель, понять связку мктт и опенхаба с заполнениями их данными с бме280 через есп. И вот, я споймал такой глюк... Пи пинговал всех - 1,20,21,22,23. Планшет на андроиде 1,20,23 и 200. Ноут (w8.1x64)1,20,23 и 200!!! Роутер видел всех (изоляция отключена). Попалась интересная вещь, на планшете стоит ping tools - c помощью ее проходил трасероут на 21 и 22 айпи в режиме udp. Icmp - нет. Начал ковырять длинк, так как провайдер тоже дает по 192.168.1.х. Так и не добил проблему. Закончилось все тем, что на роутере прописал 192.168.0.1, всех туда же с такими же характеристиками, только третий октет поменялся на 0 в пи, так как там статик. Есп даже не трогал - сид и пароль старый - и все завелось и пинги и мктт все ловить начал. Вот описание. Еще одна проблема была замечена с режимами вифи. Есп удаленная за 2 бетонные стены на балконе - к роутеру пытается по б подключиться. Которая ближе - по г. По н, на них ниразу не видел. Нужно будет еще каналами и шириной поиграться. Заметил многие девайсы не любят каналы больше 10 (включительно).

Кстати по пи3, таки стретч меня..., не смог я на нем весь мне нужный ункционал сделать ( - питон3.5 aio). Вернулся на джесси. Все работает как часы.

p.s. в описании 192.168.2.x - все по вифи, только распберри по проводу в лан роутера.

 

Изменено пользователем wildray
Уточнения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По-моему, помимо отсутствия автоматического реконнекта к роутеру после перезагрузки последнего, еще проблема с давлением на BME280. За несколько часов абсолютно не отклонилось от величины 740 мм.рт.ст. Вроде как, не бывает такого. В narodmon то же самое отправляет. 

P.S. Прошу прощения. С давлением разобрался. Вроде бы, всё в порядке. просто первое показание записалось как "0". Отсюда соответственное масштабирование графика было. В narodmon можно удалить это ошибочное показание. А как быть с графиком в веб-интерфейсе ESP? У меня там тоже первое значение давления равно нулю. И график поэтому в неправильном масштабе (прямая линия).

P.S.S. Да, с BME280 проблема: первое показание равно нулю. Нужно исключить его в коде.

 

 

sqTohf6AmHU.jpg

Изменено пользователем Forester

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может быть, в проекте приживется идея с индикацией скорости изменения атм. давления? Ведь, как правило, интересно именно это значение, а не абсолютное. Например, на дисплее HD44780 я реализовал это в виде четырех стрелок, указывающих либо вверх, либо вниз. Диапазоны для скорости изменения взял с часов CASIO ProTrek PRG-40. Получился такой код. Отлично работает. Очень информативно получается. Видишь на экране две-три стрелки - жди изменения погоды. Четыре - еще не видел ни разу ни на часах CASIO, ни на своей поделке.  Первые два часа вместо стрелок выводится слово "wait".  В общем, такой вариант отображения информации с барометра (на мой взгляд!) несет гораздо больше смысла, чем абсолютное значение. И даже крутизну графика давления оценить гораздо сложнее, чем четыре стрелки или, например, четыре цветовых уровня... Как уж это реализовать в интерфейсе - вопрос вкуса. Думаю, что в данном проекте это получилось бы красиво. 

   if(((Q2 - Q1) >= 0.64)&((Q2 - Q1) < 1.27)){             //Если разность между измерениями давления с интервалом в 2 часа от 0.64 до 1.27 мм.рт.ст.
           Press[0] = '\1';                                        //Зажигаем ОДНУ стрелку ВВЕРХ
           Press[1] = ' ';
           Press[2] = ' ';
           Press[3] = ' ';
           }
           if(((Q2 - Q1) >= 1.27)&((Q2 - Q1) < 2.54)){            //Если разность между измерениями давления с интервалом в 2 часа от 1.27 до 2.54 мм.рт.ст.
           Press[0] = '\1';                                       //Зажигаем ДВЕ стрелки ВВЕРХ
           Press[1] = '\1';
           Press[2] = ' ';
           Press[3] = ' ';
           }
           if(((Q2 - Q1) >= 2.54)&((Q2 - Q1) < 3.81)){           //Если разность между измерениями давления с интервалом в 2 часа от 2.54 до 3.81 мм.рт.ст.
           Press[0] = '\1';                                      //Зажигаем ТРИ стрелки ВВЕРХ
           Press[1] = '\1';
           Press[2] = '\1';
           Press[3] = ' ';
           }
           if((Q2 - Q1) >= 3.81){                                 //Если разность между измерениями давления с интервалом в 2 часа от 3.81 мм.рт.ст.  и более
           Press[0] = '\1';                                       //Зажигаем ЧЕТЫРЕ стрелки ВВЕРХ
           Press[1] = '\1';
           Press[2] = '\1';
           Press[3] = '\1';
           }

           if(((Q2 - Q1) <= -0.64)&((Q2 - Q1) > -1.27)){          //Если разность между измерениями давления с интервалом в 2 часа от -0.64 до -1.27 мм.рт.ст.
           Press[0] = '\2';                                       //Зажигаем ОДНУ стрелку ВНИЗ
           Press[1] = ' ';
           Press[2] = ' ';
           Press[3] = ' ';
           }
           if(((Q2 - Q1) <= -1.27)&((Q2 - Q1) > -2.54)){          //Если разность между измерениями давления с интервалом в 2 часа от -1.27 до -2.54 мм.рт.ст.
           Press[0] = '\2';                                       //Зажигаем ДВЕ стрелки ВНИЗ
           Press[1] = '\2';
           Press[2] = ' ';
           Press[3] = ' ';
           }
           if(((Q2 - Q1) <= -2.54)&((Q2 - Q1) > -3.81)){          //Если разность между измерениями давления с интервалом в 2 часа от -2.54 до -3.81 мм.рт.ст.
           Press[0] = '\2';                                       //Зажигаем ТРИ стрелки ВНИЗ
           Press[1] = '\2';
           Press[2] = '\2';
           Press[3] = ' ';
           };
           if((Q2 - Q1) <= -3.81){                                //Если разность между измерениями давления с интервалом в 2 часа от -3.81  мм.рт.ст.  и более
           Press[0] = '\2';                                       //Зажигаем ЧЕТЫРЕ стрелки ВНИЗ
           Press[1] = '\2';
           Press[2] = '\2';
           Press[3] = '\2';
           };

           if(((Q2 - Q1) < 0.64)&((Q2 - Q1) > -0.64)){             //Если разность между измерениями давления с интервалом в 2 часа от 0.64 до -0.64 мм.рт.ст.
           Press[0] = ' ';                                         //Не зажигаем ни одной стрелки  
           Press[1] = ' ';
           Press[2] = ' ';
           Press[3] = ' ';
           }

 

c-RQrT_EXB8.jpg

Изменено пользователем Forester
  • Like 1
  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пожалуйста, войдите для комментирования

Вы сможете оставить комментарий после входа



Войти сейчас

  • Похожие публикации

    • Автор: Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека CMD, реализует настройку микроконтроллера и управление вашей программой через терминал.
      Основная задача библиотеки, это прием пользовательских команд через UART интерфейс, их обработка и выполнение пользовательского кода, связанного с той или иной командой.
      Данная библиотека позволяет реализовать:
      Управление микроконтроллером Любую настройку, будь то WiFi, другие библиотеки или часть Вашей программы Вызывать Ваши задачи (функции) из терминала по команде и передавать им требуемые параметры Использовать контроллер в качестве шлюза между датчиками и программами на PC Внимание: любая команда, передаваемая в терминал обязана заканчиваться символом перевода строки "\n".
      Подключение библиотеки
      #include <cmd.h> Инициализация объекта, к которому мы будем обращаться для добавления команд. В качестве параметра объекту необходимо передать указатель на объект Serial или любой другой схожий по типу интерфейс.
      cmd command(&Serial); В функции Setup описываем какие команды требуется обрабатывать. Например, по команде "test" вызывать пользовательскую функцию с именем "myFunctionName". Имя пользовательской функции может быть абсолютно любым.
      void Setup() { Serial.begin(115200); command.add("test", myFunctionName); } Пользовательская функция будет вызываться каждый раз, когда по интерфейсу Serial поступит команда "test". Если команда будет передана с параметрами, то эти параметры будут переданы в качестве аргументов пользовательской функции.
      В функции loop должна находится команда вызова обработчика.
      void loop() { command.handleEvents(); } Пользовательская функция обязана соответствовать ряду требований:
      Не возвращать никакого результата (быть объявленной с типом void) Принимать в качестве первого аргумента переменную с типом byte в которой будет храниться число равное количеству переданных параметров Принимать в качестве второго параметра переменную с типом char** в которой будет храниться указатель на массив со всеми указателями (char*) на переданные параметры void myFunctionName(byte argc, char** argv) { /* ... */ } Функция всегда должна иметь такой вид, даже если не подразумевается, что ей будут передаваться какие-либо параметры.
      Чтобы перебрать все переданные параметры и вывести их в консоль, можно воспользоваться следующим примером
      void myFunctionName(byte argc, char** argv) { if (0 < argc) { for (uint8_t i = 0; i < argc; i++) { Serial.printf("%i. %s\n", i, argv[i]); } } } Пример вызова пользовательской функции без параметров и с ними
      # test No parameter was passed # test p1 p2 p3 p4 p5 0. p1 1. p2 2. p3 3. p4 4. p5 Помните, что параметры представлены в виде указателей и работать с ними нужно как с обычными переменными не получится т.к указатель содержит не значение переменной (переданный параметр), а указатель на ту область памяти микроконтроллера в которой это значение находится.
      Чтобы сравнить два значения, например, параметр под индексом 0 (идет первым в списке) с каким-либо значением в программе, воспользуйтесь функцией strcmp, которая возвращает целочисленное значение, указывающее на лексическое расхождение строк. Если строки равны, то возвращаемое значение равно 0.
      if (!strcmp(argv[0], "wifi")) { Serial.println(F("Первый аргумент WiFi")); } else { Serial.println(F("Первый аргумент НЕ WiFi!!!")); } Для копирования значения указателя в другую переменную с типом char можно воспользоваться функцией strcpy
      char myVar[20]; strcpy(myVar, argv[0]); if (myVar == "123456") { Serial.prinln(F("ok")); } Также можно обернуть указатель объектом String и получить весь функционал этого объекта, который будет содержать значение параметра
      String param1(argv[0]); // String param1 = argv[0]; Serial.printf("argv[0] length: %i\n", param1.length()); Serial.printf("argv[0] is integer?: %s\n", param1.toInt() ? "YES" : "NO"); if (param1 == "qwerty") { Serial.println(F("Hello QWERTY!")); } С библиотекой идут несколько примеров, в том числе и пример конфигурации WiFi в режиме STA.
      Автор Kitsum Добавлен 05.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Просмотреть файл [esp8266] Библиотека smartBlink, реализует умное управление штатным светодиодом, что позволяет добавить индикацию состояния вашей программы или микроконтроллера.
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
      Автор Kitsum Добавлен 10.12.2018 Категория Библиотеки  
    • Автор: Kitsum
      Основная задача библиотеки, это добавление индикации состояния Вашей программы или микроконтроллера. Отображение состояния производится посредством светодиода. Что самое важное, работа библиотеки через прерывание, это позволяет ей поддерживать индикацию даже в то время, когда выполняется длительный код основной программы. Например, Вы можете использовать её для отображения в каком режиме сейчас работает WiFi микроконтроллера, STA или AP и т.д. Или ход выполнения какой-либо операции, например, передача данных на внешний сервер.
      Подключение библиотеки
      #include <smartBlink.h> Чтобы инициализировать управление светодиодом необходимо создать объект, через который мы буем задавать режимы работы индикации.
      smartBlink::smartBlink(byte gpio, bool on = LOW); Объекту необходимо передать два параметра, первый это номер порта, на котором находится светодиод, а второй это уровень логического сигнала, который заставит светодиод работать. Сигнал может быть низким (LOW) или высоким (HIGH), это зависит от схемотехники подключения светодиода.
      Например, штатный светодиод модуля ESP12, использующий GPIO2 (порт 2) можно объявить следующим образом.
      #define led2_pin 2 #define led2_on_signal LOW smartBlink led2(led2_pin, led2_on_signal); Теперь можно в основной программе использовать метод устанавливающий какой режим индикации использовать.
      smartBlink::setMode(mode_t mode); Например, зададим режим светодиода led2 в котором светодиод будет давать одну короткую вспышку раз в секунду.
      led2.setMode(smartBlink::mode_flash1); Режимов работы может быть несколько.
      led2.setMode(smartBlink::mode_off); led2.setMode(smartBlink::mode_flash1); led2.setMode(smartBlink::mode_flash2); led2.setMode(smartBlink::mode_flash3); led2.setMode(smartBlink::mode_flash4); led2.setMode(smartBlink::mode_burn); led2.setMode(smartBlink::mode_inhalf); Чтобы вернуть предыдущий режим индикации для ранее объявленного светодиода led2 используйте следующий метод
      led2.previous(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...