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ń 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień - październik 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje wrzesień 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich wrzesień 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów