Від Color Tuner до промислового комплексу: як ми створювали Hopeok Telemetry Hub для синхронного збору даних

💡 Усі статті, обговорення, новини про Python — в одному місці. Приєднуйтесь до Python спільноти!

При розробці та тестуванні силової електроніки, електромеханічних систем чи складних силових каскадів часто виникає класична проблема. Звичайні інструменти або не встигають фіксувати параметри, або «падають» від перевантаження, створюючи те саме нестерпне «вузьке горло», коли контролер губить пакети, а графічний інтерфейс на ПК зависає.

Щоб закрити цю потребу раз і назавжди, у межах Hopeok Code Studio було розроблено власний програмно-апаратний комплекс — Hopeok Telemetry Hub. У цій статті я розповім про те, як вирішувалася ця задача, яку архітектуру ми обрали і як еволюціонував наш інструмент.

(Підпис до фото: Загальний вигляд десктопного інтерфейсу системи у процесі логування параметрів)

Архітектурний виклик: чому стандартні рішення не справляються?

Коли ти працюєш з динамічними процесами — наприклад, вивчаєш поведінку електромеханічної системи, де критично важливо одночасно фіксувати напругу, струм, а також магнітні, електромагнітні та механічні параметри — поверхневих графіків недостатньо.

Завдання полягало в тому, щоб створити систему, здатну:

  1. Стабільно опитувати датчики на високій швидкості.
  2. Передавати потік без затримок і втрати пакетів.
  3. Зберігати інтерфейс програми плавним (Responsive UI) під час шаленого потоку даних.

Для цього була спроєктована двоконтурна архітектура.

Апаратний рівень: STM32 та DMA у фоні

На рівні заліза мікроконтроллер STM32 бере на себе всю важку роботу з опитування периферії.

  • Опитування датчиків (наприклад, моніторів живлення INA226, тензометрії чи тахометрів) побудоване на апаратних таймерах і системі переривань.
  • Видача масивів даних у ПК реалізована через DMA (Direct Memory Access). Це ключовий момент: потік йде через UART у фоновому режимі, повністю розвантажуючи процесор від рутинного пересилання байтів.

Базова опорна частота зчитування тут становить 1 кГц (1 раз на мілісекунду), проте за потреби архітектура дозволяє збільшувати її в десятки й сотні разів. Це критично важливо не для стабільного режиму, а для дослідження перехідних процесів у динаміці — адже саме там ховаються найцікавіші фізичні явища.

(Підпис до фото: Детальний мікроаналіз пікових навантажень та перехідних процесів)

Програмний рівень: Python, PyQt та багатопотоковість

На стороні комп’ютера працює десктопний додаток, який починав свій шлях під назвою Color Tuner, а згодом виріс у повноцінне ядро Hopeok Telemetry Hub.

  • Multithreading: Асинхронне ядро займається парсингом авторського протоколу зв’язку, тоді як графічний менеджер на PyQt відповідає виключно за рендеринг кривих. Це повністю виключає «фризи».
  • Синхронізація каналів: На графіках у реальному часі чітко розведено канали (наприклад, білий — напруга, жовтий — струм, зелений — розрахована потужність).
  • Автоматична архівація: Усі сесії випробувань автоматично структуруються та зберігаються у форматі CSV/Excel для подальшого глибокого математичного аналізу.

(Підпис до фото: Синхронний контроль напруги, струму та потужності з можливістю миттєвого збереження в таблиці)

Універсальність рішення для R&D

Хоча поштовхом до створення системи стала потреба в тестуванні силової електроніки, за своєю суттю цей аналізатор є базовою платформою.

Оскільки на виході ми маємо чітко оцифровані параметри, ядро системи можна адаптувати під будь-які інші комплекси:

  • Газодинамічні установки.
  • Гідродинамічні стенди.
  • Будь-які промислові процеси, де потрібен жорсткий контроль вхідних і вихідних величин.

Якщо у вас є технічне завдання на розробку кастомної системи збору даних, моніторингу чи управління під конкретне виробництво — архітектура легко масштабується.

Побачити, як цей комплекс виглядає в роботі та як виглядає детальний мікроаналіз перехідних процесів на графіках, можна у нашому відеоогляді: Hopeok Telemetry Hub: Архітектура та візуалізація даних в реальному часі

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вітаю товариство! 👋 Дякую редакції DOU за публікацію.
Для мене створення цієї архітектури стало переходом від звичайних «показометрів» до нормального промислового R&D інструменту, який не падає від потоку даних.
Цікаво дізнатися у колег по цеху: хто працює з силовою електронікою або просто зі швидкісним збором даних (від 1 кГц і вище) — які готові рішення чи власні «костилі» використовуєте ви, щоб не класти UI на лопатки?
Буду радий обговорити підходи та відповісти на питання щодо нашої реалізації на STM32 + Python

Підписатись на коментарі