Płytka "automatyki domowej" dla Raspberry Pi Zero

Płytka "automatyki domowej" dla Raspberry Pi Zero
Pobierz PDF Download icon
Przedstawiona płytka umożliwia wykorzystanie Raspberry PI w wersji Zero w systemach domowej automatyki, w których niepotrzebna jest duża ilość GPIO, a ważna jest funkcjonalność i niewielkie wymiary.

Schemat ideowy modułu pokazano na rysunku 1. Ma on następujące funkcjonalności:
- 4 wejścia cyfrowe z optoizolacją (NPN).
- Wyjście przekaźnikowe ze stykiem przełącznym 230 V/8 A.
- Wyjście przekaźnikowe ze stykiem przełącznym 24 V/2 A.
- 2 wyjścia przekaźnikowe ze stykiem zwiernym 24 V/2 A.
- 2 wyjścia OC 5V (z szeregowym rezystorem 100 V).
- Interfejs XBEE dla przedstawionych w EP zgodnych modułów komunikacyjnych.
- Zegar czasu rzeczywistego z podtrzymaniem bateryjnym DS1338.
- Złącze magistrali I2C (3,3 V).

Do monitorowania sygnałów cyfrowych ze złącza I14, wykorzystany jest typowy układ separacji opartej o transoptor, filtr RC i bramkę Schmitta typu 74HC132 (U4). Układ eliminuje sprzętowo krótkie zaburzenia impulsowe ze styków mechanicznych. Szeregowo z diodą transoptora włączono LED sygnalizujący aktywność wejścia. Do polaryzacji wejść można użyć napięcia +5 V zasilającego moduł lub w wypadku wymaganej separacji galwanicznej – napięcie zewnętrzne. Wejścia przeznaczone są do sterowania w standardzie NPN. Wyjścia cyfrowe zrealizowane są w oparciu o przekaźniki, cewki przekaźników są sterowane za pośrednictwem bufora U2 typu ULN2003. Wyjście O1 zrealizowane jest na przekaźniku o zwiększonej obciążalności 230 V/8 A. Pozostałe wyjścia O2 (przełączne), O34 (zwierne/bistabilne programowo) mają obciążalność 24 V/2 A. Wyjścia przekaźnikowe mają sygnalizację stanu za pomocą LED. Dwa bufory są wyprowadzone na zł?cze O56 poprzez rezystory R13 i?R14 (100?ącze O56 poprzez rezystory R13 i R14 (100 V) i mogą służyć do bezpośredniego sterowania LED lub SSR. Dla realizacji komunikacji szeregowej, moduł wyposażono w złącze Xbee umożliwiające użycie szerokiej oferty modułów komunikacyjnych opisanych w EP. Moduły Xbee mają niezależny zasilacz oparty o przetwornicę obniżającą U3 typu ADP2108, co umożliwia stosowanie modułów RF o większej mocy nadajnika. Złącze I2C służy do przyłączenia modułów rozszerzeń I2C zasilanych napięciem 3,3 V. Moduł uzupełnia zegar czasu rzeczywistego U1 typu DS1338 jest przydatny w aplikacjach bez połączenia z zegarem wzorcowym.

Układ zmontowano na dwustronnej płytce drukowanej, której schemat montażowy pokazano na rysunku 2. Zmontowany moduł HAB jest stabilną płytą bazową, mocowaną w obudowie za pomocą 4 śrub M3, a płytka Raspberry PI Zero jest montowana jako moduł poprzez złącze pośrednie GPIO. Konstrukcja mechaniczna zapewnia dostęp do wszystkich złącz Raspberry PI oraz karty SD. Moduł zasilany jest poprzez gniazdo PWR, z zewnętrznego zasilacza 5 V/1 A.

Moduł nie wymaga uruchamiania. Szybkiego sprawdzenia poprawności działania możemy dokonać logując się do konsoli w trybie administratora: (sudo su). W celu odczytu wejścia należy wykonać następujące polecenia (dla np. GPIO 24 – IN1):

echo 24> /sys/class/gpio/export
cd /sys/class/gpio/gpio24
echo in > direction

Bieżący odczyt stanu gpio 24 wykonany jest poleceniem cat value. Aby sprawdzić działanie wyjść (GPIO 6 – OUT1):

echo 6> /sys/class/gpio/export
cd /sys/class/gpio/gpio6
ls
echo out > direction

Ustawienia wyjścia jest wykonywane poleceniem echo 1 > value. Jego zerowanie echo 0 > value. W podobny sposób należy sprawdzić pozostałe wejścia i wyjścia. Dla sprawdzenia działania portu szeregowego, najlepiej użyć modułu konwertera XbeeUSB i z PC zalogować się korzystając z SSH do Raspberry PI. W celu wykorzystania RTC konieczne jest dodanie obsługi magistrali I2C. W tym celu sprawdzamy czy w pliku sudo nano /etc/modules znajduje się definicja i2c-dev. Jeżeli nie, to musimy ją dodać, zapisać zmiany i zrestartować PI. Po uruchomieniu należy pobrać narzędzia odpowiadające za obsługę I2C:

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

Po zainstalowaniu, w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I2C sudo i2cdetect -y 1. Powinno pojawić się urządzenie pod adresem 0x68, jest to nasz RTC – DS1338. Następnie ładujemy moduł zegara:

sudo modprobe rtc-ds1307
sudo bash
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

Ustawienia czasu i daty systemowej dokonujemy poleceniem sudo date, zapis czasu systemowego do RTC wykonujemy poleceniem sudo hwclock –w, a sprawdzenia poprawności zapisu sudo hwclock –r. Aby czas systemowy po uruchomieniu PI był automatycznie aktualizowany musimy w pliku sudo nano /etc/modules dodać linię rtc-ds1307 i w pliku sudo nano /etc/rc.local dodać linie:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock –s

przed poleceniem exit 0. Przy kolejnym uruchomieniu PI, czas zostanie pobrany z RTC bez synchronizacji z zegarem sieciowym. Jeżeli wszystko działa poprawnie, moduł jest gotowy do zastosowania we własnej aplikacji.

Adam Tatuś, EP

 

Artykuł ukazał się w
Elektronika Praktyczna
październik 2016
DO POBRANIA
Pobierz PDF Download icon
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio październik 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich wrzesień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów