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

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

37 минут назад, Kitsum сказал:

@EVG доброе.

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

Ну да, тут  как всегда возможны варианты.


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

И предварительно нужно описать датчики соотв. их id , кто где находится и какую инфу выдает.

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


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

Мне кажется не сколько датчиков ds18b20 выходят за рамки понятия метеостанция. Один да, вписывается, допустим, человек хочет собрать метеостанцию имя лишь модули bmp180 и ds18b20. 

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


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

Мне кажется не сколько датчиков ds18b20 выходят за рамки понятия метеостанция. Один да, вписывается, допустим, человек хочет собрать метеостанцию имя лишь модули bmp180 и ds18b20. 

И несколько датчиков - тоже вписываются, например, самый простой : один на улице и один в хате, в комнате, да и не в одной.
Тут с теплицами народ мутит, тут тоже можно гроздь их раскидать.

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


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

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

Во-вторых, раскидать датчики температуры по комнатам вообще сомнительно. Вы подключает датчики к БЕСПРОВОДНОМУ модулю, чтобы потом опутать квартиру проводами датчиков? Сомнительное решение с точки зрения проектирования. Уж не говорю об ограничении длины связи цифрового интерфейса. 

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


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

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

Во-вторых, раскидать датчики температуры по комнатам вообще сомнительно. Вы подключает датчики к БЕСПРОВОДНОМУ модулю, чтобы потом опутать квартиру проводами датчиков? Сомнительное решение с точки зрения проектирования. Уж не говорю об ограничении длины связи цифрового интерфейса. 

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

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

 

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

 

Trm.jpg

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


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

Я конечно не против ds и других сенсоров, а еще можно датчик влажности в вазон и rfid считыватель для погодной станции.....

Подскажите плиз топикстартер, последний скетч залил со асеми файлами, но интересно о bme - закоментировал 2 строки с бмп и раскоментировал 2 с включением бме. Залил. Подключен чисто бме на 76 прерывании и датчик света. В управлении веб я его вижу. А индикаторы не показывают ни температуру не влажность и давление, кроме интенсивности света. Датчик рабочий, другой проект на этой же плате с этим датчиком работает. Что не так? И с вольтажем вопрос 2.78 - где подкалибровать?

Изменено пользователем wildray
ошибочки

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


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

@wildray

23 часа назад, wildray сказал:

И с вольтажем вопрос 2.78 - где подкалибровать?

 

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

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


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

@wildray Давайте разбираться.

Я провел эксперимент со следующими датчиками.

  • Сборка 3 в 1 в лице BH1750, HTU21D и BMP180
  • Датчик 3 в 1 BME280

Выглядит это следующим образом

ДатчикиПодключение

Из всего этого супового набора задействованы BH1750 + BME280. Чтобы задействовать именно эту сборку, необходимо только раскомментировать соответствующие им библиотеки, а все остальное закомментировать.

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

/*
   датчик освещенности
   BH1750 https://github.com/claws/BH1750
*/
#include <BH1750.h>
BH1750 BH1750;
/*
   датчик влажности и температуры
   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;
/*
   датчик атмосферного давления и температуры
   BMP085 https://github.com/adafruit/Adafruit-BMP085-Library
*/
//#include <Adafruit_BMP085.h>
//Adafruit_BMP085 BMP085;
/*
   датчик атмосферного давления, температуры и влажности
   BME280 https://github.com/finitespace/BME280
*/
#include <BME280I2C.h>
BME280I2C BME;

 

Больше никаких изменений вносить не нужно.

Вот, что имеем в итоге на web сервере микроконтроллера и, что показывает сканер I2C шины

esp8266_30.11.2017_test2.pngesp8266_30.11.2017_test1.png

Прикрепляю скомпилированный файл (4mb Flash / 3mb SPIFFS) для Вашего тестирования: ESP8266_WS_iT4iT.CLUB.ino.nodemcu.zip

16 часов назад, wildray сказал:

И с вольтажем вопрос 2.78 - где подкалибровать?

Ищите функцию web_api_system_info, Вас интересует следующая строка

answer += "\"vcc\":\"" + String(ESP.getVcc() * 0.001) + " V\",";

PS: все внимательно проверяйте.

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


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

Большое спасибо - все случилось у меня.

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

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

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

it4.thumb.jpg.78267b7604e64bd5877fd1187f0a8331.jpg

Но все равно, я очень рад, что получилось.

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

На сталкивались случайно с таим - что можно было сделать с бме, чтоб он такое показывал?!? Эксперементировал, вроде подключал как нужно, но получилось у меня таких 2 - один который на плате обычной распаян, а другой с преобразователем питания. Можно ли в них при использовании каких-то библиотек так убить? 

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

it42.thumb.jpg.ed1b7f397bb8a630ff0fa50cf4f6079e.jpg

Я, честно с всякими есп и т.п. никогда дел не имел, это как хобби, нигде не могу найти ответа - програмирование с иде и есплорера - это 2-ве разные вещи?

В Вашем случае - провильно ли я делаю - прошиваю файл бин флешером в 0х0000.. потом открываю файл ино в иде проверяю и заливаю, третим этапом заливаю скеч дата аплоадером файлы?

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


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

И с вольтажем вопрос 2.78 - где подкалибровать?

Ищите функцию web_api_system_info, Вас интересует следующая строка


answer += "\"vcc\":\"" + String(ESP.getVcc() * 0.001) + " V\",";

а на Народный мониторинг так и будут уходить заниженные показания.?!

Ой извиняюсь, тупанул, в оригинале туда ведь напряжение не отправляется... )))

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

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


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

В Вашем случае - провильно ли я делаю - прошиваю файл бин флешером в 0х0000.. потом открываю файл ино в иде проверяю и заливаю, третим этапом заливаю скеч дата аплоадером файлы?

я делаю так:

1) "заливаю скеч дата аплоадером файлы"

2)"открываю файл ино в иде проверяю и заливаю"

"файл бин" это и есть скомпилированный "в иде файл ино "...

Но это всё при первой прошивке ESP, а при всех последующих если надо изменить программу делаю это через web интерфейс уже без проводов...

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

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


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

@wildray

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

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

смотрите - "файл бин" это и есть скомпилированный "в иде файл ино "...

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

при использовании каких-то библиотек так убить? 

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

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


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

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

Интересный вопрос всплыл:-)  а я коэффициент изменил с 0.001 на 0.001025, в Вашем убедился бы мультиметром, что к ESP приходит таки 3.3 В и  поменял бы коэффициент на 0.0011874.

Интересно,как всё-таки это надо корректировать как постоянную ошибку - прибавлением, или же умножением. Я где-от встречал, что умножением на поправочный коэффициент и у меня он получился 1.025, чтобы получить величину в милливольтах как по мультиметру. А теперь подумал, что может правильнее было б вычесть-прибавить... как постоянную ошибку.

 

  • Like 1

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


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

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

у некоторых можно , наверное, калибровку разве что сбить. Да и то не уверен.

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

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


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

может правильнее было б вычесть-прибавить

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

1 час назад, Alex_DIY сказал:

калибровку разве что сбить

ну ежели влезть напрямую в "мозги" датчика, наверно возможно, но по I2

9 часов назад, wildray сказал:

при использовании каких-то библиотек

думаю исключено...

Скорее всего там физическое воздействие могло быть (если он действительно "убит"), плохой контакт, неверное подключение...  У меня на макетке бывало, что BME280 просто отваливался, показывал или нули или полную шкалу, при этом в I2C сканере он пропадал...

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


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

Bme- я отталкиваюсь от показаний с него температуры. Был какой- то проект метеостанции  ( если нужно, могу найти) вот именно после него у меня 2 датчика ( один обычный а другой с стабилизатором) начали показывать -40 при +20. Датчики штука такая, уже с китая ради интереса по одному позаказывал, чтоб покрутить в руках самому и посмотреть кто есть ху и ху из кто! Пока однозначно могу сказать с bmp280, bme280,sil7xx которые с пленкой белой, sht31x и ds18xx - данные "что-то" похожы на правду, и тенденция изменений по ним - ( тестил все в радиусе 20см на распберри). А вот после верхних -dht11, am2301, 2320 - ну просто нет слов ( одни слюни и те заканчиваются). При тестах от +10 до +35 влажности 40-80, ведут себя как "почти угадал- то и показал".

Тест стенд:

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

1512105830263.thumb.jpg.fb67dddca2beac2a4a21793f1aaaebbf.jpg

 

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

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


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

@wildray вот это

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

1512105830263.jpg.6a086dc924c9851844300c520516b240.jpg.42bbc106802fe3979c8cdb297d210c53.jpg

 как я понимаю, те самые "два BME280", висят на шине I2C, параллельно с одним адресом и при этом вы ожидаете от них адекватного поведения..?!

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


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

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

Отцепил все конденсаторы  +3.3 от земли, короткое не пропало, отсюда вывод - коротит сам датчик или распайка под ним. Теперь веду беседу с продавцом. )

(Питание на датчик подавал ПРАВИЛЬНО)

Потом уже распаковал датчики гиро и часики на i2c, подключил, сканер их нашел.

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


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

 

 

2 часа назад, EndWar сказал:

@wildray вот это

  Показать содержимое

1512105830263.jpg.6a086dc924c9851844300c520516b240.jpg.42bbc106802fe3979c8cdb297d210c53.jpg

 как я понимаю, те самые "два BME280", висят на шине I2C, параллельно с одним адресом и при этом вы ожидаете от них адекватного поведения..?!

Не, ну уж совсем меня за пряника считать не стоит - я всегда вначале читательский абонемент обновляю в гугле, как минимум месячный - а потом только прошу помочь. По принципу - прогуглил 3 страницы бегло, зеленую вторую и букварь, а потом типа - помогите "сделать за меня, чтоб я не напрягался" - это не обо мне!!! Конкретно, там где обведено - bme280 на 76 прерывании и bmp280 на 77 прерывании. Это, с чего как говорится было - универсальный тестовый выход шины i2с.

Изменено пользователем wildray
дописка

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


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

@wildray , ну вы не обижайтесь, просто как-то путано объясняете...  Отдельно BME и тестовую программу пробовали..?! Так и показывает -40..?!

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


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

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

Они различаются т.к скомпилированы под разные датчики. Тот, что я скинул Вам, предназначен именно для BH1750 и BME280, а тот, что на первой странице для датчиков из описания, это BH1750, SI7021 и BMP180.

19 часов назад, wildray сказал:

Можно ли в них при использовании каких-то библиотек так убить?

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

19 часов назад, wildray сказал:

Я, честно с всякими есп и т.п. никогда дел не имел, это как хобби, нигде не могу найти ответа - програмирование с иде и есплорера - это 2-ве разные вещи?

В Вашем случае - провильно ли я делаю - прошиваю файл бин флешером в 0х0000.. потом открываю файл ино в иде проверяю и заливаю, третим этапом заливаю скеч дата аплоадером файлы?

Есть много вариантов программ для прошивки микроконтроллера, но по сути, они все делают одно и тоже. Использование среды Arduino подразумевает заливку программы через Arduino IDE. Прикрепленный к проекту .bin файл обычно нужен для прошивки через web, но в статье, по разным причинам, встречаются пробелы. Данное упущение я исправлю в ближайшее время. Используйте Arduino IDE для компиляции и загрузки программы, а также для загрузки содержимого каталога data на Flash. Использование Arduino IDE выгодно тем, что она проверяет обновления библиотек в автоматическом режиме и уведомляет Вас о доступности новой версии.

@Alex_DIY @EndWar @wildray Друзья, что касаемо напряжения, позволю себе немного пофилософствовать.

Думаю, что стоит копать в сторону порта ADC/TOUT. К нему подключен делитель напряжения (отдельный блок ADC на схеме) на двух резисторах - 100k и 220k.

NODEMCU_DEVKIT_SCH.png

Изначально АЦП микроконтроллера настроен на чтение из TOUT (порт A0), а мы перенастраиваем его

ADC_MODE(ADC_VCC);

И получаем возможность пользоваться функцией

ESP.getVcc()

Теперь смотрим, что имеется в последнем техническом описании от разработчика на странице 5 и 17

0a-esp8266ex_datasheet_en-09.png0a-esp8266ex_datasheet_en-21.png

ADC может работать в одном из двух режимов VDD3P3 и TOUT, но они не совместимы между собой. А также, если я правильно понимаю запись в разделе 4.9 для VDD3P3 - "TOUT must be floating", требует от нас отсоединить порт ADC от делителя напряжения используемого в плате NodeMCU и ей подобных, скорее всего оставить его в воздухе.

НЕ СПЕШИТЕ: Также интересно, что если посадить порт ADC на VCC (ESP8266) и попробовать снимать данные напрямую. Но предварительно надо все обдумать дабы не нанести вред контроллеру.

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

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


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

@wildray , ну вы не обижайтесь, просто как-то путано объясняете...  Отдельно BME и тестовую программу пробовали..?! Так и показывает -40..?!

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

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

Они различаются т.к скомпилированы под разные датчики. Тот, что я скинул Вам, предназначен именно для BH1750 и BME280, а тот, что на первой странице для датчиков из описания, это BH1750, SI7021 и BMP180.

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

Есть много вариантов программ для прошивки микроконтроллера, но по сути, они все делают одно и тоже. Использование среды Arduino подразумевает заливку программы через Arduino IDE. Прикрепленный к проекту .bin файл обычно нужен для прошивки через web, но в статье, по разным причинам, встречаются пробелы. Данное упущение я исправлю в ближайшее время. Используйте Arduino IDE для компиляции и загрузки программы, а также для загрузки содержимого каталога data на Flash. Использование Arduino IDE выгодно тем, что она проверяет обновления библиотек в автоматическом режиме и уведомляет Вас о доступности новой версии.

@Alex_DIY @EndWar @wildray Друзья, что касаемо напряжения, позволю себе немного пофилософствовать.

Думаю, что стоит копать в сторону порта ADC/TOUT. К нему подключен делитель напряжения (отдельный блок ADC на схеме) на двух резисторах - 100k и 220k.

Автор! Статья просто супер, облизан проект что и не докопаешься!!! Ваши познания -  просто радуют! Как Ленин, "кратко и по делу!" без лишних слов.

Еще раз, мои познания в данном направлении малы. Я думаю, стремление знаний должно приветствоваться. 

Еще раз уточню, я понимаю для скетча и файлов - необходима основа "прошивка". При компилировании прошивки на том же сервере онлайн - выбираются модуля, которые будут использоваться. Ход действий правильный у меня - прошиваю флешером bin который вы мне последним кинули, потом через ide открываю файл ino (проверяю и заливаю скеч), потом нажимаю "скеч дата аплаодер", и он догружает файлы? Правильно?!?

Если в перспективе, в Вашем проекте я захочу подключить  BH1750 - для измерения интенсивности света, SI7021 - для температуры и влажности и BME280 только для давления (потому что, именно бме есть а бмп нет), то прошивка уже не подойдет, т.к. на первой странице прошивка с включением модулей "BH1750, SI7021 и BMP180", а последняя для "BH1750, BME280" и.....комментирование в скетче вида датчиков - не поможет?!?

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


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

я немножко не с вамиB|, ибо у меня  пины ADC, 4,5 ножки висят в воздухе, так как я использую "голый модуль" esp8266-07. У меня поправочный коэффициент получился 1.025 (ESP.getvcc*1,025). В итоге за 2 месяца использования не сильно то и скачет напряжение. Но питание у меня батареечное, как я уже писал (3х АА) черед dc-dc LDO MCP1700.

Обрыв на графике - это у меня интернет отрубился на несколько дней, пока я был в отпуске, модуль продолжал работать и не выключался с 27 сентября 2017 года.

 Фото модуля, это еще во время отладки делал и поэтому питание на ней заведено уже готовое 3.3 вольта(желтый и зеленый проводки), минуя dc-dc.

SAVE_20171201_141206.jpg

graf.png

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


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

BME280 только для давления

имея этот датчик, не имеет смысла подключать 

 

7 минут назад, wildray сказал:

SI7021

так как BME280 сам умеет измерять относительную влажность и температуру не хуже.

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


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

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

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



Войти сейчас

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

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

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

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