Ответ на пост «Температура за Вашим окном в кармане - это просто! Без программирования - за 30 минут. (ESP8266 + DS18B20 + WiFi-iot + NarodMON)»2
здравствуйте.
а есть вариант прошивки в виде скетча для ардуино?
здравствуйте.
а есть вариант прошивки в виде скетча для ардуино?
В цифровой электронике часто приходится соединять между собой микросхемы, работающие от разных напряжений питания и имеющих различные Логические Уровни.
Казалось бы, что тут сложного — «логический ноль» это ноль, а «логическая единица» это единица. Но на практике всё не так просто.
Несогласованность уровней может привести не только к сбоям в работе, но и к выходу из строя дорогостоящих модулей.
Любая цифровая микросхема понимает только два состояния:
0 (логический ноль) – низкий уровень напряжения.
1 (логическая единица) – высокий уровень напряжения.
Но вот значения этих уровней зависят от технологии, в которой выполнен чип, и от его питания.
Например:
CMOS на 3.3 В:0 = 0…0.8 В
1 = от 2.0 В и выше
TTL на 5 В:0 = 0…0.8 В
1 = от 2.0 В и выше
Отсюда сразу видно: если подключить выход 3.3 В логики к входу 5 В микросхемы — скорее всего всё будет работать(но опять же , не всегда).
А вот наоборот — подача 5 В на вход, рассчитанный на 3.3 В, может его просто сжечь.
Для цифровых входов:
•Uвх.0.мин. (VIL.min) – минимальное напряжение, воспринимаемое как «0»;
•Uвх.0.макс.(VIL.max) – максимальное напряжение, воспринимаемое как «0»;
•Uвх.1.мин.(VIH.min) – минимальное напряжение, воспринимаемое как «1»;
•Uвх.1.макс.(VIH.max) – максимальное напряжение, воспринимаемое как «1»;
•Uвх.п (VIT) – напряжение переключения (threshold voltage), значения выше которого воспринимаются как «1», а ниже – как «0».
Для цифровых выходов:
•Uвых.0 (VOL.typ) – типовое напряжение, которое устанавливается при выводе «0»;
•Uвых.0.мин.(VOL.min) – минимальное напряжение, которое может быть установлено при выводе «0»;
•Uвых.0.макс.(VOL.max) – максимальное напряжение, которое может быть установлено при выводе «0»;
•Uвых.1(VOH.typ) – типовое напряжение, которое устанавливается при выводе «1»;
•Uвых.1.мин.(VOH.min) – минимальное напряжение, которое может быть установлено при выводе «1»;
•Uвых.1.макс. (VOH.max) – максимальное напряжение, которое может быть установлено при выводе «1».
Защита микросхем – 3.3-вольтовые входы не выдержат прямой подачи 5 В.
Корректная работа логики – микросхема может не «увидеть» единицу, если она недостаточно высока.
Совместимость модулей – большинство современных датчиков, дисплеев и модулей Arduino работают на 3.3 В, а сами Arduino (UNO, Nano) – на 5 В.
Без согласования есть риск получить «мертвый» дисплей или датчик, а иногда и целую плату в утиль.
Самый простой вариант для сигналов в одну сторону (5 В → 3.3 В).
Формула простая: Vout=Vin⋅R2R1+R2V_{\text{out}} = V_{\text{in}} \cdot \frac{R2}{R1+R2}Vout=Vin⋅R1+R2R2
Например, при R1 = 2 кОм и R2 = 3.3 кОм из 5 В получаем примерно 3.3 В.
Минус
— не всегда это работает
– плохо подходит для высоких частот (SPI, I²C).
Существуют готовые чипы (например, TXB0108, 74LVC245), которые умеют переводить уровни в обе стороны и на высоких скоростях.
Это надёжный вариант для «серьёзных» проектов.
Можно собрать схему на MOSFET или даже на биполярных транзисторах (например, на советских КТ315 или современных BC547).
Такой преобразователь работает быстро и позволяет согласовывать линии в обе стороны, включая шину I²C.
Ниже представлен пример схемы на биполярном транзисторе обратной проводимости. Транзисторы можно использовать различные.
Схема — это дублируется в зависимости от того сколько вам ножек одной микросхемы нужно согласовать с другой
Для этих целей также кроме биполярных микросхем очень хорошо а можно сказать даже идеально подходят и mosfet.
Вот очередной пример такой схемы
В одном из моих проектов я подключал дисплей на контроллере ST7789, работающий от 3.3 В, к Arduino Nano на 5 В. Сначала я сделал соединение напрямую – результат: один из дисплеев вышел из строя.
После этого я собрал плату согласования уровней на старых советских транзисторах КТ315. Несмотря на возраст этих деталей, схема заработала отлично, и теперь дисплей работает стабильно.
Это хороший пример того, что согласование уровней – не формальность, а необходимость.
Никогда не соединяйте напрямую микросхемы, работающие на разных напряжениях.
Для односторонних медленных сигналов можно использовать резистивный делитель.
Для двусторонних и быстрых шин лучше ставить транзисторные согласователи или специализированные микросхемы.
Даже простая самодельная схема на старых транзисторах может спасти ваш модуль от поломки.
Наткнулся на интересный проект: микроконтроллер, который блокирует рекламу (локальный DNS-сервер) с веб-интерфейсом.
Стало любопытно самому потрогать и проверить работу данного устройства, поэтому за 300-400 рублей заказал плату ESP32 CP2102. Её доставили в пределах недели.
Однако при подробном изучении проекта было обнаружено, что код предназначен для контроллеров на базе ESP8266.
Я решил пойти по самому простому пути и с помощью Grok'a переписал код, который заработал. Также он изменил документацию согласно моему ТЗ.
Устройство действительно блокирует рекламу, если указать его IP-адрес в качестве DNS. Веб-интерфейс позволяет добавлять новые домены.
Бюджет составил 300-400 рублей, при желании устройство можно использовать в других проектах.
С полученными результатами можно ознакомиться по ссылке — блокировщик рекламы, переписанный под esp32.
Оригинальный проект под esp8266 — https://github.com/narzan513/bananablocker
Я не ожидал, что будет так увлекательно. Микроконтроллеры — это просто космос! Самый крутой вывод для меня — это то, что теперь не нужно быть супер-программистом, чтобы адаптировать чужой проект под свою плату. Нейросети справляются с такой рутиной на ура и буквально стирают барьеры между разными платформами вроде ESP8266 и ESP32.
Я теперь подсел и хочу ещё что-нибудь сделать. Если у вас есть идеи для крутых для проектов — добро пожаловать в комментарии! Что бы вы сделали на этой плате?
Продолжаю делать бомж-плюс систему мониторинга.
Возникли, тут значится, большие движухи по цеху С переездом и прочим. Но не об этом пост.
Все заняты в этой движухе. А есть у нас отдел отгрузки. Котрый все собирает, пересортировывает и распределяет в отгрузку. В их хозяйстве два огроменных холодильника и помешение комплектации. В общем везде нужен контроль температуры.
Контроль температур у меня есть, но хочется что бы все таки не дергали с вопросами: а сколько там сейчас, а когда можно выключить, что бы людей не поморозить, а когда включить что бы не потаяло все и не разморозить все к хренам и тд и тп.
Я задал вопрос "главарям" смен отгрузки и получил ответ, что их устроит если они сами будут видеть температуру. Тем более нужно вести журналы. А ходить целый день переписывать показания с градусника тоже колготно. Если они сами смогут смотреть тепрературу в онлайне, то не будут дергать меня и моих гвардейцев с этим вопросом. А будут просто приходить включите/выключите.
В общем я сжалился над этим отделением , да и над своими тоже, и сделал им маленький "монитор мониторинга температур" в их зоне ответственности.
Выглядит сие чудо вот так:
Устройство отображает минимум информаци:
- название объекта ( холодильника или помещения)
- состояние ( включено, выключено, оттайка)
- текущая температура
Большего им и не надо.
Данные забираем из системы homeassistsnt по wi-fi.
Устройство имеет всего один провод. В розетку. Таскай и ставь куда хочешь.
Народ обрадовался. Моя душенька довольна.
Немного видео работы устройства
Итак. Продолжаем рукоблудить свою систему мониторинга уровня бомж-плюс из того что найдем под ногами.
Герои нашего сегодняшнего выпуска холодильные контроллеры eli well
Вообще я в последнее время часто слышу вой что время восьмибиток прошло. Пора им на свалку. Они ни на что не годятся и все в этом духе.
Так вот. Это сделано на базе atmega 16a. Встречаются версии еще на 32а. Но уже не суть. Производятся эти штуки в больших количествах и много где стоят. И даже 10 битный АЦП не пугает ни производителя, ни тех кто их использует.
Это все лирика.
В общем. Шепнул мне один товарищ, что имеют эти контроллеры на борту два протокола. Какой то там televis. Якобы собственный протокол компании. Но также его можно переключить на modbus.
Сказать что я рад этому. Не сказать ничего. Если повезет можно не только читать, но и управлять контроллером.
С настройками разобрались, подключились и даже что-то происходит.
Теперь могу управлять холодильником прямо из home assistant.
Обрастаем функционалом. Что тоже не плохо. Теперь карточка камеры выглядит по другому
Теперь можем видеть что происходит. Вклбчена камера или выключена, работает компрессор или простаивает, включена ли отайка или все просто стоит.
Все стало подробнее. И удобнее.
Следующим этапом буду делать изолированные конвекторы в 485 интерфейс. И будем вязать все контроллеры в сеть.
Теперь в планах отдельный пульт для управления холодильниками. Но это чуть позже.
Кому нужны подробности - вэлком.
https://habr.com/ru/articles/914088/
Когда у тебя дома валяется Arduino, ESP8266 и пылится Raspberry Pi, долго держаться не получится. Я знал, что в какой-то момент скажу себе: «А не собрать ли умный дом своими руками?» — ну и, конечно, сказал 😅
Хотелось чего-то простого: чтобы включать свет 💡, проверять температуру 🌡️, перезапускать роутер 📡 (да, я устал дергать вилку вручную) — и всё это с телефона, в пару касаний. Telegram показался идеальной платформой: он у всех есть, работает быстро, и... ну, боты — это кайф 😎
📦 Из чего я собирал:
Arduino UNO — брал на себя датчики и реле
ESP8266 — делал Wi-Fi-связь между железом и сетью
Raspberry Pi 3B+ — крутил Telegram-бота на Python
aiogram — та самая библиотека, с которой работать — одно удовольствие ⚡
И, конечно, жменька проводов, паяльник и терпение 🧪
Запуск получился примерно такой: Raspberry принимал команды в Telegram — через aiogram, естественно. Там всё по уму: asyncio, FSM, роутеры, вся эта красота. Я сделал хэндлеры для команд вроде:
/light_on 💡 — включить свет в спальне
/temp 🌡️ — показать температуру на балконе
/restart_router 🔁 — отдельное реле, подключенное к роутеру
/photo 📸 — Pi присылает фотку с кухни через камеру
Когда команда прилетала — Pi швырял HTTP-запрос ESP-шке, та передавала команду Arduino, и магия случалась ✨. Да, это звучит как схема доставки пиццы с участием дрона, но оно работало!
🛠️ Сюрпризы были, как без них:
Однажды ESP зациклилась, и реле включалось/выключалось каждую секунду. Свет в ванной начал жить своей жизнью. Бот бодро слал мне:
💡 Свет включён
💡 Свет выключен
💡 Свет включён
💡 Свет выключен
Кот охренел и убежал за шкаф. Я — перешил прошивку ночью 🙃
Семья быстро привыкла:
👨🦱 Батя шлёт /heat_on, когда на даче холодно.
👧 Сестра тыкает в кнопки «✨ гирлянда» и «☁️ режим уюта».
👩🦰 Жена возмущается, когда бот отвечает дольше 2 секунд — «почему наш ИИ такой тормоз?»
Потом я добавил inline-кнопки, авторизацию по Telegram ID (да, после того, как забыл закрытый репозиторий с токеном — спасибо GitGuardian за уведомление в почту 😅), и бот стал реально домашним.
📸 Из фишек:
Фото с кухни 🧀 — присылает на команду
Уведомления в Telegram, если температура упала ниже 18°C ❄️
Перезагрузка интернета через /restart_router — кто поймёт, тот поймёт
Пуш-оповещения, если свет остался включён на ночь 🌙
Сейчас думаю переписать всё под Home Assistant, но честно? Бот стал привычной частью дома. Он не просто выполняет команды — он реагирует, напоминает, заботится. Псевдо-умный дом, сделанный из запчастей и Python-а — но свой, родной, как тёплый Arduino в ладони 😌
Если ты тоже делаешь или хочешь сделать Telegram-бота для управления домом — не бойся, просто начни. aiogram действительно топ, даже для начинающих. А если интересно — могу выложить схемы, код и пример docker-сборки на Raspberry 💻
📌 Поддержи плюсом, если понравилось. Или напиши в комментах, какую функцию добавить в бота: чайник, жалюзи, кормушку для кота — всё можно собрать, если не боишься слегка пахнуть паяльником 🧑🔧