Вернёмся пока к нашим баранам на esp32 и аналоговой части. Впаял источник опорного как положено (хотя скорее "как мне кажется правильно"). Сижу меряю напряжение на выходе, получаю вот такой график.
хм. можно ли это считать успехом? 🤔
Или напряжение можно получить точнее? По крайней мере радует что заказанный модуль с stm32 разведён скорее всего правильно.
хм. можно ли это считать успехом? 🤔
Или напряжение можно получить точнее? По крайней мере радует что заказанный модуль с stm32 разведён скорее всего правильно.
Первое что можно сделать с этими измерениями - это oversampling.
По сути мы делаем измерения много раз, а потом делим на количество измерений.
Для него есть очень элегантный кусочек кода, который выполняет этот функционал без использования деления.
Хз зачем мне это, просто для души 🌟
Идея такая: если мы сделаем количество измерений кратно степени двойки, то можно вместо деления использовать битовый сдвиг. Код в приложенной картинке (обоже, как же бесят люди которые выкладывают код картинками 😂)
По сути мы делаем измерения много раз, а потом делим на количество измерений.
Для него есть очень элегантный кусочек кода, который выполняет этот функционал без использования деления.
Хз зачем мне это, просто для души 🌟
Идея такая: если мы сделаем количество измерений кратно степени двойки, то можно вместо деления использовать битовый сдвиг. Код в приложенной картинке (обоже, как же бесят люди которые выкладывают код картинками 😂)
IOT / Esp32 / FreeRTOS / Arduino / stm32
Вернёмся пока к нашим баранам на esp32 и аналоговой части. Впаял источник опорного как положено (хотя скорее "как мне кажется правильно"). Сижу меряю напряжение на выходе, получаю вот такой график. хм. можно ли это считать успехом? 🤔 Или напряжение можно…
Итоговый график тех-же самых измерений с оверсемплингом в 256 измерений.
Всё это затевается ради одной простой цели: получить одинаковое напряжение питания на делителях напряжения у NTC-термистора и EC-щупа при разном питании платы.
Сама плата питается от кренок на 3.3V, но оказывается что эти 3.3 слишком разные в зависимости от модуля. =) Настолько разные что не подходит для задачи.
Для того чтобы потестить как это будет работать - первым делом начнём передавать эту информацию в mqtt шину. Добавляем библиотечку в проект, компилим, и ...
Хьюстон, у нас проблемы!
27kb не влезает 🙈
У меня 4Mb флешка, а не влезает в 1Mb о.О. Ну что-же придётся лезть и разбираться как настроить партишены.
Сама плата питается от кренок на 3.3V, но оказывается что эти 3.3 слишком разные в зависимости от модуля. =) Настолько разные что не подходит для задачи.
Для того чтобы потестить как это будет работать - первым делом начнём передавать эту информацию в mqtt шину. Добавляем библиотечку в проект, компилим, и ...
Хьюстон, у нас проблемы!
27kb не влезает 🙈
У меня 4Mb флешка, а не влезает в 1Mb о.О. Ну что-же придётся лезть и разбираться как настроить партишены.
А ларчик просто открывался 🥳
Оказывается при работе через официальный плагин (а не через platformio) - всё можно настроить через гуй.
Это сильно проще чем тыкаться в консольный menuconfig:
- жмякаем настройки
- ищем настройку партишенов
- выбираем "свой csv"
- создаём файлик и указываем там нужные размеры
Оказывается при работе через официальный плагин (а не через platformio) - всё можно настроить через гуй.
Это сильно проще чем тыкаться в консольный menuconfig:
- жмякаем настройки
- ищем настройку партишенов
- выбираем "свой csv"
- создаём файлик и указываем там нужные размеры
Чтобы проще заниматься отладкой - припаяем к плате дисплей. Для этих целей у платки выведен специальный разъём.
Для дисплея на плате tm1637 есть хорошая библиотечка
https://github.com/petrows/esp-32-tm1637
На этом-же выведенном разьеме можно и i2c дисплей завести, но видимо в следующий раз) пока хватит и такого.
Для дисплея на плате tm1637 есть хорошая библиотечка
https://github.com/petrows/esp-32-tm1637
На этом-же выведенном разьеме можно и i2c дисплей завести, но видимо в следующий раз) пока хватит и такого.
This media is not supported in your browser
VIEW IN TELEGRAM
ух-ты! сразу работет
А вот подоспели и приколы молодости платформы. Их обещают пофиксить, но непонятно когда. Тикет закрыт.
Оказывается в некоторых случаях если во время работы с Wi-Fi читать ADC, то еспха может улететь в ребут.
Что она иногда радостно делает.
Подробнее:
https://github.com/espressif/esp-idf/issues/6682
Оказывается в некоторых случаях если во время работы с Wi-Fi читать ADC, то еспха может улететь в ребут.
Что она иногда радостно делает.
Подробнее:
https://github.com/espressif/esp-idf/issues/6682
This media is not supported in your browser
VIEW IN TELEGRAM
Есть и подвижки:
1) После перезагрузки на индикаторе крутится красота
2) Перешёл к измерениям EC раствора: подключил щуп и смотрю на получаемые милливольты в консоли
- надеялся что сумма прямого и обратного измерения будет равна референсному значению, но получаю недоздачу 35-40mV
3) Внутри задачи во фриртос стали обмениваться данными с помощью
- в задачу "экран" отправляется инфа он референсном значении
- в задачу "экран" иногда отправляется информация счетчика секунд чтобы понимать что система ребутнулась
- задача измерения температуры работает раз в 10 секунд и оповещает о температуре задачу измерения EC
4) Начал работу над конфигурацией устройства
1) После перезагрузки на индикаторе крутится красота
2) Перешёл к измерениям EC раствора: подключил щуп и смотрю на получаемые милливольты в консоли
- надеялся что сумма прямого и обратного измерения будет равна референсному значению, но получаю недоздачу 35-40mV
3) Внутри задачи во фриртос стали обмениваться данными с помощью
xTaskNotify
:- в задачу "экран" отправляется инфа он референсном значении
- в задачу "экран" иногда отправляется информация счетчика секунд чтобы понимать что система ребутнулась
- задача измерения температуры работает раз в 10 секунд и оповещает о температуре задачу измерения EC
4) Начал работу над конфигурацией устройства
IOT / Esp32 / FreeRTOS / Arduino / stm32
2) Самый грустный баг из тех которые уже известны - это я неправильно использовал опорные источники напряжения) в итоге их приходится сдувать. Купил новые - буду пробовать использовать.
3) Складывается ощущение что этот заказ плат я делал в пьяном угаре 🙈 В делитель напряжения вместо 1kΩ заказал установку резиторов 4.7kΩ.
Схема подразумевает использование резисторов делителя напряжения в 1kΩ и 500Ω - нужный резистор можно выбрав джампером на перемычке. Но перемычку же нужно каждый раз впаивать, а я для этого слишком ленив. Поэтому на схеме есть ещё резистор с нулевым сопротивлением 0Ω который выбирает по умолчанию 1000 омный вариант. Который у меня ага 4700 омный =)
Вообще в схему можно впаять перемычку, сдуть нулевой резистор, и использовать уже распаяный делитель с 500Ω. Но паять лень, поэтому пока выдалась такая возможность - потестируем работу в таком режиме.
Представлю что основная цель - измерить чистоту воды после фильтра обратного осмоса. А вдруг мне мембрану уже пора менять
Схема подразумевает использование резисторов делителя напряжения в 1kΩ и 500Ω - нужный резистор можно выбрав джампером на перемычке. Но перемычку же нужно каждый раз впаивать, а я для этого слишком ленив. Поэтому на схеме есть ещё резистор с нулевым сопротивлением 0Ω который выбирает по умолчанию 1000 омный вариант. Который у меня ага 4700 омный =)
Вообще в схему можно впаять перемычку, сдуть нулевой резистор, и использовать уже распаяный делитель с 500Ω. Но паять лень, поэтому пока выдалась такая возможность - потестируем работу в таком режиме.
Представлю что основная цель - измерить чистоту воды после фильтра обратного осмоса. А вдруг мне мембрану уже пора менять
Пробуем померять осмос:
получается 1830mV.
- Напряжение у нас 2513mV (если верить АЦП esp-хи)
- Сопротивление резистора 4649Ω (со слов китайского мультиметра)
- Достаём из-за пазухи законо ома, и получаем сопротивление фильтрованной водички 12 456 Ω
Запомним это число) У меня как раз уже куплена новая мембрана, после смены фильров перепроверим.
получается 1830mV.
- Напряжение у нас 2513mV (если верить АЦП esp-хи)
- Сопротивление резистора 4649Ω (со слов китайского мультиметра)
- Достаём из-за пазухи законо ома, и получаем сопротивление фильтрованной водички 12 456 Ω
Запомним это число) У меня как раз уже куплена новая мембрана, после смены фильров перепроверим.
Просто холодная и просто горячая вода из под крана получают по
Проверим это позже, сравняв их температуры.
882mV - 2514Ω холВ первую очередь разница из-за темпертаруры, но возможно они и загрязнены по разному. Бытует мнение что грязная вода лучше взаимодействует со стенками водопроводной системы и с бОльшей радостью несёт всякое в себе.
718mV - 1860Ω гор
Проверим это позже, сравняв их температуры.