2012-12-24

Pierwsze kroki z elektroniką


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.

2 komentarze: