GPIO w LES plus
Płyta główna systemu Thomas-Krenn LES plus posiada tak zwany interfejs GPIO ("general-purpose input/output"), który może być stosowany do pomiaru, sterowania lub kontroli diod LED. Ten artykuł pokazuje, w jaki sposób można skompilować wymagany kod źródłowy oprogramowania sterującego interfejsami GPIO, na przykładzie Ubuntu Server 16.04.4 64-bit, dla systemów operacyjnych opartych na Linuksie. Praktyczne zastosowanie interfejsów GPIO pokazane jest na przykładzie diody LED.
Header GPIO
10-cio pinowy header GPIO (GPIO_CON) znajduje się na płycie głównej systemu LES plus firmy Thomas-Krenn poniżej gniazda karty SIM, vide zdjęcie obok.
Przygotowanie
W Ubuntu 16.04.4 konieczne jest zainstalowanie pakietu build-essential, niezbędnego do kompilacji kodu źródłowego dla odpowiednich narzędzi.
$ sudo apt install build-essential
Pobranie kodu źródłowego oprogramowanie sterującego GPIO FINTEK 81866
Aby poprawnie zaadresować chip GPIO Fintek, wymagany jest kod źródłowy oprogramowania sterującego.
Należy pobrać aktualną wersję, odpowiednią dla wybranego systemu Linux:
Wyodrębnienie i kompilacja kodu źródłowego
Po pobraniu kod źródłowy jest kompilowany. Teraz należy wykonać następujące kroki, aby rozpakować kod źródłowy i go skompilować.
- Tworzenie katalogu dla kodu źródłowego:
$ mkdir ~/gpio
- Przejście do katalogu:
$ cd ~/gpio
- Kopiowanie odpowiedniego pliku kodu źródłowego (w tym przykładzie 64-bit):
$ cp <Downloadverzeichnis >/fintek_demo_release_x86_64.zip .
- Rozpakowywanie kodu źródłowego:
$ unzip fintek_demo_release_x86_64.zip
- Przejście do właśnie utworzonego katalogu:
$ cd fintek_demo_release_x86_64/
- Polecenie make rozpoczyna kompilację:
$ make
Header GPIO chipu FINTEK 81866
Poniższy schemat przedstawia okablowanie układu FINTEK 81866 użytego w systemie LES plus.
Test diody LED podłączonej do gniazda (header) GPIO
Do zasilania diody LED podłączonej bezpośrednio do Pinu GPIO wymagany jest opornik szeregowy w obwodzie, aby zapobiec uszkodzeniu płyty głównej oraz podłączonej diody LED. Zastosowana dioda LED posiada następujące właściwości:
2V i 30 mA
Obliczenie oporu opornika
Ponieważ prąd w obwodzie na PIN GPIO wynosi około 3V DC, opór szeregowy można łatwo obliczyć, jak jest to poniżej pokazane.
- Rv: poszukiwany opór w Ω
- U0: napięcie robocze płyty głównej (3V DC)
- UF: napięcie przewodzenia diody LED (2V DC)
- IF: pobór mocy diody LED (0,030A)
Dlatego dla diody LED stosowany jest opornik o następujących właściwościach:
- R1 (seria E12)
- 33 Ohm
- Moc: 0,04 W
- Całkowity prąd w obwodzie: 31 mA
- Całkowita moc: 0,1 W
Zarządzanie diodą LED z konsoli
Dioda LED może być sterowana z wiersza poleceń. W tym rozdziale przedstawiono jak włączyć i wyłączyć diodę LED.
Włączenie diody LED
Po utworzeniu obwodu można użyć następującej komendy do sterowania diodą LED:
$ ./demo_gpio 0x81 1 1 1
W ten sposób zostaje dla adresu 0x81 (=PIN 2 header GPIO) na wyjściu, nadana wartość HIGH (wartość 0x1) --> dioda LED jest włączona.
Wyłączenie diody LED
Aby wyłączyć diodę LED należy skorzystać z następującej komendy:
$ ./demo_gpio 0x81 1 1 0
Tutaj dla adresu 0x81 (=PIN 2 header GPIO) na wyjściu, jest nadawana wartość LOW (wartość 0x0) --> dioda LED jest wyłączona.
Inne dostępne opcje sterowania
Ten prosty przykład pokazuje, jak szybko i łatwo można zarządzać komponentami takimi jak diody LED za pomocą interfejsu GPIO. Jednakże możliwe jest również zrealizowanie innych, bardziej złożonych projektów:
- Odczyt stanu przełączników
- Wykorzystanie zewnętrznych, podłączonych przekaźników sterujących
Środowisko testowe
Środowisko testowe składało się z następujących komponentów sprzętowych i programowych:
- Thomas-Krenn LES plus
- Ubuntu 16.04.4 LTS 64-bit
- Kernel: Linux ubuntu 4.4.0-130-generic
Autor: Wilfried Seifert