WSTĘP
Zamówione części elektroniczne dotarły w końcu na miejsce, więc nadeszła pora na pierwsze testy.
Na początek zamówiłem min. :
trochę diod LED,
trochę kabelków połączeniowych (na początek póki nie wykorzystam Cobbler-a szczególnie przydadzą się kabelki męsko - żeńskie),
zestaw rezystorów,
wyświetlacz,
potencjometry,
przyciski,
kilka czujników (między innymi czujnik temperatury).
Dostałem też w prezencie używaną płytkę stykową (na 830 pól). Delikatnie stopiony kawałek ale działa :)
Z czasem przedstawię tu więcej szczegółów.
Do takich zabaw z RPI bardzo przydatna jest znajomość python-a, której
na tą chwilę nie posiadam (a raczej znam tylko zupełne podstawy), więc
ostatnio wolne chwile spędzam na dokształcaniu się z tego języka
programowania. W międzyczasie - krótko mówiąc - wykorzystałem gotowce z
internetu.
OSTRZEŻENIE !
Przy
podłączaniu wszelkich kabelków należy zachować ostrożność, gdyż może
zakończyć się to uszkodzeniem sprzętu lub uszczerbkiem na zdrowiu.
Robisz to na własną odpowiedzialność.
Na początek należy upewnić się, że mamy zainstalowane paczki:
python-rpi.gpio
python-dev
DIODA LED
|
Źródło: greenprophet.com |
Dioda LED - czyli w tym przypadku odpowiednik "hello world" dla programistów. Niemal każdy zaczyna od właśnie tego kroku.
O czym należy pamiętać?
Anoda (negativ) - to ta krótsza nóżka - nieraz ma "flat spot" - czyli płaski bok.
Katoda (positiv) - ta dłuższa.
Diody pracują z odpowiednimi parametrami. W moim przypadku (dla diody zielonej) to
Napięcie pracy: 2,3V
Prąd: 20mA
Jak
wiemy porty GPIO w RPI działają z napięciem 3,3V. Gdybyśmy podłączyli
bezpośrednio taką diodę do portu GPIO to najprawdopodobniej uległa by
ona uszkodzeniu. Należy więc dobrać odpowiedni rezystor.
Wzór jest bardzo prosty:
R=(V wyj - V led)/I led
czyli w tym przypadku:
R=(3,3-2,3)/0,02
0,02 - czyli 20mA
Wynik to 50 Ohm.
Najbliższa dostępna wartość (bezpiecznie trzeba brać wyższą) to 56Ohm i taki muszę dobrać rezystor.
Jeśli komuś niezbyt chc>e się liczyć może się posłużyć min. tym narzędziem:
Rezystory
po przesyłce są oczywiście opisane, ale jak gdyby ktoś nie wiedział
który ma wymaganą wartość możemy się posłużyć oznaczeniami. Zazwyczaj
rezystory mają 4 kolorowe paski i na ich podstawie możemy oszacować
wartość.
Oznaczenie kolorów:
0 - czarny
1 - brązowy
2 - czerwony
3 - pomarańczowy
4 - żółty
5 - zielony
6 - niebieski
7 - fioletowy
8 - szary
9 - biały
Pierwsze
2 wstęgi to wartość, trzecia to mnożnik, a czwarta to tolerancja (w tym
przypadku najczęściej spotykany jest kolor złoty, oznaczający +/- 5%).
Czyli np rezystor z paskami :
brąz czarny czerwony i złoty
Wyliczamy:
brąz (1), czarny (0) - czyli 10
czerwony to 2 - czyli mnożnik 100 (2 zera)
złoty +/- 5%
czyli rezystor może mieć wartości (10*100 +/- 5% ) - czyli 950 - 1050 Ohm, czyli ogólnie 1kOhm.
Oczywiście (znów) są narzędzia dla leniwych, np.
OK. Mamy diodę, rezystor i płytkę stykową z kabelkami.
Podłączamy
- w jednym rzędzie anoda diody oraz rezystor podłączony do
minusa. Minus płytki należy podłączyć do GND (ground) w RPI - np port 3 w
prawym rzędzie.
Przypomnę tylko że opis GPIO jest
TUTAJ
Następnie katodę diody podłączamy np do portu GPIO 14 w RPI - czyli 4 w prawym rzędzie.
Następnie
musimy utworzyć/skopiować skrypt obsługujący porty (może być w różnych
językach, ja wybrałem python-a).
Najpierw należy upewnić się, że mamy zainstalowane potrzebne pakiety:
apt-get install python-rpi.gpio python-dev
Przykładowy skrypt:
import RPi.GPIO as gpio
import time
#set up pin 14 as an output
gpio.setmode(gpio.BCM)
gpio.setup(14, gpio.OUT)
gpio.output(14, gpio.HIGH)
time.sleep(3)
gpio.output(14, gpio.LOW)
Ewentualnie zamiast 3 ostatnich linii możemy spróbować pętle:
while True:
gpio.output(14, gpio.HIGH)
time.sleep(3)
gpio.output(14, gpio.LOW)
time.sleep(3)
i dioda będzie migać dopóki nie przerwiemy.
TACT SWITCH
|
Źródło: toscos.com |
Dorzuciłem
również "momentary button", czyli przycisk powodujący przekazanie
sygnału tylko na czas wciśnięcia... Tu trzeba się upewnić, że każda (z
4) nóżka jest w osobnym rzędzie na płytce stykowej.
Układ:
nóżka pierwsza tact-a - do GPIO.17 w RPI (6 port z lewej), następnie poprzez rezystor 10k podłączamy do 3.3V, czyli 1port z lewej w RPI
druga nóżka tact-a do GND w RPI
Skrypt:
import RPi.GPIO as gpio
#set up pin 17 as an input
gpio.setmode(gpio.BCM)
gpio.setup(17, gpio.IN)
while True:
input_value = gpio.input(17)
if input_value == False:
print('Przycisk wcisniety...')
while input_value == False:
input_value = gpio.input(17)
Przy każdym wciśnięciu przycisku na konsoli pojawi się napis...
Przy okazji wspomnę, że w ten oto sposób możemy zrobić wyłącznik dla naszej Malinki. Czyli zamiast odcinać zasilanie przez wyciągnięcie kabla (co nie jest do końca przyjazne np dla karty SD), możemy zdefiniować czyste i bezpieczne wyłączenie systemu po wciśnięciu przycisku.
DIODA + TACT
czyli łączymy jedno z drugim...
zostawiamy układ tak jak powyżej (przy tact)
oraz znów anoda diody z rezystorem do innego portu GND
a katoda diody do portu GPIO 14 w RPI
Skrypt:
import RPi.GPIO as gpio
import time
#set up pin 14 as an output and 17 as input
gpio.setmode(gpio.BCM)
gpio.setup(14, gpio.OUT)
gpio.setup(17, gpio.IN)
while True:
input_value = gpio.input(17)
if input_value == False:
gpio.output(14, gpio.HIGH)
time.sleep(3)
gpio.output(14, gpio.LOW)
while input_value == False:
input_value = gpio.input(17)
spowoduje zapalenie diody na 3 sekundy po wciśnięciu guzika.
Podstawy więc zaliczone. Łatwizna.