- Composants requis
- Schéma
- Configuration du flacon dans Raspberry Pi pour contrôler la porte de garage
- Création du script Python pour l'ouvre-porte de garage intelligent
- Création d'une page HTML pour le serveur Web Raspberry Pi
- {{pins.name}} {% if pins.state == true%} est actuellement ouvert
À l'ère de l'IoT (Internet of Things) où tout peut être contrôlé à distance à l'aide de votre smartphone, pourquoi avoir des clés avec vous. Il existe de nombreuses technologies pour prendre en charge le contrôle sans fil d'appareils tels que RFID, Bluetooth, Wi-Fi, LoRa. Nous avons précédemment construit des alarmes de porte et un circuit de contrôle de porte pour ouvrir et fermer la porte sans fil:
- Serrure de porte RFID Arduino
- Ouvre-porte automatique utilisant Arduino
- Circuit d'alarme de porte magnétique utilisant un capteur à effet Hall
- Alarme de sécurité de porte basée sur l'IoT contrôlée par Google Assistant
Ici, dans ce didacticiel, nous allons construire un ouvre-porte de garage intelligent à l'aide de Raspberry Pi. Ici, un serveur Web Raspberry Pi sera créé pour ouvrir et fermer la porte de garage à l'aide de votre smartphone.
Composants requis
- Carte Raspberry Pi avec Raspbian installé
- Module de relais
- Connexion des fils
On suppose que votre Raspberry Pi est déjà flashé avec un système d'exploitation et qu'il est capable de se connecter à Internet. Sinon, suivez le didacticiel Premiers pas avec Raspberry Pi avant de continuer. Ici, nous utilisons Rasbian Jessie installé Raspberry Pi 3.
Ici, le moniteur externe utilisant un câble HDMI est utilisé comme écran pour se connecter au Raspberry Pi. Si vous n'avez pas de moniteur, vous pouvez utiliser le client SSH (Putty) ou le serveur VNC pour vous connecter à Raspberry pi à l'aide d'un ordinateur portable ou d'un ordinateur. En savoir plus sur la configuration de Raspberry Pi sans tête ici.
Schéma
Connectez le mécanisme d'ouverture de la porte de garage à la sortie du relais. Ici, nous venons de connecter une LED avec relais à des fins de démonstration.
Configuration du flacon dans Raspberry Pi pour contrôler la porte de garage
Ici, nous avons créé un serveur Web à l'aide de Flask, qui fournit un moyen d' envoyer les commandes de la page Web à Raspberry Pi pour contrôler le robot sur le réseau. Flask nous permet d'exécuter nos scripts python via une page Web et nous pouvons envoyer et recevoir des données de Raspberry Pi vers un navigateur Web et vice versa. Flask est un microframework pour Python. Cet outil est basé sur Unicode avec un serveur de développement et un débogueur intégrés, un support de test unitaire intégré, un support pour les cookies sécurisés et son utilisation facile, ces choses le rendent utile pour l'amateur.
Exécutez les commandes suivantes pour installer le flacon dans votre Raspberry Pi:
sudo apt-get update sudo apt-get install python-pip python-flask
Maintenant, exécutez la commande pip pour installer Flask et ses dépendances:
flacon d'installation sudo pip
Vous pouvez en savoir plus sur la programmation à l'aide de Flask ici, consulter également nos projets précédents où nous avons utilisé Flask pour contrôler le robot via un serveur Web, envoyer le message de la page Web à Raspberry Pi et envoyer la valeur de poids à Raspberry Pi dans Smart Container.
Maintenant, nous allons écrire un script python pour notre serveur Web de porte de garage.
Création du script Python pour l'ouvre-porte de garage intelligent
Ce script interagira avec nos GPIO Raspberry Pi et configure le serveur Web. C'est donc le script principal de notre application. Le script Python complet pour l'ouvre-porte est donné à la fin, nous en avons expliqué ici quelques parties.
Commencez par créer un dossier. Tous les autres dossiers requis doivent se trouver uniquement dans ce dossier. Exécutez les commandes ci-dessous pour créer un dossier et le fichier de création python nommé app.py dans ce dossier.
mkdir garage_door cd garage_door nano app.py
Cela ouvrira l'éditeur Nano où nous devons écrire le script.
Commencez par inclure les bibliothèques importantes.
importer RPi.GPIO en tant que GPIO à partir du flask import Flask, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Maintenant, créez un dictionnaire sous forme de broches pour stocker le numéro, le nom et l'état des broches. Vous pouvez utiliser plus d'une broche en fonction de vos besoins.
pins = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Ensuite, définissez la broche comme sortie et faites-la initialement au niveau bas.
Pour broche dans les broches: GPIO.setup (broche, GPIO.OUT) GPIO.output (broche, GPIO.LOW)
Maintenant, créez une fonction principale pour lire l'état des broches et stocker cet état dans une variable.
@ app.route ("/") def main (): pour les broches dans les broches: pins = GPIO.input (pin) ..
Nous devons transmettre ces données à notre page html afin de pouvoir contrôler l'état du bouton d'entrée.
return render_template ('main.html', ** templateData)
Maintenant, créez une fonction pour gérer les demandes de l'URL avec le numéro de broche et l'action.
@ app.route ("/
Convertissez la broche de l'URL en un entier.
changePin = int (changePin)
Si la partie action de l'URL est «ouverte», procédez comme suit.
if action == "open": GPIO.output (changePin, GPIO.HIGH) if action == "close": GPIO.output (changePin, GPIO.LOW)
Vous pouvez copier le script complet à la fin de ce didacticiel et l'enregistrer à l'aide de ctrl + x, puis appuyez sur entrée. Nous en avons terminé avec le script python. Maintenant, nous devons créer une page HTML pour interagir avec le script python.
Création d'une page HTML pour le serveur Web Raspberry Pi
Dans le même dossier garage_door , créez un autre dossier nommé templates et dans ce dossier, créez un fichier.html en utilisant les commandes ci-dessous.
modèles mkdir modèles cd nano main.html
Dans l' éditeur de texte nano , écrivez le code html. Vous pouvez modifier le partie de la page et stylisez-la selon votre choix. Je viens d'utiliser le schéma css tiers en utilisant une balise de lien. Le code HTML complet est donné ci-dessous:
Serveur Web de porte de garage
{% pour la broche dans les broches%}{{pins.name}} {% if pins.state == true%} est actuellement ouvert
Ici, la partie importante est de créer un bouton pour ouvrir et fermer la porte et attribuer un état au bouton d' ouverture et de fermeture . Le bouton enverra et récupérera l'état GPIO à partir du script python.
Vous pouvez utiliser le code HTML ci-dessus dans l'éditeur et l'enregistrer. Le serveur Web est maintenant prêt à démarrer.
Ouvrez le terminal et accédez au dossier garage_door et exécutez la commande ci-dessous
sudo python app.py
Ouvrez le navigateur et entrez votre adresse IP raspberry pi et appuyez sur Entrée. Pour trouver votre adresse IP, vous pouvez exécuter la commande ci-dessous dans le terminal.
nom d'hôte -I
Vous verrez une page comme celle-ci.
Assurez-vous que le module de relais est connecté au raspberry pi. Appuyez sur le bouton Ouvrir pour activer le relais ou pour ouvrir la porte de garage. Vous pouvez également voir l'état du relais. Dès que vous avez activé le relais, le texte du bouton sera modifié Fermer pour désactiver le relais. Désormais, lorsque vous cliquez à nouveau sur le bouton, le relais sera désactivé et le texte du bouton sera à nouveau ouvert .
Pour arrêter le serveur, appuyez sur ctrl + c.
Il suffit donc de connecter ce relais à un mécanisme d'ouverture de porte, qui est facilement disponible sur le marché, et de commencer à contrôler la porte de garage à l'aide d'un smartphone.
Une vidéo de démonstration est donnée ci-dessous.