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

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

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

В 30.07.2017 в 18:40, Alex_DIY сказал:

1) через вэб интерфейс с помощью IE 11 не удается обновить прошивку - на опознает бинарник за файл прошивки.

IE 11 считается устаревшим браузером и не имеет необходимой поддержки для корректной работы web интерфейса. Ему на смену пришел Microsoft Edge, большую часть функционала он уже должен поддерживать. Под продукты Microsoft необходимо подстраиваться отдельно. Я, по большей части, использую Google Chrome и Safari, но все должно также корректно работать в FireFox и во всех браузерах на движке Blink.

В 30.07.2017 в 18:40, Alex_DIY сказал:

после успешной заливки прошивки и рестарта микроконтроллера, в ком порт сыпется бесконечное

Процессы прошивки микроконтроллера напрямую и по "воздуху" различаются. Если память не подводит то, в последнем случае, прошивка заливается в специальную область на flash и после начинается процесс прошивки. Возможно Вам будет интересна эта тема https://github.com/esp8266/Arduino/issues/2438 но я все же склоняюсь к недостаточному объему flash для нормальной поддержки OTA.

Осмелюсь предложить произвести замену flash памяти на W25Q32BVSSIG (25Q32BVSIG) SO-8, 32Мбит, 4МБ. Это копеечная память, да и замена не займет много времени. 

Datasheet: DOC001081512.pdf

  • Like 1

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


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

@Kitsum

Вы правы, проблема была в памяти. Ужал вэб интерфейс до 190кб, выделил под spiff 256 кб, получается под прошивку осталось порядка 740 кб. Учитывая размер бинарника в 320 кб, 2 стали помещаться в область для прошивки .... и обновление через вэб интерфейс стало проходить успешно.

Почитал про ОТА, где собственно и было сказано, о том, что место под прошивку должно быть с расчетом на старую + новую, плюс 4 кб на загрузчик. Единственное что, при ОТА правильность и полнота заливки прошивки проверяется на стороне esp через md5checksum, а в случае Вашей реализации, видимо такой проверки не происходило, поэтому ранее , когда у меня не работало через вэб интерфейс, то ситуация была следующая ( я так себе представляю) через вэб интерфейс загружался бинарник для перепрошивки и при этом не произовдилась проверка на то влезает ли он в память или нет. Также не проверялось правильность его сохранения перед прошивкой. В итоге после заливки, сохранялось от загружаемого бинарника ровно то на что оставалось под него памяти, потом загрузчик это дело прошивал .... и так как прошивал, рапортуя в вэб интерфейсе об успешной прошивке. А уже на рестарте микроконтроллера все вешалось, ибо прошивка прошитая в устройство была битая (неполная). В общем, меня смущало то , что в вэб интерфейсе рапортовалось об успешной перепрошивке устройства, поэтому я думал, может быть пршивка идет не в ту область памяти и ломал голову над тем, где это поправить.

Хотел и OTA попробовать, но что-от у меня ОТА не заработало, даже в скетчах примерах. Но это уже  что-от с моим компом получается, ибо у меня в arduino ide не появляется сетевой порт, хотя прошивка ОТА задействует на своей стороне

Цитата

OTA server at: ESP_D21BD4.local:8266
WARNING: OTA Enable!!!

. Хотя, делал все по описаниям.

P.S. поясните , пожалуйста, вот эту строчку

uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0x1FFFFE00;

я просто не силен в синтаксисе Си. 0x1FFFFE00 это уже мое значение. Хочется понять, что нужно там указать в своем случае.

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

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


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

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

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


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

@Alex_DIY Вы правы, стоит добавить проверку контрольной суммы прошивки. Я не сталкивался с этой проблемой т.к использую контроллеры с flash памятью объемом 4Mb. Сам принцип загрузки и обновления прошивки заимствован из стандартного примера WebUpdate для контроллера esp8266, но все необходимое для реализации проверки контрольной суммы на стороне контроллера уже реализовано "из коробки" и описано в файлах

%homepath%\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.h
%homepath%\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\Updater.cpp
bool UpdaterClass::setMD5(const char * expected_md5){
  if(strlen(expected_md5) != 32)
  {
    return false;
  }
  _target_md5 = expected_md5;
  return true;
}

Останется только правильно вычислить md5-хеш при выборе файла прошивки в web интерфейсе и передать его контроллеру в описанную выше функцию. Возможно, Вам будет интересно содержимое файла Updater.ccp как и других файлов из его каталога. Что касаемо расчета места под прошивку, то возможно, самый простой вариант является и самым эффективным, и правильнее просто указать конкретное значение в зависимости от используемой памяти.

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

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

Модели механических анемометров

  1. https://www.thingiverse.com/thing:41367
  2. https://www.thingiverse.com/thing:144665
  3. https://www.thingiverse.com/thing:364660

Ультразвуковой анемометр

  1. http://blog.regimov.net/ультразвуковой-анемометр-прототип/
  2. http://blog.regimov.net/ультразвуковой-анемометр-на-двух-hc-sr04/

В общем, все упирается в надежность конструкции.

  • Like 2

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


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

бюджет 100р. 4 бутылки от спрайта фанты итд. 2 линейки можга 30см. клей 2 дерьмовых подшипника. шпилька 0.5см 4 гайки. геркон магнит. 3 года само отходило (и зимой тоже) и возможно все еще работает

  • Haha 1

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


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

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

На мой взгляд, необходимо учитывать все, начиная от радиуса окружности описывающей траекторию движения "чашек", заканчивая сопротивлением подшипника или другого устройства скольжения и силой которую необходимо приложить для того, чтобы эти самые чашки заставить сдвинуться с места. Опять же под вопросом, сохраниться ли линейность при разбросе температуры эксплуатации ±30 градусов Цельсия. И многое другое.

PS: это мое личное мнение и оно ни в коем случае не претендует на истину в последней инстанции.

  • Like 1
  • Thanks 1

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


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

устройство начинает крутиться от 0.8 м/c а 2м уже измеряет точно. и может измерять до 30. калибровалось на 2 3 5 10м при помощи аналогичной заводской конструкции. задача была измерять пороговое больше 10. зимой работает так же если вымыть смазку и выкинуть прокладки. 

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


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

.@Kitsum

Цитата

bool mqttSendData() {
  mqtt.setServer(config.mqtt_server.c_str(), 1883);
  if (config.mqtt_login.length()) mqtt.connect("weather station");
  else mqtt.connect("weather station", config.mqtt_login.c_str(), config.mqtt_pass.c_str());

условие в if не должно быть наоборот? Сейчас я так понимаю:  если длина логина нулевая,(он задан) то подключаемся без логина и пароля, если не задан, то с ним, что как бы наоборот. Видимо, предполагалось так

Цитата

if (!config.mqtt_login.length()) mqtt.connect("weather station");

ОПС, я еще со старым скетчем возился, а в новом уже это исправлено.

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

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


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

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

  1. В первую очередь были исправлены опечатки и орфографические ошибки. К сожалению, без этого никуда.
  2. Небольшие изменения в html и css разметке чтобы убрать редкие, но все равно присутствующие, смещения слоев.
  3. Исправлен баг с отправкой данных MQTT брокеру
  4. И главное нововведение, это проверка контрольной суммы, заливаемой через web интерфейс прошивки. Огромное спасибо @Alex_DIY за то, что указал на отсутствие данного функционала в предыдущих версиях.
  5. Также, если во время обновления, на стороне контроллера произойдет сбой, в web интерфейс будет возвращен код ошибки и выведено его описание.

Немного о контроле md5 хэша.

Для выполнения этой процедуры Ваш браузер должен поддерживать работу с FileAPI, что позволит получить доступ к загружаемой прошивке еще до того, как она будет передана микроконтроллеру. Подробнее можно почитать тут https://developer.mozilla.org/ru/docs/Web/API/FileReader А вот реализация самого md5 алгоритма была позаимствована у SparkMD5, ссылка как всегда прилагается https://github.com/satazor/js-spark-md5 К сожалению штатных средств расчета контрольной суммы с помощью данного алгоритма мне найти не удалось, возможно плохо искал. Вся поддержка md5 описана в отдельном файле md5.js.gz в корне web сервера, поместить его непосредственно в index.htm не представляется возможным из-за веса библиотеки в не сжатом виде.

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

Если у Вас появятся еще замечания, предложения или свои наработки, обязательно делитесь ими!

PS: Все исходники опубликованы в первом сообщении данной темы.

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


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

Друзья, всем доброго времени суток. Сообщение будет немного не по теме.

Мы запустили в тестовом режиме MQTT сервер

  • Адрес: mqtt.it4it.club
  • Порт: 1883

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

  • Thanks 1

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


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

Уважаемый автор, а насколько сложно в ваш проект будет добавить второй датчик влажности, алгоритмы сравнения и исполнительное устройство, по примеру http://arduino.ru/forum/proekty/kontrol-vlazhnosti-podvala-arduino-pro-mini ?

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


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

Доброе время суток @LogOFF  Думаю, что никаких трудностей быть не должно. 

Я бы взял за основу два датчика BME280 т.к судя по общедоступной информации он имеет вывод SDO, что позволяет изменять его адрес на I2C шине (0x76/0x77) и работать в паре с аналогичным сенсором. Данный датчик я себе уже заказал, к сожалению, только один, но раз есть потребность, значит закажу еще несколько.

bme_sch.png

https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf

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

Возможно будут сложности в компоновке данных на графике, если он вообще востребован, но все это решаемо.

 

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


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

Доброго утра, @Kitsum  Спасибо за ответ.

Вашу ветку порекламировали на сайте МажорДоМо, очень хорошее описание по шагам, еще и мкютт, прошивка на лету.

Выше про проект, хожу вокруг него кругами, но ...

Полностью опишу, три объекта: сад, гараж, квартира.

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

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


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

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

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

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

  1. Квартира с центральным сервером
  2. Удаленный участок с домиком и теплицей
  3. Гараж

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

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


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

Буду ждать.

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

Пример устройств теплицы https://vk.com/club132660213

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


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

@Kitsum не удавалось получать с датчиком si7021 влажность более 100%?

Датчик уличный в будке из пластика, как в Вашем первом посте, из 5 ярусов. Датчик в районе 3 яруса. Заливать его не должно. 

101Hum.png

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

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


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

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

Датчиком SI7021 я пользовался с момента тестовой обкатки, примерно с середины декабря 2016, и вплоть до июля 2017. Вот лог с Народного мониторинга. На имя датчика не обращайте внимание, данные до первых чисел июля, фактически принадлежат SI7021, а все, что дальше по времени уже HDC1080.

SI7021_ESP8266_1.png

Максимальное значение 99.64% относительной влажности были зафиксированы 22 февраля 2017. Сравнил с архивом погоды на это число в моем регионе, это 90%-95% влажности, что примерно совпадает с реальностью. Естественно не учитываем погрешности в связи с расположением самой будки с датчиками.

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

Возможно Вы имеете схожую проблему.

Что касаемо HDC1080. Датчик также очень хорошо себя показал, начиная с июля 2017 и по сей день. На момент написания поста - 14 ноября 2017, уже около недели стоит очень сырая погода и идут дожди. Относительная влажность в максимуме 99%, вот график с самой метеостанции за последние 24 часа.

HDC_1080_ESP8266_1.png

Вывод, который я могу сделать - оба датчика очень хороши, но SI7021 требует бережного обращения при транспортировке и установке. Крайне зависим от состояния полимерной пленке на лицевой стороне сенсора. Оба датчика были установлены на одной высоте и в одном положении в будке (на середине и горизонтально). Но опять обращаю внимание, что SI7021 я повредил сам, что и привело к искажению показаний.

 

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


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

@Kitsum у меня вроде б пленка целая. Я этот пост читал, поэтому старался обходиться с датчиком максимально аккуратно.

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

У меня пришла в голову другая мысль. В связи с тем, что какой-то период времени относительная влажность была 100%, затем температура воздуха начала слегка подрастать и так как плата сдатчиком имеют некоторую теплоемкость, то ее температура поднялась не так быстро до температуры окружающего воздуха и в связи с этим температура датчика и платы стала ниже точки росы и на пленке выпал конденсат, как следствие неадекватные величины влажности. В datasheet на сенсор в разделе 5.5 в частности и упоминается, что встроенный резистивный нагреватель нужен и в том числе, чтобы "to drive off condensation" как я понимаю "уйти от конденсации". То есть надо предусмотреть логику, что если влажность 100%, то включать нагреватель. Хотя, если это выявилось только у меня, то , видимо , и не это причина. Да и у меня устройство автономное, тратить миллиамперы на подогрев тоже не вариант. У меня , судя по народному монитору такие случаи выхода влажности за 100% случаются. И смотрю всегда это возникает при влажности 100% продолжается рост температуры воздуха.... что собственно , вроде ,  говорит в пользу описанной выше теории.

Почему ж у Вас ни одного такого случая. У меня есть еще HTU21D... но он без пленки и его поэтому не хочется на улицу в пыль.

  • Thanks 1

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


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

@Alex_DIY это очень интересное наблюдение.

В библиотеке от LowPowerLab имеется функция setHeater для включения обогрева датчика.

void SI7021::setHeater(bool on) {
    byte userbyte;
    if (on) {
        userbyte = 0x3E;
    } else {
        userbyte = 0x3A;
    }
    byte userwrite[] = {USER1_WRITE, userbyte};
    _writeReg(userwrite, sizeof userwrite);
}

Если имеется возможность провести эксперимент, было бы великолепно узнать о результатах, но это не при автономном питании, как Вы и указали.

Возможно есть еще что-то, что осталось не замеченным.

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


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

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

А чипом вверх или вниз? Попробую для начала переориентировать датчик внутри будки. Может быть это поможет. 

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

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


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

@Alex_DIY горизонтально, датчиком вниз. Такая установка не обусловлена ничем кроме моих собственных предпочтений и мыслей. Не знаю на сколько это правильно. Сама будка, если память не подводит, выполнена тоже из АБС пластика белого цвета, но, как и ожидалось, со временем он пожелтел. Никаких конструктивных особенностей я не вносил, хоть и были мысли окрасить её серебрянкой, как предлагал исполнитель заказа на печать этой самой будки. Возможно сделаю это весной, ведь по сути, это тестовый вариант метеостанции и можно смело экспериментировать.

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


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

Здравствуйте. Новичок в этом деле. Помогите . Не получается залить прошивку. Модуль ESP8266 "Witty Cloud"

Снимок экрана 2017-11-19 в 2.17.50.png

Снимок экрана 2017-11-19 в 2.19.57.png

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


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

@zloydimo4ka она не залиться не может, она не компилируется, так как модуля PubSubClient.h не может найти. Это библиотека отвечающая за MQTT.

На вашем скриншоте в скетче на этот компонент ссылка присутствует. Качаете и добавляете его в arduino IDE.

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

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


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

Спасибо. Получилось. И еще вопрос :имеется в наличии датчик DH22  и BMP280, что необходимо прописать в скетче чтобы они определились в сервере

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


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

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

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



Войти сейчас

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

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

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

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