Dzięki uprzejmości firmy pamjgora.pl do naszego serwisu trafiła Karta przekaźnikowa PAM 3PK dla Raspberry Pi Model B+. Moduł ten pozwala nam sterować prądem o napięciu 125VAC dla 0,5A oraz 2A dla napięcia 30VDC (jeżeli potrzeba nam sterować urządzeniami pracującymi na napięciu 220V, firma ma w ofercie analogiczną kartę przekaźników dostępną tutaj). Karta przekaźnikowa posiada wbudowane 3 przekaźniki oraz diody LED sygnalizujące pracę każdego z nich. Znajdziemy na niej także oznaczone kolorem fioletowym złącza czujników temperatury i wilgotności, pracujące na protokołach komunikacji (I2C oraz 1-Wire).
To idealne rozwiązanie, aby w szybki sposób zacząć swoją przygodę z programowaniem portów GPIO oraz sterowaniem urządzeń/modułów pracujących na maksymalnym napięciu 125VAC, czyli np do zastosowań w robotach oraz instalacjach elektrycznych np. silniki bram, garaży, czy innych instalacji elektronicznych, gdzie potrzebujemy mieć kontrolę zdalną nad modułami.
Na początku jak przy każdym nowym obsługiwanym przez nas module polecamy przeczytać jego dokumentację techniczną.
Na poniższym obrazku przestawiliśmy własny opis płytki:
Piny GPIO oraz odpowiadające im przekaźniki na płytce:
K3 = GPIO9 K2 = GPIO10 K1 = GPIO22
- Stan Wyłączony
- Stan włączony
- Dodatkowe złącza czujników MTH-1 oraz CT-1
- Dodatkowe Złącze zasilania
- Przekaźniki
Na załączonym obrazku stan Włączony ma przekaźniki K3, do płytki podłączony jest czujnik temperatury, który można zakupić w sklepie pamjgora.pl.
UWAGA
Prosimy zastosować śrubki dystansujące z powodu „kiwania” się modułu w złączu GPIO, z którego powodu może dojść do zwarcia i uszkodzenia układów, a co gorsza narażenia użytkownika na utratę zdrowia lub życia.
W poradniku poniżej przedstawiamy parę sposobów sterowania modułem przekaźników:
- Biblioteka wiringPi
Więcej o bibliotece znajdziecie w naszym artykule
1. Process Instalacji
[bash]
git clone git://git.drogon.net/wiringPi
./wiringPi/build
[/bash]
2. Użytkowanie
- gpio -g mode PORT in – ustawia PORT w tryb pracy wejścia
- gpio -g mode PORT out – ustawia PORT w tryb pracy wyjścia
- gpio -g write PORT X – Pisze na PORT wartość podaną w parametrze (1=True,0=False)
- gpio readall – Odczytuje stany wszystkich Portów oraz ich nazwy
3. Piszemy własny skrypt w Bash
Nasz skrypt będzie włączał i wyłączał dowolną ilość razy przekaźniki w określonym odstępie czasu.
[bash]
#!/bin/bash
#Deklaracja portow wejscia
for port in 25 24 23
do
gpio -g mode $port in
done
#Deklaracja portow wyjscia
for port in 22 10 9
do
gpio -g mode $port out
done
for i in $(seq 1 $1)
do
echo "SEQ = "$i
for port in 22 10 9
do
#Napisz na port z listy wartoscia (ON)
gpio -g write $port 1
echo "ON "$port
sleep $2
#Napisz na port z listy wartoscia (OFF)
gpio -g write $port 0
echo "OFF "$port
done
done
[/bash]
4. Przykład użycia skryptu
[bash]sh relay.sh ILOSC_ITERACJI ODSTEP_MIEDZY_ITERACJAMI
sh relay.sh 10 2[/bash]
- Oprogramowanie dołączone przez producenta
1. Proces Instalacji
Do poprawnego działania potrzebujemy apache oraz php
[bash]apt-get install apache2 php5[/bash]
Pobieramy oraz wypakowujemy paczkę ze strony producenta
[bash]wget http://pamjgora.pl/mobil.zip
unzip mobil.zip
mv mobil/ /var/www/
[/bash]
2. Użytkowanie
Logujemy się do Panelu wpisując w adresie przeglądarki adres swojego serwera oraz katalog do którego wgraliśmy pliki (w naszym przypadku 192.168.1.1/mobil) poprzez hasło które jest zapisane w pliku Czytaj To.txt w folderze mobil (LOGIN: user HASŁO: OGA)
Po zalogowaniu się możemy od razu w pełni korzystać z funkcji dostępnych w Panelu.
- Własny skrypt w języku python (użycie Biblioteki RPi.GPIO)
1. Proces instalacji
Instalujemy paczkę według instrukcji w naszym poprzednim artykule
lub za pomocą polecenia apt-get
[bash]apt-get install python-rpi.gpio python3-rpi.gpio[/bash]
*Jeżeli zainstalowałeś bibliotekę WiringPi, możesz pominąć ten krok
2. Użytkowanie
Warte wyjaśnienia deklaracje:
- GPIO.setmode() – pozwala nam wybrać sposób odwołania się do portów GPIO
- BCM – opis nazw po portach GPIO
- BOARD – opis nazw po pinach na płytce drukowanej raspberry
- GPIO.setup – deklarujemy typ danego portu, WE/WY IN/OUT
- GPIO.cleanup() – Funkcja ta resetuje wszystkie piny GPIO i usuwa z nich domyślne napięcie 3,3V
Stany pinów oraz nazwy możemy odczytać za pomocą polecenia
[bash]gpio readall[/bash]
3. Piszemy własny skrypt w Python
[python]
import RPi.GPIO as GPIO
import time
import sys
GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
port_out=[22,10,9]
for port in port_out:
GPIO.setup(port, GPIO.OUT)
port_in=[25,24,23]
for port in port_in:
GPIO.setup(port,GPIO.IN)
def Blink(numTimes, speed):
for i in range(0,numTimes):
print "Iteration " + str(i+1)
for (i,port) in enumerate(port_out):
GPIO.output(port, True)
print "PORT",port,"=",GPIO.input(port_in[i])
time.sleep(speed/2)
time.sleep(speed)
for(i,port) in enumerate(port_out):
GPIO.output(port, False)
print "PORT",port,"=",GPIO.input(port_in[i])
time.sleep(speed/2)
time.sleep(speed)
print "Done"
GPIO.cleanup()
iterations=sys.argv[1]
speed=sys.argv[2]
Blink(int(iterations),float(speed))
[/python]
4. Przykład użycia skryptu
[bash]python relay.python ILOSC_ITERACJI ODSTEP_MIEDZY_ITERACJAMI
python relay.python 10 2[/bash]
- Podsumowanie
Plusy
- Działa tuż po wyjęciu z pudełka
- Brak potrzeby lutowania czego kolwiek
- Obsługa czujników 1Wire,I2C
Minusy
- Obsługa napięcia tylko 125VAC
- Mała ilość przekaźników do większych projektów
- Brak możliwości dołączenia innej podstawki pod port GPIO w tym samym czasie
W następnej części opiszemy działanie Przekaźników we współpracy z Arduino.
Zapraszamy także do zapoznania się z artykułem o Kontroli Zasilania poprzez inny moduł do Raspberry Pi.
Za wypożyczenie Raspberry Pi 2 Model B dziękujemy firmie Botland.com.pl.