24

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены

Всем доброго времени суток! Завелась у меня как-то жена. Нет, не так. Завелась у меня как-то девушка. Познакомились мы с ней в закрытом платном клубе для дам и господ прогрессивных мировоззрений и изысканных вкусов. И это не то, о чем вы подумали :). Девушка притащила с улицы котенка со словами "Я покормлю и отнесу обратно". "Я тебе витащю", подумал я. Полная версия анектдота про "я тебе витащю" будет в комментах, он неприличный, здесь я его процитировать не могу. То, что девушка была ведьмой, я тогда еще не знал, поэтому черному цвету котенка значения не придал. Потом девушка стала женой, а котенок - кошкой. Потом мы с женой развелись, она съехала, а кошка осталась со мной. Из цензурных кошкиных имен могу припомнить лишь Жоплин и Писюнцель и есть за что. А потом, несколько лет спустя, у меня в квартире завелся репчатый лук. Вот с этого момента и начинается наша история.


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


Как меня занесло на тематические каналы ютуба, где я узнал про гидропонику, микрозелень и витграсс, я уже не помню. Но я захотел выращивать пшеницу и именно на гидропонике, без земли. Потому что к тому времени, опыт выращивания пшеницы на подоконнике в земле у меня уже был. И таки шо ви думаете? Таки стал! Но было одно "но". Эта сука такая пшеница (точнее ее зерна) покрывалась плесенью. Стал искать причину и пути решения проблемы. Большинство людей в интернете говорили и писали про зараженность зерна, циркуляцию воздуха и температуру/влажность. Зерна я и так обеззараживал на этапе замачивания, вентилятор (точнее тепловентилятор без включенного ТЭНа) поставил, влажность мне на тот момент измерить было не чем, управлять ею - тоже нечем, поэтому на влажность я пока что забил. С температурой было еще сложнее.


Мало того, рекомендуемая (допустимая) температура варьировалась (в зависимости от рекомендаций) от 15 до 36 градусов Цельсия, так я еще и не знал, какая именно сейчас у меня температура на окне. Потому что в квартире термометра у меня не было по причине отсутствия в нем необходимости. Был заказан бюджетный термометр-гигрометр Xioami с Алиэкспресс. Но когда он придет, было не известно (на момент написания этого поста это все еще остается неизвестным), а хотелось вот прям сейчас.


Тогда я вспомнил, что с крайнего раза, когда меня накрывало волной энтузиазма и хотения по отношению к автоматизации жилища, интернету вещей и всему вот этому вот, у меня должна была остаться платка Wemos D1 Mini (а точнее, её клон, могу предположить) на базе микроконтроллера ESP 8266 и цифровой датчик температуры DS18B20 в герметичном корпусе на метровом проводе. Причем микроконтроллер у меня уже был прошит NodeMCU, скрипты на Луа залиты и настроены на отправку данных в народный мониторинг, датчик с резистором припаяны. В прошлый раз я хотел разместить датчик на улице и предоставить публичный доступ к его показаниям. И себе и людям, так сказать. Ибо термометра за окном у меня не было, в подъезд (там он был и есть, но неизвестно насколько точно он показывает) не набегаешься, да и хотелось "цифру", облако, графики и вот это вот всё. Тогда у меня дело уперлось в необходимость выводить на улицу из комнаты кабель с датчиком и изготавливать будку Стивенсона. Я не знал, как это правильно сделать и мне было ссыкотно. А без правильного размещения выводить датчик в публичный доступ не было смысла.


Но это было тогда, а сейчас-то это не нужно! А все, что нужно у меня почти что уже есть и сделано. Осталось вот просто взять и запустить проект. И шо ви думаете? Таки взял и запустил! На момент написания этих строк я уже знаю, что обдув подоконника тепловентилятором с выключенным ТЭНом повышает температуру на примерно 2 градуса. Как так? А вот хрен его знает! И теперь я знаю, что днем, на солнце, температура на окне может достигать 36,5 градусов Цельсия, что неожиданно много на мой взгляд, ибо май еще и на улице прохладно - 20 - 22 градуса. Датчик DS18B20 у меня врёт, но в пределах допустимого, сравнивал с показаниями поверенного ртутного лабораторного термометра TGL 1198.


А теперь несколько слов о том, как все это устроено и работает. Схема:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

Как видите, схема оочень простая. Резистор нужен номиналом 4,7 кОм. Устройству для работы необходимо питание 5 В/очень мало А, поэтому я использовал оочень старую зарядку от кнопочного телефона Sony Ericсson, доставшуюся мне по наследству от предшественника на работе. Спасибо тебе, Виталик! Общий вид:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

Все это прекрасно запихнулось в распределительную коробку JBL090 от Экопласт, которая, помимо хорошего качества, имеет очень приятный ценник и в Леруа стоит всего 16 рублей.

Кишки устройства:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

Сама прошивка и луа-скрипты брались отсюда, инструкции по прошивке и заливке скриптов, а также настройке устройства - там же. Общий алгоритм работы устройства следующий: 1 раз в 5 минут железка опрашивает датчики. Датчиков на 1 шину 1-wire (у меня это пин D1) можно повесить несколько штук параллельно. У меня 1 датчик потому что: а) мне пока больше не нужно б) у меня есть в наличии только 1 датчик) Далее, если все хорошо (датчики на шине нашлись, значения отдали, устройство подключено к wi-fi и имеет доступ в инет) устройство отправляет данные на сервер проекта "Народный Мониторинг". Данные отправляются парами "имя-значение". Для датчиков DS18B20 в качестве имени выступает его адрес (идентификатор) - это уникальное значение, в природе не существует двух таких датчиков с одинаковыми адресами. Таким образом, в самом простом случае, у нас будет отправляться две пары значений: адрес датчика - значение температуры и слово "heap" - значение heap. О том, что такое heap, будет чуть ниже. Итак, данные отправляются, осталось только научиться их забирать. Идем на сайт или сайт проекта "Народный Мониторинг" и создаем там аккаунт. Я реально х. з. зачем им два одинаковых сайта в разных доменных зонах. Дальнейшие действия я производил из андроид-приложения проекта. Ссылки на весь разработанный для проекта софт под разные платформы есть на сайте проекта.


Логинимся в приложении. Переходим в раздел "Мои датчики" нажимаем на "+", вводим MAC-адрес своего устройства. Если вы все сделали правильно, то через некоторое время в приложении вы увидите что-то вроде этого: 

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

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


Параметр "Heap" - это, скажем так, размер оперативной памяти, доступный для исполнения Луа-скриптов. От версии к версии прошивка NodeMCU содержала в себе разные баги. И порой получалось так, что размер heap становился меньше, меньше, вплоть до полного исчерпания и тогда устройство или самопроизвольно перезагружалось (плохой, но не самый худший вариант) или впадало в упячку. В наши дни такое (вроде бы) редкость. Но, судя по всему, автор скриптов - старый опытный джедай и реализовал отправку размера heap для собственного спокойствия. На нормально функционирующем устройстве график размера heap должен иметь примерно такой вид:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

Финальный вид устройства на подколоннике:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

А вот ради этого, собственно, проект и затевался:

Не кормите кошку луком или удаленный мониторинг температуры 24/7 за 3 $. Свиристелки и перделки включены Esp8266, Своими руками, Nodemcu, Lua, Домашняя автоматизация, Длиннопост

Технические замечания.


Ограничения бесплатного аккаунта народного мониторинга:

1) В приватный доступ можно вывести только одно устройство. Приватный доступ - это когда ваше устройство и показания его датчиков видно только вам и тем людям, которым вы предоставили. Одно приватное устройство может иметь неограниченное количество датчиков. Но. Размер передаваемых за один раз данных - не более 4 кБайт. Периодичность отправки данных на сервер - не чаще, чем 1 раз в 5 минут.

2) Срок хранения подробных показаний датчиков составляет 30 дней, среднечасовых значений - 1 год, среднесуточных - вечность.

Лично меня эти ограничения (пока что) не ограничивают. Если вам нужно больше, то вы можете сделать ребятам из проекта хорошо. И это не то, о чем вы подумали. А может быть и то, я х. з., там тоже живые люди работают. Другой путь - вывести какое-либо общественно полезное устройство (метеостанцию, камеру наружного видеонаблюдения) в публичный доступ. Но там жесткие требования к качеству и достоверности передаваемых данных. Подробности - смотрите на сайте проекта.


Мои замечания по сборке и прошивке устройства:

1) Если у вас плата типа Wemos, NodeMCU и иже с ними, т. е. со встроенным конвертером интерфейсов USB<->Serial типа CH340, то никакой переходник USB-UART отдельно вам не нужен, подключается и шьется напрямую через USB порт.

2) Для непосредственно прошивки я использовал ESP8266Flasher, брать тут  (нажать на кнопку "Clone or download", выбрать "Download ZIP"), инструкция как прошить, например, здесь.

3) В файле "NarodMonFinal.lua номер пина соответствует номеру пина у Wemos D1 Mini, т. е. если желтый (Data) провод датчика припаян к пину D1, то соответсвующая строчка скрипта должна выглядеть как: local pin = 1

4) Скрипты Lua заливать через софтину ESPlorer, брать здесь

5) Лично я не понял, зачем автор скриптов подменяет MAC-адрес своего устройства на "MAC адрес от балды". Я использовал реальный MAC своего устройства. Узнать можно в ESPlorer. Его же и подставил в строчку local MACaddr = "#12-34-56-78-90-AB\n" в файле NarodMonFinal.lua.

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


По цене устройства. На момент подготовки поста (25.05.2020 г. от Р. Х.): Wemos D1 Mini - 143 рубля, DS18B20 - 90 рублей. Итого - 233 рубля = примерно $3,24. Так что те, кто хотел закидать меня тапками за кликбейт, могут оставить свои тапки себе.


За сим откланиваюсь, всем бобра, вкусных печенюгов и нескрипучих половиц :)

Найдены дубликаты

+9

Посту целых три минуты, а анекдота все еще нет. Кроме того, тема заслуженности кошкой погонял не раскрыта! Осуждаю.

+3

Мне очень понравился пост, интересная беллетристика. Это же чистый Зощенко, если бы он жил в наше время и знал, что такое Arduino. Не понятно, довольна ли в итоге кошка, и чем помогли данные о температуре, если все, что вы с ними можете сделать - включить вентилятор, от которого станет ещё теплее :)

+2
Где анекдот, кошка и лук?
+1

Читая за кошку вспомнил баш: https://bash.im/quote/191

- долго думали - чего котенку в организме не хватает, если оно ест полиэтилен

- решили, что мозгов..


Начало и правда интригующе, но сюжет скомкан, концовки нет

+1
Лан, я сам анекдот закину

Спят два хачика в одной кровати.
- Арсен, ты спишь?
- Сплю...
- А что твой хуй делает в моей жопе?
- Ой, прости дарагой сейчас витащу!
- Я тебе витащу!!! Спи давай!
раскрыть ветку 2
0

Так то про грузинов было . . .

раскрыть ветку 1
+3
А, точно, совсем другой анекдот же, извини.

Спят два грузина в одной кровати.
- Арсен, ты спишь?
- Сплю...
- А что твой хуй делает в моей жопе?
- Ой, прости дарагой сейчас витащу!
- Я тебе витащу!!! Спи давай!
+1

Чуть не сдохла читать это.... Анекдот не смешной ещё гуглила. Шо за нафиг

+1
Такая хуйня? Фу 3 раза писателю!
0

Тема кошки не раскрыта.

0

Анекдота нет = минус есть.

0
Заголовок поста обещал что-то интересное, к сожалению ожидания не оправдались, всё свелось к выращиванию говёной пшеницы на подоконнике, написано так себе, да и анекдота нету.
0

Так вот как с ума сходят...

-3
Манера письма у вас сугобо «уебская» тяжело читать я вам так скажу: бросайте вы это дело , господин.
раскрыть ветку 1
+3

Мосье, вместо хамства вы могли пройти мимо

-2
Мне вот очень интересно, люди которые делают из ардуин градусники, вам в самом деле так интересно, какая на улице температура?
Похожие посты
80

Погодная станция Dozor meteo

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Станция  «Дозор метео» предназначен для замера параметров окружающей среды (температура, давление, влажность) отображения результатов на ЖК-дисплее, передачи показаний в сеть интернет на облачный сервис Интернета вещей IoT «Народный мониторинг», управления устройсвами. 

Особенности прибора:


-  измерение температуры, влажности, давления;

- наружный блок влажности/температуры;

- 2 удаленно управляемых выхода 12/220B;

- 1 логический/счетный вход;

- до 5 точек контроля температуры;

- автономная работа (без сети WiFi);

- WiFi-подключение к интернету;

- управление через приложение или бот Telegram


Ниже описана версия прибора для сборки из готовых модулей датчиков и МК на основе Arduino Nano. Есть версия конструкции на «рассыпухе», позволяющая получить небольшой размер и эстетичный внешний вид.


Назначение полей дисплея и кнопок

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

1. Канал управления (вкл./выкл.)

2. Счетно-контрольный вход.

3. Поле «Влажность» (наруж. блок)

4. Давление

5. Температура Tout (наружный блок)

6. Температура Tk (комнатная), датчик расположен внутри модуля.

7. Дополнительный датчик T1(DS18B20)

8. Дополнительный датчик T2(DS18B20)

9. Дополнительный датчик T3(DS18B20)

10. Обратный отсчет до сеанса связи с сервером.

11. Индикатор НЕ-успешности последнего сеанса связи с сервером.

12. Кнопка управления.

Схема межмодульных соединений:
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Для сборки прибора Дозор meteo на основе Arduino Nano понадобятся:


- Arduino nano – «рулит» всем в конструкции;


- модуль ESP-01. Это WiFi модуль на основе ESP8266, используется для связи прибора с интернетом и отправки данных на сервер народного мониторинга. Можно заменить практически любым модулем на основе ESP8266;


- модуль GY-68 (BMP180 со встроенным стабилизатором 3,3V и конвертером уровня I2C). Измеряет давление и температуру в помещении;


- модуль HTU21D. Используется в составе внешнего модуля и «отвечает» за наружную температуру и влажность;


- МК Attiny13a. Используется в наружном модуле;


- дисплей 128Х64 COG с контроллером UC1701

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

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


-м/с стабилизатора 3,3V.Нужна для питания ESP-01  и дисплея. Можно использовать соответствующий выход Power board (модуль питания для Arduino);

- DS18B20, цифровой датчик


Если необходимо коммутировать (управлять) нагрузками, то необходим узел на оптосимисторах AHQ2223 (IC1, IC3)  в корпусе DIP-7, и транзисторные ключи для управления ими. Если коммутация не нужна- часть схемы, выделенная как switching module можно не использовать. Если же такая необходимость есть, необходимо помнить, что указанные оптосимисторы рассчитаны на максимальный ток 0,8A, что вполне достаточно коммутации нагрузки до 150Вт (220Вольт). Также следует учитывать, что симисторы- полупроводниковые приборы, используемые в цепях переменного тока. Поэтому если надо управлять нагрузкой, рассчитанной для работы в цепи постоянного тока, вместо симистора надо поставить либо реле, либо транзистор с малым сопротивлением силового перехода.


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

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Также можно подключить магнитный дверной датчик или контакты ИК датчика движения. В этом случае получиться простейшая охранная система.
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Датчику IN (это имя имеет ВХОД прибора в сообщении на сервер) в личном кабинете можно присвоить имя «ДВЕРЬ». При изменении состояния датчика (замыкание или размыкание ) пользователю поступит сообщение «ДВЕРЬ». На дисплее прибора отобразится изменение- иконка “IN” изменит вид. При этом датчик INC (значение тоже отсылается на сервер) покажет количество срабатываний. Можно использовать, например, для текущего расхода воды, если подключить к специальному водомеру. Максимальное значение между посылками на сервер -255. После отправки на сервер счетчик обнуляется.


Т.к. напряжение питания Arduino составляет 5V, а все модули датчиков, в том числе и дисплей, линии управления (UART, SPI) приходится подключать к модулям через резистивные делители (R2, R3; R5-R13). Исключение составляют модуль GY-68 и HTU21D. GY-68 имеет на «борту» собственный стабилизатор 3,3V, а HTU21D питается как и весь наружный модуль напряжением 3,3V. Дисплей- попадаются варианты исполнения как со встроенным стабилизатором, так и без него.


Если будет встроенный стабилизатор, то дисплей можно запитать от 5V, но резистивные делители всё равно желательны. Были случаи, когда на дисплей на управляющие контакты поступало напряжение 5V, и дисплей оставался жив. Но скорее всего это не полезно для дисплея. Документация на контроллер UC1701, установленный в данном дисплее по вопросу толерантности цифровых входов к напряжению 5V теряет нить разговора молчит.

Несколько неудобно конечно, когда элементы имеют разные значения питающих напряжений, но Arduino требует жертв…


Часть схемы, выделенная как OUTDOOR MODULE (внешний модуль) используется для измерений наружных (на улице) температуры и влажности.

Наружный и внутренний модуля соединены трёхпроводной линией – «земля», «+» и сигнальный провод. Микроконтроллеры модулей общаются по протоколу 1-wire, где внутренний модуль- ведущий. Это конечно несколько усложнило конструкцию внешнего модуля, но результат налицо. В результате такого решения удалось отнести внешний модуль на десятки метров от внутреннего. С «чистой» шиной I2C такой результат недостижим- буквально на 5 метрах начинались «глюки». В результате дополнительных экспериментов по применению 2-х транзисторного «драйвера» шины 1-Wire удалось получить расстояние в 80м! Кабель, как ни странно, желательно использовать не экранированный-меньше погонная емкость.


Ведущий посылает в линию 1-wire запрос «запустить преобразование всех датчиков», который совпадает со стандартным запросом для датчиков DS18B20 ($CC+$44), что удобно с точки зрения программной реализации- одним запросом «запускаются» все 1-wire устройства. Ведомый МК принимает этот запрос, и инициирует преобразование влажности и температуры(МС HTU21D)по «своей» шине I2C. После окончания преобразования полученный результат считывается внутренним модулем. При этом наружный модуль не мешает работе датчиков DS18B20(которые можно подключить в линию в любом месте), независимо от режима работы- будь то замер температуры или считывание ROM. Если наружный модуль не подключать, устройство сохраняет работоспособность, но данные будут искажены.


После сборки устройства (или до)необходимо запрограммировать микроконтроллеры устройства- саму Arduino и МК ATtiny13a наружного модуля. ПО написано в среде Algorithm Builder ( почти ассемблер ), поэтому прошивки публикуются «как есть», полнофункциональные, в виде готовых «хексов».

В архиве есть 2 файла – DM_indoor_V1_nano.hex (для Arduino Nano 16 MHz) и DM_outdoor_V1_tiny13a.hex (для наружного модуля). Для «заливки» в Arduino готового «хекса» есть несколько программ, например X-loader и GC-uploader.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
На странице автора программы GC-uploader хорошо описана процедура загрузки при использовании этих программ. После «заливки» «хекса» Arduino останется Arduino-й, т.е. при необходимости в неё можно при помощи Arduino IDE «пролить» какой-нить скэтч.


С программированием Arduino проблем быть не должно(если прочитать указанную выше ссылку на help)- выбрал «хекс», выбрал порт, нажал «программ» и вуаля.


«Тиньку» же придется «прошивать» при помощи программатора и одной из множества программ, например, ProgISp. Последняя кстати, замечательно работает с дешевым программатором USB ISP с родины Мао.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Известный сайт с тех же краёв на запрос «AVR USB ISP» предложит несметное количество этих программаторов по цене 2-3х «Эскимо».

Конечно, "заливка" чего-либо не из Arduino IDE- это несомненно «два», но кто сказал, что будет легко? иначе никак… Можно конечно было использовать ещё одну Arduino, но она великовата для конструкции наружного модуля, описанного далее. Хотя, возможно…


В общем, для ATtiny13a надо запрограммировать fuse-биты и "залить" прошивку.

Состояние Fuse-bit для ATtiny13a  в данной конструкции должно быть такое

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Написал небольшой ликбез процесса программирования МК ATtiny13a  c картинками.

Если возникнут проблеммы при программировании  - пишите.


После правильной сборки и программирования  настроек "железа" не требуется. Перед включением необходимо пройтись по соединениям, включить устройство. Причем  во время работы желательно не подключать кабель USB ПК-Arduino, т.к. в схеме используется интерфейс UART- могут быть конфликты. Используйте плату Power board.


После подключения проверить наличие напряжения 3,3V на выходе стабилизатора (C2). На дисплее должна появиться заставка. Если всё ок- входим в режим настроек. Для этого выключаем питание, нажимаем кнопку S1 и её удерживая включаем питание (кнопку продолжаем удерживать). Примерно через 2-3 сек. На дисплее появится надпись «SETUP MODE». Так же будет выведена информация о SSID и пароле WiFi, периоде отправке данных, которая хранится в памяти прибора.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Кнопку отпустиь.

Для изменения настроек (П.2) необходимо нажать кнопку еще раз. Появится надпись WEB SETUP.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Кнопку отпустить.

В WI-FI сети появится точка доступа Dozor_meteo. Необходимо подключится к ней и зайти (набрать в окне любого браузера) на адрес 192.168.4.1.

Откроется окно

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Тут необходимо ввести название и пароль домашней точки доступа( первые 2 поля), и 3-е поле –период отправки данных на сервер.. Тут рекомендуется установить значение Т>300 сек. Доступный диапазон – 60- 999 сек. Но для установки периода Т< 300сек. необходимо ознакомится с условиями на сайте narodmon.com . Кратко- если у пользователя нет бонусов, период отправки не может быть меньше 300 сек. Иначе при рецидивном нарушении данного требования устройство может быть заблокировано.

Нижнее поле- MAC устройства. Это значение MAC необходимо указать при регистрации своего устройства на сайте narodmon.com .

SEND- сохранить введённые значения. Если поле «AND EXIT» отметить, то после нажатия на SEND устройство будет перезагружено и войдет в основной режим работы.


Регистрация дополнительных датчиков температуры.


В устройстве прибора по схеме, приведенной выше, есть датчик давления BMP180. В нем есть встроенный датчик температуры, он используется для измерения температуры внутри помещения. Температура на улице измеряется при помощи датчика температуры, входящего в состав датчика влажности HTU21D. Дополнительно, при необходимости, можно подключить до 3х датчиков температуры DS18B20. Датчики подключаются к разъему SV1, можно параллельно линии, идущей к наружному модулю. Можно в любом месте линии.


Процесс регистрации.


При выключенном устройстве нажать кнопку S1. Удерживая кнопку нажатой включить устройство. Через 2 секунды на экране появится надпись SETUP MODE.

Кнопку отпустить.

Нажать кнопку. Появиться надпись WEB SETUP. Кнопку не отпускать. Через 3 сек появится надпись DS SETUP.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Кнопку отпустить.

Далее необходимо (правильно!) подключить датчик DS18B20 к разъему SV1 и коротко нажать на кнопку. Если процедура выполнена верно - на экране будет отображен серийный номер датчика . Датчик Т1 зарегистрирован в приборе.

Далее необходимо отключить датчик Т1 и подключить датчик Т2 (если он необходим), и коротко нажать на кнопку. Очередной датчик (Т2) занесен в память устройства. Далее регистрируется датчик Т3. Т.е. получается такой алгоритм:


- войти в режим регистрации DS SETUP, отпустить кнопку;

- подключить датчик Т1, коротко нажать на кнопку;

- отключить датчик Т1, подключить Т2, короткое нажатие;

- отключить датчик Т2, подключить Т3, короткое нажатие;

Следующее нажатие инициирует выход из режима настойки.


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


Подробно о эксплуатации, подключении назрузок,  регистрации устройства на сайте narodmon.com,  управлении со смартфона можно прочитать в полном руководстве.


1. Файлы проекта (схема, прошивки, ликбез по прошивке МК ATtiny)

2. Прошивка любого HEX-файла в ARDUINO


Конструкция наружного модуля станции  ДОЗОР meteo


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

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

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Для изготовления необходимы

1. Пластиковая труба D25mm 25-30 см. Можно использовать водопроводную «под пайку» либо трубу для кабелей.

2. Заглушка сантехническая под систему D32mm. 1 шт

3. Хомут крепления для трубы D25mm -2шт.

4. Клеевой состав ( герметик, «эпоксидка», клей «Титан»)


На одном конце трубы необходимо с отступом от края 5-8мм (до края отверстия) просверлить отверстия D4-6мм 4-8 шт.

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Обработать край крупным наждаком либо поцарапать, например ножом. Также желательно обработать внутреннюю поверхность заглушки.
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Необходимо изготовить центрирующую гильзу, например из картона. Лучше взять картон не толстый, отформовать его «гармошкой».
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Затем его надо зафиксировать примерно так. Так как внутренний диаметр заглушку больше наружного диаметра трубы, щель между ними с отверстиями в трубе образуют канал естественной вентиляции (тяги).
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

На внутреннюю грань заглушки нанести валик клея или герметика. С клеем усерствовать не надо- до отверсий в трубке клей не должен "добраться".

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Одеть на трубку и оставить сохнуть, в зависимости от клея- до 24 часов.
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
После полимеризации клея узел должен выглядень примерно  так
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост
Затем в трубку вставляется плата внешнего модуля, так чтобы плата оказалась дальше (выше) середины трубки. И фиксируется. Самый простой вариант- стяжкой. Можно двумя .
Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

При вертикальной установке такая конструкция обеспечивает хорошую дождезащиту, но при этом за счет естественной вентиляции внутри плата датчика постоянно обдувается восходящим потоком, обеспечивая верность показаний температуры и влажности. Был проведен эксперимент- на корпусе модуля с наружной стороны примерно посередине расположил доп. датчик температуры DS18B20 (тоже в тени), который фиксировал температуру на улице вместе с наружным модулем. При этом показания доп. датчика в светлое время суток были всегда на 0,5 – 0,8 град. больше, чем внутри модуля. Ночью же показания практически сравнивались. Объяснением (один из вариантов) этого может быть тот факт, что доп. датчик дополнительно нагревался ИК-излучением от посторонних объектов.


Модуль необходимо закрепить к стене при помощи кронштейнов в месте, защищенном от прямых солнечных лучей. Крепить надо заглушкой вверх!!! (мало ли...).

Погодная станция Dozor meteo Arduino, Погода, Программирование, Микроконтроллеры, Электроника, Своими руками, Esp8266, Длиннопост

Будтобы все...


Материалы:


1. Файлы проекта (схема, прошивки, ликбез по прошивке МК ATtiny)

2. Прошивка любого HEX-файла в ARDUINO

Показать полностью 22
61

Умная тумба

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

Привет, пикабушники. Это моя первая статья в которой хочу похвастаться своей тумбой под домашнюю технику. Похвастаться и попросить совета.

Не хотелось прятать технику никуда, а скорее подчеркнуть ее эстетику. Поэтому в Икее была куплена  такая тумба только с черным стеклом

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

Внутри тумбы наклеил светодиодную ленту с контроллером Magic Home. С его помощью можно управлять цветом и эффектами ленты по Wi-Fi со смартфона.

Но эстетика эстетикой, а там стоит сервер умного дома, ресивер, и Apple TV. И все это дело в закрытой тумбе. Использовать ee в качестве плиты в планах не было, поэтому купил два 120х кулера на Алишке, естественно тоже с подсветкой. Даже в голове не укладывается как можно поставить кулеры без светодиодов.

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

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

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

Появились еще кусок ленты, который тоже был задействован в подсветке сзади и под колонками, чтоб создать парящий эффект. Просто подпоялся к уже стоящему блоку питания и контроллеру. Запас у блока питания есть.

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

Мне все мало было и мне захотелось поменять верхнюю ленту на адресную. Это чтоб огонёчки не просто горели, но еще и бегали… Что? Сколько мне лет? Отстань!!!

Но тут уже нужен другой блок питания и другой контроллер. Адресная лента у меня работает от 5В а обычная от 12В. Контроллером был назначен Wemos, блоком питания - зарядник от Iqos. Wemos - это программируемый контроллер, в который можно записать собственноручно написанный скетч и мигать этими светодиодами, как никто никогда не мигал. Но я так не умею, поэтому взял готовую прошивку WLED и тоже доволен. Освободившуюся обычную ленту я разрезал пополам и наклеил за колонками

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

То что происходит за тумбой, уже не спасти.

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

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

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост

Теперь это все работает, даже симпатично выглядит, но три отдельных БП, три WI-FI точки на одну тумбу - это уж слишком не по фен-шую. Хочу избавиться от контроллера magic Home и sonoff и перевести все на один ESP8266, который будет управлять лентами и кулерами, но пока даже не знаю насколько это возможно технически, учитывая разный вольтаж. Вроде бы NodeMCU так может, а Wemos нет.

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

Буду благодарен советам)

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

Умная тумба ИКЕА, Arduino, Led, Esp8266, Я у мамы инженер, Своими руками, Умный дом, Длиннопост
Показать полностью 8
104

Часы Cronixie из акрила и фанеры

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

Бывают дни, когда хочешь идти куда попало, закрыть сервак и не найти ключа.

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

Так появился проект Cronixie - слово, о котором вам много медиаконтента покажут поисковые машины. Увидел такой проект то-ли на ютубе в подборке, то-ли на пинтересте, но загорелся идеей поделку воспроизвести.

За отправную точку возьмём похожую реализацию проект, который гуглится по запросу "Acrylic RGB Retro Nixie Digit"

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

Свои циферки мне было влом отрисовывать, т.к. не очень хорошо на тот момент владел чертёжной программой, и тупо выдернул контуры из 3D модели ГРИ.

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост
Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

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

Сборка из 6 ламп была подарена накануне бракосочетания известному в спелеокругах Лёлику - он чуть не захлебнулся слюной и объявил, что праздник будет трезвым.

Сломает - сам виноват *бугага*

Ну а проект продолжил своё развитие. Был переработал чертёж, отрисованы циферки, и распечатан снова.

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

Сборка из 4 ламп была начинена обновлённой пришивкой и теперь радует посетителей ФабЛаб ТюмГУ.

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

Косяки. Мне попалось оргстекло из поликарбоната, и он порядочно подгорел в процессе резки. Отсюда - свечение красным, когда у меня выжаты на максимум все три RGB канала. Ребята из цеха лазерной резки покачали головой, но приняли как выставочный экземпляр.

Следующую распечатку заказывал в мастерской. Фанера 3 мм, акрил 1,5 мм - идеально прозрачный когда снимешь плёночку. даже прикупил хирургические перчатки, чтобы не заляпать пальчиками.

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост
Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост
Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост
Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост
Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

И после сборки, на тестовом стенде, это стало работать так

На момент написания поста, изделие готово на две трети.

Часы Cronixie из акрила и фанеры Своими руками, Акрил, Фанера, Arduino, Часы, Сувениры, Nodemcu, Видео, Длиннопост

Девайс управляется по WiFi, умеет синхронизироваться по NTP, и можно разукрашивать циферки по своему усмотрению.

Следить за проектом и/или заказать себе такое можно на странице @cronixie в вк и инстаграме.

На этой или неделе или в начале следующей рождественский сувенир поедет в Курск.

Показать полностью 10 1
452

ESPboy гаджет для ретро игр и экспериментов с IoT

ESPboy гаджет я сделал на основе известного микроконтроллера ESP8266 80/160Mhz, 4/8Mb с TFT цветным экраном 128х128, звуком, RGB светодиодом, аккумулятором с зарядкой и WiFi на борту.


Инструкции по сборке

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Получилась автономная, модульная платформа, которую можно спаять за пару часов из деталей, стоимостью примерно 12$ и носить в кармане.


Базовая плата нарисована в easyeda.com, произведена jlcpcb.com.

Все компоненты стандартные, легко доступны за копейки на aliexpress.com.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

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

Есть разъем на который выведены все интерфейсы (SPI, I2C, UART и прочее), куда можно подключать родные модули и свои собственные расширения.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Программируется ESPboy обычным путем через Arduino IDE, так как ESP8266 практически полностью совместим с ардуииновской экосистемой и библиотеками. Для продвинутых есть родные SDK от Espressif Systems NONOS или RTOS. Различные дополнительные среды для программирования и сборки прошивок тоже доступны, типа LUA, Micropython, scratch, wifi-iot.com, fl-prog, Visuino и тыщи других.


На борту ESP8266 есть встроенный WiFi, что добавляет сетевых возможностей и для коммуникаций между девайсами и для экспорта данных в сеть и много для чего еще. Например можно запросто коммуницировать с таким онлайн сервисами, как RemoteXY, Blynk, Thingspeak, HiveMQ, CloudMQTT, NarodMon, MajorDoMo, ThingerIO, Google cloud IoT, dweet.io, Temboo, Xively, IFTTT, LORA-WAN.


Технические детали и инструкция по сборке на hackaday

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Проект вырос из любви к самоделкам и ретро девайсам, возни с Arduino и знакомства с такими штуками, как: Arduboy, Gamebuino, Pokitto, m5stack.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

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


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


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


То есть учить в обратном направлении, не с безликих плат и проводков к готовому устройству черт знает когда, а от полноценно работающего гаджета, через любопытство: “а как это устроено и работает”. Что-то подобное ощущается у проекта m5stack.com, но он на мой взгляд черезчур цельный и закрытый.


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

Эффект похож на ощущения после самостоятельной сборки шкафа IKEA.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Облегчает дело то, что китайцы с pcbway.com помимо производства основной платы, могут вполне аккуратно запаивать все мелкие детали, после чего остается собственноручно припаять только динамик, модуль зарядки батареи, плату микроконтроллера, дисплей и прицепить батарейку.


Как показали эксперименты, с этим справляются менее чем за час люди, которые далеки от DIY, радиоэлектроники и в руках паяльник порой ни разу в жизни не держали.

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Далее открывается простор в изучении геймдева или IoT.


По разработке игр это отдельное дело, можно использовать LGE движок Игоря например.

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

ESPboy гаджет для ретро игр и экспериментов с IoT Esp8266, Своими руками, Arduino, Gamedev, Microcontrollers, Видео, Длиннопост

Предпрошивать пока что предполагается или ESP little game engine со встроенными играми от Игоря, который любезно портировал свою разработку на ESPboy или эмулятор CHIP8/SCHIP игр с примерно 90шт встроенными играми, который мне удалось написать не так давно.

Уже сейчас доступны готовые модули, вставляя которые в разъем расширения ESPboy и заливая прошивку, можно получать полнофункциональный гаджет на выбор: метеостанция, mp3 плеер, fm приемник, навигатор, клавиатура, GSM телефон. Код естественно доступен на GitHub.

Планируется сделать еще несколько прикольных модулей: LORA мессенджер (который работает без какой бы то ни было связи вообще на 8км), монитор окружающей среды (с дозиметром, датчиком фенола, CO2 и прочим), сканер штрихкодов, термовизионную камеру, wifi радио и несколько подобных.


Так же в процессе написание простого браузера и twitter клиента, создание онлайн каталога с прошивками, чтобы можно было загружать софт, подключившись к онлайн каталогу через WiFi. Без проводов, возни с настрокой IDE, компиляций (по типу, как сегодня происходит поиск и установка софта на смартфонах с Google play или Apple store).


Дальнейший процесс постижения всей этой DIY микроконтроллерно-программерской магии может идти через интернет и youtube классическим путем, благо учебного материала сегодня на эту тему предостаточно. В случае затруднений, в форуме сообщества ESPboy подcкажут.


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


Всем добра и успехов в творчестве.


С уваженеием,

Роман С.

Показать полностью 7 3
237

Считаем воду и не только

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

Но, как говорится, от слов к делу.

За все время использования у меня было 3 версии счетчика воды :

v1. Умеет считывать и хранить расход воды и отправлять через WiFi письма в УК, имеет web интерфейс

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

v3. Не умеет отправлять почту, нет web интерфейса. Ну чем не прогресс? Зато вся логика вынесена в Home Assistant, устройство умеет общаться по mqtt с сервером. Такая архитектура дала возможность установить на стояк батарей (он у меня один) электро краны и сделать простейшее устройство управляемое по mqtt, а не покупать отдельный блок нептуна для них.


Схема устройства

https://easyeda.com/cpsskipper/water_counter

Плата изготовлена по технологии ЛУТ

Esp8266 (в реализации Wemos) - микропроцессор и связь по WiFi

ADS1115 АЦП, т.к в EPS8266 только один АЦП. Использование АЦП связано с типом счетчиков воды. В моем случае параллельно геркону в счетчике стоит сопротивление, поэтому цепь не размыкается никогда.

Реле на 5V - замыкание сухих контактов в Нептуне для управления кранами

Считаем воду и не только Умный дом, Home assistant, Счетчик воды, Автоматическая передача показа, Лут, Своими руками, Arduino, Esp8266, Длиннопост
Считаем воду и не только Умный дом, Home assistant, Счетчик воды, Автоматическая передача показа, Лут, Своими руками, Arduino, Esp8266, Длиннопост

Прошивка написана в Arduino IDE. не забудьте скачать библиотеку для ESP8266.

Принцип написания - побольше говнокода и костылей, так что не пинайте. написано давно, вычищать лень.

В коде подставляем свои логин и пароль от WiFi и mqtt

https://yadi.sk/d/z7ja-BHBmF7Sag

Настройка Home Assistant

Скачиваем и сохраняем water.yaml в директорию /config/packages/

https://yadi.sk/d/PeAGvBkg7-M1Bw

Письма отправляются через Gmail. Прописываем вашу учетку в Email Notify, отредактируйте текст письма, чтобы было понятно от какой квартиры пришли показания.


В файле configuration.yaml указываем

homeassistant:

packages: !include_dir_named packages


На Lovelace вытаскиваем созданные объекты. В итоге получится следующая карточка

Считаем воду и не только Умный дом, Home assistant, Счетчик воды, Автоматическая передача показа, Лут, Своими руками, Arduino, Esp8266, Длиннопост

По итогу

1. Счетчик воды. При отключении электричества показания не сбрасываются.

2. Передача показаний счетчиков в УК по Email в заданный день месяца

3. Можно легко прикрутить графики потребления воды с помощью плагина Grafana

4. Информирование по Email о перекрытии кранов в доме

5. Позволяет удаленно перекрывать воду в доме


P.S Если у вас что-то не получается - пишите. Постараюсь помочь.

Показать полностью 2
47

E-Learning. Часть 3. Blender. Визуализируем данные с гироскопа

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


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


Но перед тем как визуализировать всю руку, хочу рассказать как сделать визуализатор данных средствами Blender 3D, а не того же Processing (с которым я так и не смог разобраться).


В этой статье я опишу один из способов визуализации данных из COM порта. Рассматривать буду на примере визуализации изменения ориентации платформы для 3х-осевого гироскопа и 3х-осевого акселерометра (далее просто гироскоп, для простоты). У меня это GY-BMI160, у Вас может быть любой другой, главное, чтобы Arduino отправляла данные в формате: “gx,gy,gz,ax,ay,az”.

E-Learning. Часть 3. Blender. Визуализируем данные с гироскопа Blender, Gyro, Визуализация, Arduino, Esp8266, Nodemcu, Длиннопост

Рис. 1. 3D модель платформы гироскопа. Основная цель – чтобы повороты нашей модели соответствовали поворотам физического гироскопа. В этой статье мы научим Blender принимать данные по COM порту.

В этой статье мы НЕ будем рассматривать следующие вещи:

1. Как подключить визуализацию нескольких датчиков, которые посылают информацию по одному COM порту.

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

3. Методы фильтрации данных (Фильтр Калмана, комплементарный фильтр, комплементарный фильтр второго порядка, фильтр Маджвика, получение углов из данных гироскопа, получение углов из данных акселерометра, получение углов из магнитометра и прочее).


Что будет в этой статье:

1. Как начать управлять мощной средой визуализации Blender. (Processing не столь серьезно).

2. Как настраивать Python в Blender.

3. Какие существуют подводные камни, связанные строго с Blender.


В начале хочется привести несколько причин, почему выбран именно Blender:

1. Он бесплатен.

2. Он не специфичен и используется при разработке игр, анимации, 3D моделировании как профессиональный инструмент. И как следствие по нему очень много материала и открытое сообщество.

3. Он использует Python 3. Если с Processing вы выучите язык программирования и больше нигде он не будет применим, то Python широко распространённый язык программирования. Если Вы его знаете – учить практически ничего не надо будет, если нет – то это знание гарантированно пригодится вновь.


Первое что делаем – качаем Blender с официального сайта www.blender.org. Ставим его. Откроется окно с заставкой, кликаете по свободному месту и увидите куб. Примерно как на картинке.

E-Learning. Часть 3. Blender. Визуализируем данные с гироскопа Blender, Gyro, Визуализация, Arduino, Esp8266, Nodemcu, Длиннопост

Первый подводный камень, Ваша видеокарта. Наводим мышкой на куб, нажимаем на колесико мыши и крутим влево-вправо. Если все хорошо, то это будет быстро. Если нет, то картинка будет менять раз в 2-5 секунд.

Как решается? Либо драйвера видеокарты слишком старые, либо слишком новые и не обкатанные. У меня оказались слишком новые на Windows 10 64x.


Заходим в диспетчер устройств – видеоадаптеры – смотрим какие у Вас стоят. Переходим на сайт производитель и у них обычно есть архивные драйвера как раз на такие случаи. Качаем-ставим.


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

Решаем так:

E-Learning. Часть 3. Blender. Визуализируем данные с гироскопа Blender, Gyro, Визуализация, Arduino, Esp8266, Nodemcu, Длиннопост

Смотрим какая версия питона установлена.

E-Learning. Часть 3. Blender. Визуализируем данные с гироскопа Blender, Gyro, Визуализация, Arduino, Esp8266, Nodemcu, Длиннопост

Вариант 1:

Ставим в скаченный питон все что нам нужно (как это сделать я тут не буду расписывать, это стандартная процедура). Нам нужна библиотека PySerial.


Вариант 2:

Находим папку с нужной библиотекой, например, на GitHube (https://github.com/pyserial/pyserial).

Из появившейся папки в Scripts/serial или просто скаченную папку необходимо скопировать блендеру в C:\Program Files\Blender Foundation\Blender\2.78\python\lib.

Переходим в консоль Python Blender’а и проверяем. Пишем import serial.

Если не ругается – то все хорошо установлено.


Третий подводный камень:

COM порт передающий данные по проводу и по Bluetooth устройству могут иметь разное поведение после закрытия порта. Чуть подробнее далее.


Первая команда – это s = serial.Serial('COM1', 9600)

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

Следите за скоростью. Я, например, разгонял частоту работы датчика, ставил 250 000 БОД и забывал, что блендер ожидает 9600.

Чтобы последовательно считывать данные нужна команда s.readline().

На выходе мы имеем байт-строку формата “b’gx,gy,gz,ax,ay,az\n”.


Важно! Подключите библиотеку Re и разберитесь в ней. Про это мы не будем тут говорить, но пару полезных вещей коснемся. import re (к счастью стандартная библиотека).


Для начала подготовим для обработки её и переведем в строковый формат:


line = s.readline()

line2 = str(line)

Далее используем функцию sp = re.split('[^0-9.-]+', line2)


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


Можно теперь обращаться так: sp[1]-sp[6] – наши значения, первый и последний элементы будут пустыми.


Затем для того, чтобы использовать данные в своих расчётов – просто задайте им нужный тип. float(sp[1]) – даст нужное число.


В конце обязательно закрывайте порт. s.close(). Иначе никто больше к нему не подключиться, Arduino IDE будет говорить, что порт занят уже кем-то.


Ссылка на файл с кодом https://yadi.sk/d/-Jwmt1Qw3MvqJa

В начале запустить Game Engine. Потом нажимаете на англ. раскладке "P". Затем используете клавиши: "O" - открыть порт, "R" - начать чтение данные, "C" - закрыть порт (это важно!), ESC - выйти из режима Game Engine.


Прошлые части:

0: E-Learning. Образовательная робототехника. Часть 0. Вступление

https://pikabu.ru/story/elearning_obrazovatelnaya_robototekh...

1: Часть 1. В общем о визуализации данных в Blender и Unity

https://pikabu.ru/story/chast_1_v_obshchem_o_vizualizatsii_d...

2: E-Learning. Образовательная робототехника. Часть 2. Эволюция костюмов

https://pikabu.ru/story/elearning_obrazovatelnaya_robototekh...

Показать полностью 3
169

Радионяня с термометром и гигрометром на Esp8266 и Android

Привет, Пикабу!

У меня пару недель назад родились сразу две удивительные дочки, Василиса и Варвара:) Я от них просто без ума, они потрясающие! :) Но! Даже самому безумному папке нужно иногда отойти от кроваток своих дочурок,  сделать домашние дела, подключиться по vpn на работу или просто пойти и выкинуть мусор, пока любимая жена в душе.

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

Радионяня!

Ок!

(Можно смириться с ебучей ценой за трехсотенный девайс и не читать дальше)

Но это не наши методы, правда?

Пикабушник, ты видел цены на два куса пластика с тремя транзисторами внутри? Я чутка потерялся, буду честен. Всё, что имеет приставку "детское", почему то и цену имеет неоправданно завышенную. Не буду далее томить.

Я сделал радионяню на датчике звука от ардуино, присовокупил датчик температуры/влажности, и всё это мониторю по домашнему WiFi на любом Android-устройстве.

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

Радионяня с термометром и гигрометром на Esp8266 и Android Моё, Arduino, Nodemcu, Ky-038, Andrioid, Dht22, Esp8266, Автоматизация, Длиннопост

Итак, что мы имеем. Два устройства, смартфон и nodemcu с датчиками.

Алгоритм простой, nodemcu подключается к домашнему вайфаю, открывает там сервер, и вещает на нем данные от датчиков. Андроид-смартфон получает данные, выводит их на экран и если данные от датчика звука превышают порог - меняет цвет фона экрана и пищит.

Код для esp простейший:

#include <ESP8266WiFi.h>
#include "DHT.h"
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const char *ssid = "wlan;
const char *pass = "pass";
WiFiServer server(80);
IPAddress ip(192,168,1,128);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
void setup() {
pinMode(A0,INPUT);
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, pass);
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("WiFi connected, using IP address: ");
Serial.println(WiFi.localIP());
server.begin();
dht.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
delay(3000);
float h = dht.readHumidity();
float t = dht.readTemperature();
int s = analogRead(A0);
String req = client.readStringUntil('\r');
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head></head><body>");
client.print(t);
client.print(":");
client.print(h);
client.print(":");
client.print(s);
client.println("</body></html>");
delay(1);
client.stop();
}

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

https://github.com/antsharapov/ArduinoBabyMonitor

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

Радионяня с термометром и гигрометром на Esp8266 и Android Моё, Arduino, Nodemcu, Ky-038, Andrioid, Dht22, Esp8266, Автоматизация, Длиннопост

Датчик звука у меня KY-038.

Не знаю, что еще описать подробнее, чем есть. Отвечу в комментариях и приму критику и пожелания в комментариях.

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


Спасибо за внимание, надеюсь быть полезным.

Показать полностью 2
67

WiFi термометр на ESP-01

Итак, здравствуйте, это мой первый пост

Данные выводящиеся на смарт

WiFi термометр на ESP-01 Esp8266, Esp, Arduino, Nodemcu, Длиннопост
WiFi термометр на ESP-01 Esp8266, Esp, Arduino, Nodemcu, Длиннопост

В состоянии прототипа (Не пинайте за монтаж)

Использованные модули

WiFi термометр на ESP-01 Esp8266, Esp, Arduino, Nodemcu, Длиннопост

ESP-

WiFi термометр на ESP-01 Esp8266, Esp, Arduino, Nodemcu, Длиннопост

ESP8266-01

WiFi термометр на ESP-01 Esp8266, Esp, Arduino, Nodemcu, Длиннопост

PL2303

Датчик DHT 11 (поговаривают в народе что мерит температуру на Марсе) подключен к ESP через gpio2
Приложение работает через Blynk сгенерированный токен вписывается в скетч
(Использованы виртуальные пины v10 и v11)
_______________
Архив со скетчем и библиотеками: https://yadi.sk/d/hAfvbMWR3JtCfE

________________________

У меня значения прыгают иногда, возможно ли такое поведение из-за датчика или навесного монтажа?
P.S Про качество фото знаю

Показать полностью 5
50

Подробный разбор датчика качества воздуха на базе ESP8266

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

http://pikabu.ru/story/universalnyiy_datchik_s_esp8288_datch...


Итак, для начала Вам понадобится:

1. ESP8266 Esp-07 - 120 руб

2. Плата-адаптер для ESP - 11 руб

3. Линейный стабилизатор напряжения на 3.3В. В моем случае XC6206 - 2.5 руб

4. Датчик СО2 MH-Z19 - 1500 руб

5. Датчик температуры и влажности DHT22 - 130 руб

6. I2C монохромный дисплей SSD1306 - 180 руб

7. Монтажная плата - 10 руб

8. Резистор 10 КОм - 0.5 руб

Итого: 1954 руб


Цены указаны ориентировочные, состоянием на декабрь-январь 2017 г.


Собираем всё в соответствии со схемой.

Подробный разбор датчика качества воздуха на базе ESP8266 Esp8266, Arduino, Mh-Z19 arduino, Своими руками, Умный дом, Автоматизация, Smart home, Длиннопост

Между первым и вторым выводами DHT22 необходимо припаять резистор на 10 КОм. Без него скетч будет выдавать ошибку.

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

Некоторые могут заметить что неплохо было бы поставить делители на входах ESP, однако как показала практика, всё работает стабильно и в оде экспериментов ни одна ESP'шка не пострадала)

Подробный разбор датчика качества воздуха на базе ESP8266 Esp8266, Arduino, Mh-Z19 arduino, Своими руками, Умный дом, Автоматизация, Smart home, Длиннопост

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


Далее нам нужно подключить USB to TTL конвертер к TX, RX и GND выводам ESP.

Не забываем что TX RX подключаются зеркально, т.е. TX ESP к RX конвертера и наоборот.

При загрузке скетча GPIO0 должен быть подключен к земле, это переводит ESP в режим загрузки.


Перейдем к скетчу.


Подключение библиотек:


extern "C" { //Это нужно для работы таймера

#include "user_interface.h"

}

#include <DHT.h> //Библиотека для работы с датчиком температуры/влажности

#include <SoftwareSerial.h> //Программный UART для MH-Z19

#include <ESP8266WiFi.h> //Работа с Wi-Fi

#include <WiFiUdp.h> //Работа с UDP пакетами

#include <EEPROM.h> //Эмуляция EEPROM на флешке для хранения статистики

#include <Wire.h> //I2C шина для подключения дисплея

#include "SSD1306.h" //Библиотека для работы с дисплеем

#define DHTPIN 13 //Говорим на какой ноге будет висеть сигнальная нога DHT22


Объявление переменных:


SoftwareSerial mySerial(14, 12); //Говорим библиотеке на каких ногах будет висеть программный UART

IPAddress ipServidor(192, 168, 1, 1); //Адрес шлюза (в моем случае роутера)

IPAddress ipCliente(192, 168, 1, 5); //Адрес нашего устройства

IPAddress Subnet(255, 255, 255, 0); //Подсеть

IPAddress broadcastIp(192, 168, 1, 255); //Адрес для широковещатльных сообщений


Здесь стоит отметить что стандартный broadcast адрес 255.255.255.255 на ESP'шке не работает.


WiFiUDP Udp; //Говорим что будем использовать UDP

SSD1306 display(0x3c, 4, 5); //Объявляем ноги на которых будет висеть дисплей

DHT dht(DHTPIN, DHT22); //Берем из define ногу для DHT22


byte cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79}; // команда запроса данных у MH-Z19


Для запроса данных на скорости 9600 (8 bit, stop — 1, parity — none) нужно отправить следующие девять байт:

• 0xFF — начало любой команды

• 0x01 — первый сенсор (он всего один)

• 0x86 — команда

• 0x00, 0x00, 0x00, 0x00, 0x00 — данные

• 0x79 — контрольная сумма.


В ответ придет что-то такое:

• 0xFF — начало любого ответа

• 0x86 — команда

• 0x01, 0xC1 — старшее и младшее значение (256 * 0x01 + 0xC1 = 449)

• 0x3C, 0x04, 0x3C, 0xC1 — в документации сказано, что должно приходить что-то типа 0x47, 0x00, 0x00, 0x00, но на деле приходит непонятно что.

• 0x7B — контрольная сумма.


Контрольная сумма считается следующим образом: берутся 7 байт ответа (все кроме первого и последнего), складываются, инвертируются, увеличиваются на 1: 0x86 + 0x01… + 0xC1 = 0x85, 0x85 xor 0xFF = 0x7A, 0x7A + 1 = 0x7B.


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

(скопировал с гиктаймса у Hellsy22)


unsigned char response[9]; //Сюда пишем ответ MH-Z19

unsigned int ppm = 0; //Текущее значение уровня СО2

float hum; //Текущее значение уровня влажности


float temp; //Текущее значение уровня температуры

unsigned int coCurrentHour = 0; //Значение СО2 в текущем часе

unsigned int tempCurrentHour = 0; //Значение тмпературы в текущем часе

unsigned int humidityCurrentHour = 0; //Значение влажности в текущем часе

const char *ssid = "имя_вашей_сети_в_кавычках";

const char *password = "пароль_от_вашей_сети_в_кавычках";

unsigned int localPort = 1900; //Порт по которому мы будем рассылать данные

long t = 0; //Счётчик

int displayClk = 0; //Счётчик

Для того чтобы хранить статистику мы должны записывать данные за последние 24 часа по каждому параметру в ОЗУ и один раз в час обновлять значения в енергонезависимой памяти. Так как энергонезависимая память хранит данные побайтово, а у нас есть значения типа float и int которые занимают боьше одного байта, мы разбиваем каждое значение на старший и младший байт. При чтении из памяти производим обратную процедуру.


unsigned int coHour[250] = {0}; //Масив с суточной статистикой СО2

unsigned int tempHour[250] = {0}; //Масив с суточной статистикой температуры

unsigned int humidityHour[250] = {0}; //Масив с суточной статистикой влажностиbyte coHigh[26]; //Массив старших байтов значения СО2

byte coLow[26]; //Массив младших байтов значения СО2

byte tempHigh[26]; //Массив старших байтов значения температуры

byte tempLow[26]; //Массив младших байтов значения температуры

byte humidityHigh[26]; //Массив старших байтов значения влажности

byte humidityLow[26]; //Массив младших байтов значения влажности

Блок Setup это что-то вроде автозагрузки в ПК, весь хранящийся здесь код выполняется один раз при загрузке устройства.


void setup() {

Serial.begin(9600); //Запускаем аппаратный UART

mySerial.begin(9600); //Запускаем программный UART

WiFi.begin(ssid, password); //Задаем параметры работы Wi-Fi

WiFi.mode(WIFI_STA);

WiFi.config(ipCliente, ipServidor, Subnet);

Udp.begin(localPort); //Запускаем UDP

EEPROM.begin(512); //Задаем размерность энергонезависимой памяти

display.init(); //Инициализируем дисплей

display.flipScreenVertically(); //Переворачиваем координатную сетку дисплея

dht.begin(); //Подключаем датчик температуры и влажности

delay(2000); //Ждём

В случае с ESP8266 иногда нужно намеренно делать задержки в выполнении программы чтобы успел отработать Wi-Fi стек и все фоновые процессы

for (unsigned int h = 0; h != 24; h++) { //Читаем данные из EEPROM

coHigh[h] = EEPROM.read(h);

delay(5);

coLow[h] = EEPROM.read(h + 24);

delay(5);

tempLow[h] = EEPROM.read(h + 48);

delay(5);

tempHigh[h] = 0;

humidityLow[h] = EEPROM.read(h + 72);

delay(5);

humidityHigh[h] = 0;


coHour[h] = word(coHigh[h], coLow[h]); //Собираем данные из отдельных байтов

tempHour[h] = word(tempHigh[h], tempLow[h]);

humidityHour[h] = word(humidityHigh[h], humidityLow[h]);


Udp.beginPacket(broadcastIp, localPort); //Отправляем статистику за последние сутки в UART и в сеть всем желающим

Serial.print("C"); Serial.print(h); Serial.print(":"); Serial.print(coHour[h]); Serial.print("|"); Serial.print(tempHour[h]); Serial.print("|"); Serial.print(humidityHour[h]); Serial.println("|");

Udp.write("C"); Udp.print(h); Udp.write(":"); Udp.print(coHour[h]); Udp.write("|"); Udp.print(tempHour[h]); Udp.write("|"); Udp.print(humidityHour[h]); Udp.write("|");

Udp.endPacket();

}

}

WiFiClient client;


Блок Loop представляет собой бесконечный цикл


void loop()

{

display.clear(); //Готовим дисплей к выводу текста и говорим что всё ок, но мы ждем

display.setTextAlignment(TEXT_ALIGN_LEFT);

display.setFont(ArialMT_Plain_16);

display.drawString(0, 40, "LOADING....");

display.display();

delay(5000);

mySerial.write(cmd, 9); //Запрашиваем данные у MH-Z19

memset(response, 0, 9); //Чистим переменную от предыдущих значений

mySerial.readBytes(response, 9); //Записываем свежий ответ от MH-Z19

unsigned int i;

byte crc = 0;//Ниже магия контрольной суммы

for (i = 1; i < 8; i++) crc += response[i];

crc = 255 - crc;

crc++;


String stringBr;

float prevHum = hum;

float prevTemp = temp;

hum = dht.readHumidity(); //Получаем текущую влажность

temp = dht.readTemperature(); //Получаем текущуютемпературу

int intHum = hum; //Переводим значения в int для упрощения обработки

int intTemp = temp;


//Проверяем контрольную сумму и если она не сходится - перезагружаем модуль

if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {

Serial.println("CRC error: " + String(crc) + " / " + String(response[8]));

ESP.restart();

}

else {

unsigned int responseHigh = (unsigned int) response[2];

unsigned int responseLow = (unsigned int) response[3];

ppm = (256 * responseHigh) + responseLow;

Serial.print("Time: " + String(t) + " sec\t" + "CO2: " + String(ppm) + " ppm\t"); //Выводим данные на UART для отладки

Udp.beginPacket(broadcastIp, localPort); //Отправляем данные в сеть

Udp.print(t); Udp.write("["); Udp.print(ppm); Udp.write("]");

if (isnan(hum) || isnan(temp)) { //Проверяем получили ли данные температуры и влажности

Serial.println(" Data reading error!"); //Если получена ошибка то отправляем предыдущее значение в сеть


Udp.write("["); Udp.print(prevHum); Udp.write("]"); Udp.write("["); Udp.print(prevTemp); Udp.write("]");

display.setTextAlignment(TEXT_ALIGN_LEFT);

display.setFont(ArialMT_Plain_16);

display.drawString(64, 20, "DHT Data Error!"); //Выводим сообщение об ошибке на дисплей

}

else

{

//Если всё ок - выводим данные на UART и отправляем в сеть

Serial.println(" Temperature: " + String(temp) + " *C " + "Humidity: " + String(hum) + " %\t");

Udp.write("["); Udp.print(hum); Udp.write("]"); Udp.write("["); Udp.print(temp); Udp.write("]");

tempCurrentHour = (tempCurrentHour + intTemp) / 2;

humidityCurrentHour = (humidityCurrentHour + intHum) / 2;

}

Udp.endPacket();

delay(100);

}

//Считаем статистику

t = t + 2;

coCurrentHour = (coCurrentHour + ppm) / 2;

if (t == 720) {

//Если пришло время обновлять статистику, запускаем цикл и сдвигаем все значения на одно

for (unsigned int d = 0; d != 24; d++) {

if (d == 23) {

coHour[d] = coCurrentHour;

tempHour[d] = tempCurrentHour;

humidityHour[d] = humidityCurrentHour;

Serial.print("C"); Serial.print(String(d)); Serial.print(":"); Serial.print(String(coHour[d])); Serial.print("|"); Serial.print(String(tempHour[d])); Serial.print("|"); Serial.print(String(humidityHour[d])); Serial.println("|");

Udp.beginPacket(broadcastIp, localPort);

Udp.write("C"); Udp.print(d); Udp.write(":"); Udp.print(coHour[d]); Udp.write("|"); Udp.print(tempHour[d]); Udp.write("|"); Udp.print(humidityHour[d]); Udp.write("|");

Udp.endPacket();

delay(100);

coCurrentHour = ppm;

tempCurrentHour = intTemp;

humidityCurrentHour = intHum;

t = 0;

}

else {

coHour[d] = coHour[d + 1];

tempHour[d] = tempHour[d + 1];

humidityHour[d] = humidityHour[d + 1];

Serial.print("C"); Serial.print(String(d)); Serial.print(":"); Serial.print(String(coHour[d])); Serial.print("|"); Serial.print(String(tempHour[d])); Serial.print("|"); Serial.print(String(humidityHour[d])); Serial.println("|");

Udp.beginPacket(broadcastIp, localPort);

Udp.write("C"); Udp.print(d); Udp.write(":"); Udp.print(coHour[d]); Udp.write("|"); Udp.print(tempHour[d]); Udp.write("|"); Udp.print(humidityHour[d]); Udp.write("|");

Udp.endPacket();

delay(100);

}

coHigh[d] = highByte(coHour[d]);

coLow[d] = lowByte(coHour[d]);

tempHigh[d] = highByte(tempHour[d]);

tempLow[d] = lowByte(tempHour[d]);

humidityHigh[d] = highByte(humidityHour[d]);

humidityLow[d] = lowByte(humidityHour[d]);

//Записываем обновленные данные в EEPROM

EEPROM.write(d, coHigh[d]);

delay(50);

EEPROM.write(d + 24, coLow[d]);

delay(50);

EEPROM.write(d + 48, tempLow[d]);

delay(50);

EEPROM.write(d + 72, humidityLow[d]);

delay(50);

EEPROM.commit();

}

}

//Проверяем значение счётчика и выводим на дисплей текущие показания

if (displayClk == 1) {

display.clear();

display.setFont(ArialMT_Plain_24);

display.setTextAlignment(TEXT_ALIGN_CENTER);

display.drawString(64, 0, "CO2");

display.drawString(64, 35, String(ppm) + " ppm");

}

if (displayClk == 2) {

display.clear();

display.setFont(ArialMT_Plain_24);

display.setTextAlignment(TEXT_ALIGN_CENTER);

display.drawString(64, 0, "Temp");

display.drawString(64, 35, String(temp) + " °C");

}

if (displayClk == 3) {

display.clear();

display.setFont(ArialMT_Plain_24);

display.setTextAlignment(TEXT_ALIGN_CENTER);

display.drawString(64, 0, "Humidity");

display.drawString(64, 35, String(hum) + " %");

displayClk = 0;

}

display.display();


На этом пожалуй и закончу пост. Код можно скопировать загрузить в ESP, я ничего не вырезал.

Если у кого-то есть Crestron, в следующем посте могу описать модуль который парсит данные на стороне контроллера.

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

Показать полностью 1
165

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Доброго времени суток мои подписчики и все интересующиеся темой!


Давно хотел написать пост, но всё руки не доходили, так что бонусом предлагаю описание устройства которое под силу собрать любому пикабшнику с паяльником.


Итак, стоит начать с того что мне привалило счастье в виде контроллера автоматизации Crestron CP2e. Для тех кто не знаком с продукцией Crestron, это достаточно древний, но тем не менее пригодный для домашнего использования контроллер, который умеет управлять оборудованием по Ethernet, rs232, IR, аналоговым входам/выходам и при помощи реле.

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

Фото железяки прилагаю.

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Пропущу автоматизацию домашнего кинотеатра, если Вам будет интересно то опишу в следующем посте.

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


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


Датчик СО2 выбирался спонтанно, но как потом оказалось правильно. MH-Z19 умеет определять концентрацию СО2 в диапазоне от 0 до 5000 ррm (частей на миллион) на практике 1500 ppm бывает только если в комнате спит два человека и закрыты двери, поэтому если вы выберете более дешевый датчик ничего страшного не случится.

Для сомневающихся табличка из тырнета.

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Датчик температуры и влажности (2 в 1) выбирался по отзывам и ширине диапазона. Я выбрал AM2302 он же DHT22 он рассчитан на измерение уровня влажности в диапазоне от 0% до 100%. При этом точность измерений находится в диапазоне 2%-5%.

Измеряет температуру в диапазоне от -40 до 125 градусов с точностью плюс-минус 0.5 градусов.

Если температура у меня дома выйдет за границы диапазона, до показания датчика это последнее о чём я буду думать)


Дисплей куплен на одном популярном китайском сайте и изначально предназнаяался для другого проекта.


Теперь о реализации.


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


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


Внешний вид и индикация показаний (фото засвечены лампой, дисплей на самом деле яркий)

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост
Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост
Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост
Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Интерфейс в Crestron с суточной статистикой

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Данные которые шлются в сеть по UDP

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Посуточная статистика (рассылается каждый час и при обрыве питания)

Универсальный датчик с ESP8266, датчиками температуры, влажности, СО2 и плюшками Esp8266, Arduino, Mh-Z19 arduino, Домашняя автоматизация, Умный дом, Своими руками, Длиннопост

Следующим этапом будет разработка корпуса для печати на 3d принтере и веб интерфейс чтобы при смене названия сети не нужно было заново прошивать модуль.


Спасибо тем кто дочитал, ещё раз повторюсь что готов поделиться исходниками со всеми желающими.

В комментариях жду критику, пожелания предложения и т.п.

Показать полностью 8
87

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1

В прошлой части, мы с вами уже собрали датчик. В этой части сделаем индикатор температуры c LCD дисплеем. За основу взята плата Wemos D1 на микроконтроллере ESP-8266EX и дисплей на распространенном HD44780, у меня он уже был с адаптером для подключения по I2C.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Подключение дисплея к ESP-8266

Как я уже говорил выше, у меня дисплей был с адаптером для подключения через шину I2C. Схема подключения проще некуда:

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Понадобятся всего 4 провода: 2 для питания экранчика и 2 для передачи данных.


LCD VCC - NodeMCU 5V

LCD GND - NodeMCU GND

LCD SCL - NodeMCU D1

LCD SDA - NodeMCU D2

У меня экранчик работал от 5 вольт, смотрите внимательно на вольтаж вашего.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Здесь прекрасно видно что куда подключено, справится каждый!

Подключение и прошивка

Прошивку будем заливать с помощью ESP8266Flasher.exe, как это сделать вы можете прочитать в прошлой части. Шаги будут практически идентичны. Отправляемся на https://nodemcu-build.com/ и собираем прошивку со следующими модулями: bit,cjson,dht,file,gpio,http,i2c,net,node,ow,pwm,rtctime,sntp,spi,tmr,uart,wifi

Пишем логику работы

Упрощенно логика работы такова: включаемся, подключаемся к wi-fi, получаем ip, получаем точное время с NTP сервера (см. файл ntp.lua), там в успешный коллбэк пишем переход к нашему main.lua. В нём вызовем updateLcdRow1(), updateLcdRow2() для обновления строк экранчика и при первом запуске создадим таймеры createTimers() для последующего обновления значений времени и температуры.

Что нужно изменить в файлах:

Файл init.lua: wifi.sta.config("YOUR_AP_NAME", "YOUR_AP_PASSWD")


Вместо YOUR_AP_NAME, YOUR_AP_PASSWD вписываем название своей точки доступа и пароль к ней.


Файл ntp.lua: sntp.sync('ru.pool.ntp.org', - можно указать свой адрес ntp-сервера.


Файл main.lua: tm = rtctime.epoch2cal(rtctime.get()+10800) 10800 секунд = 3 часа - это указание временной зоны. С ntp сервера мне приходило время по гринвичу, т.е. GMT+0. В связи с тем что в текущей реализации nodemcu работы с датой и часовыми поясами реализована слабо, пришлось сделать вот так. Для часового пояса отличного от GMT+3 надо прописать своё значение секунд здесь.


Дальше, вот здесь http.get("http://api.thingspeak.com/channels/999999/fields/1.json?api_...", надо указать свою ссылку и API ключ к вашему аккаунту на thingspeak.


В качестве ДЗ, здесь же можно добавить в фэйл коллбэк http.get() получение показаний с датчика локально, на случай если пропал интернет.

Wi-fi термометр на ESP8266. Часть 2. Собираем индикатор с LCD дисплеем на Wemos D1 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На картинке пример работающей платы с выводом отладочной информации.


Файл i2clcd.lua, писал не сам, нашел у индусов. Здесь возможно придется поправить адрес устройства или номера GPIO, если подключать будете к другим, нежели чем у меня.

Как всегда, все исходники можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas...


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

Показать полностью 2
108

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01

Подключение ESP-01 к компьютеру

Подключение ESP-01 к компьютеру происходит несколько сложнее, нежели чем знакомые всем arduino. Повторюсь, если бы у меня не было чипа ESP-01 в хозяйстве, то надо выбирать уже готовые наборы с необходимой “обвязкой” на борту. Для того чтобы подключить ESP-01 к компьютеру нам потребуется USB-TTL адаптер, макетная плата и набор проводов папа-мама для макетной платы. Также, немаловажную роль играет источник питания. В самом начале своих экспериментов я не придал этому значения, и есп-ха постоянно перезагружалась, переставала отвечать на команды. В общем, обязательно используйте отдельный источник питания.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На фото изображен USB-TTL адаптер на чипе CH340. Обратите внимание на перемычку, с помощью неё выбирается рабочее напряжение. Нам нужно 3.3V

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Макетная плата с DC-DC преобразователем. К косе проводов уходящих направо подключалась ESP.

Настоятельно рекомендую для подключения ESP-01 к макетной плате использовать специальный адаптер, ищется на али по запросу Breadboard Adapter for ESP-01. Он показан на следующем фото. Он позволит вам стабильно воткнуть ESP в макетную плату, чтобы ничего не болталось на проводах. Плюс, что еще немаловажно на этом адаптере распаян конденсатор на 0.1µF для сглаживания питания. В дальнейшем его можно использовать и в готовом девайсе, чтобы иметь возможность быстро вытащить-заменить чип.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Breadboard Adapter for ESP-01 очень сильно облегчит подключение чипа к макетной плате. У меня такого в момент сборки девайса не было.

Вот моя схема подключения. Честно стырена с просторов инета, единственное я добавил емкость на 10µF в разрыв кнопки RST. А то, там толи дребезг кнопки был, толи хз.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

«Напрямую» к питанию подключается только вывод VCC, остальные выводы: CH_PD, RESET, GPIO0, GPIO2, должны быть подтянуты к питанию (VCC) через резистор от 4,7 до 50 кОм. «Напрямую», к минусу (общему проводу) питания подключаем только GND, а GPIO0 подтягиваем (pulldown) тоже через резистор до 10k к GND для перевода модуль в режим загрузки прошивки. Об этом немного позже. Далее подключаем:

ESP8266 — RX ---> USB-TTL — TX,

ESP8266 — TX, ---> USB-TTL — RX.

Уже на этом этапе можно подать питание на схему, и убедиться что ничего не сгорело. При успешном старте заводской прошивки на модуле ESP8266 загорится красный светодиод (индикатор питания, на некоторых версиях модуля, например ESP-12, может отсутствовать) и пару раз мигнет синий (это индикатор передачи данных от модуля к терминалу по линии TX-RX, может иметь другой цвет).

Проверка подключения и прошивка

Для работы с esp мы будем использовать широко распространенную в узких кругах ESPlorer https://esp8266.ru/esplorer/#download Программа написана на java и будет без проблем работать под разными платформами (win, linux mac)


Подадим питание на модуль, запустим программу, выбираем нужный COM порт, и нажимаем open, и перезагрузим модуль. После этого в окне терминала мы увидим мусор из символов (из-за разных скоростей передачи) , а потом что-то типа:

wdt reset

load 0x40100000, len 25052, room 16

tail 12

chksum 0x0b

Это означает что модуль успешно стартует на стоковой прошивке и у вас есть с ним связь.


Отложим пока ESPlorer в сторону, он понадобится нам позже. Самое время прошить в наш модуль прошивку NodeMCU. Я выбрал эту прошивку по нескольким причинам: для обновления работы скриптов больше не нужно переводить модуль в режим прошивки, и нажимать кнопки на макетке (у меня все это дело немного глючило на макете) , возможность использовать готовые модули, наличие хорошей документации к API. Ссылка на документацию: https://nodemcu.readthedocs.io/en/master/


Благодаря сервису https://nodemcu-build.com/ мы можем собрать собственную версию прошивки только с теми модулями, которые нам нужны. Чем меньше модулей будет в прошивке, тем больше места останется для ваших данных и скриптов.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Заполняем email, ставим галочки на те модули что нам понадобятся, а именно: bit, CJSON, file, GPIO, HTTP, I²C, net, node, 1-Wire, timer, UART, WiFi и нажимаем Start Your Build.

Пока выполняется билд скачаем программу для прошивки. Если у вас не windows, то есть другие инструменты, например esptool, я использовал nodemcu-flasher https://github.com/nodemcu/nodemcu-flasher Скачиваем билд в зависимости от вашей операционной системы.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Проверяем почту, нам придет письмо с ссылками для скачивания нашей прошивки.

Примерно так будет выглядеть письмо. Скачиваем файл прошивки, нам нужна integer версия.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Теперь запускаем ESP8266Flasher.exe, переходим на вкладку Config, в первую строчку добавляем наш файл.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Переходим на вкладку Operation, перезагружаем нашу ESP-01 в режим прошивки таким образом: зажимаем кнопку FLASH и нажимаем RESET, отпускаем FLASH. Нажимаем Flash.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Если все прошилось успешно, ура-ура! Осталось совсем немного.

Теперь открываем ESPlorer, в правой части выбираем нужный порт, нажимаем Open и перезагружаем модуль нажав на кнопку RESET. Вы должны увидеть в терминале что-то похожее.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Пишем логику работы датчика

Логика работы датчика очень проста: после загрузки подключаемся к wi-fi точке, получаем ip-адрес. Один раз в минуту считываем показания и отправляем их в облако. Помимо этого создаем на 80 порту веб-сервер, обратившись к которому можно получить JSON с текущим значением температуры.

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

Несколько слов отдельно стоит сказать про файл init.lua Именно он начинает исполнятся после загрузки модуля, и уже из него вызываются все остальные файлы на исполнение.

Точка-доступа и пароль задаются в этой строчке:

wifi.sta.config("YOUR_SSID_NAME", "YOUR_PASSWORD")

Вместо YOUR_SSID_NAME и YOUR_PASSWORD необходимо указать имя точки-доступа и пароль от неё. В моем случае настройки приходят с роутера по DHCP, поэтому ip-адрес здесь не указывается. В настройках роутера я закрепил за есп постоянный адрес.

Для сохранения данных мы будем использовать сервис https://thingspeak.com/

Там необходимо зарегистрироваться и создать канал. В один канал можно записывать сразу несколько показателей, например если помимо температуры мы бы измеряли влажность или что-то еще. Переходим на страницу API Keys и копируем оттуда Write API Key. Этот ключ необходимо вставить в файл application.lua на строчке 36 вместе YOUR_API_KEY

http.get("http://api.thingspeak.com/update?api_key=YOUR_API_KEY&amp;fi..."..t, nil, function(code, data)

Также не забываем загрузить файл ds18b20.lua, в нем содержится логика для работы с датчикам DS18B20. Т.к. прошивку мы взяли integer, а температура является float числом, я этот файлик вероломно поправил для того, чтобы в результате работы возвращалась строка, но с разделителем точкой, как будто у нас есть поддержка работы с дробными числами.

Можно протестировать устройство, подключив датчик через макетную плату.

Вот принципиальная схема устройства, накидал быстренько.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

После включения устройства у вас в канале на thingspeak должны появиться данные, а также вы должны смочь зайти на ip-адрес, который назначился вашей esp в браузере и увидеть примерно следующее:

{

"sensor-name": "balcony",

"temperature": 20.7500,

"chipID": 170827,

"espMac": "5c:cf:7f:02:9b:4b",

"espIp": "192.168.20.38",

"heap": 32040,

"timerTicks": 835632668

}

Формат выдачи данных вы можете поменять самостоятельно поправив файл application.lua

Финальная сборка устройства

Я запаял все на макетной плате под пайку, такой зеленой, с отверстиями. Стабилизатор питания отдельный, на AMS1117. Питается сейчас от старого БП роутера длинк на 5V, за несколько месяцев ESP ни разу не зависла. Жду пока приедут антенна и приемник катушки (ну когда же уже!!!!!), для того, чтобы питать датчик за окном без проводов. Ковырять и сверлить стеклопакеты на утепленном балконе не хочу.

Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост
Wi-fi термометр на ESP8266. Часть 1. Собираем датчик температуры воздуха на ESP-01 Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

Заключение

Вот мы и закончили с вами наш температурный датчик. Все исходники файлов можно скачать на github. https://github.com/nossSpb/nodemcu-ds18b20-tutorial/tree/mas... Осталось все это дело упаковать в герметичный корпус и повесить за окно. Помимо текущих показаний, мы также имеем историю измерений в облаке на thingspeak, и тоже можем с ней работать. Об этом я расскажу в следующей части. Делитесь своими идеями в комментариях, задавайте вопросы. Спасибо что дочитали до конца.

Показать полностью 14
116

Wi-fi термометр на ESP8266. Часть 0. Подготовительная.

Привет, пикабу!

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

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На картинке изображен модуль из второй части, который показывает текущие дату\время, показания датчика (датчик пока находится внутри квартиры)

Краткое содержание будущих частей:

Часть 1: Датчик на ESP-01 с беспроводным питанием за окно и температурным датчиком DS18B20. По шагам соберем с вами устройство, зальем прошивку, разберемся с esptool, ESPlorer, научимся сохранять данные в облако, а также показывать показания в браузере компьютера.


Часть 2: Модуль Wemos D1. Подключим экранчик через I2C, cделаем вывод показаний температуры с датчика на экран, соберем прошивку, сделаем синхронизацию времени через интернет, обсудим работу при потере интернет соединения.


Часть 3: Приложение под android. Установим android studio, сделаем приложение с одной activity, которое будет показывать температуру с нашего датчика.

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На картинке изображен собранный ESP-01 в монтажной коробке, в финальной версии корпус изменился.

Часть 0. Вступительная. Что же такое ESP8266?

ESP8266 — микроконтроллер китайского производителя Espressif с интерфейсом Wi-Fi. Именно наличие wi-fi отличает данный контроллер от более известного и широко распространенного arduino. Да, многие, скажут, что к arduino возможно подключить соответствующий шилд, но зачем, если в данном микроконтроллере он встроен?


Существует множество модификаций данного чипа. В наших статья речь пойдет о подключении чипа ESP-01 и ESP-8266EX уже собранного с обвязкой от проекта wemos.cc (изображен на первой картинке)

Wi-fi термометр на ESP8266. Часть 0. Подготовительная. Сделай сам, Esp8266, Arduino, Электроника, Программирование, Nodemcu, Своими руками, Длиннопост

На картинке изображены разные типы модулей ESP8266

С помощью данного чипа можно самому создать управляемые через wi-fi различные устройства: датчики температуры, света, давления; управляемые через интернет лампочки или розетки, - спектр применения очень широк. Если вы хотите в модный ныне IoT (internet of things), то с помощью данного чипа легко начать. Именно поэтому данные чипы так полюбились diy-мастерам по всему миру.

Буду рад ответить на вопросы в комментариях, конструктивная критика приветствуется. Как говорится, подписывайтесь чтобы не пропустить.

Всем спасибо.

Показать полностью 2
218

WiFi термометр своими руками

WiFi термометр своими руками Термометр, Nodemcu, Своими руками, Сделай сам, Видео

Все питается от пяти вольт, то-есть от любой USB зарядки. При соответствующей настройке WiFi роутера градусник доступен в браузере как из домашней сети, так и из Интернет.
Потребуется сама платка NodeMCU

Датчик температуры DS18B20

Резистор 4.7 кОм

Все собирается как на схемке, после чего nodemcu можно подключить к usb компьютера открыть на нем arduino ide и загрузить скетч.
Все с алиэкспреса мне обошлось дешевле 250 рублей
скетч для arduino ide http://kitsel.ru/archives/wifi-thermometer-nodemcu-arduino-i...

Arduino IDE https://www.arduino.cc/en/Main/Software

Показать полностью
192

WIFI часы на светодиодной матрице с бегущей строкой погоды

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

В этом варианте часов получаем время из интернета с сайта google, а так-же погоду в формате JSON, которая отображается бегущей строкой. Используем подключение по WIFI. Матричный модуль 32x8 MAX7219 подключен к NodeMCU (ESP826) по интерфейсу SPI.

WIFI часы на светодиодной матрице с бегущей строкой погоды Nodemcu, Esp8266, Max7219, Wifislax, Часы, Видео, Длиннопост
WIFI часы на светодиодной матрице с бегущей строкой погоды Nodemcu, Esp8266, Max7219, Wifislax, Часы, Видео, Длиннопост

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

Для отображения русских букв, библиотека Adafruit-GFX слегка модифицирована, она находится в архиве вместе со скетчем и другими необходимыми библиотеками. Качаем тут: https://yadi.sk/d/8H52USAeyg3Ux


И наконец видео по статье:

Показать полностью 1 1
56

Wi-Fi машинка на NodeMCU, своими руками

В этом видео собрана ДУ машинка, которая основана на плате nodeMCU управляется с android устройства по Wi-Fi.


Скетч для Arduino IDE и Android приложение: https://yadi.sk/d/MOTB9OBVtGmYQ


ESP8266 прошивка, программирование в Arduino IDE:

http://pikabu.ru/story/esp8266_proshivka_programmirovanie_v_...


Видео взято из канала "ARDUINO это просто":

https://www.youtube.com/channel/UC5Mq-PGM7Ww4Nt0EyUFJo3g

Wi-Fi машинка на NodeMCU, своими руками Arduino, Nodemcu, Esp8266, Wi-Fi, Arduino это просто, Микроконтроллеры, Видео, Своими руками
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: