- Componente necesare
- Diagrama circuitului
- Configurarea balonului în Raspberry Pi pentru controlul ușii de garaj
- Crearea scriptului Python pentru deschizătorul ușii de garaj inteligent
- Crearea paginii HTML pentru Raspberry Pi Webserver
- {{pins.name}} {% dacă pins.state == true%} este deschis în prezent
În această epocă a IoT (Internet of Things), unde totul poate fi controlat de la distanță folosind smartphone-ul dvs., de ce să purtați cheile cu dvs. Există o mulțime de tehnologii care acceptă controlul wireless al dispozitivelor precum RFID, Bluetooth, Wi-Fi, LoRa. Am construit anterior câteva alarme și un circuit de control al ușii pentru a deschide și închide ușa fără fir:
- Blocare ușă RFID Arduino
- Deschizător automat de uși folosind Arduino
- Circuitul de alarmă magnetică a ușii utilizând senzorul Hall
- Alarmă de securitate ușă bazată pe IoT controlată de Google Assistant
Aici, în acest tutorial, vom construi un deschizător inteligent de ușă de garaj folosind Raspberry Pi. Aici va fi creat un server web Raspberry Pi pentru a deschide și închide ușa garajului folosind telefonul smartphone.
Componente necesare
- Placă Raspberry pi cu Raspbian instalat în ea
- Modul releu
- Conectarea firelor
Se presupune că Raspberry Pi este deja intermitent cu un sistem de operare și se poate conecta la internet. Dacă nu, urmați tutorialul Noțiuni introductive despre Raspberry Pi înainte de a continua. Aici folosim Rasbian Jessie instalat Raspberry Pi 3.
Aici Monitorul extern care utilizează cablu HDMI este utilizat ca afișaj pentru conectarea cu Raspberry Pi. Dacă nu aveți monitor, puteți utiliza clientul SSH (Putty) sau serverul VNC pentru a vă conecta la Raspberry pi utilizând laptop sau computer. Aflați mai multe despre configurarea Raspberry Pi fără cap aici.
Diagrama circuitului
Conectați mecanismul de deschidere a ușii garajului la ieșirea releului. Aici tocmai am conectat un LED cu releu în scop demonstrativ.
Configurarea balonului în Raspberry Pi pentru controlul ușii de garaj
Aici, am creat un server web folosind Flask, care oferă o modalitate de a trimite comenzile de pe pagina web către Raspberry Pi pentru a controla robotul prin rețea. Flask ne permite să rulăm scripturile noastre python printr-o pagină web și putem trimite și primi date de la Raspberry Pi către browserul web și invers. Flask este un microframe pentru Python. Acest instrument este bazat pe Unicode, având un server și un depanator de dezvoltare încorporat, suport integrat pentru testarea unității, suport pentru cookie-uri sigure și ușor de utilizat, aceste lucruri îl fac util pentru pasionat.
Rulați următoarele comenzi pentru a instala balonul în Raspberry Pi:
sudo apt-get update sudo apt-get install python-pip python-flask
Acum, executați comanda pip pentru a instala Flask și dependențele sale:
sudo pip instalare balon
Puteți afla mai multe despre programarea utilizând Flask aici, puteți verifica și proiectele noastre anterioare în care am folosit Flask pentru a controla robotul prin serverul web, pentru a trimite mesajul de la pagina web către Raspberry Pi și pentru a trimite valoarea greutății către Raspberry Pi în Smart Container.
Acum, vom scrie un script python pentru serverul nostru web de ușă de garaj.
Crearea scriptului Python pentru deschizătorul ușii de garaj inteligent
Acest script va interacționa cu GPIO-urile noastre Raspberry Pi și va configura serverul web. Deci, acesta este scriptul de bază pentru aplicația noastră. Scriptul complet Python pentru deschizător de uși este dat la final, aici am explicat câteva părți ale acestuia.
Mai întâi, creați un folder. Toate celelalte foldere necesare ar trebui să fie numai în acest folder. Rulați comenzile de mai jos pentru a crea folderul și a crea fișierul python numit app.py din acest folder.
mkdir garage_door cd garage_door nano app.py
Aceasta va deschide editorul Nano unde trebuie să scriem scriptul.
Începeți prin a include biblioteci importante.
import RPi.GPIO ca GPIO din flask import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Acum, creați un dicționar ca pini pentru a stoca numărul pinului, numele și starea pinului. Puteți utiliza mai mult de un pin în funcție de nevoile dvs.
pins = { 14: {'name': 'Usa de garaj', 'state': GPIO.LOW} }
Apoi, setați pinul ca ieșire și reduceți-l inițial.
Pentru pin în pini: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Acum, creați o funcție principală pentru a citi starea pinului și a stoca această stare într-o variabilă.
@ app.route ("/") def main (): pentru pin în pini: pini = GPIO.input (pin) ..
Trebuie să transmitem aceste date pe pagina noastră html, astfel încât să putem controla starea butonului de intrare.
returnează modelul render_ ('main.html', ** templateData)
Acum, creați o funcție pentru a gestiona solicitările de la adresa URL cu numărul PIN și acțiunea din acesta.
@ app.route ("/
Convertiți pinul de la adresa URL într-un număr întreg.
changePin = int (changePin)
Dacă partea de acțiune a adresei URL este „deschisă”, faceți următoarele.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
Puteți copia scriptul complet de la sfârșitul acestui tutorial și îl puteți salva folosind ctrl + x și apoi apăsați Enter. Am terminat cu scriptul python. Acum, trebuie să creăm o pagină HTML pentru a interacționa cu scriptul python.
Crearea paginii HTML pentru Raspberry Pi Webserver
În același folder garage_door , creați un alt folder numit șabloane și în interiorul acestui folder creați un fișier.html folosind comenzile de mai jos.
mkdir templates cd templates nano main.html
În editorul de text nano , scrieți codul html. Puteți edita fișierul parte a paginii și stilizați-o în funcție de alegerea dvs. Tocmai am folosit schema CSS terță parte folosind link tag. Codul HTML complet este dat mai jos:
Server web Garage Door
{% pentru pin în pin%}{{pins.name}} {% dacă pins.state == true%} este deschis în prezent
Aici partea importantă este crearea unui buton pentru deschiderea și închiderea ușii și atribuirea unei stări pentru butonul de deschidere și închidere . Butonul va trimite și va prelua starea GPIO din scriptul python.
Puteți utiliza codul HTML dat mai sus în editor și îl puteți salva. Acum, serverul web este gata de lansare.
Deschideți terminalul și navigați la folderul garage_door și rulați comanda de mai jos
sudo python app.py
Deschideți browserul și introduceți adresa IP a raspberry pi și apăsați Enter. Pentru a vă găsi adresa IP, puteți rula comanda de mai jos în terminal.
numele gazdei -I
Veți vedea o pagină ca aceasta.
Asigurați-vă că modulul releului este conectat la raspberry pi. Apăsați butonul Deschidere pentru a porni releul sau pentru a deschide ușa garajului. Puteți vedea, de asemenea, starea releului. De îndată ce ați activat releul, textul butonului va fi modificat Închidere pentru a opri releul. Acum, când faceți clic din nou pe buton, releul va fi oprit și textul butonului va fi schimbat din nou în Deschidere .
Pentru a opri serverul apăsați ctrl + c.
Deci, conectați acest releu la un mecanism de deschidere a ușii, care sunt ușor disponibile pe piață, și începeți să controlați ușa garajului folosind Smartphone.
Un videoclip demonstrativ este prezentat mai jos.