kopia lustrzana https://github.com/SP8EBC/ParaTNC
179 wiersze
11 KiB
Plaintext
179 wiersze
11 KiB
Plaintext
ParaTNC wersja 1.0-19082017
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||
|
||
// W katalogu 'doc' znajduje się większa ilość dokumentacji i instrukcji użytkownika
|
||
// obecnie ten plik jest przestarzay i nie obejmuje najnowszych możliwości oprogramowania i sprzętu
|
||
// ParaTNC. Proszę przeczytać anglojęzyczną wersję w pliku README
|
||
|
||
1. WSTĘP
|
||
ParaTNC jest oprogramowaniem wbudowanym (firmware) przeznaczonym do pracy na płytce STM32VLDISCOVERY w charakterze
|
||
uniwersalnego radiomodemu/sterownika sieci APRS, wyposażonego w szereg funkcjonalności takich jak:
|
||
|
||
-> Digipeater retransmitujący pakiety posiadające ustawioną ścieżkę WIDE1-1.
|
||
-> Dwustronna komunikacja z komputerem przy użyciu protokołu KISS po łączu szeregowym (TTL-UART).
|
||
-> Stacja pogodowa z obsługą wiatromierza TX20, termometru Dallas DS12B20 oraz czujnika ciśnienia MS5611.
|
||
-> Telemetria umożliwiająca monitorowanie ilości odbieranych, nadawanych i powtarzanych pakietów.
|
||
-> Obsługa protokołu tekstowego VE.Direct używanego przez systemu fotowoltaiki Victron Energy
|
||
|
||
Niewątpliwą zaletą ParaTNC są bardzo niskie koszta. Wynoszące jedynie 60~70pln bruttno na zakup STM32VLDISCOVERY.
|
||
Ponieważ dekodowanie i generowanie transmisji APRS odbywa się w pełni programowo nie ma konieczności użycia tandetnych
|
||
podróbek modemu TCM, sprzedawanych obecnie na ebay i aliexpress przez dostawców z Chin. Lutowanie ogranicza się wyłącznie
|
||
do wykonania odpowienich kabli połączeniowch. stosowna instrukcja z pinoutami znajduje się w pliku WIRING.
|
||
|
||
|
||
|
||
2. LICENCJA
|
||
Warunki licencjonowania są zawarte w pliku LICENSE.
|
||
|
||
3. WSPIERANE FUNKCJONALNOŚCI PROTOKOŁU VE.DIRECT
|
||
Protokół (w wersji tekstowej, nie binarnej) VE.Direct został stworzony przez firme Victron Energy i jest wykorzystywany
|
||
w produkowanych przez nią inwerterów, kontrolerów ładowania i innego sprzętu do instalacji fotowoltaicznych. Służy on do
|
||
przesyłania telemetrii z kontrolera do komputera PC, lub w tym przypadku sterownika ParaTNC. Jest on domyślnie włączony
|
||
w większości urządzeń i w trybie bezczynności, tj. bez komunikacji protokołem binarnym z aplikacją konfiguracyjną
|
||
urządzenie będzie wysyłało co kilka sekund paczkę danych telemetrycznych.
|
||
|
||
Komunikacja z urządzeniami Victron Energy odbywa się przez złącze VE.Direct, które jest tak naprawdę zwykłym złączem szeregowym.
|
||
W przypadku regulatorów z serii MPPT (w moim przypadku model MPPT75/15) używane są sygnały na poziome TTL-3.3V, dlatego można
|
||
je podłączyć do sterownika ParaTNC/STM32VLDISCOVERY bezpośrednio, tj. bez użycia konwerterów typu MAX232.
|
||
|
||
Złącze VE.Direct w regulatorach z serii MPPT znajduje się poniżej bezpiecznika. Patrząc na złącze mając otwory montażowe w obudowie
|
||
zwrócone ku dołowi rozpiska jest taka (od prawej do lewej)
|
||
-> Masa
|
||
-> TX, dane z regulatora do hosta (kontrolera)
|
||
-> RX, dane z hosta do regulatora. Nie wykorzystywany przez protokół tekstowy
|
||
|
||
VE.Direct wysyła bardzo wiele różnych parametrów i informacji statusowych. Oczywiście ze względu na ograniczenia standardu APRS
|
||
nie ma możliwości wysyłania wszystkiego, dlatego ostatecznie dokonano następującego wyboru
|
||
|
||
a) Prąd akumulatora (ładowanie/rozładowywanie), jako trzeci kanał telemetrii
|
||
b) Napięcie akulatora, jako czwarty kanał telemetrii
|
||
c) Napięcie fotoogniwa, jako piąty kanał telemetrii
|
||
d) Status urządzenia (aktualny tryby ładowania, brak ładowania, akumulator bliski rozładowania), jako część statusu
|
||
e) Kody błędów (zwarcie, zbyt wysokie napięcie aku/panela, przegrzanie, przeciążenie itp), jako część statusu
|
||
|
||
|
||
3. KONFIGURACJA
|
||
Na chwilę obecną ParaTNC jest dostarczane w formie kodów źródłowych do samodzielnej kompilacji. Ponieważ dostępne jest
|
||
source, konfiguracja odbywa się przez edycję pliku ./include/station_config.h . Zawiera on komentarze tłumaczące znaczenie
|
||
poszczególnych opcji. Oprócz typowych i raczej trywialnych ustawień APRS takich jak znak wywoławczy i temu podobne,
|
||
użytkownik może włączać i wyłączać poszczególne tryby pracy urządzenia. Możliwe są następujące kombinacje
|
||
|
||
-> KISS
|
||
-> KISS + DIGI
|
||
-> KISS + DIGI + METEO
|
||
-> VICTRON + DIGI + METEO
|
||
-> VICTRON + DIGI
|
||
|
||
Włączenie funkcjonalności stacji pogodowej (przez odkomentowanie _METEO) automatycznie włącza digipeater nawet jeżeli
|
||
zakomentowane jest #define _DIGI w pliku konfiguracyjnym. Komunikacja z komputerem odbywa się na prędkości 9600bps, a sam
|
||
protokół KISS działa od samego początku pracy urządzenia i nie musi być w żaden sposób inicjalizowany ze strony PC.
|
||
|
||
Włączenie wsparcia dla protokołu VE.Direct odbywa się przez odkomentowanie //#define _VICTRON.
|
||
UWAGA!! Włączenie VE.Direct wyłącza i uniemożliwia wykorzystanie ParaTNC w trybie modemu KISS.
|
||
|
||
Sterownik wysyła co 10 minut ramkę telemetryczną zawierającą informację o ilości odebranych, nadanych i powtórzonych
|
||
pakietów APRS przez okres minionych 10 minut. Ilość nadanych ramek jest sumą powtórzonych ramek i ramek własnych
|
||
wliczając w to ramki telemetrii. Co ok 75 minut nadawane są pełne opisy kanałów.
|
||
|
||
Sterownik nie umożliwia bezpośrednie transmitowanie jakichkolwiek danych do internetu (do serwerów APRS-IS) z powodów
|
||
oczywistych. Uruchomienie funkcjonalności igate wymaga podłączenia przez UART komputera PC, Raspberry-PI lub czegokolwiek
|
||
innego na czym można uruchomić oprogramowanie takie jak APRX, APRSIS32, czy UiView32. Na chwile obecną pakiety własne,
|
||
czyli generowane przez sterownik ramki pozycyjne, pogodowe czy telemetryczne są nadawane wyłącznie na port radiowy.
|
||
W przyszłości pojawi się funkcjonalność polegająca na wysyłaniu przez KISS do komputera nie tylko ramek odebranych drogą
|
||
radiową, ale również tych pochodzenia własnego.
|
||
|
||
|
||
|
||
4. KOMPILACJA
|
||
Do kompilacji oprogramowania ParaTNC na płytkę STM32VLDISCOVERY potrzebny jest zestaw narzędzi GNU ARM Embedded Toolchain
|
||
w którego skład wchodzi kompilator gcc-arm-none-eabi, debugger gdb, linker, oraz zestaw bibliotek i plików include.
|
||
Dodatkowo niezbędny jest make i binutils znajdujący się w kazdej dystrybucji linuksa. ParaTNC został napisany i jest
|
||
rozwijany na systemie Xubuntu 16.04LTS z toolchainem w wersji 2016q-3, aczkolwiek bez problemu będzie się kompilował na
|
||
dowolnie nowszej wersji. Kompilacja w systemie Windows czy MacOS nie jest wspierana ale powinna się udać, jeżeli ktoś
|
||
potrafi odpowiednio skonfigurować całe środowisko.
|
||
|
||
W przypadku systemów Debian i ubunto-podobnych zdecydowanie zaleca się instalację toolchain przez aptitude z repozytorium
|
||
internetowego. Jest to szybkie, wygodne i powoduje, że wszystkie komponenty są kopiowane do domyślnych folderów instalacji,
|
||
co pozwala uniknąć serii błędów ze względu na niemożność odnalezienia ścieżki do np. gcc przez make.
|
||
|
||
Informację na temat GNU ARM Embedded Toolchain, jego źródła, skompilowane wersję dystrybucyjne i dokumentację znajdują się:
|
||
https://launchpad.net/gcc-arm-embedded
|
||
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
|
||
Instrukcja konfiguracji repo i instalacji pakietu znajduje się tutaj.
|
||
https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa
|
||
|
||
Binutils i make znajduje się w repozytorium debiana/ubuntu, w przypadku GNU ARM Embedded należy zgodnie z instrukcją z
|
||
powyższego linku dodać odpowiednie repozytorium zewnętrzne.
|
||
|
||
'sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa'
|
||
'sudo aptiude update'
|
||
'sudo aptitude install make automake binutils gcc-arm-embedded'
|
||
|
||
Jeżeli źródła nie zostały jeszcze skonfigurowane należy zainstalować w systemie git i sklonować repozytorium kodu
|
||
na lokalny dysk twardy. W tym celu należy wydać polecenie będąc w katalogu gdzie chcemu aby znalazły się źródła:
|
||
|
||
'git clone https://github.com/sp8ebc/para-tnc'
|
||
|
||
a następnie skonfigurować plik ./include/station_config.h . Po instalacji wymaganego programowania należy wejść w podkatalog
|
||
Debug i wydać polecenie
|
||
|
||
'make'.
|
||
|
||
Źródła powinny się skompilować a w tymże katalogu pojawić się plik 'ParaTNC-ARM-Lite.hex' gotowy do wgrania do płytki.
|
||
Dowodem na poprawne zakończenie procesu są poniższe komunikaty w konsoli, które powinny pojawić się pod sam koniec procesu
|
||
kompilacji
|
||
|
||
Finished building target: ParaTNC-ARM-lite.elf
|
||
|
||
Invoking: Cross ARM GNU Create Flash Image
|
||
arm-none-eabi-objcopy -O ihex "ParaTNC-ARM-lite.elf" "ParaTNC-ARM-lite.hex"
|
||
Finished building: ParaTNC-ARM-lite.hex
|
||
|
||
Invoking: Cross ARM GNU Print Size
|
||
arm-none-eabi-size --format=berkeley "ParaTNC-ARM-lite.elf"
|
||
text data bss dec hex filename
|
||
36512 552 3312 40376 9db8 ParaTNC-ARM-lite.elf
|
||
Finished building: ParaTNC-ARM-lite.siz
|
||
|
||
|
||
|
||
|
||
5. WGRYWANIE PLIKU HEX DO PŁYTKI STM32VLDISCOVERY
|
||
Płytka STM32VLDISCOERY ma wbudowany programator/debugger sprzętowy ST-Link v1. Komunikacja z nim odbywa się przez
|
||
komendy SCSI passthrough a samo urządzenie wykrywa się w systemie jako pamięć masowa. W domyślnej konfiguracji po
|
||
podłączeniu płytki prez USB do komputera system (a dokładnie modprobe) automatycznie załaduje dla tego urządzenia sterownik
|
||
mass-storage, system zamontuje emulowany przez programator system plików jako pendrive, co uniemożiwi zaprogramowanie.
|
||
W związku z powyższym należy w jego konfiguracji zablokować takie zachowanie. Robi się to przy pomocy polecenia:
|
||
|
||
'sudo echo "options usb-storage quirks=483:3744:i" >> /etc/modprobe.d/stlink_v1.conf'
|
||
|
||
Po ponownym uruchomieniu komputera warto sprawdzić, czy konfiguracja działa. Po podłączeniu STM32VLDISCOERY żadna dodatkowa
|
||
pamięć masowa (pendrive) nie powinna zostać zamontowana. Po sprawdzeniu przez 'dmesg' na końcu powinno być miej więcej coś
|
||
takiego:
|
||
|
||
[90639.895886] usb 2-1.1: new full-speed USB device number 13 using ehci-pci
|
||
[90639.990288] usb 2-1.1: New USB device found, idVendor=0483, idProduct=3744
|
||
[90639.990294] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
|
||
[90639.990296] usb 2-1.1: Product: STM32 STLink
|
||
[90639.990298] usb 2-1.1: Manufacturer: STMicroelectronics
|
||
[90639.990300] usb 2-1.1: SerialNumber: QÿrI\xffffffc2\xffffff86RV%X\xffffffc2\xffffff87
|
||
[90639.990796] usb-storage 2-1.1:1.0: USB Mass Storage device detected
|
||
[90639.992973] usb-storage 2-1.1:1.0: device ignored
|
||
|
||
W dalszym ciągu należy zainstalować oprogramowanie texane-stlink które służy do obsługi programatora stlink-v1/v2 w
|
||
systemie linux.
|
||
|
||
'git clone git://github.com/texane/stlink.git'
|
||
'cd stlink.git'
|
||
'make'
|
||
'cd build/Relase'
|
||
'sudo cp st-* /usr/bin'
|
||
|
||
Na koniec, jeżeli programator działa można wrzucić program do płytki. Po przejściu do katalogu ./para-tnc/Debug
|
||
wywołuje się następujące polecenie
|
||
|
||
'sudo st-flash --format ihex write /dev/sr0 ParaTNC-ARM-lite.hex'
|
||
|
||
Jeżeli podczas programowania w konsoli wyskoczy błąd -1, lub jakikolwiek inny warto zresetować płytkę przez wyjęcie
|
||
i ponowne włożenie wtyczki USB (czarny przycisk RST jest podłączony do targetu a nie programatora).
|