GPIO w LES plus

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania

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

Header GPIO na płycie głównej systemu LES plus.

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.

Okablowanie układu FINTEK 81866

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

Dioda LED podłączona bezpośrednio do pinu GPIO

Obliczenie oporu opornika

Wzór na obliczanie oporu

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

Powiązane artykuły

Podstawowe informacje o OpenVPN
Pomiar wydajności z vmstat w Linuksie
Software RAID w Linuksie