Prosty system inteligentnego domu dla każdego na bazie Raspberry Pi Zero – część 1

Share on facebook
Share on twitter
Share on linkedin
Czas czytania: 5 min.

Systemy inteligentnego domu coraz częściej możemy spotkać w polskich domach. Sterowanie urządzeniami, bezpieczeństwo i monitorowanie naszych czterech ścian to ciekawe i wygodne rozwiązanie, jednak ze względu na wysokie ceny gotowych systemów sporo osób decyduje się na instalowanie samych modułów do sterowania urządzeniami w domu. 

Dzisiaj sami zbudujemy system, który pozwoli na sterowanie domem przez Internet!

Główne założenia projektu:

  • Sterowanie urządzeniami zasilanymi z sieci,
  • Odczyt temperatury,
  • Prosta i wygodna konstrukcja,
  • Sterowanie i sprawdzanie stanu urządzeń w dowolnym miejscu na świecie.

Co będzie nam potrzebne?

Aby system zapewniał wygodną obsługę przez stronę www, zastosujemy uwielbiane przez elektroników Raspberry Pi Zero W – minikomputer, który zaskoczy Was pozytywnym stosunkiem ceny do jakości. Model z literą “W” posiada wbudowane Wi-Fi i Bluetooth, więc nie będziemy musieli martwić się o połączenie z Internetem. Oprócz minikomputera musimy zakupić przekaźniki do sterowania urządzeniami sieciowymi – tutaj zastosujemy gotowe moduły Grove, które podłączymy do nakładki na Raspberry Pi. W ten sposób ograniczymy problematykę prowadzenia przewodów do minimum. Aby zmierzyć temperaturę, która panuje w domu (lub poza nim, wybór pozostawiam Wam), niezbędny będzie czujnik temperatury. My zastosujemy popularny DS18B20. 

Dokładna lista zakupów mieści się poniżej.

Oprócz elementów elektronicznych przyda nam się lutownica, cążki do obcinania przewodów i oczywiście zapał do stworzenia własnego systemu!

Przygotowanie Raspberry Pi do pracy

Malina, podobnie jak komputery klasy PC czy laptopy, potrzebuje systemu operacyjnego. Systemu nie wgrywamy jednak na dysk twardy, a na kartę microSD. Zacznijmy od pobrania obrazu systemu ze strony Raspberry Pi. 

Dostępne wersje systemu

Mamy tutaj dostępne trzy wersje. W lewym dolnym rogu znajduje się wersja Lite, czyli najbardziej odchudzona i bez interfejsu graficznego. W prawym górnym rogu widoczna jest wersja z interfejsem graficznym, a w lewym górnym rogu – wersja z interfejsem graficznym i rekomendowanym oprogramowaniem. My pobieramy tę ostatnią, ponieważ większość programów, których będziemy używali, jest już domyślnie zainstalowana w systemie, dzięki czemu nie będziemy tracili czasu na dodatkowe pobieranie i instalację. Kiedy paczka z obrazem systemu się pobierze, możemy wówczas włożyć kartę microSD do czytnika tak, aby mógł ją odczytać komputer, na którym pobrana została paczka. 

Wgrajmy teraz na kartę pamięci system. Tutaj również operacja jest bardzo prosta. Zaczynamy od pobrania programu Etcher. Etcher jest oprogramowaniem, które umożliwia bezproblemowe wgrywanie obrazów systemu na karty pamięci. Po pobraniu i zainstalowaniu programu klikamy w nim na “Select Image” i wskazujemy lokalizację pobranej paczki z systemem. Następnie wybieramy “Select Drive” i wskazujemy naszą kartę pamięci. Na samym końcu klikamy “Flash!” i czekamy, aż obraz systemu wgra się na kartę pamięci.

Program do wgrywania obrazów na zewnętrzne nośniki - Etcher

Po wgraniu systemu zainicjujmy komunikację bezprzewodową. Otwieramy katalog Boot zapisany na karcie pamięci i tworzymy tam pusty plik bez rozszerzenia o nazwie ssh. Aby uniknąć problemów sprawdźmy, czy system pokazuje rozszerzenia plików. Możemy zmienić to klikając w “Widok”, następnie w “Opcje:”. Odznaczamy pole “Ukryj rozszerzenia znanych typów plików”. 

Tutaj klikamy prawym przyciskiem myszy na “Opcje”
...i odznaczamy “Ukryj rozszerzenia znanych typów plików”

Teraz możemy kliknąć na pole w folderze prawym przyciskiem myszy, wybrać “Nowy”, dalej wybrać “Dokument tekstowy” i nadać mu nazwę “ssh”, a rozszerzenie .txt usunąć. 

Ostatnim krokiem do prawidłowej komunikacji jest stworzenie połączenia z siecią Wi-Fi, czyli wskazanie malinie z jaką siecią ma się połączyć. Tutaj sytuacja jest również prosta, w folderze Boot tworzymy plik tekstowy wpa_supplicant.conf. Otwieramy go za pomocą edytora tekstu (możemy to zrobić za pomocą systemowego notatnika) i wpisujemy tą zawartość:

country=PL

update_config=1

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

network={

    ssid=”Wpisz tutaj swoją nazwę sieci”

    psk=”Tutaj wpisz swoje hasło”

    key_mgmt=WPA-PSK

}

W “ssid” wpisujemy nazwę sieci, a w “psk” hasło. Zadbajmy tutaj o brak literówek, ponieważ jeśli jakaś wystąpi, to Raspberry Pi nie połączy się z siecią. Po wszystkim plik zapisujemy i kartę wkładamy do maliny, a zasilacz podłączamy najpierw do gniazdka, a potem do złącza microUSB maliny przeznaczonego do zasilania. Teraz zaczyna się magia!

Dwa niezbędne do połączenia bezprzewodowego pliki.

Połączenie komputera PC z maliną

Raspberry Pi co prawda umożliwia podłączenie monitora, klawiatury i myszy, jednak my będziemy sterowali tym minikomputerem przez nieco większego brata, czyli przez PC lub laptopa.

Sprawdźmy, czy malina połączyła się z siecią bezprzewodową! Aby to zrobić, musimy wejść na panel konfiguracyjny routera (najczęściej pod adresem 192.168.1.1) i wyświetlić urządzenia połączone po Wi-Fi. Jeśli widać urządzenie o nazwie “raspberrypi” to znaczy, że wszystko się udało. Jeśli jednak malina się nie połączyła, to sprawdźmy, czy nie popełniliśmy literówki w pliku wpa_supplicant.conf – najczęściej to jest przyczyna problemu z połączeniem.

Prawidłowo przeprowadzona konfiguracja

Zainstalujmy teraz Putty. Jest to klient usług Telnet i SSH, który pozwala nam na wygodne połączenie się z maliną i sterowanie za pomocą terminala. Program możemy pobrać ze strony oprogramowania. Po zainstalowaniu włączamy program, w “Host Name” wpisujemy lokalny adres maliny, w “Port” wpisujemy 22, a po wszystkim klikamy “Open”.

Ekran konfiguracyjny programu Putty.

Gdy klikniemy “Open” pojawi nam się ekran logowania. Domyślne dane do logowania to:

login – pi

hasło – raspberry

I takie dane wpisujemy, a po zalogowaniu powinien przywitać nas taki widok:

Wygląd terminala w programie Putty po zalogowaniu.

Teraz zainstalujmy Apache. Jest to serwer www z bazą danych i interpreterem PHP. Aby zainstalować potrzebne programy, musimy zaktualizować system. Aktualizacja systemu ogranicza się do wprowadzenia kolejno trzech poleceń:

sudo apt update

sudo apt upgrade

Jeśli zainstalowany system nie jest aktualny, to aktualizacja może potrwać nawet godzinę.

Konfiguracja serwera

Teraz musimy zainstalować Apache. Aby to zrobić, wystarczy do terminala wpisać jedno polecenie, a mianowicie:

sudo apt install apache2 -y

Gdy w terminalu dostaniemy komunikat, że instalacja została zakończona, to możemy wówczas sprawdzić, czy serwer działa. Aby to zrobić wpisujemy w naszym komputerze lokalny adres maliny – w moim przypadku jest to “192.168.1.2”, po zatwierdzeniu enterem powinniśmy ujrzeć taki widok:

Prawidłowo działająca strona na serwerze.

Byśmy mogli teraz odczytywać strony ze skryptami w języku PHP, musimy zainstalować interpreter PHP.  Wpisujemy w terminalu:

sudo apt install php -y

Po zainstalowaniu warto zresetować Apache. Aby to zrobić wpisujemy:

sudo service apache2 restart

Po restarcie usług należy zainstalować oprogramowanie, które będzie obsługiwać bazy danych. Co prawda sposób wykorzystania przez nas bazy jest banalny, jednak dzięki obsłudze baz możemy dodać później różne udogodnienia i narzędzia statystyczne. Aby dodać narzędzie baz danych wraz z oprogramowaniem, które pozwoli na zarządzanie nimi w php, musimy wprowadzić polecenia:

 

sudo apt install mariadb-server -y

sudo apt install php-mysql -y

 

Po zainstalowaniu znowu resetujemy serwer, aby zmiany zostały wprowadzone. Teraz musimy stworzyć nowego użytkownika dla bazy danych. Aby to zrobić, musimy zalogować się na konto domyślnego użytkownika, czyli roota. Do zalogowania używamy poniższego polecenia:

 

sudo mysql –user=root

 

Teraz na ekranie możemy zobaczyć, jak konsola systemu przechodzi do programu MariaDB, czyli interpretera baz danych. Stwórzmy nowego użytkownika – nazwiemy go “domownik”, do logowania będzie używał hasła “domek”.

 

CREATE USER ‚domownik’@’localhost’ IDENTIFIED BY ‚domek’;

Aby nowy użytkownik mógł zarządzać bazami musimy nadać mu uprawnienia, wpisujemy zatem polecenie:

GRANT ALL PRIVILEGES ON *.* TO ‚domownik’@’localhost’;

Teraz kliknijmy CTRL+C, aby wyjść z programu (ten skrót powoduje zakończenie działającego procesu; śmiało możemy używać go też w innych sytuacjach). 

Teraz zainstalujemy interpreter graficzny do obsługi baz danych. Nazywa się phpMyAdmin i znacząco ułatwi nam pracę z bazami danych. Dzięki oprogramowaniu phpMyAdmin możemy tworzyć bazy danych w wygodnym interfejsie graficznym. Do instalacji użyjemy znanego nam już polecenia “sudo apt install”, jednak tym razem na końcu dodajemy “phpmyadmin”, aby polecenie wyglądało tak:

 

sudo apt install phpmyadmin

 

Teraz uruchomi się instalator. W pierwszym oknie wybieramy nasze środowisko, czyli apache2, w następnym oknie klikamy “ok”, a w ostatnim wybieramy “no”.

 

Teraz wykonajmy jeszcze jedną operację, dzięki której będziemy mieli dostęp do phpMyAdmina pod adresem /phpmyadmin. Aby to zrobić wpisujemy polecenie:

 

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

 

Na koniec zresetujmy serwer i z drugiego komputera podłączonego do tej samej sieci wejdźmy na adres: adres_lokalny_rpi/phpmyadmin (oczywiście musimy wpisać nasz rzeczywisty adres, w moim wypadku będzie to 192.168.1.2/phpmyadmin). Operację zatwierdzamy enterem. Teraz powinniśmy zobaczyć obraz taki jak poniżej. Do zalogowania użyjemy danych naszego “domownika”.

Widok narzędzia phpMyAdmin.

Stwórzmy teraz bazę danych. W lewym górnym rogu klikamy “Nowa”, pola uzupełniamy jak poniżej, bazę nazywamy“sterowanie”, a kodowanie znaków ustawiamy na utf8_general_ci.

Kreator tworzenia bazy danych.

Pokaże nam się teraz kreator tworzenia tabeli. W nazwie wpisujemy “przekazniki”, w liczbie kolumn wybieramy “2”.

Kreator tworzenia tabeli.

Po zatwierdzeniu program przeniesie nas do ustawienia kolumn, które powinny być uzupełnione jak poniżej.

Prawidłowo wypełnione ustawienie kolumn.

Gdy stworzyliśmy już tabelę, to klikamy na przycisk z napisem “SQL” na górnym pasku i w pole tekstowe wpisujemy poniższe zapytanie. Później klikamy “Wykonaj”.

INSERT INTO `przekazniki`(`przekaznik`, `stan`) VALUES (‚przekaznik1′,’0’), (‚przekaznik2′,’0’), (‚przekaznik3′,’0’), (‚przekaznik4′,’0’)

Zapytanie SQL.

Stworzyliśmy dzisiaj serwer, skonfigurowaliśmy bazę danych i stworzyliśmy w niej tabelę, dzięki której będziemy mogli odczytywać stan przekaźników. W następnej części stworzymy testowy układ i wgramy działającą stronę internetową.

Zapraszamy do części drugiej poradnika:

Podziel się:

Share on facebook
Share on linkedin
Share on twitter
Marcin Lesiński

Marcin Lesiński

Miłośnik elektroniki, druku 3D i nauk stosowanych, swoją wiedzę gromadzi od 14-tego roku życia. W Botlandzie tworzy projekty i poradniki dla klientów, a w wolnym czasie zajmuje się automatycznymi uprawami i prototypowaniem. Fan muzyki rockowej i brytyjskiego kina.
Marcin Lesiński

Marcin Lesiński

Miłośnik elektroniki, druku 3D i nauk stosowanych, swoją wiedzę gromadzi od 14-tego roku życia. W Botlandzie tworzy projekty i poradniki dla klientów, a w wolnym czasie zajmuje się automatycznymi uprawami i prototypowaniem. Fan muzyki rockowej i brytyjskiego kina.

Zobacz więcej:

Dodaj komentarz