- Componenten vereist
- Schakelschema
- Flask Setup in Raspberry Pi voor het besturen van garagedeur
- Het Python-script maken voor slimme garagedeuropener
- HTML-pagina maken voor Raspberry Pi-webserver
- {{pins.name}} {% if pins.state == true%} is momenteel geopend
In dit tijdperk van IoT (Internet of Things) waar alles op afstand kan worden bediend met uw smartphone, waarom sleutels bij u dragen. Er zijn veel technologieën om het draadloos bedienen van apparaten zoals RFID, Bluetooth, Wi-Fi, LoRa te ondersteunen. We hebben eerder een deuralarm en een deurcontrolecircuit gebouwd om de deur draadloos te openen en te sluiten:
- Arduino RFID deurslot
- Automatische deuropener met Arduino
- Magnetisch deuralarmcircuit met Hall-sensor
- IoT-gebaseerd deurbeveiligingsalarm bestuurd door Google Assistant
Hier in deze tutorial zullen we een slimme garagedeuropener bouwen met Raspberry Pi. Hier wordt een Raspberry Pi-webserver gemaakt om de garagedeur met uw smartphone te openen en te sluiten.
Componenten vereist
- Raspberry pi-bord met Raspbian erin geïnstalleerd
- Relaismodule
- Verbindingsdraden
Aangenomen wordt dat uw Raspberry Pi al is geflasht met een besturingssysteem en verbinding kan maken met internet. Als dit niet het geval is, volgt u de handleiding Aan de slag met Raspberry Pi voordat u verder gaat. Hier gebruiken we Rasbian Jessie geïnstalleerde Raspberry Pi 3.
Hier wordt een externe monitor met behulp van een HDMI-kabel gebruikt als display om verbinding te maken met Raspberry Pi. Als u geen monitor heeft, kunt u SSH-client (Putty) of VNC-server gebruiken om verbinding te maken met Raspberry pi met behulp van een laptop of computer. Lees hier meer over het headless instellen van Raspberry Pi.
Schakelschema
Sluit het openingsmechanisme van de garagedeur aan op de uitgang van het relais. Hier hebben we zojuist een LED met relais aangesloten voor demonstratiedoeleinden.
Flask Setup in Raspberry Pi voor het besturen van garagedeur
Hier hebben we een webserver gemaakt met Flask, die een manier biedt om de commando's van de webpagina naar Raspberry Pi te sturen om de robot via het netwerk te besturen. Met Flask kunnen we onze python-scripts via een webpagina uitvoeren en kunnen we gegevens van Raspberry Pi naar een webbrowser verzenden en ontvangen en vice versa. Flask is een microframework voor Python. Deze tool is gebaseerd op Unicode met een ingebouwde ontwikkelserver en debugger, geïntegreerde ondersteuning voor het testen van eenheden, ondersteuning voor veilige cookies en het is gemakkelijk te gebruiken, deze dingen maken het nuttig voor de hobbyist.
Voer de volgende opdrachten uit om de fles in uw Raspberry Pi te installeren:
sudo apt-get update sudo apt-get install python-pip python-flask
Voer nu het pip-commando uit om Flask en zijn afhankelijkheden te installeren:
sudo pip install kolf
Je kunt hier meer leren over het programmeren met Flask, ook onze eerdere projecten bekijken waar we Flask hebben gebruikt om de robot via een webserver te besturen, het bericht van webpagina naar Raspberry Pi sturen en gewichtswaarde naar Raspberry Pi sturen in Smart Container.
Nu gaan we een python-script schrijven voor onze garagedeurwebserver.
Het Python-script maken voor slimme garagedeuropener
Dit script werkt samen met onze Raspberry Pi GPIO's en stelt de webserver in. Dit is dus het kernscript voor onze applicatie. Het volledige Python-script voor deuropener wordt aan het einde gegeven, hier hebben we enkele delen ervan uitgelegd.
Maak eerst een map. Alle andere vereiste mappen mogen alleen in deze map staan. Voer onderstaande opdrachten uit om een map te maken en het python-bestand met de naam app.py in deze map te maken.
mkdir garage_door cd garage_door nano app.py
Dit opent de Nano-editor waar we het script moeten schrijven.
Begin met het opnemen van belangrijke bibliotheken.
importeer RPi.GPIO als GPIO uit flask import Flask, render_template, verzoek app = Flask (__ name__, static_url_path = '/ static')
Maak nu een woordenboek als pinnen om de pincode, naam en pinstatus op te slaan. U kunt naar behoefte meer dan één pin gebruiken.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Stel vervolgens de pin in als uitvoer en maak deze in eerste instantie laag.
Voor pin in pinnen: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Nu, maak een hoofdfunctie te pin staat te lezen en bewaar deze toestand in een variabele.
@ app.route ("/") def main (): voor pin in pins: pins = GPIO.input (pin) ..
We moeten deze gegevens doorgeven aan onze html-pagina, zodat we de status van de invoerknop kunnen regelen.
return render_template ('main.html', ** templateData)
Nu, maak een functie om de verzoeken van de URL te behandelen met de pincode en het optreden op het.
@ app.route ("/
Zet de pin van de URL om in een geheel getal.
changePin = int (changePin)
Als het actiegedeelte van de URL "open" is, doe dan het volgende.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
U kunt het volledige script vanaf het einde van deze zelfstudie kopiëren en opslaan met ctrl + x en vervolgens op enter drukken. We zijn klaar met het python-script. Nu moeten we een HTML-pagina maken om te communiceren met het python-script.
HTML-pagina maken voor Raspberry Pi-webserver
Maak in dezelfde garage_door- map een andere map met de naam sjablonen en maak in deze map een.html-bestand met de onderstaande opdrachten.
mkdir-sjablonen cd-sjablonen nano main.html
Schrijf de html-code in de nano- teksteditor. U kunt het deel van de pagina en geef de stijl aan volgens uw keuze. Ik heb zojuist het css-schema van derden gebruikt met een link-tag. De volledige HTML-code wordt hieronder gegeven:
Garage Door-webserver
{% voor pin-in-pins%}{{pins.name}} {% if pins.state == true%} is momenteel geopend
Hier is het belangrijkste onderdeel om een knop te maken om de deur te openen en te sluiten en een status toe te wijzen aan de knop openen en sluiten . De knop zal de GPIO-status verzenden en ophalen uit het python-script.
U kunt de hierboven gegeven HTML-code in de editor gebruiken en opslaan. Nu is de webserver klaar om te starten.
Open de terminal en ga naar de map garage_door en voer de onderstaande opdracht uit
sudo python app.py
Open de browser en voer uw raspberry pi IP-adres in en druk op enter. Om uw IP-adres te vinden, kunt u de onderstaande opdracht in terminal uitvoeren.
hostnaam -I
Je zult een pagina als deze zien.
Zorg ervoor dat de relaismodule is aangesloten op Raspberry Pi. Druk op de Open- knop om het relais in te schakelen of om de garagedeur te openen. U kunt ook de status van het relais zien. Zodra u het relais hebt ingeschakeld, wordt de knoptekst gewijzigd in Sluiten om het relais uit te schakelen. Als u nu nogmaals op de knop klikt, wordt het relais uitgeschakeld en wordt de knoptekst weer gewijzigd in Open .
Druk op ctrl + c om de server te stoppen.
Sluit dit relais dus gewoon aan op een deuropener-mechanisme, dat direct op de markt verkrijgbaar is, en begin de garagedeur te bedienen met een smartphone.
Hieronder wordt een demonstratievideo gegeven.