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łączanym 230 V/8 A.
- Wyjście przekaźnikowe ze stykiem przełączanym 24 V/2 A.
- 2 wyjścia przekaźnikowe ze stykiem zwiernym 24 V/2 A.
- 2 wyjścia OC 5 V (z szeregowym rezystorem 100 Ω).
- Interfejs XBEE dla przedstawionych w EP zgodnych modułów komunikacyjnych.
- Zegar czasu rzeczywistego z podtrzymaniem bateryjnym DS1338.
- Złącze magistrali I²C (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łączane), 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 Ω) 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 I²C służy do przyłączenia modułów rozszerzeń I²C 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):
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):
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 I²C. 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ę I²C:
sudo apt-get install i2c-tools
Po zainstalowaniu, w pierwszej kolejności sprawdzamy w konsoli prawidłowe działanie I²C sudo i2cdetect -y 1. Powinno pojawić się urządzenie pod adresem 0x68, jest to nasz RTC – DS1338. Następnie ładujemy moduł zegara:
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:
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
- R1…R8, R15: 2,2 kΩ (SMD 0805)
- R9…R12: 10 kΩ (SMD 0805)
- R13, R14: 100 Ω (SMD 0805)
- RP1: 220 Ω (drabinka SMD CRA06)
- C1, C2, C9, C10: 0,1 µF (SMD 0805)
- C3…C6: 220 pF (SMD 0805)
- C7, C8: 10 µF (SMD 0805)
- CE1: 100 µF/10 V (SMD „B”)
- DZ1: P6SMB6.8A (Transil)
- LD…LD9: dioda LED SMD 0805
- IS1…IS4: LTV357
- U1: DS1338Z (SO8)
- U2: ULN2003 (SO16)
- U3: ADP2108AUJZ (SOT-23-5)
- U4: 74HC132 (SO14)
- BAT: oprawka KEYS300 SMD + Bateria CR1220
- GPIO: złącze IDC40 żeńskie
- I14: DG381-3.5-5 (złącze śrubowe 3,81 mm)
- I²C, O56: złącze EH kątowe
- L1: 2,2 mH (dławik DLJ4018 2,2 µH)
- O1, O2, O34: złącze ARK3/5 mm
- PWR: DG381-3.5-2 (złącze śrubowe 3,81 mm)
- RL1: przekaźnik RM96P-5V
- RL2: przekaźnik RM40P-5V
- RL3, RL4: przekaźnik RM40Z-5V
- RM: podstawka Xbee – dwie listwy 2×10/2 mm żeńskie
- XT: kwarc 32768 kHz (SMD)