ORION_VI_POWER to kompleksowy system dystrybucji, monitorowania i zarządzania zasilaniem, zaprojektowany (prawdopodobnie na potrzeby łazika lub platformy robotycznej). Projekt składa się z dwóch integralnych części:
- Low-level (ESP32 / Arduino C++): Odpowiada za bezpośrednie sterowanie przekaźnikami/tranzystorami, odczyt czujników prądu (ACS712), napięcia baterii oraz temperatury (DS18B20).
- Base Application (Python / Tkinter): Interfejs graficzny (GUI) działający na stacji bazowej, służący do monitorowania telemetrii w czasie rzeczywistym oraz zdalnego sterowania obwodami zasilania.
Komunikacja między układami odbywa się przewodowo za pośrednictwem modułu Ethernet (W5500) i protokołu MQTT.
System opiera się na lokalnej sieci przewodowej.
- Adres IP Brokera MQTT (Base Station):
192.168.1.1 - Port MQTT:
1883 - Adres IP Modułu Zasilania (ESP32):
192.168.1.56 - Adres MAC ESP32:
DE:AD:BE:EF:FE:56 - Klient MQTT ID:
ESP32_Power_Module
Power/cmd- Kanał dowodzenia, wysyłany przez stację bazową do ESP32.Power/feedback- Kanał telemetrii, wysyłany przez ESP32 do stacji bazowej (częstotliwość ok. 1Hz / 1000ms).
Dane przesyłane są w lekkim formacie JSON.
Aplikacja bazowa wysyła komendy włączające/wyłączające poszczególne linie:
{
"S_INNE": 1,
"S_SCI": 0,
"FAN1_ON": 1
}Wartość 1 oznacza stan WYSOKI (włączenie), 0 - stan NISKI (wyłączenie).
Moduł ESP32 raportuje wszystkie aktualne odczyty z czujników:
{
"temp_c": 35.6,
"bat_1_v": 11.8,
"bat_2_v": 12.1,
"bat_3_v": 12.0,
"bat_4_v": 11.9,
"adc_wl": 3012,
"adc_wr": 3008,
"adc_ram": 3050,
"adc_elek": 3036,
"adc_sci": 2994,
"adc_inne": 2976
}Uwaga: Wartości adc_* przesyłane są jako dane surowe (RAW) z 12-bitowego przetwornika ADC ESP32. Przeliczenie na Ampery odbywa się po stronie GUI.
Kluczowe przypisania pinów zdefiniowane w pliku Pins.h:
S_INNE_PIN(Inne): GPIO 2S_SCI_PIN(Aparatura Naukowa): GPIO 0S_ELEK_PIN(Główna Elektronika): GPIO 16S_RAM_PIN(Ramię Robotyczne): GPIO 17S_W_R_PIN(Koła Prawe): GPIO 21S_W_L_PIN(Koła Lewe): GPIO 22FAN1_ON_PIN(Wentylator chłodzący): GPIO 12
ADC_WL_PIN: GPIO 32ADC_WR_PIN: GPIO 33ADC_RAM_PIN: GPIO 25ADC_ELEK_PIN: GPIO 26ADC_SCI_PIN: GPIO 27ADC_INNE_PIN: GPIO 14
BAT_1_ADC_PIN: GPIO 35BAT_2_ADC_PIN: GPIO 34BAT_3_ADC_PIN: GPIO 39BAT_4_ADC_PIN: GPIO 36
WIZ_MOSI: GPIO 23 |WIZ_MISO: GPIO 19WIZ_SCLK: GPIO 18 |WIZ_SCN: GPIO 4 |WIZ_RST: GPIO 5TEMP_PIN(DS18B20): GPIO 13NEOPIXEL_PIN(WS2812): GPIO 15 (sygnalizuje status MQTT)
ORION_VI_POWER/
│
├── Base_Application/ # Stacja Bazowa (Python / GUI)
│ ├── power.py # Skrypt startowy GUI
│ ├── gui.py # Budowa interfejsu (Tkinter, Matplotlib)
│ ├── comms.py # Zarządzanie klientem Paho MQTT
│ ├── config.py # Konfiguracja IP, Portów i kalibracja ACS712
│ └── utils.py # Zarządzanie współdzielonym stanem (AppState)
│
├── Low_level_code/ # Oprogramowanie sprzętowe
│ ├── Orion_power/ # Główny kod ESP32
│ │ ├── Orion_power.ino # Pętla główna, obsługa MQTT, W5500, JSON
│ │ └── Pins.h # Definicje wszystkich pinów GPIO
│ │
│ └── ORION_POWER_TEST/ # Skrypt testowy i diagnostyczny
│ └── ORION_POWER_TEST.ino # Sterowanie przekaźnikami przez Serial Monitor
│
├── README.md # Dokumentacja techniczna (ten plik)
└── LICENSE # Licencja MIT
Interfejs graficzny został napisany w Pythonie przy użyciu tkinter oraz wykresów z matplotlib.
Odpowiada on za przeliczanie wartości RAW z przetwornika na rzeczywiste pomiary prądu.
Kalibracja przeprowadzana jest w pliku Base_Application/config.py:
ACS712_ZERO_RAW: Wartości odniesienia dla 0 Amperów na każdym kanale (indywidualne odchylenia dla ADC).ACS712_SENSITIVITY: Ustawione na0.185(typowo dla układu 5A). W przypadku zmiany sprzętowej na wersje 20A lub 30A, parametr należy zmienić (np. na0.100).
Baterie w ESP32 (Orion_power.ino) są skalowane współczynnikami bat_multipliers (domyślnie między 7.286 a 7.8). Należy je dostroić podczas prac serwisowych używając multimetru.
- Otwórz
Low_level_code/Orion_power/Orion_power.inow środowisku Arduino IDE / PlatformIO. - Upewnij się, że posiadasz zainstalowane biblioteki:
Ethernet,PubSubClient,ArduinoJson,OneWire,DallasTemperature,Adafruit NeoPixel. - Skompiluj kod i wgraj na ESP32 podpięte po USB.
- Upewnij się, że komputer stacji bazowej znajduje się w tej samej sieci i posiada IP umożliwiające uruchomienie brokera na
192.168.1.1. - Zainstaluj wymagane pakiety Pythona:
pip install paho-mqtt matplotlib
- Uruchom serwer MQTT (np. Mosquitto) na komputerze hosta.
- Odpal aplikację GUI:
Aplikacja domyślnie uruchamia się w trybie pełnoekranowym. Użyj klawisza
cd Base_Application python power.pyESC, aby wyjść z trybu fullscreen. """
