CC0 Public Domain (pixabay.com)

Poznajemy się z Raspberry Pi i budujemy środowisko uruchomieniowe cz. 1

Realizację projektu na DSP2017 rozpocząłem od skompletowania elementów oraz przygotowania środowiska uruchomieniowego, którego centralny element stanowi Raspberry Pi. Świat poznał tą platformę już przeszło 5 lat temu, a w oparciu o nią powstały zapewne tysiące projektów. Do sukcesu niewątpliwie przyczyniła się możliwość wejścia o co najmniej jeden poziom abstrakcji wyżej w tworzeniu oprogramowania. Podobnie sprawa wygląda z Arduino, gdzie do uruchomienia peryferiów wystarczą proste write() czy read() zamiast ustawiania bitów w rejestrach, jak to ma miejsce w przypadku tradycyjnego programowania mikrokontrolerów.

Raspberry Pi 3 Model B V1.2 w obudowie z kartą pamięci microSDHC 16 GB

Wersja RPI, którą posiadam oznaczona została numerem 3. Oznacza to tyle, że na jej pokładzie znajdziemy CPU Broadcom BCM2387 quad-core 64-bitowy ARM-8 Cortex-A53 1,2 GHz, 1 GB pamięci RAM, wbudowany moduł WiFI (802.11n) oraz Bluetooth 4.1. Ponadto do dyspozycji mamy m. in. 4 porty USB, gniazdo Ethernet i HDMI. Do tej pory może to przypominać konfigurację typowego laptopa (choć nie najwyższych lotów jak na obecne czasy), jest jednak wisienka na torcie: RPI posiada 40 pinów GPIO. To właśnie to sprawia, że RPI może mieć szerszy zakres zastosowania niż typowy laptop.

Zastosowania RPI są przeróżne od prostych stacji meteorologicznych poprzez systemy automatyki domowej opartej o protokół Z-Wave oraz systemy smart TV, aż do robotów i skanerów 3D. Z ciekawszych zastosowań można wymienić wykorzystanie RPI w sprzęcie wojskowym, choć jak przypuszczam, tylko w roli demonstratora technologii.

Jeśli mówimy o RPI, warto dodać, że platforma ciągle ewaluuje. Pod koniec lutego świat obiegła informacja o wypuszczeniu do sprzedaży płytki Raspberry Pi Zero W, która zawiera na pokładzie Bluetooth 4.1 oraz 802.11b/g/n Wireless LAN. Cena takiego modułu wynosić ma około $10.

Zadania, jakie chce przydzielić mojej malince, uczynią z niej prosty sterownik domowy. RPI będzie centralą, do której dołączone będą czujniki i układy wykonawcze. W przyszłości rozważam rozwiązanie, w którym każde pomieszczenie w mieszkaniu będzie miało swój własny sterownik oparty o platformę LaunchPad MSP430G lub Arduino, a Raspberry Pi będzie pełniło funkcję agregującą informacje ze wszystkich pomieszczeń oraz funkcję „okna na świat”.

W ramach projektu DSP2017 chcę wykorzystać te peryferia, które mam w szufladzie od dłuższego już czasu (czekały na lepsze czasy). Poniżej zamieszczam ich krótką charakterystykę.

  1. DS1820 to popularny układ scalony pełniący rolę czujnika temperatury. Zakres mierzonych przez sensor temperatur mieści się w przedziale od -55 °C do +125 °C, przez co będzie dobrze nadawał się do pomiaru temperatury na zewnątrz mieszkania (np. na balkonie). Sposób komunikacji oparty jest o interfejs 1-Wire.
    Czujnik DS18B20 z silikonowym przewodem

    Należy mieć na uwadze, że na rynku dostępne są dwa rodzaje czujnika, DS18S20 oraz DS18B20. Po szczegółowe różnice odsyłam na stronę producenta. Cena w polskich sklepach oscyluje w przedziale 4 ÷ 7 zł.

    Schemat podłączenia czujnika DS18x20 do mikrokontrolera

    Najprostszy sposób podłączenia czujnika wymaga podpięcia GND, zasilania +5 V DC oraz linii danych pomiędzy czujnikiem, a mikroprocesorem, po której odbywa się komunikacja. Na co należy zwrócić uwagę, wymagane jest podłączenie linii danych poprzez rezystor (4,7 kΩ) podciągający do zasilania.

  2. DHT11 jest czujnikiem zarówno temperatury i wilgotności. Posiada mniejszy zakres pomiarowy temperatury (0 °C ÷ 50 °C) niż DS18x20, natomiast pełni również rolę miernika wilgotności (20% ÷ 90% RH). Co prawda dokładność pomiarów nie jest nadzwyczaj precyzyjna (±5% RH i ±2 °C), jednak do pomiarów wartości w mieszkaniu jest to wystarczające. W przypadku obu parametrów, rozdzielczość jest 8-bitowa, co odpowiada 1% RH oraz 1 °C. Jeśli komuś zależy na lepszej dokładności pomiaru temperatury oraz szerszym zakresie pomiarowym obu parametrów, na rynku dostępny jest podobny czujnik DHT22.
    Moduł zawierający czujnik wilgotności i temperatury DHT11

    Posiadana przeze mnie płytka ma już na pokładzie wymagany rezystor podciągający linie danych do zasilania, co sprawia, że podłączenie do mikroprocesora jest jeszcze bardziej banalne – zasilanie, GND i linia danych. Może się zdarzyć, że wartość tego rezystora nie będzie odpowiednia. Przy długości przewodu poniżej 20 m, wartość ta powinna wynosić ok. 4,7 kΩ. Zobaczymy co wyjdzie, najwyżej będzie trzeba wymienić rezystor na inny. Koszt takiego gotowego modułu to około 14 zł. Jak to zazwyczaj bywa, lepiej kupić sam czujnik niezamontowany na module, wtedy koszt to około 6 ÷ 8 zł.

  3. Kontaktron jest łącznikiem elektrycznym sterowanym polem magnetycznym. Najczęściej tego typu czujniki możemy spotkać w systemach alarmowych jako najprostszy element ochrony drzwi i okien (te bardziej specjalistyczne to np. detektor wstrząsowy czy czujnik stłuczenia szyby). Posiadany przeze mnie element posiada styk typu NC, czyli przy braku magnesu styki są rozwarte.
    Czujnik drzwiowy HO-03G

    Pozostałe parametry:

    • Napięcie pracy: do 40 V
    • Prąd (maksymalny): 100 mA
    • Szczelina: do 15 mm
    • Złącze: zaciski śrubowe
    • Cena: ok. 6 ÷ 7 zł

    Czujnik kontaktronowy w moim stanowisku uruchomieniowym podłączyłem pomiędzy jeden pin GPIO, a GND.

  4. Przekaźnik jest elementem, który pozwoli sterować pracą wybranego odbiornika prądu, np. lampką nocną. W moim posiadaniu znajduje się moduł przekaźnika, kupiony za około 8 zł, zamontowany na dedykowanej płytce, na której znajdziemy również optoizolację, śrubowe gniazda oraz zworę umożliwiającą wybór poziomu sterowania (HI czy LOW).
    Moduł z przekaźnikiem SRD-05VDC-SL-C

    Cewka przekaźnika zasilana jest z 5 V DC, natomiast maksymalne obciążenie przy 250 V AC wynosi 10 A. Do podłączenia zasilania służą zaciski DC+ oraz DC-, natomiast zacisk IN należy podpiąć do wybranego wyprowadzenia Raspberri Pi. Od strony obciążenia dostępne są zaciski NO (normalnie otwarty), COM (wspólny) oraz NC (normalnie zamknięty).

  5. Triak z optotriakiem jest alternatywą dla układu z przekaźnikiem do włączania/wyłączania urządzeń zasilanych 230 V AC. Na forach w internecie można poczytać wiele dyskusji na temat co lepiej stosować. Fakty są takie, że przekaźnik jest elementem elektromechanicznym, którego styki mają określoną żywotność. Jeśli planujemy przełączać z bardzo dużą częstotliwością, lepszym rozwiązaniem może się okazać właśnie układ triaka z optotriakiem załączanym w zerze. Ponadto przełączanie przekaźnika może powodować zakłócenia i powoduje charakterystyczny odgłos „cykania”. Triak natomiast będzie się grzał przy dużych prądach, może zajść więc potrzeba dodatkowego chłodzenia, np. w postaci radiatora. Nie chciałbym w tym miejscu wchodzić głębiej w elektronikę, na pewno przy wyborze przekaźnik czy triak z optotriakiem należy wciąż pod uwagę moce, które chcemy przełączać i ich charakter.
    Układ triaka wspieranego przed optotriak z wbudowanym układem przełączania w zerze

    Co istotne, optotriak separuje galwanicznie obwód sterowania od obwodu z napięciem niebezpiecznym. Podczas korzystania z tego modułu będę musiał zwrócić uwagę na bezpieczeństwo, obudowa triaka jest pod napięciem sieci zasilającej! Schemat oraz szerzej opisany sposób działania można znaleźć tu lub tu.

  6. Czujnik PIR HC-SR501 jest czujnikiem podczerwieni, umożliwiającym wykrycie ruchu. Detekcja obiektu sygnalizowana jest stanem wysokim. Moduł czujnika ruchu może być wykorzystany w układzie z kamerą pstrykającą zdjęcie i wysyłające na serwer lub w układach automatycznego włączania oświetlenia. Koszt takiego czujnika wynosi około 10 zł. Dodatkowo w internecie można dokupić dedykowaną obudowę za około 6 zł. Bardziej profesjonalne czujniki kupimy w cenie powyżej 100 zł, przy czym należy zwrócić uwagę czy udostępniają sygnał o wykryciu na zewnątrz.
    Moduł z detektorem ruchu HC-SR501

    Pozostałe parametry:

    • Zasięg: do 7 m
    • Kąt pomiaru: do 100 °
    • napięcie wyjściowe: 0 V ÷ 3 V
    • Temperatura pracy: -15 °C ÷ 70 °C
  7. Czujnik zalania w moim wydaniu to nic innego niż para przewodów z rezystorem podciągającym o wartości 1 MΩ, która umożliwi wykrycie wody.
    Schemat podłączenia czujnika zalania do mikrokontrolera

    Dostępne są w sprzedaży moduły zawierające matrycę ścieżek. Podłączenie takiego elementu do wejścia analogowego umożliwia wykrycie poziomu cieczy. Raspberry Pi nie posiada wejść analogowych, więc aby zastosować taki moduł musielibyśmy podłączyć zewnętrzny przetwornik ADC. W moim przypadku nie zależy mi na poziomie, lecz jedynie na obecności, a do tego wystarczy wejście cyfrowe i pojedyncza para przewodów. Stan niski (LOW) będzie oznaczał zalanie czujnika.

    Czujnik zalania w postaci dwuprzewodowej

    Takiego rodzaju czujniki dostępne są również w sprzedaży jako elementy systemów alarmowych. Ich koszt jest zdecydowanie wyższy, nawet ponad 60 zł.

W tej chwili jestem na etapie „konfiguracji sprzętowej”. Moje stanowisko testowe możesz zobaczyć na zdjęciu poniżej. Zdaję sobie sprawę, że to jeszcze nie wygląda, ale obiecuję – coś z tym zrobię!

Tymczasowe(!) stanowisko testowe

Zbliża się koniec tego wpisu, jeśli dotrwałeś – gratuluję – Tobie i również sobie:) W kolejnej części opiszę jak wygląda uruchomienie tego „pająka”. Zacznę ożywiać po kolei wszystkie komponenty, czyli napiszę kilka skryptów w Pythonie pokazujących jak to działa. Będą to jednak bardziej testowe programy, jako rozgrzewka przed dalszymi pracami.

Literatura obowiązkowa:
Termometr cyfrowy DS18B20 i Arduino
Czujniki wilgotności i temperatury DHT11 i DHT22
Układ wykonawczy z triakiem (Mirley)
Układ wykonawczy z triakiem (Elektro-hobby)
Czujnik ruchu PIR HC-SR501
Arduino Water Level Indicator

Schematy przygotowano za pomocą programu CadSoft Eagle v. 6.6.0 for Linux.

One thought to “Poznajemy się z Raspberry Pi i budujemy środowisko uruchomieniowe cz. 1”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *