Skip to content

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INA237 Controller

GUI-приложение для управления мониторами питания INA237 через I2C

Поддерживает локальное подключение через FTDI FT232H (pyftdi) и удалённое подключение по Ethernet/SSH (paramiko + i2cget/i2cset). Работает с несколькими устройствами на одной шине, позволяет читать/записывать регистры, мониторить напряжение, ток, мощность и температуру в реальном времени.
Демо-режим позволяет тестировать интерфейс без реального оборудования


📋 Основные возможности

  • 🔌 Поддержка интерфейсов (Linux):

    • FTDI FT232H – через pyftdi (USB)
    • Ethernet/SSH – удалённый доступ через paramiko + i2cget/i2cset
    • Демо-режим – встроенный симулятор (опция --demo)
    • CH341T – требуется проверка
  • 📊 Измерения:

    • VBUS, CURRENT, POWER, VSHUNT, DIETEMP
  • 📖 Регистры:

    • Чтение/запись, раскрытие битовых полей, побитное редактирование
  • 🖥️ GUI:

    • Вкладки для нескольких устройств, мониторинг в реальном времени, обработка ошибок

📁 Структура проекта

ina237_controller/
├┠┘ main.py
├┠┘ requirements.txt
⤜┠┘ settings.json
⤜┠唈 README.md
⤜┠┘ config/
⤂── ├┠┘ __init__.py
⤂── ├┠┘ constants.py
⤂── ├┠┘ settings.py
⤜┠┘ core/
⤂── ├┠┘ __init__.py
⤂── ├┠┘ bus_driver.py
⤂── ├┠┘ ftdi_driver.py
⤂── ├┠┘ ethernet_driver.py
⤂── ├┠┘ demo_driver.py
⤂── ├┠┘ driver_factory.py
├┠┘ devices/
⤂── ├┠┘ __init__.py
⤂── ├┠┘ ina237_regs.py
⤂── ├┠┘ ina237.py
⤂── ├┠┘ device_manager.py
⤜┠┘ gui/
⤂── ├┠┘ __init__.py
⤂── ├┠┘ main_window.py
⤂── ├┠┘ connection_panel.py
⤂── ├┠┘ device_panel.py
⤂── ├┠┘ register_editor.py
├┠┘ utils/
⤂── ├┠┘ __init__.py
⤂── ├┠┘ logger.py

🚀 Установка и запуск

1. Установка зависимостей

pip install -r requirements.txt

Для FTDI FT232H:

pip install pyftdi

Для Ethernet/SSH

pip install paramiko

2. Запуск

# # Боевой режим – автоматический поиск FTDI или Ethernet
python main.py

# Демо-режим
python main.py --demo

🖥️ Использование

Подключение через Ethernet (SSH)

  1. Выберите интерфейс ethernet.

  2. Нажмите ⚙ Настроить Ethernet и введите:

    • IP-адрес/хост
    • Номер I2C шины (slot)
    • Имя пользователя (обычно root)
    • Пароль (может быть пустым, если используется SSH-ключ)
  3. Нажмите Подключить, затем Scan – найденные устройства появятся во вкладках.

Управление устройством

  • 📖 Read All – чтение всех регистров и обновление измерений.
  • 📊 Read Measurements – обновление только полей VBUS, CURRENT, POWER, VSHUNT, TEMP.
  • Монитор – циклический опрос с заданным интервалом.
  • Регистры: кнопки 📖 (читать), 💾 (записать), ▼ (раскрыть биты). Для CONFIG и ADC_CONFIG доступно побитное редактирование.

Особенности

  • Порядок байт определяется автоматически (Big/Little Endian).
  • Пустой пароль поддерживается (SSH-ключ).
  • Все ошибки логируются в консоль.

⚙️ Настройки (settings.json)

{
    "interface_type": "ftdi",
    "device_path": "",
    "i2c_address": 64,
    "shunt_resistor": 0.001,
    "max_current": 15.0,
    "monitor_interval": 1000,
    "theme": "light",
    "demo_mode": false
}

📝 Примечания

  • Ethernet-подключение использует i2cget/i2cset - на удалённой машине должны быть установлены i2c-tools.
  • CH341T Драйвер готов, но ещё полностью не проверен.
  • Демо-режим не требует оборудования и полезен для ознакомления с интерфейсом.

📄 Лицензия

Данный проект распространяется под лицензией GNU General Public License v3.0 (GPL-3.0).


👥 Авторы

  • ea - инициатор проекта, постановка задач, тестирование на реальном оборудовании.
  • DeepSeek AI (Aссистент! - разработка архитектруы, написание кода, отладка, интеграция интерфейсов.

About

GUI-приложение для управления мониторами питания INA237 через I2C

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages