Blog (83)
Komentarze (2k)
Recenzje (1)

Onion Omega 2 — sterujemy pinami GPIO

@cyrylloOnion Omega 2 — sterujemy pinami GPIO01.05.2017 21:37

W pierwszym wpisie zaprezentowałem i opisałem samą płytkę Onion Omega2. Zaś w tym wpisie zaprezentuję jak steruje się pinami GPIO z poziomu CLI. Do samej Cebuli mam dokupioną płytkę rozszerzającą Onion Expansion Doc i do niej podłączyłem główny moduł. Teraz sterowanie i obsługa Cebuli jest wygodna i możemy to robić bezpośrednio przez konsolę za pomocą kabla USB od smartfona, bo jak czytaliście we wcześniejszym wpisie cebula nie współpracuje z moim routerem od Mikrotika.

Specyfikacja Onion Expansion Dock

  • port microUSB - do zasilania i komunikacji
  • port USB A
  • wbudowana dioda LED RGB
  • przyciski Reset oraz włącznik Power
  • 30 pinowe złącze umożliwiające podłączenie nakładek

Złącza GPIO

30 piniowe złącze posiada wyprowadzenia z cebuli ale również dodatkowo piny 5V zasilane z microUSB.

Jak widać mamy wszystko przedstawione co znajduje się na danych pinach. Warto tutaj dodać, że 2 piny PWM znajdujące się na 18 i 19 pinie i mają swoje kanały oscylatora. Sterowanie samymi pinami możemy wykonywać podając ich numery zaś jeśli chcemy użyć PWM musimy posłużyć się numerami kanałów czyli CH0 > 0 i CH1 > 1.

fast-gpio

Narzędzie fast-gpio powala sterować pinami cyfrowymi oraz generować tylko programowo PWM. Generowanie PWM odpala nam osobny proces, który generuje nam wskazany sygnał na wybranym pinie. Taki PWM być może nada się np do LEDów i jeśli nie będziemy zbytnio niczym innym obciążać procesora to nada się też do sterowania silnikami, ale o płynnym sterowaniu serwami możemy zapomnieć. Z mojego komputera połączyłem się do płytki za pomocą kabla usb-microusb a następnie za pomocą programu PuTTY podłączyłem się do portu COM13 (jaki ustawił mi system) z prędkością 115200. Po wydaniu polecenia fast-gpio w putty otrzymamy informację o dostępnych poleceniach tego narzędzia.

Opcja set-input ustawia nam pin jako wejściowy

fast-gpio set-input 0

powyższe polecenie ustawi nam pin 0 jako wejściowy, dzięki czemu możemy np. odczytywać sygnał naciśnięcia przycisku. Opcja set-output ustawi nam dany pin jako wyjściowy tak abyśmy mogli np zapalać diodę itd.

fast-gpio set-output 1

Polecenie to ustawia pin 1 jako wyjściowy. Teraz za pomocą opcji get-direction możemy sprawdzić jak dany pin jest ustawiony

fast-gpio get-direction 0

otrzymamy informacji na konsoli czy pin jest w stanie wejścia input czy wyjścia output.

Następną opcja jest read, która odczytuje stan pinu zwracając 0 (stan niski) lub 1 (stan wysoki)

fast-gpio read 0

Natomiast za ustawianie pinów na stan wysoki lub niski odpowiada opcja set podając jako pierwszy parametr nr pinu a drugi parametr 0 jako stan niski lub 1 jako wysoki

fast-gpio set 1 1

Wreszcie dotarliśmy do programowego PWM a za sterowanie jego odpowiada opcja pwm z trzema parametrami. Pierwszy parametr to nr pinu, drugi to ilość sygnałów na sekundę (w Hz) zaś kolejny to procent wypełnienia od 0-100

fast-gpio pwm 2 50 100

Polecenie to ustawia PWM na pinie 2 z częstotliwością sygnału 50Hz i wypełnieniem 100% jako osobny proces, który możemy zobaczyć np. za pomocą programu top

Aby wyłączyć programowy PWM na pinie 2 musimy go ustawić na stan niski

fast-gpio set 2 0

O ostatniej opcji pulses nie znalazłem informacji jak tego używać

fast-gpio pulses <gpio><path_pulses_file><repeats>

Ale służy zapewne do asynchronicznego sterowania stanami danego pinu i ich powtórzeń.

Sprzętowy PWM

Do sterowania sprzętowym PWM w konsoli służy narzędzie pwm-exp. Jak wspominałem wcześniej tutaj posługujemy się numerami kanałów oscylatora wbudowanego w układ cebuli.

Sama cebula posiada 2 kanały CH0 (na pinie 18) i CH1 (na pinie 19) zaś do sterowania używamy numerów 0 i 1. Przed korzystaniem z oscylatora i generowania PWM musimy go w pierwszej kolejności uruchomić wydając polecenie

pwm-exp -i

Konstrukcja polecenia wygląda tak

pwm-exp [Opcje] <kanał><Procent wypełnienia>

Opcje jakie mamy dostępne to

  • -i - włączenie oscylatora
  • -s - wyłączenie oscylatora
  • -p - pozwala na ustawienie na określony czas w ms
  • -f - ustawia częstotliwość impulsów w Hz
  • -q - nie wyświetla informacji po wydaniu polecenia
  • -v - wyświetla dodatkowe informacje po poleceniu

Kanał możemy podać albo konkretny lub wybierając wszystkie dodając zamiast nr kanału all

pwm-exp all 50

Powyższe polecenie ustawia wszystkie kanały z częstotliwością 50Hz (domyślna gdy nie podajemy parametru z opcja -f) z wypełnieniem 50%. Sterowanie pojedynczym kanałem z ustawieniem np. częstotliwości 100Hz i wypełnieniu 70% wygląda tak

pwm-exp -f 100 0 70

Jak widać wykonałem również ustawienie 1 kanału z opcją -q dzięki czemu polecenie nie zwróciło nam informacji zwrotnych. Jak wspominałem gdy nie podajemy parametru -f odpowiadającego za częstotliwość polecenie ustawia jego wartość domyślną na 50Hz

Wyłączenie oscylatora możemy wykonać za pomocą opcji -s co wiąże się z zatrzymaniem ustawionych sprzętowych PWM-ów.

pwm-exp -s

omega2-ctrl

Za pomocą narzędzia omega2-ctrl możemy przełączyć tryby pinów GPIO przełączając np. funkcje UART, SPI czy I2C na zwykłe piny GPIO. Za pomocą poniższego polecenia możemy sprawdzić jak w obecnej chwili są ustawione grupy pinów funkcyjnych.

omega2-ctrl gpiomux get

Ustawione obecnie tryby znajdują się w nawiasach kwadratowych []. Aby zmienić tryb danych grup należy wykonać polecenie

omega2-ctrl gpiomux set <Grupa><Tryb>

Czyli np. gdy chcemy zmienić tryb dla pinów I2C na gpio musimy wykonać polecenie

omega2-ctrl gpiomux set i2c gpio

i analogicznie dla pozostałych.

Podsumowanie

Mam nadzieję, że przybliżyłem wam informację jak w prosty sposób sterować GPIO w cebulach. Pominąłem we wpisie narzędzie gpioctl, które ma dość małą funkcjonalność i jest wolniejsze niżeli fast-gpio. Myślę, że w późniejszym czasie przygotuje kolejny wpis już z konkretnym działającym przykładem. Muszę przyznać że cebula pomimo moich problemów z routerem wciągnęła mnie mocno i zamierzam zagłębiać się w jej możliwości z wykorzystaniem również bibliotek dla C, Javascript i Python-a. A więc do następnego wpisu.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.