schema_001_LED_on_button
Programmer's notes

Świeci się!

0 57

Czyli jak zacząć z Raspberry Pi.

W ramach projektu Smart Lodówka wykorzystam różne czujniki, które będą podłączone do malinki. Do tego celu posłużą piny GPIO (General Purpose Input Output). Czyli piny wejściowe / wyjściowe ogólnego przeznaczenia. Innymi słowy, piny których w zależności od potrzeby możemy użyć jako wyjściowe bądź wejściowe. Ale też nie wszystkie. Niektóre mają specjalne przeznaczenie. W mojej wersji Raspberry Pi 2 model B, jest 40 pinów. Poniżej pokazane jest jak wyglądają oraz schemat numeracji BCM.

(grafiki ze strony https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/)

Rasp_pins_1 Rasp_pins_2Większość pinów jest właśnie ogólnego przeznaczenia (żółte na schemacie). Niektóre także są używane przy pewnych protokołach komunikacji ze sprzętem, których jeszcze nie znam. Jeszcze inne mogą służyć jako źródło zasilania do budowanego obok obwodu (pomarańczowe i czerwone). A jeszcze inne jako masa (czarne), czyli niskie napięcie, tzw. uziemienie, ziemia czy też po angielsku GND (ground).

Ok. to jak już wiemy czego będziemy używać to musimy wiedzieć co będziemy robić. Otóż pierwszy układ zbudowałem na płytce prototypowej, która pozwala łatwo i bez potrzeby lutowania, budować układy elektroniczne używając różnych elementów. Budowany układ jest bardzo prosty, zawiera tylko diodę LED oraz przycisk, który po naciśnięciu będzie tą diodę zapalał. Znaczy dokładniej, to będzie to sygnał do malinki, że musi zapalić diodę. Niestety nie posiadam przycisku, który mógłby do tego posłużyć, ale idea jego działania jest prosta. W stanie bezczynności (spoczynku) obwód jest rozłączony. W stanie aktywnym (po naciśnięciu), obwód jest zamknięty i płynie przez niego prąd. Łatwo mogę to zasymulować za pomocą dwóch kabelków, które będę stykał udając że ktoś naciska przycisk :) Dodatkowo, aby ograniczyć prąd płynący przez diodę potrzebujemy rezystor (o tym zapewne w kolejnych postach).

Poniżej schemat.

schema_001_LED_on_button

Jak to działa? Otóż każdy z pinów GPIO ma swój numer. Dzięki temu system operacyjny (w moim przypadku Raspbian) może sterować napięciem jakie znajdzie się na danym pinie. Jeżeli teraz podłączymy do tego pinu nasz obwód to możemy to napięcie traktować jako zasilenie. Czyli gdy na różnych schematach obwodów elektronicznych widzimy zasilanie, możemy tam wyobrazić sobie podpięty kablem pin GPIO malinki.

W drugą stronę podobnie. Chcemy odebrać “sygnał” z zewnątrz więc podajemy na pin wejściowy jakieś napięcie. Jeżeli obwód jest rozłączony, prąd nie płynie. Gdy jednak zamkniemy obwód (naciśniemy przycisk, zewrzemy kabelki), prąd popłynie, i system operacyjny wie, że ktoś chce przekazać informację: nacisnąłem przycisk.

Język Python na Raspberry do obsługi pinów GPIO posiada bibliotekę RPi.GPIO, która przekazuje do systemu informacje jak ustawić piny i jak nimi sterować.

Poniżej kod pierwszego bardzo prostego skryptu (https://github.com/creyn/Smart-Lodowka/blob/master/scripts/RaspberryPlayground/RaspberryPlayground/LED/001_LED_on_button.py):

Jak to działa? Na początku importujemy moduł czasu (linijka 3) oraz GPIO (linijki 5 – 8). Jeszcze nie skonfigurowałem do końca Visual Studio z Pythonem także nie posiadam modułu RPi.GPIO. Stąd linijki do odkomentowania przy wrzucaniu na malinkę. W kolejnym kroku ustalam numerację pinów. O samej numeracji napiszę jeszcze. Na razie wystarczy że ustawimy numerację na GPIO.BCM (linijka 16) oraz będę używał pinów 14 i 15 (na schemacie to kabelek czerwony i pomarańczowy, a uziemienie to kabelki czarne).

Oba piny należy skonfigurować. Pin 14 jako wyjściowy a 15 jako wejściowy (linijki 18 i 19). Głównym elementem skryptu jest nieskończona pętla, która sprawdza czy na wejściu pinu 15 jest stan niski (czyli naciśnięty przycisk – linijka 22). Jeżeli tak to wysyła na pin 14 wartość GPIO.HIGH (zapala diodę – linijka 24). Jeśli nie, to ją gasi. Pozwalamy też procesorowi odetchnąć i zatrzymujemy pętlę na chwilę.

Teraz wystarczy tylko skopiować skrypt na malinkę i uruchomić: python [nazwa_skryptu].

Muszę przyznać, że mimo iż jest to bardzo prosty skrypt to sprawił wiele frajdy. Fajne uczucie widzieć, że diodka miga :)

C.

Leave a Reply

DEV

Around Dev

My way of seeing

%d bloggers like this: