IOT / Esp32 / FreeRTOS / Arduino / stm32
800 subscribers
747 photos
133 videos
29 files
199 links
Копилка материалов по работе с микроконтроллером esp32 / stm32
Download Telegram
Уравнения выглядят просто, а вот решение их устрашает)

pow() в коде - это возведение в степень, а остальные символы должны быть знакомы.

Самому такое решение конечно вывести слишком долго и сложно.
Sagemath сделает это за вас - нужно просто все известные R и EC в формуле выше заменить на переменные.

Выглядит как реклама) продукт опенсорсный кстати =)
Решение в переменных для желающих повторить)

И ещё раз ссылка на онлайн:
https://sagecell.sagemath.org/
Закончим всё это двухдневным графиком с другой установки, которая будет жить долго.

График показывает что без температурной компенсации мы получаем термометр, а не ЕС/TDS метр.

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

Насколько конкретно влияет температура на EC - смотрите в следующих сериях.
IOT / Esp32 / FreeRTOS / Arduino / stm32
Но есть вещь которая смущает гораздо больше чем пара десятков милливольт выше. Иногда эта дельта улетает в космос и эти "улёты" вполне стабильны и статичны и точно зависят от каких-то вещей в прошивке. Одно радует что средние значения при этом не меняются.…
Перебрал весь проект, отрефакторил всё что смог, каждый кусочек каждой функции, и нашёл проблему!

Она конечно-же заключалась в отвалившемся источнике опорного, который я самостоятельно припаял на плату.
У меня же есть "осцилограф"! =)
Настало его время!

Что можно сказать по этой картинке? смена напряжения идёт на частоте чуть больше 8kHz.

Щуп подключен к делителю напряжения.

Смена циклов идёт так:
- выкл
- прямое включение
- обратное включение
Если воткнуть осцилограф в щуп - то выглядит так как будто существует какая-то ёмкость в момент "выкл".
This media is not supported in your browser
VIEW IN TELEGRAM
Периоды работы и неработы. Количество циклов и размер оверсемплинга выставлены в небольшое значение, потому что так проще тестировать.
Воткнул резистор на несколько сотен ом - сразу ситуация стала похожа на правду.
Можно ещё немного подшаманить, убрав лишние выключения, но похоже что 8.3kHz в данном случае это предел. Будет интересно сравнить это с результатами на stm32, когда приедет платка.

Возможно частоту можно увеличить, если писать напрямую в регистры и использовать DMA для ацп, но на данном этапе не вижу смысла в это упарываться.
Очень много одинаковых картинок с осцилографа)
Но стоит ещё написать про оверсемплинг, потому что это важно.

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

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

Итак я использую по умолчанию степень 8, и получаю 2^8=256 измерений.
Всё что находится внутри этих измерений обернуто мьютексом, т.е. фриртосу сказано что это очень важный процесс, и не смей влезать сюда со своими другими задачами.

Вводную часть рассказал, теперь посмотрим на картинку:
- ширина клеточки 5ms
- ширина расколбаса ~6 клеточек или 30ms
- внутри должно быть 256 измерений
- делим 30/256 = 0,117ms на кажый цикл

И, о боже! 🥳 это число совпадает с длинной цикла на предыдущих картинках.

Максимум при которой система ещё работает - это 2^8=2048 внутри мьютекса.
Вот теперь честно последняя:

2^8=2048 измерений внутри мьютекса
20ms между мьютексами - сюда могут иногда влезать другие таски.


Это максимальное заполнение которое можно получить. И наверно излишнее =)
Ну что я всё о каком-то EC да о ЕС =)
Есть же и другие радости тыкания в микроконтроллер.

Вобщем есть у меня комплектующие для одного проекта, лежат оочень давно, всё руки не доходят собрать. А тут такой повод - день независимости от Польши! ну грех не воспользоваться.
Начинается всё конечно с макетки, собираем "схему" =)

Накидываем быстренько проект в VsCode используя официальный плагин для работы с esp32 - https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension

Можно конечно и platformio воспользоваться, но потыкав более "родные" инструменты уже не хочется. Когда отладка для stm32 приедет - там наверно будут с platformio ковыряться, инструмент тож прекрасный.

Знач так, как понятно из картинки - будем мигать лампочками. И чем хорошо использовать в качестве фреймворка esp-IDF а не Arduino - так это обилие прекрасного кода, который легко подключается в систему.

Для проекта буду использовать эту либу:
https://github.com/CalinRadoni/ESP32DLEDController

Подключил и сразу завелось - как же это приятно =)
This media is not supported in your browser
VIEW IN TELEGRAM
Видос:)

диоды в реальности выглядят конечно сильно лучше чем на экране.
https://github.com/CalinRadoni/ESP32BoardManager

Классная штука, сохраню чтобы потом поизучать.
Что же ещё есть на бредборде кроме ws2812?

Фоторезистор и ИК-ресивер.
На ИК-ресивере перепутана полярность питания (VCC/GND) - но он не сгорел) Такие неприятности - самое сложное в отладке физических девайсов и попыток определения почему код не работает.

А дальше нужно просто получать сигналы с любого пункта, и кто-же в этом нам поможет? Официальная дока от Експрессива) они местами прям удивляют подходом, молодцы!

Ctrl+C → Ctrl+V и я ощущаю себя великим программистом оседлавшим irDA.

Теперь вся необходимая периферия проверена и можно распаивать на макетке.
Девайс спаян, всё работет.

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