Jump to content
iT4iT.CLUB

Recommended Posts

@Андрей Иванов нет, нет. Вы указали вариант платы, на которой распаян модуль ESP8266. Вам следует проверить версию пакета ESP8266 установленного в Arduino IDE. Скорее всего Вы используете одну из последних, а необходимо установить ту, что указана в инструкции в первом посте. В ближайшее время я опубликую обновление с некоторыми исправлениями, и поддержкой последней среды разработки и пакета ESP8266.

Также внимательно смотрите на версию используемой библиотеки ArduinoJson. Все это описано в инструкции.

Share this post


Link to post
Share on other sites

Всё работает :) кроме одного,
сканер по шине I2C не находит устройств.
все контакты правильно, плюс менял . ну в двух проводках не заблудиться .датчик света 1750 и 085.
и еще очень сильно грузит проц , анимация на стартовой страничке.
хорошо бы ее  выключать.

Share this post


Link to post
Share on other sites

Доброе время суток.

06.12.2019 в 11:04, Андрей Иванов сказал:

сканер по шине I2C не находит устройств.

Значит ошибка в подключении имеет место быть. Для Вашей платы шина I2C была проинициализирована на портах D1 (SCL) и D2 (SDA). Возможно Вы их перепутали, или нет контакта или проблема на стороне датчиков. В любом случае, работа I2C сканера обкатана всеми участниками в этой теме и в его работоспособности нет сомнений. Кстати, он как раз и внедрялся для выявления подобных проблем. Еще раз все внимательно проверьте.

Вот как выглядит его работа сейчас у меня

image.png

06.12.2019 в 11:04, Андрей Иванов сказал:

и еще очень сильно грузит проц , анимация на стартовой страничке.
хорошо бы ее  выключать.

В данной теме Вы можете найти описание, как вырезать всю анимацию фона. Если есть возможность, то сообщите характеристики устройства, с которого Вы заходите в web интерфейс.

Share this post


Link to post
Share on other sites

Всем привет. Медленно, но верно закончил сборку метеостанции и установил ее на постоянное место работы. Предыдущая компоновка станции не заработала. Потому что я использовал витую пару для соединения датчиков и ESP, планировал ее поставил в помещение в тепле и сухости. Длинна витой пары была около 3х метров. Теперь же  установил ESP в герметичном корпусе на стойке рядом с блоком датчиков. Расстояние от датчиков до ESP получилось примерно 10-12 сантиметров. Сами же датчики закрепил на вертикальной пластмассой планке внутри готового китайского корпуса для температурного датчика от какой-то метеостанции. Сверху вниз получилось: датчик СО2, потом температура, влажность и давление и нижний датчик освещенности, который смотрит вниз. Платы покрыл 2 слоя прозрачного лака для ногтей для защиты от коррозии. Провода от датчиков к ESP проложил в прозрачной трубке для защиты от дождя и грязи. С платы расширения для ESP выпаял питающий коннектор и напрямую припаял провод питания, так как плата с коннектором и подключенным к нему штекером не помещалась в корпус. Вход датчиков и выход питания загерметизировал горячим силиконом. Положил внутрь корпуса пару пакетиков силикагеля для защиты от конденсата. Вот конечный результат. Предложения и советы приветствуются.

IMG_6505.JPG

2019-12-04 16-51-47.JPG

2019-12-07 11-33-35.JPG

IMG_8198.jpg

2019-12-04 18-18-21.JPG

  • Like 1

Share this post


Link to post
Share on other sites
07.12.2019 в 14:30, Kitsum сказал:

 D1 (SCL) и D2 (SDA). Возможно Вы их перепутали

В данной теме Вы можете найти описание, как вырезать всю анимацию фона. Если есть возможность, то сообщите характеристики устройства, с которого Вы заходите в web интерфейс.

D1 (SCL) и D2 (SDA) точно не перепутаны.
ну и поменять их не составит труда. проверял на другой программе с этими же пинами , всё работало.

ФФ браузер , проц два ядра 2 озу.

Share this post


Link to post
Share on other sites
22 часа назад, den48rus сказал:

Предложения и советы приветствуются.

 

 

 

IMG_8198.jpg

 

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

Share this post


Link to post
Share on other sites

Файлы проекта обновлены. Добавлена поддержка последних, на момент публикации, версий Arduino IDE и модуля ESP8266. Добавлены небольшие исправления и доработки. При использовании, указанных в основном посте, версий программных компонентов Вы не получите вылет программы с критической ошибкой. Исправлена серьезная ошибка в медианном фильтре, кто использует проект обязательно обновите у себя объект medianFilter_t, он находится в tools.h

В разделе загрузок, добавлена утилита для загрузки файлов web сервера во flash память. Также в описании к файлам, добавлена ссылка на скачивание готовой Arduino IDE со всеми библиотеками, утилитами, и последней версией проекта.

Для работы модуля загрузки файлов во Flash может понадобится последняя версия Python https://www.python.org/downloads/

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
08.12.2019 в 19:49, Андрей Иванов сказал:

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

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

Share this post


Link to post
Share on other sites
4 часа назад, Kitsum сказал:

Файлы проекта обновлены

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

Share this post


Link to post
Share on other sites
4 часа назад, post125 сказал:

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

Будем наблюдать. Сравнивать показания с метеостанциями в городе. Пока станция работает хорошо. Датчик CCS811 почти бесполезен, не могу уловить суть его работы и показания, от чего зависят, с чем связаны резкие скачки и т.д. Читал, что он должен корректировать свои показания от температуры. К датчику BH1750 вопросов нет, показания начинают расти точно по времени рассвета из прогноза погоды. Чем бы заменить CCS811?! Есть ли у кого-то какие-нибудь наработки с NRF2401?! И последнее. Буду очень благодарен за инструкцию, как прикрутить Blynk. Спасибо!

Share this post


Link to post
Share on other sites

Доброго времени суток участники треда и @Kitsum, вопрос такой, можно ли имплементировать логику работы в режиме AP+STA, помимо AP, STA в текущую прошивку?

Пытаемся с другом сделать уже 2 месяца.
Удалось подкорректировать вашу прошивку под наши нужды (конечно, в домашнее пользование), слегка подправить front-end, разбив разметку, стили, скрипты в отдельные файлы (возможно, дольше первоначальная загрузка, зато, имхо, это лучше чем динамическая подгрузка скриптов), прикрутить кастомные датчики (AHT10), добавили даже AP+STA, но, из-за того, что не понимаем логику работы wifi.h, в частности работу методов wifi::disconnect(), wifi::start(), wifi::ap(), wifi::sta(), wifi::handle...() станция работает примерно 4-8 часов и затем наглухо крашится (помогает только ручной сброс питания).

Попытались обновиться на вашу прошивку 2.0 и прикрутить датчики - все работает и не падает, но необходим именно режим AP+STA, для того, чтобы другая плата ESP8266, которая является часами с дисплеем, отображающим данные с датчиков могла периодически стучаться в метеостанцию, получать данные о времени и датчиках, и возвращать их обратно в часы.

wifi::disconnect():
- в случае AP+STA, я так понимаю, можно просто написать:

WiFi.softAPdisconnect();
// без еще дополнительного отсоединения для STA: WiFi.disconnect()


wifi::ap_sta():
- в случае AP+STA, тут у нас изначально было что-то смещенное из wifi::ap() и wifi::sta(), но зачем создавать две точки доступа, посредством softAP() и begin() :D

wifi::handle..():
- в случае AP+STA, можно ли просто использовать те же методы, ту же логику, что и используется уже у вас в режиме Access Point (AP)?

Большое спасибо за любую помощь или подсказку, как это можно реализовать и можно ли вообще реализовать!

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

Мы не знатоки C/C++, JS, но есть знания, полученные в вузе

 

Edited by kamikozz

Share this post


Link to post
Share on other sites
16.12.2019 в 03:15, den48rus сказал:

Есть ли у кого-то какие-нибудь наработки с NRF2401?

Пробовал подключать nrf24l01+ к esp8266, все работает без проблем

Нужно только встроить код работы с nrf в код метеостанции и передать данные переменным метеостанции

Share this post


Link to post
Share on other sites

Доброе время суток.

15.12.2019 в 19:41, post125 сказал:

А ESP32 на горизонте не виднеется?

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

image.png

 

@kamikozz Рад, что Вы с таким азартом отнеслись к этому проекту. Но, к сожалению, Вы упустили главную мысль - проект модульный и wifi.h один из модулей с малым количеством зависимостей, а если быть точным, то от него не зависят другие модули вообще. Вы вправе вообще удалить его или полностью переписать согласно необходимой логике работы.

Главная идея wifi.h, это балансировка между режимами AP и STA. Нормальным считается, что контроллер подключен к домашней беспроводной сети, если этот пункт не выполнен, то контроллер переходит в режим AP и периодически пытается найти домашнюю сеть. В этом режиме мы получаем возможность его перенастроить т.к контроллер мог потерять домашнюю сеть из-за того, что у неё изменился SSID или контроллер переехал на другое место жительства.

В Вашем случае работа данного модуля немного противоречит тому, что Вы хотите получить т.к в случае отсутствия связи с домашней точкой доступа контроллер будет пытаться её найти, а это возможно только при переводе контроллера в режим STA для сканирования эфира. В Вашем случае в этом нет необходимости, и можно пользоваться штатными средствами восстановления связи, предоставляемыми на аппаратном уровне т.к для установки новой точки доступа в качестве домашней, достаточно подключиться к точке поднимаемой контроллером в режиме AP+STA, ведь она доступна всегда.

Но у меня вопрос, зачем Вам режим AP+STA? Возможно лучше и надежнее подключить второй контроллер к общей с первым точке доступа и просто перекидываться через HTTP API запросами?

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

25.12.2019 в 15:40, kamikozz сказал:

слегка подправить front-end, разбив разметку, стили, скрипты в отдельные файлы (возможно, дольше первоначальная загрузка, зато, имхо, это лучше чем динамическая подгрузка скриптов)

Кстати, именно по этой причине много кода WEB интерфейса размазано по малому количеству файлов, в Index.htm валяется и css и java, а в css сохранены некоторые картинки. Динамическая подгрузка компонентов. Все это позволяет уложиться в минимальное, как я это видел, количество tcp соединений с контроллером т.к браузер загружает все компоненты страницы параллельно, а текущий web сервер не способен обрабатывать более одного соединения за раз, да и у контроллера попросту нет на это ресурсов. Обязательно помните об этом.

Но вернемся к wifi.h. Если Вам ближе режим AP+STA место центрального маршрутизатора для обоих контроллеров, то просто удалите wifi.h и в основном файле добавьте необходимый режим. Убедитесь, что имеете доступ со стороны AP и STA. После этого можете начинать прикручивать сохраненные в config значения параметров для поднятия точки с нужным именем и для подключения к домашней точке доступа.

@Neon @den48rus давайте разбираться с NRF. Под рукой, в текущий момент, её нет, но мы попробуем и пробежимся по основным моментам.

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

vid_nrf24l01.jpg

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

Прерывание поможет получать данные в тот момент когда, они пришли и это будет незаметно для остальных процессов. Бегло, я нашел информацию, что прерывание генерирует низкий уровень сигнала на порту IRQ. Отследить его можно с помощью attachInterrupt. В функции, которая будет вызвана при прерывании реализуйте логику чтения данных, как это делается в обычном случае.

А теперь самое интересное. Например, в библиотеки RF24.h, которую, как мне кажется, используют многие, возможно использовать свой тип данных для передачи. Таким образом Вы можете объявить свою структуру, в которой можно определить что угодно. Допустим не просто пустые и безликие данные, а тип сенсора, показания с нескольких датчиков и, например, напряжение питания удаленного устройства.

struct { 
  byte type; 
  float temperature; 
  float humidity; 
  float voltage;
} nrf_data;

nrf_data remote_sensor;

Теперь важный момент. Переменная, которую мы будем использовать для хранения данных (в примере remote_sensor), должна быть объявлена в глобальном пространстве имен чтобы избежать проблем в дальнейшем, конечно, если у Вас нет иного механизма передачи данных между модулями проекта.

После того как данные будут переданы, они будут сохранены в оперативной памяти микроконтроллера. Теперь их необходимо связать с сенсором, а это уже совсем не сложно.

sensors.add(new knob_t(0, 100, ".01", "Влажность", "%"), "Humidity",
    [&](){ return remote_sensor.humidity; }
);

Конечно, могут быть ситуации, когда в момент чтения переменной будет произведена попытка её перезаписи, но и это можно решить.

В общем, у Вас все должно получиться. Но если будут вопросы, то обязательно пишите, и я постараюсь найти NFR24 и подготовить полноценный код для решения этой задачи.

 

  • Like 1
  • Thanks 2

Share this post


Link to post
Share on other sites
1 час назад, Kitsum сказал:

подключается она по SPI, а это значит, что потребуется много портов

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

  • Like 2

Share this post


Link to post
Share on other sites

@post125 да, подключение через контроллер посредник будет самым выгодным. На сколько мне помнится, Вы уже скидывали в эту тему свои наработки. Вот бегло нашел первый пост https://it4it.club/topic/55-meteostanciya-na-esp8266-ot-it4itclub/?do=findComment&comment=1203, начиная с него можно почитать о Вашем опыте. Но хоть это больше про I2C, думаю заинтересованным будет интересно.

 

  • Like 1

Share this post


Link to post
Share on other sites
2 часа назад, Kitsum сказал:

@post125 да, подключение через контроллер посредник будет самым выгодным. На сколько мне помнится, Вы уже скидывали в эту тему свои наработки. Вот бегло нашел первый пост https://it4it.club/topic/55-meteostanciya-na-esp8266-ot-it4itclub/?do=findComment&comment=1203, начиная с него можно почитать о Вашем опыте. Но хоть это больше про I2C, думаю заинтересованным будет интересно.

 

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

метеостанция ESP8266 структура_int 12-7-19.xlsx.pdf

Edited by post125

Share this post


Link to post
Share on other sites
29.12.2019 в 02:23, Kitsum сказал:

На сколько я понимаю, подключается она по SPI, а это значит, что потребуется много портов. Следовательно, Вам придется освободить все порты, используемые под управление нагрузкой, но скорее всего еще что-то.

стандартно используется 5 проводов, 3 SPI,  CE и CSN , если передавать модулем не планируется, а работать только на прием, на  CE можно просто подать высокий уровень, итого используется 4 вывода

IRQ использовать не обязательно, за раз NRF принимает 32 байта и хранит их в буфере, есть ли в буфере данные проверяется флагом, который после прочтения буфера сбрасывается

библиотеку использую RF24, вот так проверяется буфер
 

if(radio.available()){
        radio.read( &data, sizeof(data)); 
}

 

чуть позже выложу простой рабочий скетч на esp, который просто принимает данные

Edited by Neon
  • Like 1

Share this post


Link to post
Share on other sites
23.09.2019 в 17:19, Kitsum сказал:

Доброе время суток.

Все сделано не совсем явно, т.к делалось для себя, ну да ладно. Давайте разбираться.

В первую очередь нужно рассмотреть форму в web интерфейсе, а точнее раздел под названием "Корневой путь".

image.png

Данное поле связано с параметром конфигурации ESP8266 с идентификатором mqtt_path

 image.png

Теперь идем в модуль services.h и смотрим как формируется путь топика

image.png

Видим, что полный путь состоит из значения параметра mqtt_path и значения переменной topic передаваемой в качестве параметра функции mqttPublish

Теперь смотрим функцию sendDataToMQTT, а точнее ту её часть, где вызывается mqttPublish

image.png

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

Теперь, если в web интерфейсе мы укажем корневой путь home/wetherStation/outdoors, а в коде будем использовать вызов mqttPublish как показано на скриншоте, то данные будут отправлены по следующим адресам топиков:

  • home/wetherStation/outdoors/light
  • home/wetherStation/outdoors/temperature
  • home/wetherStation/outdoors/humidity
  • home/wetherStation/outdoors/pressure

Вот в принципе и все. Подписывайтесь на эти топики или сразу на корневой топик и получайте информацию от метеостанции.

 

ни как не получается отправить данные на сервер cloudmqtt.com.  У кого получилось, плз поделитесь!!

123123.jpg

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By Kitsum
      Хотите помочь проекту или спонсировать новый?
      Yandex.Money PayPal.me Тема проекта
      Arduino IDE + Project + Libraries + tools: https://yadi.sk/d/jseefFB50NMhAg
    • By 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 Категория Библиотеки  
    • By 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 Категория Библиотеки  
    • By 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(); Благодаря работе библиотеки через прерывания по таймеру, индикация будет работать даже в тех случаях, когда выполняется долгий код.
      С библиотекой идут несколько примеров.
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...