Rozdział 2: Sieć, Dostęp Mobilny i WebUI
Część 1: Przyjazna Encyklopedia (Dla Każdego)
Konfiguracja wejść i podgląd telemetrii odbywają się przez stronę WWW na telefonie lub tablecie połączonym z siecią Wi-Fi stacji MCS. Transmisję wideo FPV konfiguruje się osobno.
📶 1. Konfiguracja Wi-Fi Access Point (AP)
Po uruchomieniu Raspberry Pi może tworzyć własną sieć bezprzewodową. Nazwa sieci, hasło i adres IP zależą od użytego obrazu lub plików konfiguracyjnych; przykładowe konfiguracje używają 10.42.0.1 albo 192.168.4.1.
📱 2. Obsługa WebUI
- Połącz smartfon z siecią skonfigurowaną w obrazie MCS.
- Otwórz w przeglądarce adres bramy z portem
8080, na przykładhttp://10.42.0.1:8080. - Na ekranie pojawi się responsywny interfejs:
- Dashboard: Telemetria, poziom naładowania baterii, status uzbrojenia (ARM/DISARM).
- Input assignments: Przypisywanie funkcji do przycisków i kalibracja osi.
- Ustawienia: Zapis i odczyt obsługiwanych parametrów konfiguracji.
[!TIP] Pierwsze uruchomienie: Po przygotowaniu obrazu lub instalacji MCS podłącz kontroler USB i skonfigurowany bridge/RF. Najpierw sprawdź mapowanie osi, neutralne kanały oraz reakcję na odłączenie kontrolera z uniesionymi kołami lub odłączonym napędem. Dopiero potem uzbrój pojazd.
Część 2: Inżynieryjny Deep Dive (Dla Specjalistów)
Stos sieciowy i warstwa WebUI na Raspberry Pi 5 są uruchamiane jako usługi systemd.
1. Konfiguracja Warstwy Sieciowej (hostapd & dnsmasq)
Konfiguracja punktu dostępowego AP na RPi bazuje na pakietach hostapd oraz dnsmasq.
Plik /etc/dnsmasq.conf:
interface=wlan0
dhcp-range=192.168.4.10,192.168.4.50,255.255.255.0,24h
Plik /etc/hostapd/hostapd.conf:
interface=wlan0
driver=nl80211
ssid=RCSIM_MCS_AP
hw_mode=g
channel=7
wpa=2
wpa_passphrase=rcsim1234
wpa_key_mgmt=WPA-PSK
2. Serwer aplikacji (FastAPI + REST)
Główny serwer WebUI jest napisany w Pythonie przy użyciu biblioteki FastAPI (uruchamiany przez serwer uvicorn).
- REST API: Służy do odczytu i zapisu konfiguracji systemowej (
/api/config,/api/wizard/detect). - Telemetryka: WebUI odczytuje dostępne dane przez endpointy REST. Zakres danych zależy od użytego transportu (np. CRSF lub MAVLink) i podłączonych czujników.
3. Procedura Przygotowania, Sanitizacji i Publikacji Obrazu MCS OS
Dystrybucja obrazu systemowego RCSIM_MCS_OS.img wymaga rygorystycznego procesu oczyszczania ze śladów deweloperskich i optymalizacji rozmiaru:
- Sanitizacja Danych Wrażliwych (
clean_mcs_image.sh):- Przed zrzuceniem obrazu z karty SD bezwzględnie usuwane są prywatne sieci Wi-Fi i klucze uwierzytelniające z
/etc/NetworkManager/system-connections/,/boot/network-configoraz/boot/wpa_supplicant.conf. - Hasło użytkownika
pijest zerowane w/etc/shadow, a w pliku/etc/ssh/sshd_configwłączana jest opcjaPermitEmptyPasswords yes, umożliwiając natychmiastowe logowanie nowym użytkownikom bez pytania o hasło. - Czyszczona jest historia powłoki (
~/.bash_history), logi systemowe (/var/log/*) oraz plik pamięci wymiany/var/swap(zysk ok. 1.2 GB przestrzeni).
- Przed zrzuceniem obrazu z karty SD bezwzględnie usuwane są prywatne sieci Wi-Fi i klucze uwierzytelniające z
- Optymalizacja Rozmiaru Narzędziem PiShrink (Kluczowa Flaga
-s):- Zrzut partycji jest redukowany do minimalnego fizycznego rozmiaru:
pishrink.sh -s -v -n RCSIM_MCS_OS.img - Krytyczne znaczenie flagi
-s(Skip Autoexpand): Standardowy skrypt PiShrink bez flagi-swstrzykuje do/etc/rc.localprocedurę rozszerzania partycji, co nadpisuje plik i niszczy inicjalizację wirtualnego interfejsu APuap0(odpowiedzialnego za niezawodne działanie hotspotu równolegle z łącznością Wi-Fi). Użycie-sjest bezwzględnym wymogiem stabilności MCS!
- Zrzut partycji jest redukowany do minimalnego fizycznego rozmiaru:
- Dystrybucja Obrazu przez Cloudflare R2:
- Ze względu na limit 300 MB dla pojedynczych plików w narzędziu Cloudflare Wrangler, dystrybucja pełnego skompresowanego obrazu OS (>1.5 GB) odbywa się poprzez wieloczęściowy skrypt S3 API:
python scripts/upload_mcs_image.pyz bezpośrednim publicznym odnośnikiem CDN.
- Ze względu na limit 300 MB dla pojedynczych plików w narzędziu Cloudflare Wrangler, dystrybucja pełnego skompresowanego obrazu OS (>1.5 GB) odbywa się poprzez wieloczęściowy skrypt S3 API: