IOT / Esp32 / FreeRTOS / Arduino / stm32
799 subscribers
747 photos
133 videos
29 files
199 links
Копилка материалов по работе с микроконтроллером esp32 / stm32
Download Telegram
Давно небыло вестей, потому что занимаюсь веб-частью, а это не в тематике канала.

Девайс который мне сделали "по взрослому" с того времени лежит на столе и работает, но показания колбасит.
Скорее всего это из-за высокой частоты смены ногл - 50kHz, или из-за недостаточного количества выборок. Частоту нможно настроить даже через UART, а количество выборок поправить в коде. Но копаться с этим пока не в приоритете, переключился на другие задачи.
IOT / Esp32 / FreeRTOS / Arduino / stm32
Недостающий кусок ленты 3м для потолка и мощный блок на 5v и 10 китайских ампер. До этого ленту только на 50 пунктов из 255 зажигал, а хочу по полной
буду использовать в своих проектах (с)

Диоды закрепил на потолке. 13 метров адресной ленты которая прекрасно светилась. Но в какой-то момент управляющий провод от esp-хи лежащей на столе перевихался, там получился оборванный контакт который передал на линию странную команду от которой всё заколбасило и лента потухла 😭

Теперь на линии короткое замыкание. Без демонтажа её можно разделить на 3 части (5+5+3) и относительно локализовать проблему. Но возиться с этим особо желания нет. Сначала закажу ещё 5 метров адресной ленты, чтобы "ремонт" выполнить за один подход.
уже 2 недели как к нам вернулись графики. Хотелось бы сравнить это с предыдущими графиками, но хер) этих данных у меня нет - только в скринах канала.

Оказываетя я у бакета настроил хранение данных 30 дней и отключить это не получается. Надо видимо добавить ещё один бакет в котором данные будут храниться вечно и переделать программу которая перекладывает данные из mqtt в influx.

За 2 недели мы видим следующее: 3 дня данные стабилизировались с 1690 до 1670. А потом поменялись с 1672 до 1659 - т.е. колебания за полторы недели меньше 15mV.
Поскольку сегодня у нас день проблем, то ловите ещё одну =)

9 часов без данных, потому что интернет вечера подтупливал и я ребутнул роутер. А девайс не переподключился к mqtt =) Т.е. девайс не корректно отрабатывает событие "пропал вифи"

А ещё сервер mqtt работет конечно с TLS, и подписан он с помощью сертификата от letsEncrypt у которого время жизни 3 месяца. За 2 недели до конца срока сертификат перевыпускается и сервер нужно перезапустить чтобы он подхватил новый сертификат. После этого конечно-же данные перестают поступать. Т.е. девайс не корректно отрабатывает событие "mqtt disconnect"
Ну и на последок.
В тестовом девайсе при "постоянной" температуре мы меняем падение напряжения. И это вобщем-то ок, но температуру мы меряем в коробке а не в водичке.

А термометр который выведен в графики - это просто херь, потому что там не подходящий делитель напряжения: для термистора 100k нужен и резистор на 100, а там какой-то другой. Вобщем стоит впаять нормальный =) этот кусок тоже под переделку.
This media is not supported in your browser
VIEW IN TELEGRAM
Первым делом поправим баг в схеме и отправим девайс снова в работу.

Причину нашёл достаточно быстро. С помощью джамперов можно переключить 10/100kΩ. Чтобы гребенку каждый раз не паять - там стоит нулевое сопротивление которое заменяет джампер на 10. Его нужно выпаять, но вместо его я выпаял подтягивающий резистор.

Такую мелочь руками впаивать сложно, по-этому просто перекинул всё на другую отладку где всё сделал правильно.
Протестировать отвалы от mqtt проще всего. Нужно сделать
crontab -e
*/5 * * * * /usr/bin/docker restart rabbitmq
и получим перезагрузку брокера каждые 5 минут.

Логи от esp говорят что всё ок в этом месте. Да и с графиками всё ок спустя час работы.
Если питать esp-ху от внешнего стабилизатора,то слышится шум на частоте 4kHz.
Видимо какой-то стабилизатор на плате работает не в режиме.

С прошлой платой у меня ещё была распаяна микруха заряда батареи, и я решил откусить ей ноги.
Думал просто разобраться с ногами будет проще чем убирать её целиком, потому-что микросхема припаивается ещё в середине корпуса.

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

UPD: подсказывают что возможно всё утекло в дырочки, т.к. в слоях вроде все правильно. Дырочки стоит делать минимально-возможными.
This media is not supported in your browser
VIEW IN TELEGRAM
А ещё на последней ревизии платы с esp32 очень большой шум при питании от кренки на плате.
Микруху заряда я выпилил ещё в предыдущем посте, но проблема не решилась. До этого была сдоовая кренка, а теперь маленькая. А ещё внизу есть операционник и ацп по i2c, до которых я ещё так и не добрался в процессе тестирования.

Такого шума достаточно чтобы плата не могла подключится к wifi+mqtt (после этого события гаснет синий диод на плате)
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Предыдущая версия с при таком питании не шумела совсем.

Слава китайскому "осцилографу" за 2 тыщи рублей, благодаря которому я это могу найти осознать. Так бы считал что проблема например в наличии/отсутсвии uart в который процессор срёт отладочной информацией, и там что-нибудь переполняется и поэтому перезагрузка.

Но теперь мы точно знаем что есть проблема с питанием.
This media is not supported in your browser
VIEW IN TELEGRAM
На последней минимальной плате под блюпил проблема тоже есть.
Значит проблема в кренке на 3.3V

https://lcsc.com/product-detail/Linear-Voltage-Regulators-LDO_Torex-Semicon-XC6206P332MR_C5446.html
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл причину. Дисплей нужно запитывать отдельно от 5v, а не от линии питания контроллера 😂
Приколы закрытого кода esp иногда очень сильно удивляют.

Есть у меня место в коде которое мигает диодом по внешней команде.
if (value.compare("ON") == 0) {
gpio_set_level(PIN_LED1, isOn);
} else {
gpio_set_level(PIN_LED1, !isOn);
}
В другой таске я хочу этот-же диод переключить кнопочкой. Вроде бы что могло бы быть проще. Для этого всего-то нужно узнать его текущее состояние. Даже функция такая есть: gpio_get_level
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/gpio.html#_CPPv414gpio_get_level10gpio_num_t

Как здорово! не нужно ковыряться в регистрах как в случае с stm32 (подумал я по неопытности). Ковыряюсь с ней и так и сяк - не работает. А потом заметил там шикарный варнинг, мол только для инпута:
If the pad is not configured for input (or input and output) the returned value is always 0.

А знаете как узнать текущее состояние пина в таком случае когда по мнению esp? Наверно не знаете) и я не знаю. Видимо нужно делать глобальную переменную и там хранить эту информацию. Больше глобальных переменных богу глобальных переменных.
Приехала новая игрушка DSO2512G.
С двумя каналами.

Теперь можно смотреть на ноги stm32 работающие в комплиментаром режиме) И частоты теперь доступны сильно выше: 2MHz (или 10MHz если форма волны не интересна) вместо 200kHz\
Приехала посылочка от китайцев.
Нравятся мне эти маленькие 7-сегментники. Взял красные и синие.

Буду использовать в своём проекте (с)
Вот такие они маленькие.
Ноги как раз под 2.54 мм
Видимо в новом году и каждый день по подарку. В постамат приехали OLED дисплеи. Дорогущие) по косарю за штуку. В 30 раз дороже чем 7-сегментник ;)
Зато красивее!)
Пока выходные, хочу что-нибудь нарисовать и заказать.

Нужно протестить несколько моментов:
1) Сделать плату под корпус.

Печатную плату развожу в EasyEDA под девизом "слабоумие и отвага". Я конечно установил KiCad и даже обновил его на 6ю версию, но разбираться с ним лень. Вроде как даже без нормальных инструментов работы с размерами задачу можно решить.

Сделал скриншот корпуса, вставил его слой шелкографии (редактор изговнял картинку как смог), внутри нарисовал платку. ̶И̶ ̶т̶а̶к̶ ̶с̶о̶й̶д̶ё̶т̶ Мне нравится) надеюсь влезет в коробочку.

Потом сделаю картинку "ожидание-реальность".
2) Следующая задача, которую интересно попробовать в железе, уже должна стать видна на плате и понятна по вчерашнему посту:

Разместить на плате 7-сегментные индикаторы и управлять ими с помощью TM1637. У него как раз выводов на 6 цифр хватает.

Итоговая цена в устройстве:
$0.16 - за TM1637 (12,2р)
635р - за 30 красных (21,2р/шт)
863р - за 30 синих (28,8р/шт)
итого 62,2 р за вывод данных + пайка сегментников.
3) Ещё очень охота попробовать новые модули от esp, которые идут на замену ESP8266. Называются ESP32-C3 и содежрат 1 RISC­V ядро. Бывают в разных форматмх SoCs, я выбрал MINI со встроенной антенной.

Думаю вынести на него всю логику работы с сетью от поддержания WiFi до раскладывания данных по правильным MQTT топикам и отправка комманд для конфигурировании микроконтроллера.

Для обвязки практически ничего не нужно - пару кондёров оп питанию и кнопочка для ресета и можно работать.

В даташите на 24 странице как раз вся нужная переферия, только часовой кварц на 32kHz решил не ставить.

Ссылочка на даташит
https://www.espressif.com/sites/default/files/documentation/esp32-c3-mini-1_datasheet_en.pdf