Listwa przekaźników - nakładka do Raspberry Pi
Opis Produktu
Jeśli się tak zdarzyło, że posiadacie w domu Raspberry Pi (mikrokomputer rozmiaru karty kredytowej), to z pewnością zainteresuje was moduł, który umożliwia sterowanie aż czterema przekaźnikami wykorzystując jedynie 2 piny (oprócz zasilania) Raspberry. Wszystko dzięki komunikacji I2C! Co więcej, moduły można łączyć jeden do drugiego, sterując tak połączone moduły nadal tylko 2 liniami danych. Tak więc, jeśli chcecie zamienić wasze Raspberry Pi w uniwersalny kontroler/sterownik urządzeń większej mocy (zasilanych np. z sieci 230V) to ten moduł przekaźników jest do tego stworzony.
Specyfikacja:
- Wymaga jedynie 5 pinów Raspberry Pi (5V, 3V3, GND, SDA i SCL.)
- Wbudowany układ MCP23008 do komunikacji IIC co pozwala oszczędzić piny Raspberry Pi i łączyć moduły kaskadowo
- Wbydowany układ ULN2803 bezpośrednio sterujący przekaźnikami
- 4 wbudowane na płytce przekaźniki + możliwość dołączenia dodatkowych 4 poprzez terminal przewodowy
- Montowany powierzchniowo przełącznik pozwalający ustawić adres modułu przy łączeniu kaskadowym
- Wyprowadzenia pinów pasujące zarówno do modelu B, jak i B+
- 4 wbudowane diody statusu każdego z przekaźników
Uwaga! Dla większej elastyczności użycia, gniazdo pinów do podłączenia Raspberry PI nie jest wlutowane a jedynie włożone - nalezy je samodzielnie przylutować do płytki.
Instrukcja (przykład) użycia:
- Upewnij się, że twoje Raspberry Pi ma zainstalowane sterowniki do komunikacji IIC. Nowa dystrybucja Raspbian-a ma już wbudowane sterowniki I2C, natomiast są one domyślnie wyłączone. Aby je włączyć należy wykonać następujące kroki:
- w lini poleceń (np. w terminalu) wpisujemy:
sudo nano /etc/modprobe.d/raspi-blacklist.conf
-
po otwarciu pliku w edytorze wpisujemy znak # jako pierwszy w 3 (nie pustej) linii pliku (powinna odnosić się do i2c, np. i2c-bcm2708), w ten sposób wykomentujemy wpis wyłączający sterownik i2c
-
następnie edytujemy plik modules by dodać odpowiedni moduł do listy modułów ładowanych przy starcie systemu, robimy to wpisując:
sudo nano /etc/modules
-
po otwarciu pliku w edytorze dodajemy nową linię z zawartościa: i2c-dev
-
teraz nalezy zainstalować pakiet narzędziowy i2c-tools wpisująć w linii poleceń:
sudo apt-get install i2c-tools
-
ostatni krok to dodanie użytkownika "pi" do grupy i2c wpisując
sudo adduser pi i2c
-
restatrujemy Raspberry pi wpisując w linii poleceń:
sudo reboot
-
Podłącz moduł przekaźników do Raspberry Pi (można nawet bezpośrednio nałożyć moduł na piny Raspberry, zwracamy przy tym jednak uwagę na to by pin ze ściętym rogiem był podłączony do pinu z trójkącikiem na listwie przekaźników)
- Przetestuj moduł przekaźników uruchamiając następującą komendę (dla MCP23008 domyślny adres to 0x20, ale może się zdarzyć również inny, np 0x24, co widać będzie na poniżej pokazanym ekranie):
-
sudo i2cdetect -y 1
- Teraz należy zainstalować dodatkowy moduł python-a, w linii poleceń wpisujemy:
- Stwórz nowy plik
- Wklej poniżej podany kod
- Zapisz plik
- Ustaw prawa dostępu:
- Uruchom skrypt wpisując w linii poleceń:
Kod do wklejenia (Uwaga! wartość zmiennej "address" należy dostosować w zależności od wartości pokazanej w tabeli wynikowej polecenia i2cdetect, typowo jest to 0x20 lub 0x24):
#! /usr/bin/python
import smbus
import sys
import getopt
import time
#bus = smbus.SMBus(0) Rev 1 board
bus = smbus.SMBus(1) # New Rev 2 board
address = 0x20 # I2C address of MCP23008 visible in output from command: sudo i2cdetect -y 1
bus.write_byte_data(address,0x00,0x00) # Set all to outputs
# Handle the command line arguments
def main():
a = 0
delay = 1
while True:
# 4 - 8 is the binary number (1[zasłonięte]111 00) that attached relay
for x in range(4,8):
bus.write_byte_data(address,0x09,1 << x) # Turn relay on in turn
time.sleep(delay) # 1 second delay
bus.write_byte_data(address,0x09,0) # Turn relay off
if __name__ == "__main__":
main()
|
Jeśli podany kodzik ma problemy z wykonaniem się poprawnie, zmień linię:
stara wartość: for x in range(4,8)
nowa wartość: for x in range(1,4)
Wykoanie powyższego kodu będzie po kolei włączało i wyłączało przekaźniki i odpowiadające im diody statusu.