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.