- Komponenter krävs
- Kretsschema
- Kolvinställning i Raspberry Pi för kontroll av garageport
- Skapa Python Script för Smart Garage Door Opener
- Skapa HTML-sida för Raspberry Pi webbserver
- {{pins.name}} {% if pins.state == true%} är för närvarande öppen
I denna tid av IoT (Internet of Things) där allt kan fjärrstyras med din smartphone, varför ta med dig nycklar. Det finns många tekniker för att stödja trådlös styrning av enheter som RFID, Bluetooth, Wi-Fi, LoRa. Vi har tidigare byggt några dörrlarm och dörrstyrningskretsar för att öppna och stänga dörren trådlöst:
- Arduino RFID dörrlås
- Automatisk dörröppnare med Arduino
- Magnetisk dörrlarmkrets med Hall-sensor
- IoT-baserat dörrsäkerhetslarm som styrs av Google Assistant
Här i den här handledningen bygger vi en Smart Garage Door Opener med Raspberry Pi. Här skapas en Raspberry Pi-webbserver för att öppna och stänga garageporten med din smartphone.
Komponenter krävs
- Hallon Pi-kort med Raspbian installerat i det
- Relämodul
- Anslutande ledningar
Det antas att din Raspberry Pi redan har blinkat med ett operativsystem och kan ansluta till internet. Om inte, följ guiden Komma igång med Raspberry Pi innan du fortsätter. Här använder vi Rasbian Jessie installerade Raspberry Pi 3.
Här används extern skärm med HDMI-kabel som skärm för att ansluta till Raspberry Pi. Om du inte har bildskärm kan du använda SSH-klient (Putty) eller VNC-server för att ansluta till Raspberry pi med en bärbar dator eller dator. Läs mer om hur du ställer in Raspberry Pi utan huvud här.
Kretsschema
Anslut garageportens öppningsmekanism till reläets utgång. Här har vi precis anslutit en LED med relä för demonstrationsändamål.
Kolvinställning i Raspberry Pi för kontroll av garageport
Här har vi skapat en webbserver med hjälp av Flask, som ger ett sätt att skicka kommandon från webbsidan till Raspberry Pi för att styra roboten över nätverket. Flask gör att vi kan köra våra python-skript via en webbsida och vi kan skicka och ta emot data från Raspberry Pi till webbläsaren och vice versa. Flask är en mikroram för Python. Detta verktyg är Unicode-baserat med inbyggd utvecklingsserver och felsökare, integrerat enhets teststöd, stöd för säkra kakor och dess enkla att använda, dessa saker gör det användbart för hobbyisten.
Kör följande kommandon för att installera kolven i din Raspberry Pi:
sudo apt-get uppdatering sudo apt-get installera python-pip python-kolv
Kör nu pip-kommandot för att installera Flask och dess beroenden:
sudo pip installera kolven
Du kan lära dig mer om programmeringen med Flask här, kolla även våra tidigare projekt där vi har använt Flask för att styra robot via webserver, skicka meddelandet från webbsidan till Raspberry Pi och skicka viktvärde till Raspberry Pi i Smart Container.
Nu ska vi skriva ett pythonscript för vår garageportwebbserver.
Skapa Python Script för Smart Garage Door Opener
Detta skript kommer att interagera med våra Raspberry Pi GPIO och ställa in webbservern. Så detta är kärnskriptet för vår applikation. Komplett Python-skript för dörröppnare ges i slutet, här har vi förklarat några delar av det.
Skapa först en mapp. Alla andra mappar som krävs måste endast finnas i den här mappen. Kör nedanför kommandon för att skapa mapp och skapa python-filen med namnet app.py i den här mappen.
mkdir garage_door cd garage_door nano app.py
Detta öppnar Nano-redigeraren där vi måste skriva manuset.
Börja med att inkludera viktiga bibliotek.
importera RPi.GPIO som GPIO från kolv importera kolv, render_template, begär app = kolv (__ name__, static_url_path = '/ static')
Skapa nu en ordbok som stift för att lagra stiftnummer, namn och stiftstatus. Du kan använda mer än en stift efter ditt behov.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Ställ sedan in stiftet som utgång och gör det initialt lågt.
För stift i stift: GPIO.setup (stift, GPIO.OUT) GPIO.output (stift, GPIO.LOW)
Gör nu en huvudfunktion för att läsa pin-tillstånd och lagra detta tillstånd i en variabel.
@ app.route ("/") def main (): för pin in pins: pins = GPIO.input (pin) ..
Vi måste skicka dessa data till vår html-sida så att vi kan kontrollera ingångsknappens tillstånd.
returnera render_template ('main.html', ** templateData)
Gör nu en funktion för att hantera förfrågningarna från URL: n med PIN-numret och åtgärden i den.
@ app.route ("/
Konvertera nålen från URL till ett heltal.
changePin = int (changePin)
Om åtgärdsdelen av webbadressen är "öppen" gör du följande.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
Du kan kopiera hela skriptet från slutet av denna handledning och spara det med hjälp av ctrl + x och tryck sedan på enter. Vi har gjort med python-skriptet. Nu måste vi skapa en HTML-sida för att interagera med python-skriptet.
Skapa HTML-sida för Raspberry Pi webbserver
Skapa en annan mapp med mallar i samma garage_door- mapp och inuti den här mappen gör du en.html-fil med kommandona nedan.
mkdir mallar cd mallar nano main.html
Skriv html-koden i nano- textredigeraren. Du kan redigera del av sidan och utforma den efter ditt val. Jag har just använt css-systemet från tredje part med hjälp av länktaggen. Den fullständiga HTML-koden ges nedan:
Garage Door webbserver
{% för stift i stift%}{{pins.name}} {% if pins.state == true%} är för närvarande öppen
Här är den viktiga delen att skapa en knapp för att öppna och stänga dörren och tilldela ett tillstånd för att öppna och stänga- knappen. Knappen skickar och hämtar GPIO-tillståndet från python-skriptet.
Du kan använda ovanstående HTML-kod i redigeraren och spara den. Nu är webbservern redo att starta.
Öppna terminalen och navigera till mappen garage_door och kör kommandot nedan
sudo python app.py
Öppna webbläsaren och ange din hallon pi IP-adress och tryck enter. För att hitta din IP-adress kan du köra kommandot nedan i terminalen.
värdnamn -I
Du kommer att se en sida som den här.
Se till att relämodulen är ansluten till hallon pi. Tryck på knappen Öppna för att slå på reläet eller för att öppna garageporten. Du kan också se reläets tillstånd. Så snart du aktiverade reläet ändras knapptexten Stäng för att stänga av reläet. Nu när du klickar på knappen igen kommer reläet att stängas av och knapptexten ändras till Öppna igen.
För att stoppa servern, tryck på ctrl + c.
Så anslut bara detta relä till någon dörröppnarmekanism, som är lätt tillgänglig på marknaden, och börja styra garageporten med hjälp av Smartphone.
En demonstrationsvideo ges nedan.