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

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

@zloydimo4ka как минимум скачать библиотеки для этих датчиков и установить их в arduino ide, затем указать их в скетче.

https://github.com/adafruit/Adafruit_BMP280_Library

https://learn.adafruit.com/dht/downloads

В случае с заменой bmp180 на bmp 280

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

/*
   датчик атмосферного давления и температуры
   https://github.com/adafruit/Adafruit-BMP085-Library
*/
#include <Adafruit_BMP085.h>
Adafruit_BMP085 BMP085;
/*

на 

/*
   датчик атмосферного давления и температуры
   https://github.com/adafruit/Adafruit_BMP280_Library
*/
#include <Adafruit_BMP280.h>
Adafruit_BMP280 BMP085;
/*

и BMP280 должен заработать также как и BMP180. но BMP180/085 работать перестанут.

с DHT22 вроде бы так просто не отделаешься, там нужно больше код менять. Плюс ко всему этот датчик медленный, то есть чтение с него занимает порядка 200 миллисекунд. Не знаю, укладывается ли это в логику работы, задуманную @Kitsum .

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

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


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

@zloydimo4ka  что-то я прозевал, что они Adafruit Sensor не только к DHT, но и к BMP280 привязали.

Добавить в arduino ide https://github.com/adafruit/Adafruit_Sensor

В скетче добавить строку над уже существующей #include <Adafruit_BMP280.h>

#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

 

Изменено пользователем Alex_DIY
  • Like 2

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


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

@Alex_DIY Благодарю ,получилось. Попробую пока подключить один датчик  BMP280. И еще вопросик: к каким пинам подключается датчик?(надоел наверное уже9_9)

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


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

@zloydimo4ka 

   Задействованные пины
   ---------------------------------------
   NodeMCU Pins | ESP 07/12 Pins | Датчики
   ---------------------------------------
        D2      |      GPIO 4    |   SDA
        D1      |      GPIO 5    |   SCL
        3.3V    |      VCC       |   VCC
        GND     |      GND       |   GND

в принципе можно любые пины на esp8266 использовать под i2c шину и их можно переопределить

к примеру

#define pin_sda 12 // default sda pin
#define pin_scl 14 // default scl pin

у меня работает.

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

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


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

@zloydimo4ka доброе время суток. Осмелюсь предложить Вам отказаться от связки BMP + DHT и заказать BME280. Данный датчик позволит получить информацию как о давление с температурой, так и о влажности. Я уже упоминал о нем ранее, а на днях получил модуль с таким сенсором и обязательно поделюсь информацией о нем.

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


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

@Kitsum Добрый день. Спасибо за реализацию данного проекта, буду ждать дальнейшего развития проекта.  Последую вашему совету и закажу модули использующиеся в  вашем проекте. Но мне хотелось уже попробовать данную метеостанцию на имеющихся у меня сенсоров, почувствовать как говорится в деле. Вот надоедаю глупыми вопросами:)

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


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

Здравствуйте, очень понравилась ваша метеостанция. А могли бы вы добавить еще датчик СО2?

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


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

@mag21 доброе время суток. В планах попробовать датчик CCS811.

ccs811.jpg

  • Питание от 1.8 до 3.6V
  • Средний потребляемый ток 30 mA
  • Пиковый потребляемый ток 54 mA
  • Рабочая температура от -40 до 85 °С
  • Относительная влажность (без конденсации) от 10 до 95%
  • Приделы измерения CO2 от 400 до 8194 ppm
  • Приделы измерения TVOC от 0 до 1187 ppb

Он не из дешевых, но как по мне, лучше чем датчики из серии MQ.

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


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

@mag21 доброе время суток. В планах попробовать датчик CCS811.

ccs811.jpg

  • Питание от 1.8 до 3.6V
  • Средний потребляемый ток 30 mA
  • Пиковый потребляемый ток 54 mA
  • Рабочая температура от -40 до 85 °С
  • Относительная влажность (без конденсации) от 10 до 95%
  • Приделы измерения CO2 от 400 до 8194 ppm
  • Приделы измерения TVOC от 0 до 1187 ppb

Он не из дешевых, но как по мне, лучше чем датчики из серии MQ.

Датчик MQ не подойдет. Я предлагаю MH-Z19.

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


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

@Kitsum

судя по описанию это датчик летучих органических соединений, а не СО2.

А вообще к чему метеостанции датчик СО2? на улице концентрация СО2 довольно низкая и смысл ее измерять - практически нулевой. Ладно еще в комнате, там повышение уровня СО2 как сигнал к тому, чтобы провести проветривание комнаты.

MH-Z19 вроде б хороший датчик, но зачем его на улицу? Да и его рабочая температура согласно даташиту 0-50 градусов, явно не для российской улицы.

Комнатный сенсор для измерения микроклимата в помещении я тоже планирую ( температура, влажность, уровень СО2). В связи потреблением MH-Z19 порядка 20 мА на батарейке такой сенсор делать смысла нет, то видимо буду добавлять в существующую прошивку метеостанции Kitsum данный датчик. Если получится.

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

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


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

@Kitsum

судя по описанию это датчик летучих органических соединений, а не СО2.

А вообще к чему метеостанции датчик СО2? на улице концентрация СО2 довольно низкая и смысл ее измерять - практически нулевой. Ладно еще в комнате, там повышение уровня СО2 как сигнал к тому, чтобы провести проветривание комнаты.

MH-Z19 вроде б хороший датчик, но зачем его на улицу? Да и его рабочая температура согласно даташиту 0-50 градусов, явно не для российской улицы.

Комнатный сенсор для измерения микроклимата в помещении я тоже планирую ( температура, влажность, уровень СО2). В связи потреблением MH-Z19 порядка 20 мА на батарейке такой сенсор делать смысла нет, то видимо буду добавлять в существующую прошивку метеостанции Kitsum данный датчик. Если получится.

Как раз для измерения СО2 в комнате. На данный момент у меня уже есть домашняя метеостанция только она показывает показания на дисплее. Хотелось бы, чтобы еще на thingspeak или его подобные передавал.

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

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


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

@mag21 кстати, нашел прошивку с исходниками для esp8266 SI7021+BMP180+MH-Z19

https://github.com/kumekay/kuhomon

Правда там нет всей то красоты, что реализовал Kitsum. Но не вижу проблем, имея 2 рабочие прошивки добавить в прошивку Kitsum датчик MH-Z19.

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


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

@mag21 кстати, нашел прошивку с исходниками для esp8266 SI7021+BMP180+MH-Z19

https://github.com/kumekay/kuhomon

Правда там нет всей то красоты, что реализовал Kitsum. Но не вижу проблем, имея 2 рабочие прошивки добавить в прошивку Kitsum датчик MH-Z19.

Да, вы правы, как раз красота меня и привлекла.  Спасибо за ссылку. Попробую прикрутить данную прошивку.

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


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

Попробую прикрутить данную прошивку.

Дык оттуда можно позаимствовать код для работы с датчиком, добавить его в код прошивки Kitsum + отредактировать html шаблоны введя туда еще один кружок для индикации концентрации СО2. Как по мне - не сложно. У Kitsum понятный и логичный код + он все описал. Такую прошивку я б сам не придумал и не написал, но редактирование и добавление каких-то нужных мне фич даже у меня не вызывает сложностей, несмотря на то что я не программист.

 

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


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

@Alex_DIY Я опирался на описание eCO2 

Цитата

CCS811 supports intelligent algorithms to process raw sensor measurements to output a TVOC value or equivalent CO2 (eCO2) levels, where the main cause of VOCs is from humans.

То, что датчик более подходит для помещений, я полностью согласен, тем более, что об этом есть упоминание в технической спецификации. Но это только упоминание, а не предписание. Рабочие температурные ограничения меня радуют, но огорчают приделы влажности, но скорее всего, сенсор просто нельзя использовать в открытом виде. Возможно нужна какая-то система вокруг него, пока не знаю, это только мысли... В любом случае, попробовать хочется. Что касаемо измерения метеостанцией содержания CO2, то для меня это аналитический интерес т.к мой дом располагается вдоль дороги с интенсивным движением. Скорее всего будут явные пики на графике. Возможно, это также будет интересно держателям теплиц, или иных объектов, в которых могут использовать метеостанцию.

В общем, на счет дополнительных датчиков есть очень много мыслей, порой и противоречив. И раз уж затронули, то одна из зудящих идей, это счетчик Гейгера на Attiny85, или другом мелком микроконтроллере, в паре с одной иди двумя трубками СБМ20. Самостоятельно работающее устройство с I2C интерфейсом и возможностью подключения к метеостанции на ESP8266 в качестве одного из внешних датчиков. Готов к куче летящий камней в мой адрес, но это личная "хатенка" и, со временем, она получит жизнь, возможно и без описания на форуме.

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

IMG_0557.JPG

@mag21 На сколько я понимаю, MH-Z19 выдает готовые данные по UART или аналоговый сигнал. Максимальная сложность может быть только при синтаксическом анализе (парсинге) данных и некоторые накладные расходы по времени при их передаче. Возможно, в данном случае, выгоднее использовать порт Vo и АЦП микроконтроллера, думаю, что это будет быстрее. Это беглый взгляд, нужно читать документацию по данному сенсору.

На данный момент, я не готов приобрести такой датчик, но буду рад помочь советом, если он вообще понадобится, при интеграции MH-Z19 в проект.

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


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

@mag21 @Alex_DIY , да конечно парни CCS в три раза дешевле, как я понимаю, чем MH и к тому же интерфейс громоздкий, куча проводов... CCS подкинул чуть не на горячую на I2C и уже показания в "цифре" на руках... @Kitsum , а про Tiny85 и трубки, которые Вы упомянули, прошу хотя-бы меня держите в курсе, если не весь форум... так если что, много всяких железячек по случаю накопилось, будет желание отдам для экспериментов, у самого то руки (не с того места))) не доходят всё освоить, а у Вас я вижу талант... DigiSpark-и всякие Atmegi328-е, Тиньки 13-е, nRF24L+, W5100, ENC28J60  валяются неприкаянные, ну и мелочуга всякая, отсыплю прямо горстью, всё это конечно копеечное, но бывает прям идея какая возникнет, а с Китая ждать месяц... Вы в личку свисните чуть-что... (это я ещё не всё перечислил - куркуль)))

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

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


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

по сути это модуль для измерения радиации получится, с интерфейсом i2c... что ж интересно. Единственное СБМ20 не дешевы раз, во вторых рабочее напряжение 400В нужна хорошая повышайка. Либо мотать трансформатор повышающий (что наверное лучше для устройства), либо что-то на полупроводниковых микросхемах, но тут надо очень устойчивую схему и работающую на высокой частоте. 

@Kitsum насколько я понимаю, то в данном предложении говорится, что измеряет ЛОС или эквивалент СО2. То есть СО2 в ЛОС входит, но не всегда измеренное будет обозначать уровень СО2. Может, конечно, ошибаюсь.

 

На неделе закажу BME280 и MH-Z19 на али, буду делать датчики на работу, чтобы мотивировать коллег чаще проветривать кабинет.

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

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


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

буду рад помочь советом, если он вообще понадобится, при интеграции MH-Z19 в проект

Спасибо. Буду очень признателен за вашу помощь.

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


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

удалось добыть в черную пятницу MH-Z19 за 10$

можете скинуть ссылку продавца? не видел такой цены.

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


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

Обновление от 28.11.2017

Доброе время суток друзья. Последнее время начал образовываться зоопарк из датчиков используемых в проекте. Это привело к появлению нескольких копий метеостанции поддерживать которые попросту утомительно и, как показала практика, описания по переходу на альтернативные сенсоры не пользуются популярностью и могут устаревать. Конечно хочется угодить всем, но для перехода на тот или иной датчик людям приходится вносить изменения, как минимум, в трех разных частях кода проекта. Соответственно появляются вопросы, которых можно было бы избежать.

Теперь в проект добавлена поддержка как основных, так и альтернативных датчиков, но т.к вероятность замены сенсоров не высока, то нет смысла нагружать микроконтроллер одновременной поддержкой всего парка. И делать смену модели датчика в web интерфейсе. Для решения этой задачи были добавлены директивы условной компиляции. Это позволяет нам с Вами указывать используемые датчики только в одном месте кода, а именно, при подключении необходимых библиотек. Далее, при компиляции проекта, компилятор, опираясь на Ваш выбор, произведен необходимые изменения в коде. Но, чтобы это работало мы должны условиться использовать определенные библиотеки. Список поддерживаемых датчиков и соответствующих библиотек был обновлен и находится в первом посте темы.

IMG_0614.JPGIMG_0615.JPG

Рассмотрим как это работает на примере выбора датчика влажности. На момент публикации этого сообщения имеется поддержка датчиков HDC1080, SI7021 и HTU21D. Все необходимые библиотеки уже указаны в коде проекта. Если Вы хотите использовать SI7021, то просто раскомментируйте строки отвечающие за подключение соответствующей библиотеки и объявления переменной для датчика в начале кода программы.

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

/*
   датчик влажности и температуры
   HDC1080 https://github.com/closedcube/ClosedCube_HDC1080_Arduino
   SI7021  https://github.com/LowPowerLab/SI7021
   HTU21D  https://github.com/sparkfun/SparkFun_HTU21D_Breakout_Arduino_Library
*/
//#include "ClosedCube_HDC1080.h"
//ClosedCube_HDC1080 HDC1080;

#include <SI7021.h>
SI7021 SI7021;

//#include "SparkFunHTU21D.h"
//HTU21D HTU21D;

 

Учтите, что если Вы раскомментируйте несколько библиотек, использующих датчики на одном адресе I2C шины, то ни к чему хорошему это не приведет. Один адрес = один датчик = одна библиотека. Допустимо использование однотипных датчиков, но только с разными адресами и Вам придется самостоятельно добавить необходимую логику для второго датчика т.к это выходит за приделы общей логики проекта. Такие варианты по-прежнему будут рассматриваться отдельно.

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

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

  // HDC1080, SI7021 и HTU21D
  Wire.beginTransmission(0x40);
  if (Wire.endTransmission() == 0) {
    #ifdef _CLOSEDCUBE_HDC1080_h
      HDC1080.begin(0x40);
      temperature.status = humidity.status = true;
    #endif
    #ifdef si7021_h
      temperature.status = humidity.status = SI7021.begin(pin_sda, pin_scl);
    #endif
    #ifdef HTU21D_ADDRESS
      HTU21D.begin();
      temperature.status = humidity.status = true;
    #endif
  }

 

Аналогичный выбор будет сделан при компиляции функции отвечающую за чтение данных с датчиков

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

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
}

 

Для выбора между частями кода используются те или иные константы, объявленные авторами библиотек.

Добавлена поддержка нового датчика BME280. Сам датчик предоставляет показания температуры, влажности и атмосферного давления. По умолчанию используется адрес на I2C шине 0x76.

Также в код добавлена функция расчета абсолютной влажности, но она не задействована по умолчанию. Используйте её если это потребуется в Вашем проекте. 

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

/*
  Функция расчета абсолютной влажности воздуха (грамм воды на один кубический метр воздуха)
  https://carnotcycle.wordpress.com/2012/08/04/how-to-convert-relative-humidity-to-absolute-humidity/
*/
float sensorsAbsoluteHumidity(float t, float h) {
  double tmp = pow(2.718281828, (17.67 * t) / (t + 243.5));
  return (6.112 * tmp * h * 2.1674) / (273.15 + t);
}

 

Также были внесены мелкие доработки, не влияющие на общий функционал проекта.

  • Thanks 1

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


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

Добрый,
может еще прикрутить сюда возможность использовать температурные датчики типа ds18b20 на шине 1-wire ?

Датчики хорошие, распространенные,  работают стабильно.

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


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

@EVG доброе.

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

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


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

Добрый,
может еще прикрутить сюда возможность использовать температурные датчики типа ds18b20 на шине 1-wire ?

Датчики хорошие, распространенные,  работают стабильно.

@Kitsum Присоединяюсь.  Добавьте плиз поддержку ds18b20. Спасибо.

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

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


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

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

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



Войти сейчас

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

    • Автор: 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 пользователей

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

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