Всем привет, возникла такая проблема, может кто сталкивался? Заказал датчик движения HC-SR501. По описанию продавца он выглядит так
На деле получил вот это
Нет электролитов, но там я как понял стоят танталовые конденсаторы, нет стабилизатора на 3,3 в, это тоже решаемо, но самое главное нет джампера на H/L, там стоит резистор на 10 кОм и датчик работает в режиме L. А мне надо H. Можно ли что-то сделать, удалить, перемкнуть? Может кто в курсе? За качество фото сорри.
Мой долгострой. Проект далек от завершения. Но промежуточные результаты уже не стыдно показать. Плата моей разработки, заказана у китайцев. 180 диодов ws2812b-mini, wemos d1 mini в качестве контроллера. Эксперименты с генерацией палитр и нестандартными таблицами мэппинга.
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
Да, название копия из оригинального поста Народный измеритель пульсации света Сей же пост не плагиат, а вариант другого исполнения, ещё более бичёвского и простого в реализации, но код, практически, оригинальный.
Для понимания принципа работы измерителя, читайте оригинальную статью, уважаемого ammo1.
Немного вступления
В оригинале, используется дисплей TFT 1.77, который стоит от 165рублей на текущий день, а я использовал oled 0.96 4 pin, что стоит аж 110 рублей. Вы сейчас посмеётесь, дескать 55 рублей, того не стоят, но это цены на али, в наших магазинах, может быть совсем другая разница.
Кроме того, я поменял NodeMCU из оригинала на WeMos d1 mini, т.к. wemos дешевле и компактнее, но сам мк esp8266 тот же. К сожалению, в отличие от NodeMCU, питать WeMos d1 mini 9 вольтовой батарейкой, не выйдет, потому что, максимальное напряжение 6В, об этом ниже.
Питание
На оригинальном WeMos d1 mini должен быть стабилизатор ME6211C33, но, похоже, на али, дешёвыми, продаются именно клоны, на которых установлен стабилизатор с маркировкой 4b2k, которой обозначается XC6204B332. Оригинальный wemos d1 mini можно питать напряжением до 6В, клоны так же придерживаются этого. У меня есть аккумуляторы 18650, извлечённые из мёртвой батарейки ноутбука, один из них и питает самоделку. Можно использовать пальчиковые батарейки, а ещё проще от внешней батареи(power bank), которая, я думаю, есть у многих. Прибор для измерения пульсация света, нужен далеко не всегда, и я не вижу особых проблем, попользоваться им с помощью внешнего питания, если уж совсем нет других вариантов.
Ближе к делу
А тут всё просто, подключаем oled дисплей, по i2c к мк это D2(sda) D1(scl), по умолчанию или другие пины, если хотите. Temt6000 подключается к единственному, аналоговому входу(A0 к S). Не вижу смысла рисовать, что и как подключается, потому что соединить 3.3 с VDD и V, а G с GND и G, не составляет никаких проблем.
Библиотеку я использовал GyverOLED, она есть в репозитории arduino ide. Сам "измеритель пульсаций" требует библиотеку GyverFilters, которая так же, есть в репозитории.
Я убрал всю графику и на экран выводятся только kp1, kp2, Emax, Emin, Eenv, что лично мне, хватает. В оригинальном скетче были переменные, которые никак не использовались, я их все удалил.
Есть у меня, замечательная, китайская, rgb лампочка, которая управляется с пульта. Лампа полная хрень, пылится в коробке, но для теста хорошо подходит.
Для себя я собрал прибор, сочетающий в себе: датчик температуры(htu21d); датчик света(bh1750); измеритель пульсаций(temt6000).
Ниже скрины из видео теста лампы. В приложенном выше скетче, на дисплей выводится то же самое, только нет первых двух строк.
По сути, это должен быть не первый пост, потому что описываемый датчик полностью несамостоятельный и без базы от него нет пользы. Это не урок или статья "сделай сам", это просто описание моего датчика, вдруг, кого то вдохновит и/или поможет. База представляет собой микроконтроллер esp32, со всякими датчиками и радиоприёмником на частоте 433мГц. О ней, может быть, как-нибудь в следующий раз, или нет, хз.
Решил значит я замутить себе метеостанцию, дабы в любой момент, со смартфона видеть актуальную температуру, да и вообще, набирать статистику. Под рукой была nodemcu v3 на базе микроконтроллера esp8266.
nodemcu v3
Первая проблема, это питание. Я выбрал батарейки типа AA. На батарейках пишут 1.5В, но это не типа среднее напряжение или как там правильно, новая батарейка без проблем может выдавать 1.6 и чуть больше. 2 батарейки могут выдать 1.6*2=3.2, что допустимо для esp8266, но это пик, а я планирую высаживать батарейки по максимуму т.е. до 1В и ниже, а это уже 2В и ниже. Минимальное напряжение esp8266 2.5В(согласно датащиту https://www.espressif.com/sites/default/files/documentation/...). Плюс, я живу в Сибири и у нас бывают морозы, значит, напряжение надо бы повыше, с запасом.
3 батарейки AA это максимум 1.6*3=4.8, можно округлить до 5В. Для esp8266 5В это много, но в nodemcu v3 есть стабилизатор ams1117, который позволяет подавать до 15В, а на выходе у него те самые 3.3В. Но, не всё так гладко, т.к. у этого стабилизатора ток потребления 5 мА, а это значит, даже если вообще исключить потребитель, стабилизатор всё равно будет кушать 5мА. Согласно batterytest.ru, у батарейки GP Super ёмкость 2451, а это значит, её хватит всего на 2451/5=490,2ч или 20 дней при условие, что в цепи один лишь стабилизатор.
Я выпаял стабилизатор ams1117 и использовал MCP1700-3302E. У MCP1700-3302E ток потребления всего 1.6мкА, хотя, в комментариях, на али писали, что стабилизатор подделка и его потребление выше, но честно, я не замерял, решил довериться. Его максимальное, входное напряжение 6В, но это всё ещё выше 5В. Падение напряжения так же низкое, это я уже замерял, и даже при входе менее 3В, на выходе было лишь на несколько десятых ниже входа, а это значит, что 3 разряженные батарейки смогут выдать 1*3=3В, что будет хватать для питания esp8266.
Далее, была другая проблема, даже если не использовать wi-fi, при включение esp8266 инициализирует его, из за чего краткосрочно вырастает потребление, а экономить надо каждый мАч. Решение нашлось в примере LowPowerDemo, где в readme есть ссылка на https://github.com/esp8266/Arduino/issues/6642#issuecomment-... таким образом, можно отключить wi-fi с контроллер сразу будет загружаться в режиме модемного сна.
Если нет wi-fi, то как передавать данные? С помощью 433мГц и передатчика SYN115. Изначально, я просто подключил его на gpio 14. Но оказалось, что в глубоком сне esp8266 не сохраняет состояние пинов, т.е. даже если я даю команду LOW, 14 пин все равно станет HIGH, когда esp8266 уйдёт в deep sleep. Таким образом, SYN115 не только не перестаёт работать и засоряет эфир(моя китайская метеостанция, теряла связь со своим датчиком, в этот момент), но у нас так же повышенное потребление.
Есть вот такая интересная пикча, на ней видно, что gpio 15, единственный пин, который должен быть притянут к земле, чтобы esp8266 нормально запустилась. По логике, раз там должен быть низкий уровень для старта, значит и в глубоком сне, там будет сохраняться низкий уровень. Я точно не помню, с SYN115 или с другим передатчиком, но ESP8266 отказывалась запускаться, будто я подаю на 15 пин высокий уровень. Так, я решил использовать mosfet 2N7000, его управление на GPIO 15, SYN115 на GPIO 14, таким образом, неважно, какое состояние gpio 14, если gpio 15 LOW.
Датчик температуры и влажности, я решил использовать AHT20, хотя, обычно, в инструкциях про метеостанции, этот датчик не упоминается. Работает по i2c, потребление от 250-980мкА. Можно было, его тоже посадить на тот же mosfet, что и SYN115, но мне было лень.
Всё это запихал в корпус с ali, верхние отверстия заклеил, по боком насверлил отверстий. Чтобы избежать попадания влаги внутрь, сделал небольшие крылья, вырезанные из пластиковой бутылки. Испытания весной прошли успешно, какой бы дождь не лил, а ветер не дул, всё продолжало работать.
корпус
Самого фото датчика у меня нет, он на балконе, вскрывать и фотать влом, но я нарисовал схему.
От 2 батареек к аналоговому пину А0 провод подключён для контроля заряда батареи.
Теперь об реальном опыте, а он есть.
Несколько дней назад, у нас были морозы, показатель датчика немного завышали, относительно прогноза из интернета, примерно на +1градус. Хотя, смотря какому прогнозу верить, ведь если я смотрю в 4 источниках(яндекс,гисметео,пр5,yr.no), то вижу несколько отличающиеся цифры.
Вот такие данные получены моим датчиком.
усреднённые по времени суток данные
суточный график
Результаты меня порадовали, датчик не замёрз, батарейки выжили. Специально для зимы, покупал в dns батарейки Nanfu AA, т.к. согласно тестам https://batterytest.ru/1120 очень даже ничего.
У меня нет данных, сколько может проработать датчик от батареек, т.к. я впервые занимаюсь всем этим, и делал много ошибок, прежде чем прийти к описанному выше, батарейки высаживались достаточно активно. Первые батарейки проработали с 26.05 по 3.07 и напряжение 2 батареек было 1.98В, следовательно, каждая разрядилась, примерно до 1.98/2=0.99В. Потом были поставлены батарейки под брендом КОСМОС, но я их поменял на Nanfu AA т.к. боялся, что всю зиму те не проживут. КОСМОС проработали с 3.07 по 18.11 и 2 батарейки выдавали 2.44В т.е. батарейки ещё, вполне, были живы.
Вообще, метеостанция, это первое что я делал на esp, ранее, у меня не было опыта как с esp, так и с arduino, да вообще с микроконтроллерами, точно так же, как и не держал ранее паяльник в руках. Это я к тому, что если, вдруг, вдохновитесь, не бойтесь пробовать. У меня был только небольшой опыт в программирование, поэтому, я писал скетч сам, как хотелось, но библиотеки, конечно же, брал готовые. Но и без опыта программирования, в интернете куча готового кода, собирай, заливай и радуйся.
Питал по micru usb от 5В, загорелся суровый шестиногий светодиод, сигнализирующий о перегрузке (плохой контакт...) А так же вышел волшебный дымок на котором как известно и работает электроника
Я так понимаю это какой-то генератор импульсов, или что-то нужное для понижения напряжения (не особо шарю). Но думаю, если питать от 5В, то мне эта микруха то и не нужна (?) Выдрать её, минус на gnd, плюс на vin или прям на стабилизатор – и должно запуститься (?)
В общем крайне важно заставить эту штуку до завтрашнего вечера работать без дыма и красного каления, кинув какую-нибудь перемычку вместо микрухи, или выдрав её оттуда. Помогите опознать микросхему, дабы понятно было что это и что с ней делать
Основной используемый принцип -запросы и обработка ответов по смарт-протоколу APC За исключением того, что плату мониторинга/управления собираем на основе WemosD1mini.
Дешевизна решения очевидна, с учетом того, что самая дешевая сетевая плата AP9640 (без внешних датчиков) стоит более 500$
Плата собрана по традиции в коробочке из под Тик-Така.
Цель реализации:
мониторинг основных параметров UPS на WEB странице, а также в представлении XML и JSON
доступ к плате по WiFi. Сохранение параметров подключения
сигнализация аварии - отправка сообщения на PHP скрипт по ссылке
сбор информации о окружающей температуре и влажности
сохранение настроек в EEPROM FLASH
Детали
Wemos D1 mini
max3232 module без DB9 разъема
разъем DB9 папа
DHT-21 датчик температуры и влажности (опционально)
Схема простого подключения APC smart к RS232 COM порту ПК:
ups_alarm_script_url - ссылка на скрипт, для передачи алерта пропадания/появления питания, на email или телеграмм, в формате http://server/mail= или похожем.
ДИСКЛЕЙМЕР. Я не гуру программирования, я чуть больше чем новичок. Цель данных постов - популяризация и только. Если вы считаете, что мне надо было начать с другого, писать о другом или писать по-другому, просьба к вам сделать свою серию постов.
Также хочу выразить благодарность @AlexGyver, за его неоценимую работу в популяризации микроэлектроники, а так же за создание отличных и понятных библиотек.
Итак. В прошлом посте мы настроили ArduinoIDE, так же подключили ESP к компу и загрузили в нее тестовую программу. Сегодня мы разберем проэкт умного реле на ESP с управлением через телеграм бота. Для работы мы используем библиотеку все того же AlexGyver - FastBot, как одну из самых простых и понятных в работе.
Для начала разберемся с физической частью. Так как реле у нас 5VDC а сам микроконтроллер 3.3 VDC, в финальном варианте у нас будет дополнительно установлена AMS1117, но на момент отладки она будет не нужна, так как на макетке есть вывод 5V. Подключение будет выглядеть так. Не обращайте внимания что модуль на 2 реле, он отличается только количеством реле. GND -> GND 5V -> VCC IO5 -> In1
Далее думаю нужно немного отойти от темы и вернуться к ней после создания своего ТГ бота. По ссылке вы найдете подробный гайд по его созданию. Обязательно сохраните токен бота, он будет необходим, так же желательно узнать свой ID, по ссылке выше это также есть. По этой ссылке есть описание библиотеки, которую мы будем использовать.
После создания бота, можно перейти к разбору кода, прошу критиков заметить, это мой кривой код, но он работает и мне этого достаточно:)
Качаем нужные библиотеки:
В поиск вписываем "FastBot"
Устанавливаем. Далее перейдем к коду. Код состоит из нескольких основных "этапов", в первой части мы указываем библиотеки и переменные, которые будем использовать в программе, вторая часть это функция при запуске микроконтроллера, обозначается как void setup( ) { } - Все, что будет указано между фигурных скобок, будет относиться к этой функции. Эта функция запускается один раз при запуске. Третья часть это функция которая работает по кругу, то есть постоянно исполняется на микроконтроллере и обозначается как void loop() { } - Все, что будет указано между фигурных скобок, будет относиться к этой функции. Эта функция запускается по кругу до бесконечности. Так же есть отдельные функции под определенные задачи, они отрабатывают только когда мы их вызываем.
Здесь вы можете найти подробное описание синтаксиса и как пишется код, также у Алекса есть канал на Ютуб где были видеоуроки на эту же тему. (как фанбой ей богу..)
Здесь мы видим часть с объявлением наших переменных и подключением библиотек. Далее будет код и некоторые пояснения к ниму. Итак.
Разберем некоторые положения: Как видите 15 строка у меня закомменчена, то есть все что идет после "//" не попадает в код и не обрабатывается программой. Закомменченый метод позволяет боту использовать "белый" лист, то есть он будет отвечать только пользователям с ID указанном в скобках-ковычках. В данном случае этот метод исключен. Строки 26 и 31, в них указано, что при команде Off, положение RELAY(IO5) изменится на ВКЛ, т.е. на этот выход придет логическая единица(иначе говоря придет 3.3 вольта), а на команду On наоборот приходит ВЫКЛ (иначе говоря на выходе будет 0 вольт). Это сделано потому, что сам модуль реле управляется от обратного. Когда на входе модуля реле 0, реле включается и наоборот. Это конечно немного контр-интуитивно, но как есть. Строка 20, в ней указан метод OTA, что расшифровывается как Over-The-Air. Этот метод позволяет нам прошивать наш контроллер не подключая его к компу, а прямо из ТГ бота. Для этого необходимо экспортировать прошивку как бинарный файл, а затем закинуть ее боту в чат. Делается это так:
И собсна сам результат работы контроллера в чате :
Если у вас будут вопросы, пишите в комментариях. Я понимаю, что для новичка все это выглядит как набор букв, но без изучения синтаксиса и языка никуда, это нужно просто пройти.. Но спешу заверить, что он не так сложен и не такой объемный как кажется. Так же, могу порекомендовать изучить примеры, что идут в комплекте с ArduinoIDE, найти их можно здесь
Дополнительно почти к каждой библиотеке идут свои примеры работы. В частности если вы хотите написать свой код, воспользуйтесь примерами нужной библиотеки, зачастую там уже есть готовые решения ее работы, которые можно скопипастить в свой код и использовать как вам нужно.