Raspberry PI i Arduino – bezprzewodowo

Po udanym połączeniu dwóch jednostek Arduino poprzez moduł nRF24L01+ narobiłem sobie apetytu na połączenie bezprzewodowe Arduino z Raspberrym i uczynienie z RPI koncentratora zbierającego rozmaite dane.

Krok po kroku podążałem za artykułem Communicating from low power Arduino to Raspberry Pi via NRF24L01 . Po drodze potknąłem się kilka razy i o tym jest ten post.

Strona Raspberry

Aktualizacja firmware…

…przebiegła poprawnie. Niestety po restarcie nie były widoczne urządzenia /dev/spidev0.0 oraz /dev/spidev0.0 . W związku z tym dodałem do /etc/modules 2 linijki:

i po kolejnym restarcie było już tak jak być powinno.

Drutowanie

Tutaj nie natrafiłem na żadną pułapkę. Użyłem 7 kolorowych przewodów i całość prezentuje się tak:

nrf24l01 połączony z raspberry pi

Instalacja biblioteki i uruchomienie przykładowego programu

Aby uruchomić przykład należy zmodyfikować plik rpi-hub.cpp. Po pierwsze – czego nie znalazłem w przewodniku – należy prawidłowo skonfigurować linie CE i CSN. Zgodnie ze schematem połączeń powinno to wyglądać tak:

Reszta zmian w pliku to modyfikacja metody main a nie setup jak przewodniku. Osobiście wybrałem kanał 2 zamiast 70.

Po skompilowaniu i uruchomieniu pojawiły się jakieś sensowne wartości, więc ogłaszam sukces tego etapu.

Strona Arduino

Biblioteka RF24

W sieci znalazłem wiele odmian biblioteki do komunikacji. Początkowo używałem biblioteki Mirf wspomnianej na Arduino Playground, ale we wspomnianym powyżej przewodniku autor używa RF24.

Biblioteka używana po stronie RPi okazała się nieco inna od tej, której potrzebowałem. Jej autor, Stanley Seow opublikował także wersję dla arduino jednakże jest to zmieniona wersja Mirf. W końcu odnalazłem https://github.com/gcopeland/RF24 i było to to, czego mi potrzeba…. Prawie. W testach okazało się, że znalazłem drobne nieścisłości. Oto moja wersja biblioteki: https://github.com/isukces/RF24 .

Instalacja: Po pobraniu źródeł, cały folder RF24 należy przenieść do katalogu bibliotek Arduino, np. C:\Program Files (x86)\Arduino\libraries.

 Przykładowy program

Przykładowy szkic, którego kod zamieszczam poniżej ruszył praktycznie od pierwszej kompilacji.