- Wymagane składniki
- Schemat obwodu
- Konfiguracja kolby w Raspberry Pi do sterowania bramą garażową
- Tworzenie skryptu w języku Python dla inteligentnego mechanizmu otwierania drzwi garażowych
- Tworzenie strony HTML dla serwera Raspberry Pi
- {{pins.name}} {% if pins.state == true%} jest obecnie otwarte
W dobie IoT (Internet of Things), gdzie wszystkim można sterować zdalnie za pomocą smartfona, po co nosić ze sobą klucze. Istnieje wiele technologii wspierających bezprzewodowe sterowanie urządzeniami, takimi jak RFID, Bluetooth, Wi-Fi, LoRa. Wcześniej zbudowaliśmy kilka alarmów drzwiowych i obwód sterujący drzwiami do bezprzewodowego otwierania i zamykania drzwi:
- Zamek do drzwi Arduino RFID
- Automatyczne otwieranie drzwi za pomocą Arduino
- Magnetyczny obwód alarmu drzwi wykorzystujący czujnik Halla
- Alarm bezpieczeństwa drzwi oparty na IoT kontrolowany przez Asystenta Google
W tym samouczku zbudujemy inteligentny mechanizm otwierania drzwi garażowych przy użyciu Raspberry Pi. Tutaj zostanie utworzony serwer WWW Raspberry Pi do otwierania i zamykania bramy garażowej za pomocą smartfona.
Wymagane składniki
- Płytka Raspberry pi z zainstalowanym Raspbianem
- Moduł przekaźników
- Podłączanie przewodów
Zakłada się, że Twoje Raspberry Pi jest już flashowane z systemem operacyjnym i jest w stanie połączyć się z Internetem. Jeśli nie, postępuj zgodnie z samouczkiem Wprowadzenie do Raspberry Pi przed kontynuowaniem. Tutaj używamy Rasbian Jessie zainstalowanego Raspberry Pi 3.
Tutaj monitor zewnętrzny za pomocą kabla HDMI jest używany jako wyświetlacz do połączenia z Raspberry Pi. Jeśli nie masz monitora, możesz użyć klienta SSH (Putty) lub serwera VNC, aby połączyć się z Raspberry pi za pomocą laptopa lub komputera. Dowiedz się więcej o konfigurowaniu Raspberry Pi bez głowy tutaj.
Schemat obwodu
Podłączyć mechanizm otwierania bramy garażowej do wyjścia przekaźnika. Tutaj właśnie podłączyliśmy diodę LED z przekaźnikiem w celach demonstracyjnych.
Konfiguracja kolby w Raspberry Pi do sterowania bramą garażową
Tutaj stworzyliśmy serwer WWW za pomocą Flaska, który zapewnia sposób wysyłania poleceń ze strony internetowej do Raspberry Pi w celu sterowania robotem przez sieć. Flask pozwala nam uruchamiać nasze skrypty Pythona za pośrednictwem strony internetowej i możemy wysyłać i odbierać dane z Raspberry Pi do przeglądarki internetowej i odwrotnie. Flask to microframework dla Pythona. To narzędzie jest oparte na Unicode i ma wbudowany serwer programistyczny i debugger, zintegrowaną obsługę testów jednostkowych, obsługę bezpiecznych plików cookie i jest łatwe w użyciu, dzięki czemu jest przydatne dla hobbystów.
Uruchom następujące polecenia, aby zainstalować kolbę w swoim Raspberry Pi:
sudo apt-get update sudo apt-get install python-pip python-flask
Teraz uruchom polecenie pip, aby zainstalować Flask i jego zależności:
sudo pip install kolba
Możesz dowiedzieć się więcej o programowaniu za pomocą Flaska tutaj, również sprawdzić nasze poprzednie projekty, w których używaliśmy Flaska do sterowania robotem przez serwer WWW, wysyłania wiadomości ze strony internetowej do Raspberry Pi oraz wysyłania wartości wagi do Raspberry Pi w Smart Container.
Teraz napiszemy skrypt w Pythonie dla naszego serwera WWW do drzwi garażowych.
Tworzenie skryptu w języku Python dla inteligentnego mechanizmu otwierania drzwi garażowych
Ten skrypt będzie współpracował z naszymi GPIO Raspberry Pi i konfiguruje serwer WWW. To jest podstawowy skrypt naszej aplikacji. Kompletny skrypt Pythona do otwierania drzwi znajduje się na końcu, tutaj wyjaśniliśmy kilka jego części.
Najpierw utwórz folder. Wszystkie inne wymagane foldery powinny znajdować się tylko w tym folderze. Uruchom poniższe polecenia, aby utworzyć folder i utworzyć plik Pythona o nazwie app.py w tym folderze.
mkdir garage_door cd garage_door nano app.py
Otworzy się edytor Nano, w którym musimy napisać skrypt.
Zacznij od uwzględnienia ważnych bibliotek.
import RPi.GPIO jako GPIO z kolby import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Teraz utwórz słownik jako szpilki do przechowywania numeru, nazwy i stanu pinów. W zależności od potrzeb możesz użyć więcej niż jednego pinezki.
piny = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Następnie ustaw pin jako wyjście i początkowo zmniejsz go.
Dla pinów w pinach: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Teraz utwórz główną funkcję, aby odczytać stan pinu i zapisać ten stan w zmiennej.
@ app.route ("/") def main (): dla pinów w pinach: pins = GPIO.input (pin) ..
Musimy przekazać te dane do naszej strony html, abyśmy mogli kontrolować stan przycisku wejściowego.
return render_template ('main.html', ** templateData)
Teraz utwórz funkcję do obsługi żądań z adresu URL z numerem pin i działaniem w nim.
@ app.route ("/
Przekonwertuj pinezkę z adresu URL na liczbę całkowitą.
changePin = int (changePin)
Jeśli część adresu URL związana z akcją to „otwórz”, wykonaj następujące czynności.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
Możesz skopiować cały skrypt z końca tego samouczka i zapisać go za pomocą ctrl + x, a następnie nacisnąć enter. Skończyliśmy ze skryptem Pythona. Teraz musimy stworzyć stronę HTML do interakcji ze skryptem Pythona.
Tworzenie strony HTML dla serwera Raspberry Pi
W tym samym folderze garage_door utwórz kolejny folder o nazwie templates i wewnątrz tego folderu utwórz plik.html za pomocą poniższych poleceń.
szablony mkdir szablony cd nano main.html
W edytorze tekstu nano napisz kod html. Możesz edytować plik część strony i nadaj jej styl według własnego uznania. Właśnie użyłem schematu css innej firmy za pomocą tagu linku. Pełny kod HTML znajduje się poniżej:
Serwer sieciowy Garage Door
{% dla pinezek%}{{pins.name}} {% if pins.state == true%} jest obecnie otwarte
Tutaj ważną częścią jest utworzenie przycisku do otwierania i zamykania drzwi oraz przypisywanie stanu do przycisku otwierania i zamykania . Przycisk wyśle i pobierze stan GPIO ze skryptu Pythona.
Możesz użyć powyższego kodu HTML w edytorze i zapisać go. Teraz serwer WWW jest gotowy do uruchomienia.
Otwórz terminal i przejdź do folderu garage_door i uruchom poniższe polecenie
sudo python app.py
Otwórz przeglądarkę i wprowadź swój adres IP raspberry pi i naciśnij enter. Aby znaleźć swój adres IP, możesz uruchomić poniższe polecenie w terminalu.
nazwa hosta -I
Zobaczysz taką stronę.
Upewnij się, że moduł przekaźnika jest podłączony do raspberry pi. Naciśnij przycisk Open , aby włączyć przekaźnik lub otworzyć drzwi garażowe. Możesz również zobaczyć stan przekaźnika. Zaraz po włączeniu przekaźnika tekst przycisku zostanie zmieniony Zamknij, aby wyłączyć przekaźnik. Teraz po ponownym kliknięciu przycisku przekaźnik zostanie wyłączony, a tekst przycisku zostanie ponownie zmieniony na Otwórz .
Aby zatrzymać serwer, naciśnij ctrl + c.
Po prostu podłącz ten przekaźnik do jakiegoś mechanizmu otwierania drzwi, który jest łatwo dostępny na rynku i zacznij sterować bramą garażową za pomocą smartfona.
Film demonstracyjny znajduje się poniżej.