04 aout 2019 • 2 • 4.8
S'il y a bien une chose que l'on a toujours sur nous, c'est notre smartphone. Ce dernier permet de réaliser
de plus en plus d'actions diverses. Grâce à cet article, vous allez bientôt pouvoir commander votre portail
directement depuis votre smartphone, de n'importe où, et ce à l'aide d'un Raspberry Pi !
Principe de fonctionnement : La plupart des cartes électroniques des portails motorisés
disposent de la fonction d'ouverture par clé. Un interrupteur à clé est un composant à deux fils qui a un
rôle très simple : Lorsque l'utilisateur tourne la clé, le contact entre les deux sorties est effectué. Nous allons
utiliser ce principe pour commander l'ouverture du portail grâce à un Raspberry. Il suffit d'avoir un composant
qui simule cet interrupteur. On nomme ce composant "relais électromagnétique". Lorsque l'on
délivre un 0 logique à l'entrée du relais, celui-ci effectue le contact, si l'on ne délivre rien, l'interrupteur
est ouvert.
Dans un premier temps, faisons la liste des composants dont on aura besoin pour mener ce projet à terme :
Une fois tout le matériel réunis, on peut passer aux choses concrètes !
Comme expliqué dans l'introduction, nous allons nous servir de la fonction d'interrupteur à clé de la carte électronique du portail pour commander ce dernier. La première étape du projet est donc naturellement de trouver sur la carte l'emplacement des bornes utilisées pour l'interrupteur à clé. Voici un exemple de schéma de carte électronique d'un portail où est entourée la partie utilisée pour les interrupteurs à clé.
Une fois que les ports ont été trouvés, il suffit de relier les deux fils du câble bifilaire à chaque port (indiqués par les flèches rouges sur l'exemple de notice).
Maintenant que le câble est relié aux ports du contacteur à clé, vous pouvez ouvrir votre portail simplement en
faisant le contact entre les deux extrémités du câble, cela devrait ouvrir votre portail si tout fonctionne bien
(En faisant le contact entre les deux extrémités, on a simulé une ouverture par clé).
Maintenant, deux possibilités s'offrent à vous :
Maintenant que vous avez un boitier prêt à accueillir le Raspberry Pi, il va falloir commencer à réfléchir à son alimentation. Encore une fois, deux méthodes pour alimenter le Raspberry Pi.
Le Raspberry étant maintenant alimenté, nous pouvons passer aux choses sérieuses ! La première chose à faire est de brancher correctement le relais au Raspberry Pi. Il suffit pour cela de suivre le schéma ci-dessous.
Il reste maintenant à relier la sortie du relais à l'extrémité du câble que l'on a branché à l'étape #1. Les relais disposent de trois sorties, il faut utiliser les sorties COM et NO comme le montre le schéma récapitulatif suivant.
Maintenant que toute la partie matérielle est prête, on peut passer au côté développement. Elle va se dérouler en 5 grandes étapes :
Pour commander notre relais alimenté en 5V, rien de très compliqué. Le relais dispose d'une entrée. Lorsque l'on
connecte cette entrée à 5V, le contact est fait entre les deux sorties (et on entend un clak).
Le code suivant enclenche en boucle le relais et permet de vérifier si le branchage est correct.
Nous avons vu comment commander le relais grâce à un script Python. Le but est maintenant de pouvoir le commander
depuis une page web, sans passer par le terminal du Raspberry. Pour se faire, nous allons utiliser le Raspberry
comme un serveur Web. Bonne nouvelle, la librairie Flask permet de facilement créer un serveur web en Python et
de réagir à des requêtes HTTP. Commençons par installer cette librairie et de comprendre un peu comment ça marche.
Entrez simplement la commande suivante dans le terminal :
sudo apt-get install python3-flask
Maintenant que la librairie est installée, voyons les notions de base de Flask. Voici le code le plus simple que l'on peut exécuter :
On devrait voir au lancement du script s'écrire ceci :
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: xxx-xxx-xxx
Cela signifie que le serveur est démaré, et qu’on peut y accéder en entrant l'IP du Raspberry, suivi de :5000,
qui est le numéro du port. Si on accède à cette page, on verra s'afficher Hello World.
Pour tester, entrer ceci dans le champ URL d'un navigateur :
xxx.xxx.x.xxx:5000, où xxx.xxx.x.xxx est l'adresse IP du Raspberry Pi.
Si vous ne connaissez pas l'adresse IP de votre Raspberry Pi, entrez dans une console ceci :
hostname -I
En plus d'afficher des éléments sur le navigateur, Flask permet d'exécuter les actions que l'on souhaite à chaque
fois que la page est visitée. On peut alors "mélanger" le code Flask avec le code de commande de relais pour obtenir
un sytème qui enclenche le relais chaque fois que l'on visite l'URL xxx.xxx.x.xxx:5000.
Le code n'est pas très compliqué à écrire, essayez par vous-même avant de regarder la solution !
Avec ce code, nous avons déjà un début de système fonctionnel et il suffit de relier le relais à la carte électronique
comme expliqué dans le I pour ouvrir son portail à partir d'une URL.
Cependant, nous souhaitons un système qui se lance tout seul au démarrage, sans avoir besoin d'entrer sudo python
app.py sans arrêts. Nous allons voir dans la prochaine étape comment lancer le serveur automatiquement à chaque
démarrage.
L'outil crontab permet l'automatisation de lancements de scripts et de taches sur Linux et donc sur le
Raspberry. Nous allons ici l'utiliser pour le lancement automatique du script que nous venons d'écrire.
Commencer par ouvrir crontab en entrant dans le terminal ceci :
sudo crontab -e
Si l'on vous demande de choisir un logiciel d'édition, prendre /bin/nano qui est le plus simple des trois.
# DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.L71rF1/crontab installed on Tue May 29 20:57:03 2018) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any').# # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command
Ajouter simplement la ligne suivante à la fin du fichier (utiliser la flèche du bas pour descendre le curseur) :
@reboot cd /home/pi; sudo python app.py
Une fois la ligne ajoutée, enregistrer et fermer l'éditeur (Ctrl+X -> O (ou Y en anglais) -> Enter).
Redémarrez votre Raspberry Pi pour que les changements soient appliqués.
Contrôler son portail depuis un navigateur internet, c'est bien... mais depuis une application mobile, c'est encore mieux. Cette application est disponible sur Google Play en suivant le lien ci-dessous. Lier l'application et le Raspberry est très simple : il suffit d'entrer l'IP et le port du Raspberry !
Choisir et utiliser une caméra sur un Raspberry Pi
Obtenir la température avec une sonde DS18B20
Starter Kit Raspberry Pi 4 version 4Go, carte SD 128Go
169.99€ 151.99€
Caméra Raspberry Pi 5MP 1080p
🔥 12.95€ 🔥
4.8/5 | 13 votes