- Komponenter kreves
- Kretsdiagram
- Kolbeoppsett i Raspberry Pi for styring av garasjeporten
- Opprette Python Script for Smart Garage Door Opener
- Opprette HTML-side for Raspberry Pi Webserver
- {{pins.name}} {% if pins.state == true%} er for øyeblikket åpen
I denne tiden av IoT (Internet of Things) hvor alt kan styres eksternt ved hjelp av smarttelefonen din, hvorfor ta med deg nøkler. Det er mange teknologier som støtter trådløs kontroll av enheter som RFID, Bluetooth, Wi-Fi, LoRa. Vi bygde tidligere noen døralarmer og dørkontrollkrets for å åpne og lukke døren trådløst:
- Arduino RFID dørlås
- Automatisk døråpner ved hjelp av Arduino
- Magnetisk døralarmkrets ved bruk av Hall-sensor
- IoT-basert dørsikkerhetsalarm styrt av Google Assistant
Her i denne opplæringen vil vi bygge en Smart Garage Door Opener ved hjelp av Raspberry Pi. Her blir det opprettet en Raspberry Pi-webserver for å åpne og lukke garasjeporten ved hjelp av smarttelefonen din.
Komponenter kreves
- Bringebær pi bord med Raspbian installert i det
- Relémodul
- Koble ledninger
Det antas at Raspberry Pi allerede har blinket med et operativsystem og er i stand til å koble til internett. Hvis ikke, følg veiledningen Komme i gang med Raspberry Pi før du fortsetter. Her bruker vi Rasbian Jessie installert Raspberry Pi 3.
Her brukes ekstern skjerm med HDMI-kabel som skjerm for å koble til Raspberry Pi. Hvis du ikke har skjerm, kan du bruke SSH-klient (Putty) eller VNC-server for å koble til Raspberry pi ved hjelp av bærbar PC eller datamaskin. Lær mer om hvordan du konfigurerer Raspberry Pi hodeløst her.
Kretsdiagram
Koble mekanismen til åpning av garasjeporten til reléets utgang. Her har vi nettopp koblet til en LED med relé for demonstrasjonsformål.
Kolbeoppsett i Raspberry Pi for styring av garasjeporten
Her har vi opprettet en webserver ved hjelp av Flask, som gir en måte å sende kommandoene fra nettsiden til Raspberry Pi for å kontrollere roboten over nettverket. Flask lar oss kjøre pythonskriptene våre via en webside, og vi kan sende og motta data fra Raspberry Pi til nettleseren og omvendt. Flask er et mikrorammer for Python. Dette verktøyet er basert på Unicode med innebygd utviklingsserver og feilsøking, integrert enhetstestestøtte, støtte for sikre informasjonskapsler og det er enkelt å bruke, disse tingene gjør det nyttig for hobbyisten.
Kjør følgende kommandoer for å installere kolben i Raspberry Pi:
sudo apt-get oppdater sudo apt-get installer python-pip python-kolbe
Kjør nå pip-kommandoen for å installere Flask og dens avhengigheter:
sudo pip installere kolbe
Du kan lære mer om programmering ved hjelp av Flask her, sjekk også våre tidligere prosjekter der vi har brukt Flask til å kontrollere robot via webserver, sende meldingen fra websiden til Raspberry Pi og sende vektverdi til Raspberry Pi i Smart Container.
Nå skal vi skrive et python-skript for garasjeportens webserver.
Opprette Python Script for Smart Garage Door Opener
Dette skriptet vil samhandle med våre Raspberry Pi GPIOer og sette opp webserveren. Så dette er kjerneskriptet for applikasjonen vår. Komplett Python-skript for døråpner er gitt på slutten, her har vi forklart noen deler av det.
Lag først en mappe. Alle andre obligatoriske mapper skal bare være i denne mappen. Kjør under kommandoene for å lage mappe og opprett python-filen med navnet app.py i denne mappen.
mkdir garage_door cd garage_door nano app.py
Dette åpner Nano-redaktøren der vi må skrive skriptet.
Start med å inkludere viktige biblioteker.
importer RPi.GPIO som GPIO fra kolbe import Kolbe, gjengi mal, be om app = Kolbe (__ navn__, static_url_path = '/ statisk')
Lag nå en ordbok som pinner for å lagre pin-nummer, navn og pin-status. Du kan bruke mer enn en tapp etter behov.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Sett deretter pinnen som utgang og gjør den lav først.
For pin i pins: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Lag nå en hovedfunksjon for å lese pin-tilstand og lagre denne tilstanden i en variabel.
@ app.route ("/") def main (): for pin in pins: pins = GPIO.input (pin) ..
Vi må overføre disse dataene til html-siden vår, slik at vi kan kontrollere inngangsknappens tilstand.
returner render_template ('main.html', ** templateData)
Nå gjør en funksjon for å håndtere forespørsler fra nettadressen med PIN-kode og handling i det.
@ app.route ("/
Konverter pin fra URL til et helt tall.
changePin = int (changePin)
Hvis handlingsdelen av URL-en er "åpen", gjør du følgende.
hvis handling == "åpen": GPIO.output (changePin, GPIO.HIGH) hvis handling == "close": GPIO.output (changePin, GPIO.LOW)
Du kan kopiere hele skriptet fra slutten av denne opplæringen og lagre det ved hjelp av ctrl + x og deretter trykke på enter. Vi har gjort med python-skriptet. Nå må vi lage en HTML-side for å samhandle med python-skriptet.
Opprette HTML-side for Raspberry Pi Webserver
I samme garage_door- mappe oppretter du en annen mappe som heter maler, og i denne mappen lager du en.html-fil ved hjelp av kommandoene nedenfor.
mkdir maler cd maler nano main.html
Skriv html-koden i nano- teksteditoren. Du kan redigere del av siden og utform den etter eget valg. Jeg har nettopp brukt tredjeparts css-ordningen ved hjelp av koblingstaggen. Den komplette HTML-koden er gitt nedenfor:
Garage Door webserver
{% for pin i pins%}{{pins.name}} {% if pins.state == true%} er for øyeblikket åpen
Her er den viktige delen å lage en knapp for å åpne og lukke døren og tildele en tilstand til å åpne og lukke- knappen. Knappen vil sende og hente GPIO-tilstanden fra python-skriptet.
Du kan bruke ovennevnte HTML-kode i redigeringsprogrammet og lagre den. Nå er webserveren klar til å lanseres.
Åpne terminalen og naviger til garage_door- mappen og kjør kommandoen nedenfor
sudo python app.py
Åpne nettleseren og skriv inn din raspberry pi IP-adresse og trykk enter. For å finne IP-adressen din, kan du kjøre kommandoen nedenfor i terminalen.
vertsnavn -I
Du vil se en side som denne.
Forsikre deg om at relémodulen er koblet til bringebær-pi. Trykk på Åpne- knappen for å slå på reléet eller for å åpne garasjeporten. Du kan også se tilstanden til stafetten. Så snart du slo på reléet, endres knappeteksten Lukk for å slå av reléet. Nå når du klikker på knappen igjen, blir reléet slått av, og knappeteksten endres til Åpne igjen.
For å stoppe serveren, trykk ctrl + c.
Så bare koble dette reléet til en døråpnermekanisme, som er lett tilgjengelig i markedet, og begynn å kontrollere garasjeporten ved hjelp av Smartphone.
En demonstrasjonsvideo er gitt nedenfor.