Forwarded from IOT / Esp32 / FreeRTOS / Arduino / stm32
2) Самый грустный баг из тех которые уже известны - это я неправильно использовал опорные источники напряжения) в итоге их приходится сдувать. Купил новые - буду пробовать использовать.
Ну шож. Я взгрустнул от неправильной аналоговой части платы.
А заказывать новую версию платы за 10к чтобы протестить аналоговую часть - жаба душит.
Пообщался с умными людьми и меня надоумили сделать под эту задачу отдельный модуль!) и на нём всё отладить.
Плюсы:
- сильно уменьшается стоимость итераций (получится 2k+ за итерацию, т.е получаем примерно 3 итерации модуля по цене 1 полной итерации)
- проще отделять программирование/конфигурирование бизнес-логики от программирования/конфигурирования устройства измерения. Ну те настройки mqtt и параметры измерения EC - не должны находиться в одной функции внутри кода, а в данном случае они точно будут разделены by design =)
- Проще делегировать задачи с железом - в том числе (как мы выяснили) "аналоговую часть". Не нужно будет объяснять зачем нужны цветомузыка, кнопочки, енкодер и зарядка для батарейки.
- EC/PH отдельными модулями - проще делегировать задачи и удешевлять и разсинхронизировать итерации с тестированием.
- потом можно будет из этих кусочков собрать франкенштейна на отдельной плате если покажется что это логичнее.
А заказывать новую версию платы за 10к чтобы протестить аналоговую часть - жаба душит.
Пообщался с умными людьми и меня надоумили сделать под эту задачу отдельный модуль!) и на нём всё отладить.
Плюсы:
- сильно уменьшается стоимость итераций (получится 2k+ за итерацию, т.е получаем примерно 3 итерации модуля по цене 1 полной итерации)
- проще отделять программирование/конфигурирование бизнес-логики от программирования/конфигурирования устройства измерения. Ну те настройки mqtt и параметры измерения EC - не должны находиться в одной функции внутри кода, а в данном случае они точно будут разделены by design =)
- Проще делегировать задачи с железом - в том числе (как мы выяснили) "аналоговую часть". Не нужно будет объяснять зачем нужны цветомузыка, кнопочки, енкодер и зарядка для батарейки.
- EC/PH отдельными модулями - проще делегировать задачи и удешевлять и разсинхронизировать итерации с тестированием.
- потом можно будет из этих кусочков собрать франкенштейна на отдельной плате если покажется что это логичнее.
Опишем требования к модулю:
- выполнять только 1 маленькую задачу
- работать по UART или i2c-slave
- конфигурироваться
Какой-же камень под это подойдёт? Любой самый дешёвый и доступный.
Ну конечно-же STM32! 🥸
Отличным решением будет stm32G031 - на больших партиях цена $0.5, он есть на lscs по цене <$1 при заказе от 10 штук.
Камень прикольный, надо погонять =) Купим для этих целей отладочную плату Nucleo и приступим к самому прекрасному процессу - РАСПАКОВКЕ! уиии! новые неведомые железячки, как это прекрасно!.
- выполнять только 1 маленькую задачу
- работать по UART или i2c-slave
- конфигурироваться
Какой-же камень под это подойдёт? Любой самый дешёвый и доступный.
Ну конечно-же STM32! 🥸
Отличным решением будет stm32G031 - на больших партиях цена $0.5, он есть на lscs по цене <$1 при заказе от 10 штук.
Камень прикольный, надо погонять =) Купим для этих целей отладочную плату Nucleo и приступим к самому прекрасному процессу - РАСПАКОВКЕ! уиии! новые неведомые железячки, как это прекрасно!.
С одной стороны платы пациент stm32G031,
С нижней стороны ST-Link на F103CBT6
Взял за 1200 рублей в https://www.terraelectronica.ru/product/3468813
А в на картинке цена на lcsc для истории
С нижней стороны ST-Link на F103CBT6
Взял за 1200 рублей в https://www.terraelectronica.ru/product/3468813
А в на картинке цена на lcsc для истории
Надо потестить "аналоговую часть" схемы на stm32 как отдельный модуль.
Ну собирать на макетке - это не наш метод =) сделаем для этого плату для bluePIll. Для начала откроем CubeMx и зададим важные контакты (i2c, Uart, ADC), ну и все остальные. Потом конечно при разводке всё поперетыкаем, но начало положено.
Получается как-то так.
Ну собирать на макетке - это не наш метод =) сделаем для этого плату для bluePIll. Для начала откроем CubeMx и зададим важные контакты (i2c, Uart, ADC), ну и все остальные. Потом конечно при разводке всё поперетыкаем, но начало положено.
Получается как-то так.
Вернёмся пока к нашим баранам на esp32 и аналоговой части. Впаял источник опорного как положено (хотя скорее "как мне кажется правильно"). Сижу меряю напряжение на выходе, получаю вот такой график.
хм. можно ли это считать успехом? 🤔
Или напряжение можно получить точнее? По крайней мере радует что заказанный модуль с stm32 разведён скорее всего правильно.
хм. можно ли это считать успехом? 🤔
Или напряжение можно получить точнее? По крайней мере радует что заказанный модуль с stm32 разведён скорее всего правильно.
Первое что можно сделать с этими измерениями - это oversampling.
По сути мы делаем измерения много раз, а потом делим на количество измерений.
Для него есть очень элегантный кусочек кода, который выполняет этот функционал без использования деления.
Хз зачем мне это, просто для души 🌟
Идея такая: если мы сделаем количество измерений кратно степени двойки, то можно вместо деления использовать битовый сдвиг. Код в приложенной картинке (обоже, как же бесят люди которые выкладывают код картинками 😂)
По сути мы делаем измерения много раз, а потом делим на количество измерений.
Для него есть очень элегантный кусочек кода, который выполняет этот функционал без использования деления.
Хз зачем мне это, просто для души 🌟
Идея такая: если мы сделаем количество измерений кратно степени двойки, то можно вместо деления использовать битовый сдвиг. Код в приложенной картинке (обоже, как же бесят люди которые выкладывают код картинками 😂)
IOT / Esp32 / FreeRTOS / Arduino / stm32
Вернёмся пока к нашим баранам на esp32 и аналоговой части. Впаял источник опорного как положено (хотя скорее "как мне кажется правильно"). Сижу меряю напряжение на выходе, получаю вот такой график. хм. можно ли это считать успехом? 🤔 Или напряжение можно…
Итоговый график тех-же самых измерений с оверсемплингом в 256 измерений.