Uruchomienie pinów GPIO w Cubietruck i openHAB

Poniżej opisane jest, jak uruchomić pin’y GPIO na Cubietruck oraz jak można sterować GPIO z openHAB.  Osobiście miałem początkowo problemy z dedykowanymi bibliotekami openHAB do GPIO (org.openhab.io.gpio oraz org.openhab.binding.gpio), a gdy w końcu udało mi się je uruchomić nie były wystarczająco stabilne. Opisuję alternatywę do biblioteki GPIO, czyli wykorzystanie biblioteki exec (org.openhab.binding.exec) do sterowania GPIO. Biblioteka exec, umożliwia uruchamianie komend systemu operacyjnego z poziomu openHAB i to w zupełności wystarcza, żeby sterować pin’ami.

Krótkie wideo pokazujące, że działa 🙂

Poniższy opis bazuje na:
  • mikrokomputerze: Cubietruck (Cubieboard 3)
  • OS: Linux Armbian
  • openHAB 1.x
  • dokumentacji technicznej: http://docs.cubieboard.org/tutorials/common/gpio_on_lubuntu
Ogólny kroki, aby uruchomić i sterować pin’ami GPIO na Cubietruck
  1. Identyfikacja pin’ów, które chcemy używać
  2. Wskazanie w bootloader, które pin’y będziemy używać
  3. Aktywacja / deaktywacja pin’ów – skryptem opracowanym przeze mnie.
  4. Konfiguracja openHAB do sterowania pin’ami
  5. Opcjonalnie: dodanie aktywacji / deaktywacji pin’ów podczas uruchomienia / zamykania openHAB

1. Identyfikacja pin’ów, które chcemy używać

Poniżej zamieszczony jest schemat CubieTruck. Załóżmy, że potrzebujemy sterować pin’ami 5 i 7 na szynie CN8

cubietruck-pins

Kluczowe jest poznanie prawdziwej nazwy tych pin’ów, a następnie wskazanie ich w bootloader. W przypadku pin 7 nazwa jest PC20, a w przypadku pin 4 to PC19. Analogicznie przykładowo pin25 ma nazwę PB19 itd.

2. Wskazanie w bootloader, które pin’y będziemy używać

Uwaga: ta część jest dość kluczowa. Błędy tutaj popełnione mogą spowodować, że system operacyjny może przestać się ładować

Kroki:

  • montowanie partycji rozruchowej
  • zalecam wykonanie kopii plików, które będą modyfikowane
  • dodanie odpowiednich wpisów w pliku script.bin

zaczynamy:

montowanie partycji rozruchowej

  • W zależności, czy Twoja partycja rozruchowa jest na karcie SD, czy NAND, czy dysk SATA konieczne jest jej zamontowanie:

Przykład z kartą SD

Przykład z partycją w pamięci NAND

Teraz przejdziemy do katalogu, w którym zamontowaliśmy partycję rozruchową:

kopia zapasowa plików, które będziemy modyfikować

modyfikacja script.bin

Plik konfiguracyjny script.bin ma format binary. Aby go zmodyfikować konieczna jest konwersja z pliku binarnego na plik tekstowy. Można tego dokonać wykorzystując narzędzie bin2fex

Teraz otwieramy plik script.fex do edycji, przykładowo wykorzystując edytor nano

szukamy sekcji [gpio_para]

gpio_para1

W tej sekcji wpisujemy odpowiednio poniższe linie

  • gpio_pin_3 = port:PC20<0><default><default><1>
  • gpio_pin_4 = port:PC19<0><default><default><1>

Uwaga, kluczowe to:

  • podanie unikalnych numerów pin, przykładowo nr 3 i 4 – uwaga: te numery nie mają nic wspólnego z numerami pin na powyższym schemacie, ale o tego momentu będziemy się posługiwać już tylko tymi dwoma identyfikatorami (3,4).
  • podanie nazw pin’ów z powyższego schematu; w tym przypadku dla wybranych pin’ów, którymi chcemy sterować to PC20 i PC19
  • zwiększamy wartość parametru gpio_num o tyle ile dodajemy nowych pin’ów do konfiguracji. W tym przypadku dodajemy 2 pin’y, więc zwiększamy wartość parametru z 4 na 6.

 

gpio_para2

 

Ważne: Do dalszej konfiguracji zapamiętujemy, że pin na schemacie oznaczony jako nr 7 o nazwie PC19 będzie identyfikowany przez system operacyjny jako numer 3, a pin 5/PC20 ma numer 4

Zapisujemy i konwertujemy plik script.fex z tekstowego na binary i restartujemy system.

3. Aktywacja / deaktywacja pin’ów

Pin’y GPIO wymagają włączenia / aktywacji. Napisałem skrypt, który to automatyzuje.

Po skonfigurowaniu skryptu dostępne są komendy:

odpowiednio, aktywujące / deaktywujące pin’y GPIO.

4. Konfiguracja openHAB do sterowania pin’ami

Sterowanie pin’ami polega na ustawianiu niskiego lub wysokiego stanu na pin’ie (0,1)

Załączony skrypt umożliwia ustawianie tych stanów w następujący sposób

gdzie

  • PIN to numer pin’u identyfikowany przez system operacyjny w tym przypadku 3 lub 4
  • WARTOSC to
    • ON (ustawiający sygnał 5v)
    • OFF (brak sygnału)

przykłady

W tym momencie możemy konfigurować openHAB, aby sterował pin’ami GPIO

Przykładowy wpis w pliku konfiguracyjnym items.

  • gdzie path_to_script jest ścieżką do katalogu, w który znajduje się skrypt.

Tak zdefiniowany element w konfiguracji elementów openHAB (items) pozwala na sterowanie pin’em o identyfikatorze 3.

5. Dodanie aktywacji / deaktywacji pin’ów podczas uruchomiania / zamykania openHAB

Każdy reboot systemu operacyjnego powoduje, że konieczna jest ponowna aktywacja pin’ów GPIO. Proponuje zautomatyzować to przez dodanie wpisów do skryptu uruchamiającego openHAB.

W moim przypadku do pliku /etc/init.d/openhab wystarczy dodać wyróżnione linie

gpio_startup

 

Kilka wskazówek na koniec:

  • aby sterować GPIO trzeba posiadać uprawnienia root. To wymaga uruchomienia openHAB jako root. W przypadku problemów – jak? itp. odpowiem
  • skrypt oczywiście musi zostać skopiowany do Cubietruck i muszą mu zostać przydzielone uprawnienia do uruchamiania.

 

Skrypt:

  • Podgląd zawartości: tutaj
  • Do ściągnięcia spakowany do zip: tutaj

Wszystkie opcje:

  • start – aktywuje pin’u
  • stop – dezaktywuje pin’y
  • restart – dezaktywuje aktywne pin’y, a następnie aktywuje wszystkie pin’y
  • set PIN WARTOSC – ustawia stan pin’u o numerze PIN na WARTOSC (ON,OFF)
  • help – pokazuje pomoc

Konfiguracja:

  • to w zasadzie ustawienie numerów pin’ów, które powinny być aktywowane oraz ich wartość początkowa, parametry
    • PIN   – format w nawiasie po spacji wpisujemy numery pin’ów, które zostały ustawione w bootloader – w tym przykładzie 3 i 4
    • STATES – przyjmuje wartości 1 lub 0, kolejność umieszczenia ich w nawiasie odpowiada kolejności numerów pin w parametrze PIN

 

gpio_config

 

Jeśli masz pytanie zostaw je tutaj

Udostępnij
  • 1
    Share

adrian

Autor blog'a Smartny Dom

Może Ci się również spodoba

Dodaj komentarz

Proszę Zaloguj się aby komentować
  Subskrybuj  
Powiadom o