- Komponenter, der kræves
- Kredsløbsdiagram
- Kolbeopsætning i Raspberry Pi til styring af garageporten
- Oprettelse af Python Script til Smart Garage Door Opener
- Oprettelse af HTML-side til Raspberry Pi Webserver
- {{pins.name}} {% if pins.state == true%} er i øjeblikket åben
I denne tidsalder med IoT (Internet of Things), hvor alt kan fjernstyres ved hjælp af din smartphone, hvorfor bære nøgler med dig. Der er masser af teknologier til understøttelse af trådløs styring af enheder som RFID, Bluetooth, Wi-Fi, LoRa. Vi har tidligere bygget nogle døralarmer og dørstyringskredsløb for at åbne og lukke døren trådløst:
- Arduino RFID dørlås
- Automatisk døråbner ved hjælp af Arduino
- Magnetisk døralarmkreds ved hjælp af Hall-sensor
- IoT-baseret dørsikkerhedsalarm styret af Google Assistant
Her i denne vejledning bygger vi en Smart Garage Door Opener ved hjælp af Raspberry Pi. Her oprettes en Raspberry Pi-webserver, der åbner og lukker garageporten ved hjælp af din smartphone.
Komponenter, der kræves
- Hindbær pi bord med Raspbian installeret i det
- Relæmodul
- Tilslutning af ledninger
Det antages, at din Raspberry Pi allerede har blinket med et operativsystem og er i stand til at oprette forbindelse til internettet. Hvis ikke, følg vejledningen Kom godt i gang med Raspberry Pi, inden du fortsætter. Her bruger vi Rasbian Jessie installeret Raspberry Pi 3.
Her bruges ekstern skærm ved hjælp af HDMI-kabel som skærm til at oprette forbindelse til Raspberry Pi. Hvis du ikke har skærm, kan du bruge SSH-klient (Putty) eller VNC-server til at oprette forbindelse til Raspberry pi ved hjælp af bærbar computer eller computer. Lær mere om opsætning af Raspberry Pi uden hoved her.
Kredsløbsdiagram
Tilslut garageportens åbningsmekanisme til relæets udgang. Her har vi netop tilsluttet en LED med relæ til demonstrationsformål.
Kolbeopsætning i Raspberry Pi til styring af garageporten
Her har vi oprettet en webserver ved hjælp af Flask, som giver en måde at sende kommandoerne fra websiden til Raspberry Pi for at kontrollere robotten over netværket. Flask giver os mulighed for at køre vores python-scripts gennem en webside, og vi kan sende og modtage data fra Raspberry Pi til webbrowser og omvendt. Flask er et mikrorammer til Python. Dette værktøj er Unicode-baseret med indbygget udviklingsserver og debugger, integreret enhedstestesupport, understøttelse af sikre cookies og det er let at bruge, disse ting gør det nyttigt for hobbyisten.
Kør følgende kommandoer for at installere kolben i din Raspberry Pi:
sudo apt-get opdater sudo apt-get install python-pip python-kolbe
Kør nu pip-kommandoen for at installere Flask og dens afhængigheder:
sudo pip installer kolbe
Du kan lære mere om programmeringen ved hjælp af Flask her, se også vores tidligere projekter, hvor vi har brugt Flask til at kontrollere robotten via webserver, sende beskeden fra websiden til Raspberry Pi og sende vægtværdien til Raspberry Pi i Smart Container.
Nu vil vi skrive et python-script til vores garageporte-webserver.
Oprettelse af Python Script til Smart Garage Door Opener
Dette script vil interagere med vores Raspberry Pi GPIO'er og opsætte webserveren. Så dette er kerneskriptet til vores ansøgning. Komplet Python Script til døråbner er givet i slutningen, her har vi forklaret nogle få dele af det.
Opret først en mappe. Alle andre krævede mapper skal kun være i denne mappe. Kør under kommandoer for at oprette mappe og opret python-fil med navnet app.py inde i denne mappe.
mkdir garage_door cd garage_door nano app.py
Dette åbner Nano-editoren, hvor vi skal skrive scriptet.
Start med at medtage vigtige biblioteker.
importer RPi.GPIO som GPIO fra kolbe import Kolbe, render_template, anmodning app = Kolbe (__ navn__, static_url_path = '/ statisk')
Opret nu en ordbog som stifter for at gemme pin-nummer, navn og pin-tilstand. Du kan bruge mere end en pin efter dit behov.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Indstil derefter stiften som output, og lav den til at begynde med lavt.
Til pin i pins: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Nu gør en hovedfunktion at læse pin tilstand og gemme denne tilstand i en variabel.
@ app.route ("/") def main (): for pin i pins: pins = GPIO.input (pin) ..
Vi er nødt til at videregive disse data til vores html-side, så vi kan kontrollere tilstanden til input-knappen.
returner render_template ('main.html', ** templateData)
Nu gør en funktion til at håndtere de anmodninger fra URL'en med pinkode og handling i den.
@ app.route ("/
Konverter pin fra URL til et heltal.
changePin = int (changePin)
Hvis handlingsdelen af URL'en er "åben", skal du gøre følgende.
hvis handling == "åben": GPIO.output (changePin, GPIO.HIGH) hvis handling == "close": GPIO.output (changePin, GPIO.LOW)
Du kan kopiere det komplette script fra slutningen af denne tutorial og gemme det ved hjælp af ctrl + x og derefter trykke på enter. Vi har gjort med python-scriptet. Nu er vi nødt til at oprette en HTML-side for at interagere med python-scriptet.
Oprettelse af HTML-side til Raspberry Pi Webserver
I den samme garage_door- mappe skal du oprette en anden mappe, der hedder skabeloner, og oprette en.html-fil i denne mappe ved hjælp af nedenstående kommandoer.
mkdir skabeloner cd skabeloner nano main.html
Skriv html-koden i nano- teksteditoren. Du kan redigere del af siden og stil den efter dit valg. Jeg har lige brugt tredjeparts css-ordningen ved hjælp af link-tag. Den komplette HTML-kode er angivet nedenfor:
Garageport webserver
{% for pin in pins%}{{pins.name}} {% if pins.state == true%} er i øjeblikket åben
Her er den vigtige del at oprette en knap til at åbne og lukke døren og tildele en tilstand til at åbne og lukke- knappen. Knappen sender og henter GPIO-tilstanden fra python-scriptet.
Du kan bruge ovenstående HTML-kode i editoren og gemme den. Nu er webserveren klar til start.
Åbn terminalen, og gå til mappen garage_door , og kør nedenstående kommando
sudo python app.py
Åbn browseren, og indtast din hindbær pi IP-adresse, og tryk på Enter. For at finde din IP-adresse kan du køre kommandoen nedenfor i terminalen.
værtsnavn -I
Du vil se en side som denne.
Sørg for, at relæmodulet er sluttet til hindbær pi. Tryk på knappen Åbn for at tænde relæet eller for at åbne garageporten. Du kan også se relæets tilstand. Så snart du har tændt relæet, ændres knaptekst Luk for at slukke for relæet. Når du nu klikker på knappen igen, slukkes relæet, og knappeteksten ændres til Åbn igen.
For at stoppe serveren skal du trykke på ctrl + c.
Så forbind bare dette relæ til en eller anden døråbnermekanisme, der er let tilgængelige på markedet, og start med at kontrollere garageporten ved hjælp af Smartphone.
En demonstrationsvideo er givet nedenfor.