IOT / Esp32 / FreeRTOS / Arduino / stm32
799 subscribers
747 photos
133 videos
29 files
199 links
Копилка материалов по работе с микроконтроллером esp32 / stm32
Download Telegram
Холодная вода до конца не дожимается. Полез смотреть что с ней не так.
Моторчик с редуктором.
Концевики как на кнопочках мышки.
This media is not supported in your browser
VIEW IN TELEGRAM
Крутит очень мощно. Рукой не остановить
This media is not supported in your browser
VIEW IN TELEGRAM
Готово!
Теперь 3 банки лития легко закрывают оба крана одновременно.

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

Кайфушки прям от того как подскакивает стрелочка с давлением при открытии крана 🤩
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
На пути к подсчёту импульсов от счётчиков воды я на прошлых выходных:
- сделал кнопочки управления автоматическими кранами
- починил один кран
- сделал esp32 плату с двумя кнопками, ads1115 + 4 термистора, разъем для счетчика.

На этих выходных:
- сделал начальный проект, со своим айдишником и связал его с mqtt шиной
- сделал работу с кнопочками: быстрое нажатие = ОТКЛ, длинное = ВКЛ и передача состояния по mqtt
- разобрался как работать с библиотекой для ads1115, научился правильно считать температуру.

Теперь вот сижу и калибрую NTC термисторы. В весёлой чашечке с квадратиками и звёздочками у меня вода со льдом и датчики.

Держать фокус на конечной цели похоже не мой конёк 🎯
🔥3
Я конечно же понятия не имею как калибровать NTC термисторы.

В формуле вычисления температуры присутствует "коэффициент B" наверно он служит как раз для этих целей.

Выставил его лениво в какие-то значения у которых температура близка к нулю:
V / T / raw
V[0]: 2443.199 mV, T= 0.31°C | 19545
V[1]: 2447.450 mV, T= 0.19°C | 19579
V[2]: 2361.697 mV, T= 0.30°C | 18893
V[3]: 2352.572 mV, T= 0.21°C | 18820


Можно и точнее выставить, но не думаю что это отражает реальность.

Сделал чтобы температура отправлялась в mqtt. Вывел графики в инфлюксе. Почему-то значения меньше единицы инфлюкс обозначает как XXXm. Может так и задумано, а может что-то пошло не по плану.

Сейчас уберу лёд из стаканчика и на графиках посмотрю как водичка постепенно теплеет до комнатной температуры.
👍2
~40 градусов
Вода из чайника.

На диапазоне 0 - 100 разброс получается в пару градусов.

Для моих бытовых наблюдений за водопроводом - вполне достаточно. Точнее разбираться лень.

Скриншётов с сырыми значениями и знания формулы достаточно чтобы свести 4 графика 1в1. Запомним это, для каких-нибудь будущих задач этим можно будет заняться.

ЗЫ: отредактировал сообещение - сначала разброс был в 5 градусов, но потом оно "устоялось" и разброс стал меньше.
🔥2👍1
Кстати я нифига не вдупляю в низкоуровневость Си, поэтому радостно ковыряюсь с esp32 у которой куча памяти и не нужно заботиться о всякой оптимизации.

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

Вот на картинке как раз весь мой код в файле main:
- запускаем 2 новые таски
- делаем колбек для mqtt для реагирования на входящие команды, чтобы отправлять значения сразу в таску используя её хендл.

Как сравнивать 2 строчки в Си? а хрен его знает! Это последнее о чём хочется думать. Благо в стандартной библиотеке С++ (надеюсь не путаюсь в терминологии) есть объект string у которого есть метод compare.

Ну и прекрасно! используем строки везде где нужно сравнение.
👍3🔥2
А вот так выглядит на данный момент таска для воды.

Осталось дописать бизнес-логику:
- повесить аппаратную считалку тиков на пин - вот какая крутая штука есть в esp32!
- проверять сколько там натикало
- брать значение из нотифая если вдруг оно прилетело по mqtt
- записывать в конфиг новое значение если вдруг оно поменялось

выглядит достаточно просто)
👍2🔥1
Больше тасок богу тасок! 😈😈

Для работы с конфигурацией тоже буду использовать отдельную таску.
Потому что для работы с тасками нужно использовать хендл с каким-то хитрым типом std::shared_ptr<nvs::NVSHandle> handle.
Я гарантированно получу проблему если буду пробовать делать эту переменную екстерном и пробовать передавать её между файлами. Потому что передача перменных из одного файла в другой в c/cpp устроено через жопу.

А так этот хендл живёт внутри таски и никому не мешает. Подписан на входящие ивенты, пишет и читает конфиг.

Кстати в примере на гитхабе идёт работа с restart_counter - переменная в конфиге которую увеличиваем на 1 при инициализации таски. Думаю хорошая идея передавать эту информацию в mqtt.
Сделал отправку данных о рестарте.
Положил в главную луп-таску, которая мигает светодиодом.

Преобразование uint32_t в string скорее всего выполнил самым странным образом из возможных, но зато работает. В комментариях принимаются правильные варианты такого преобразования =)

На этом видимо всё. До самой главной задачи девайса сегодня так и не дошёл)
👍1
Пришла посылка из Китая (с)

5 управляемых розеток/релюх:
- одна аналоговая
- две вайфай
- две вайфай с повер-монитором.


Одну я уже установил.
Полноценно с графиками управляется через тую. Подключается с базовым функционалом в дом с Алисой.
Клубника с балкона переехала в санузел и собирается жить по расписанию.
👍4
Тёмный скрин - дом с Алисой.
Светлые скрины - туя (которая для РФ называется smart life)