sterowanie GPIO Raspberry Pi z poziomu przeglądarki internetowej (strony www)

Raspberry Pi posiada 8 dowolnie programowalnych linii I/O + UART (port szeregowy) + I2C + SPI (do wykorzystania również jako zwykłe piny IO). Wszystko (wraz z liniami zasilającymi oraz masy) wyprowadzone na złącze P1 (jest jeszcze kilka linii I/O na innych portach, ale o nich kiedy indziej + nie do wszystkich jest łatwy dostęp).

Ponieważ dostęp do w/w linii jest bezpośredni, to można (i jest nawet wskazane) podłączać różne urządzenia do tego portu, zaś sterowanie rozwiązać np.: poprzez stronę internetową.

Oczywiście dla wytrawnych programistów dostępnych jest cała gama języków programowania + biblioteki umożliwiające prosty dostęp do I/O. Zaś dla osób mniej obeznanych (oraz takich jak ja, czyli dopiero wchodzących w świat języków wysokiego poziomu) na początek zaleca się skorzystanie z gotowych lub pół-gotowych rozwiązań.

I tutaj przychodzi na ratunek WEBIOPI, czyli framework oraz aplikacja webowa pozwalająca na kontrolowanie liniami GPIO z poziomu przeglądarki internetowej.

Instalacja jest bardzo prosta. Konfiguracja również. Pozostaje tylko ustawienie własnego portu, na którym można apkę wypuścić na świat + przekierowanie na routerze i można się bawić.

Bardziej rozbudowany opis webiapi można znaleźć na stronie: http://pccode.pl/raspberry-pi-i-zestaw-duzego-masterkowicza/, gdzie jest przy okazji opis jak podłączyć diody LED poprzez układ ULN.

Pełen opis portów oraz przykłady kodów sterujących nimi dostępny jest tutaj: http://elinux.org/Rpi_Low-level_peripherals. Co ciekawe, przykładowe kody rozpisane są na języki (i powłokę) sh, C, Perl, C#, Ruby i Basic.

Kolejnym ciekawym rozwiązaniem jest podłączenie RPi i zarządzanie nim poprzez port szeregowy. Opis można znaleźć tutaj: http://elinux.org/Rpi_Low-level_peripherals. W sumie port RS można wykorzystać również w drugą stronę (i o ile nie mamy innego portu RS w domu), to przy pomocy tego z RPi odratować na przykład router, który po „update” przestał odpowiadać po protokole http.

RPi to nie tylko 3 w/w interfejsy. Wystarczy chwilę pokombinować i już mamy 1Wire, a na nim zegary RTC, pamięci eeprom, czujniki temperatury i inne gadżety od Dallas… tfu… Maxim Integrated. W projekcie: http://techfreak.pl/nettemp/ wykorzystanych zostało kilka czujników DS18B20, które nie wymagają kalibrowania i posiadają względnie dobrą dokładność.

Na koniec jeszcze opis kolegi Spychalskiego: http://www.spychalski.info/2013/01/12/obsluga-magistrali-i2c-raspberry-pi z manualem do obsługi magistrali I2C. Co prawda w projekcie wykorzystany jest jakiś przetwornik A/C, ale nic nie stoi na przeszkodzie, żeby podłączyć kilka PCF8574, który da nam n x 8 (każdy układ to expander i2c na 8bit) portów I/O dodatkowo.

6 odpowiedzi do “sterowanie GPIO Raspberry Pi z poziomu przeglądarki internetowej (strony www)”

    1. a jednak uległeś:) / kup od razu trochę szybszą pamięć SD, a gdybyś miał problem z położeniem obrazu, to pisz – namęczyłem się trochę z tym, ale śmiga!

      1. Od zawsze byłem dzieckiem Windowsa, ale mam za sobą kilka podejść do Linuksów. Co prawda nadal nie jestem w stanie sobie sam poradzić z większymi problemami, ale sama konsola i grzebanie w configach nie są mi obce.

        Kwestia dorwania dobrego tutoriala – a widzę, że w polskiej sieci zaczęły się już takie pojawiać odnośnie RPi. Kiedyś nawet Gennto udało mi się postawić od stage1 lecąc strona po stronie przez całego manuala 😉

        Ale jasne – jak coś, będę Cię męczył (albo zaraz na swoim forum dorobię dział Raspberry Pi i będę męczył forumowiczów;)

  1. Cześć.

    Napisałeś, ze Raspberry Pi ma 8 dowolnie programowalnych linii I/O. Domyślnie jako „zwykłe” I/O pracuje 15 z 17 linii (GPIO 14 i 15 ustawione są jako UART). I2C, czy SPI sa to funkcje alternatywne linii i aby z nich skorzystać, tzreba najpierw zmienić ich tryb pracy tak samo, jak funkcję linii UART można zmienić na zwykłe linie I/O. 🙂

    Masz jakieś pomysły na wykorzystanie RPi?

    1. @Daniel – dlatego napisałem w nawiasie, że można wykorzystać jako zwykłe GPIO. Może lekko niefortunne stwierdzenie, ale chciałem podkreślić uniwersalność.

      Pomysły tak, cały worek. Podstawowy to host dla pseudo smart-gridowej sieci w domu (sterowanie różnymi urządzeniami domowymi, monitoring video mieszkania, etc). Na razie nadrabiam zaległości w konsoli linuksowej oraz mam w końcu motywację do ogarnięcia Pythona. (jak na znikomą ilość wolnego czasu, to i tak nieźle) 🙂

      Z innych pomysłów to chciałbym zrobić mały komputerek pokładowy do samochodu (rejestracja trasy, przyspieszenia, może video).

      1. Mi chodziło tylko o to, aby czytelnik nie pomyślał, ze jest tam tylko 8 I/O. Info o 17 I/O, ale z alternatywnymi funkcjami brzmi o wiele czytelniej i pełniej 🙂

        Co do pomysłu sieci jestem mocno zainteresowany.
        Sam na dniach chcę zamówić kilka ATmega i pokombinować z I2C i SPI w połączeniu z RPi. Jeśli chcesz komunikację zrealizować inaczej, z chęcią poczytam.
        Ze swojej strony też na pewno na blogu opiszę co i jak 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.