воскресенье, 16 ноября 2025 г.

Заново открываю для себя STM32

Так вышло что микроконтроллеры STM32 я обошёл стороной и в основном использовал ATMEGA8/ATMEGA328 и ESP8266. Заказывал на пробу платы Blue pill с STM32F103C8T6, помигал светодиодом и отложил в ящик до лучших времён. Тогда интерес был в районе IoT и ESP8266 давал больше возможностей в сравнении с ATMEGA и STM32 у которого не было встроенного WiFi.

Недавно собирал частотомер на ESP32-S3 и мне не хватало 32-битного таймера чтобы считать импульсы без переполнения. Полистал спецификацию на популярные сейчас Black pill и заказал две платы с STM32F411CEU6 на борту чтобы сделать ещё один подход к STM32.

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

Для поддержки этой платы потребуется Arduino IDE 2.х (я установил актуальную версию 2.3.6) в которой нужно добавить ссылку https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/refs/heads/main/package_stmicroelectronics_index.json в поле "Дополнительные ссылки для Менеджера плат" в меню Файл / Параметры.

пятница, 14 ноября 2025 г.

Ingress-nginx уходит на покой

На днях в блоге Kubernetes появилась запись Ingress NGINX Retirement: What You Need to Know в которой сообщается что поддержка Ingress Nginx будет осуществляться до марта 2026 и далее не стоит ожидать каких-либо новых выпусков или исправлений.

To prioritize the safety and security of the ecosystem, Kubernetes SIG Network and the Security Response Committee are announcing the upcoming retirement of Ingress NGINX. Best-effort maintenance will continue until March 2026. Afterward, there will be no further releases, no bugfixes, and no updates to resolve any security vulnerabilities that may be discovered. Existing deployments of Ingress NGINX will continue to function and installation artifacts will remain available.

Другими словами, самое время начинать двигаться дальше и искать альтернативу. Жаль конечно, на мой взгляд это был один из самых популярных ингресс контроллеров, но отсутствие ресурсов на поддержку и "излишняя гибкость" сделали своё дело.

вторник, 11 ноября 2025 г.

Сломалась сборка образов в Gitlab

 Сегодня сборка Docker образов сломалась на docker-machine ранерах.

*** WARNING: Service runner-xxxxxxxx-project-xxxxx-concurrent-0-xxxxxxxxxxxxxx-docker-0 probably didn't start properly.
Health check error:
service "runner-xxxxxxxx-project-xxxxx-concurrent-0-xxxxxxxxxxxxxx-docker-0-wait-for-service" health check: exit code 1
Health check container logs:
2025-11-11T14:15:01.392368160Z FATAL: No HOST or PORT found                      
Service container logs:
2025-11-11T14:15:01.155180886Z cat: can't open '/proc/net/ip6_tables_names': No such file or directory
2025-11-11T14:15:01.156146175Z cat: can't open '/proc/net/arp_tables_names': No such file or directory
2025-11-11T14:15:01.159149102Z iptables v1.8.11 (nf_tables)
2025-11-11T14:15:01.198255845Z time="2025-11-11T14:15:01.197837859Z" level=info msg="Starting up"
2025-11-11T14:15:01.201660747Z time="2025-11-11T14:15:01.201577762Z" level=warning msg="Binding to IP address without --tlsverify is insecure and gives root access on this machine to everyone who has access to your network." host="tcp://0.0.0.0:2375"
2025-11-11T14:15:01.201682858Z time="2025-11-11T14:15:01.201643206Z" level=warning msg="Binding to an IP address, even on localhost, can also give access to scripts run in a browser. Be safe out there!" host="tcp://0.0.0.0:2375"
2025-11-11T14:15:01.201770114Z time="2025-11-11T14:15:01.201692789Z" level=warning msg="[DEPRECATION NOTICE] In future versions this will be a hard failure preventing the daemon from starting! Learn more at: https://docs.docker.com/go/api-security/" host="tcp://0.0.0.0:2375"

Вызовы docker завершались ошибкой

ERROR: Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?

Связано это с выходом Docker 29.0.0, который перестал быть совместимым с docker-machine (подробности есть в gitlab-org/gitlab-runner #39100 и cattle-ops/terraform-aws-gitlab-runner #1324).

Для исправления достаточно откатиться на предыдущую версию Docker добавив engine-install-url=https://releases.rancher.com/install-docker/28.3.3.sh в MachineOptions

Если используется модуль cattle-ops/terraform-aws-gitlab-runner, то это делается через добавление параметра

  runner_worker_docker_machine_ec2_options = [
    "engine-install-url=https://releases.rancher.com/install-docker/28.3.3.sh",
  ]

воскресенье, 9 ноября 2025 г.

Обновление генератора сигналов UTG932E до UTG962E

Перед покупкой генератора сигналов UTG932E проштудировал форумы и выяснил что нет смысла переплачивать за версию на 60 МГц, т.к. с точки зрения железа они ничем не отличаются. Получить старшую модель можно редактированием одного байта в микросхеме EEPROM.

Пока не было необходимости в частотах выше 30 МГц, то не было и смысла лезть внутрь генератора. Когда игрался с самодельным частотомером и входным формирователем, то захотелось проверить их на более высоких частотах чем 30 МГц.

Сегодня дошли руки до этой переделки и первым делом съездил в магазин электроники за программатором на базе CH341A.

В описании товара было указано "CH341A-MOD" и в нём реализовано питание микросхемы CH341A от 3,3 В стабилизатора а также 9 ножка (V3) подключена к 3,3В. В этом случае прошиваемые микросхемы питаются от 3,3В и уровень сигнала соответствующий. Без каких либо переделок этим программатором можно прошивать микросхемы EEPROM/FLASH 24-й (I2C) и 25-й (SPI) серий на 5В и 3,3В. Если понадобится прошить микросхему на 1,8 В, то потребуется отдельный переходник.

пятница, 7 ноября 2025 г.

Услышать мерцание света

Стараюсь покупать лампочки с высоким цветовым индексом и отсутствием пульсаций, которые могут привести к усталости во время чтения. Рейтинг ламп смотрел на сайте проекта LampTest, но не всегда получалось найти информацию о лампах которые продаются в данный момент.

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

Этот проект начался после просмотра видео ИНДИКАТОР МЕРЦАНИЯ - в каждую избу! от Дмитрия Коржевского. Вместо использования bluetooth колонки я собрал свой вариант из готовых модулей:

  • Фотоэлемент 70х70 мм на 5,5 В 
  • PAM8403 в качестве усилителя
  • Динамик 6 Ом 1,5 Вт от старой колонки
  • MT3608 повышает напряжение литиевого аккумулятора до 5 В
  • TP4056 для зарядки и защиты литиевого аккумулятора
  • Литиевый аккумулятор стандарта 18650
  • Выключатель 

Первый вариант схемы не заработал из-за дохлого MT3608 (он был уже паянный, но не помню чтобы я его палил). Со второго раза всё заработало на столе

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

воскресенье, 2 ноября 2025 г.

Отрицательный Vref для OXCO генератора OSC5A2B02

 Со временем OCXO (Oven Controlled Crystal Oscillator) генераторы стареют и перестают соответствовать изначальной спецификации. Эта одна из причин почему пожилое измерительное оборудование начинает привирать. Так и произошло с моим OCXO генератором CTI OSC5A2B02 на 10 МГц который сейчас выдаёт 10000025 Гц при напряжении подстройки частоты Vref равным 0 В и 10000056 Гц при Vref равным 4 В. Т.е. его уже не получится штатно подстроить до ровных 10 МГц, т.к. диапазон регулировки по документации 2 В ± 2 В (от 0 В до 4 В). 

А что если попробовать подать на Vref отрицательное напряжение? Не зная как выглядит схема таких генераторов можно ему что-то спалить. Поискал схему подобных генераторов в сети и нашёл срисованную схему от CTS 1960017 10MHz OCXO.

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

суббота, 1 ноября 2025 г.

Измерение частоты кварца ардуинки

Я когда-то пробовал считать время в микроконтроллере atmega8, но столкнулся с погрешностью из-за неточности частоты кварцевого резонатора. Тогда у меня была возможность измерить частоту кварца с точностью до килогерцев используя тестер для кварцевых резонаторов или с помощью осциллографа.

Например частоту кварца платы Freeduino 2009 можно измерить подключившись щупом осциллографа к пину XTAL2 в режиме 10Х (если попытаться подключиться щупом без делителя, то программа сразу зависнет).

Осциллограф показывает частоту 15,9996 МГц и период 63 нс. Я только сейчас заметил что в осциллографе можно включить дополнительное измерение частоты, а не довольствоваться значением 15,9 МГц внизу экрана. Нужно будет полистать его 250+ страниц документации повнимательнее.