niedziela, 26 stycznia 2014

Raspberry PI - sterowanie serwomechanizmem

W sieci można znaleźć co najmniej kilka metod sterowania serwomechanizmem za pomocą Raspberry PI.

Według mnie najwygodniejsze jest wykorzystanie biblioteki Servoblaster.

Biblioteka jest częścią pakietu PiBits, hostowanego na GitHub'ie.

Aby pobrać kod na Raspberry PI wykonujemy polecenie:

git clone https://github.com/richardghirst/PiBits/

Następnie przechodzimy do katalogu Servoblaster poleceniem:

cd PiBits/ServoBlaster/

Są dwie metody wykorzystania biblioteki. Może ona działać jako moduł jądra Linuksa, lub jako demon w przestrzeni użytkownika. Druga opcja jest według mnie zdecydowanie wygodniejsza i prostsza do wykorzystania, zatem zajmiemy się nią.

Na początek należy skompilować bibliotekę:

cd  user/
make

Po chwili będziemy mieli wykonywalny plik servod, którego opcje możemy wyświetlić poleceniem:

./servod --help

Możemy teraz przetestować działanie biblioteki uruchamiając ją poleceniem:

sudo ./servod

W tym momencie powinien być dostępny plik

/dev/servoblaster 

do którego będziemy wysyłać polecenia sterujące serwomechanizmami

Podłączmy zatem servo do Raspberry Pi
Pobór prądu serwomechanizmu jest zdecydowanie większy niż to co jest w stanie dostarczyć Raspberry PI, zatem w tym przypadku również konieczne jest wykorzystanie zewnętrznego źródła zasilania. Schemat podłączenia na płytce prototypowej wygląda następująco:



Bardzo ważne jest podłączenie servo i Raspberry PI do wspólnej masy.

Biblioteka servoblaster potrafi sterować maksymalnie ośmioma serwomechanizmami.
Mapowanie numerów silniczków na piny GPIO wygląda następująco:


0 on P1-7  GPIO-4
1 on P1-11 GPIO-17
2 on P1-12 GPIO-18
3 on P1-13 GPIO-21
4 on P1-15 GPIO-22
5 on P1-16 GPIO-23
6 on P1-18 GPIO-24
7 on P1-22 GPIO-25


Po podłączeniu serwomechanizmu możemy sprawdzić jego działanie.

Wydanie polecenia:


echo 0=50% > /dev/servoblaster

ustawi zerowe serwo - czyli to podłączone do pinu GPIO-4 (P1-7) w pozycję 50%.

Polecenie:

echo 1=10% > /dev/servoblaster


ustawi serwo nr 1 (pin GPIO-14) w pozycję 10%.
Można również podać komendę w postaci:

echo 0=150 > /dev/servoblaster

co spowoduje przesunięcie serwo nr 0 w pozycję 150 kroków.

Jeśli chcemy przesunąć serwomechanizm o względną wartość (czyli np o 20 kroków względem aktualnej pozycji), możemy wydać polecenie:

echo 0=+20 > /dev/servoblaster

Biblioteka ma dużo większe możliwości konfiguracji. Szczegóły można znaleźć w bardzo przejrzystej dokumentacji.

Do konfiguracji pozostała jeszcze jedna bardzo istotna rzecz - uruchamianie demona ./servod przy starcie Raspberry PI.

Aby to zrobić wydajemy polecenia:

cd /home/pi/PiBits/ServoBlaster/user/
sudo make install

Odpowiednie skrypty zostaną skopiowane do /etc/init.d i po restarcie komputera demon servod powinien wystartować automatycznie.

Działanie całego układu można zobaczyć na poniższym filmie:




2 komentarze:

  1. Bardzo podoba mi się Twój blog, który prowadzisz;). Ja z kolei zajmuję się prowadzeniem bloga-agregatora, który promuje najlepsze moim zdaniem blogi prawne. Będę wdzięczny, jeśli zechcesz zagościć na mojej liście, pozdrawiam

    OdpowiedzUsuń
  2. Mam problem z pobraniem biblotek z githuba, podczas pobierania wyskakuje prośba o podanie nicku po czym podanie hasła. Nie da się nic wpisać, jakieś propozycje?

    OdpowiedzUsuń