Ouvre-porte de garage Raspberry Pi 3: 15 étapes (avec photos)
Ouvre-porte de garage Raspberry Pi 3: 15 étapes (avec photos)
Anonim
Ouvre-porte de garage Raspberry Pi 3
Ouvre-porte de garage Raspberry Pi 3

J'ai créé cette instructable en 2014. Beaucoup de choses ont changé depuis lors. En 2021, j'ai mis à jour l'ouvre-porte de garage intelligent ici.

Utilisez un Raspberry Pi et un smartphone pour ouvrir, fermer et surveiller une porte de garage. L'ouverture et la fermeture de la porte sont sécurisées à l'aide de certificats auto-signés installés sur les téléphones portables de la famille. Si la porte du garage est ouverte alors qu'elle ne devrait pas l'être, envoyez un message texte (SMS) à un téléphone portable.

La porte de garage est utilisée en continu depuis la fin de 2014. Au fil des ans, j'ai essayé de maintenir les changements à jour. Il y a une annexe décrivant les modifications apportées à l'instructable.

Les objectifs de ce projet sont de:

  • Faire mon premier instructable - je n'avais pas l'intention de publier cela, mais j'ai reçu de nombreuses demandes
  • Ouvrir une porte de garage avec une télécommande standard
  • Ouvrez une porte de garage avec l'ouvre-porte de garage mural
  • Ouvrir une porte de garage avec un SmartPhone
  • Surveillez l'état de la porte de garage à distance via un téléphone portable ou un ordinateur portable (est-elle ouverte ou fermée ?)
  • Envoyer un message texte à mon téléphone portable si la porte est ouverte alors qu'elle devrait être fermée
  • Gardez la porte de garage sécurisée (par exemple, en cas de panne de courant, la porte ne doit pas s'ouvrir)
  • Ne permettez à personne d'autre sur le net d'ouvrir la porte (certificat SSL auto-signé bidirectionnel)
  • Utiliser le WiFi au lieu d'une connexion filaire
  • Utiliser un Raspberry Pi 3

La base de cette implémentation d'ouvre-porte de garage est dérivée de l'Instructable: Ouvre-porte de garage Raspberry Pi par quartarian. À l'origine, j'utilisais un modèle B+ Raspberry Pi, puis je suis passé à un Raspberry Pi 2 modèle B, et maintenant il utilise un Raspberry Pi 3.

J'ai utilisé un MacBook pour communiquer avec le Raspberry Pi, mais n'importe quel ordinateur peut être utilisé.

Il n'y a aucune raison impérieuse de construire cet appareil, mais c'était amusant. Il est plus rentable d'en acheter un. Un appareil similaire peut être acheté pour environ 130 USD.

  • Maître d'ascenseur 828LM
  • Chamberlain MyQ 129 $
  • Porte GoGo 179 $
  • Artisan 100 $

Remarques:

  • Le texte entre les piques, comme celui-ci ♣replace-this♣ doit être remplacé par une valeur réelle
  • Le texte bleu souligné par Arduino est un lien. Dans ce cas, il s'agit d'un lien vers une version arduino d'un ouvre-porte de garage.
  • J'ai essayé de créditer chaque source utilisée. Mes excuses pour toute omission. La plupart de ce document est basé sur le travail d'autres personnes.
  • $ indique une commande exécutée dans une fenêtre de terminal sur le MacBook et est généralement exécutée sur le Raspberry Pi

Étape 1: Rassemblez les pièces

Achetez ou rassemblez des pièces et des outils (prix en USD).

  • Raspberry Pi 3 Modèle B Newark Element14 35 $
  • Adaptateur secteur USB 5,2 V 2,5 A d'Amazon 9,99 $
  • Câble micro USB vers USB 6 pieds d'Amazon 7,99 $
  • Étui d'Amazon 6,99 $
  • SanDisk Ultra 16 Go microSDHC classe 10 avec adaptateur (SDSQUAN-016G-G4A) d'Amazon 8,99 $
  • Module de protection de relais SunFounder 2 canaux 5V pour Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $6.79
  • 3x fils de connexion femelle-femelle. Acheté chez Fry pour 4,95 $.
  • DNS dynamique 40 $ par an pour 30 noms (dyn.com)
  • 1-Gang 18 cu. po. Old Work Heavy Work interrupteur mural et boîte de sortie, 3,12 $
  • Plaque murale blanche à brosse unique Ultra Pro, 7,88 $
  • SECO-LARM SM 226L, capteur de porte de garage, le prix varie considérablement, 9,99 $ sur Amazon avec livraison gratuite
  • 50 pieds de fil de thermostat solide, Home Depot ou Lowe's, ~ 20 $

Mon total: ~ 172,00 $

J'ai eu les pièces, outils et services suivants:

  • Câble Ethernet CAT5
  • Fil de petit calibre, 6 pi de long
  • Tournevis cruciforme
  • Pince à bec effilé
  • Coupe-boîtes
  • Tournevis à tête plate de bijoutier, nécessaire pour desserrer les vis sur le relais
  • MacBook (un PC peut être utilisé)
  • AT&T GigaPower (n'importe quel fournisseur d'accès Internet peut être utilisé)

Étape 2: Configurer Raspberry Pi sans moniteur ni clavier

Configurer Raspberry Pi sans moniteur ni clavier
Configurer Raspberry Pi sans moniteur ni clavier

Tous les projets Raspberry Pi nécessitent un certain type de configuration. J'aime utiliser le même ensemble d'instructions et, si nécessaire, avoir un endroit pour mettre à jour ces instructions.

Configurez Raspberry Pi à l'aide de l'instruction suivante:

Configurer Raspberry Pi sans moniteur ni clavier

L'instructable ci-dessus comprend des étapes facultatives dans l'annexe. Assurez-vous de faire l'étape:

Ajouter des certificats côté client aux serveurs Web

Arrêter Raspberry Pi

$ sudo shutdown -h 0

Une fois l'arrêt, supprimez

  • câble Ethernet
  • Câble série USB

Ceux-ci ne seront plus nécessaires. Utilisez le wifi, ssh et une fenêtre de terminal sur le Mac Book pour exécuter des commandes sur le Raspberry Pi.

Débranchez l'alimentation et rebranchez l'alimentation, et Raspberry Pi devrait redémarrer.

Étape 3: Installer Wiring Pi, Apache et PHP

Installer le câblage Pi

Ouvrez une fenêtre de terminal sur le Mac Book. Connectez-vous à Raspberry Pi, puis téléchargez, compilez et installez Wiring Pi. Ce logiciel permet de contrôler les broches GPIO. Voici un guide étape par étape:

wiringpi.com/download-and-install/

Voici une version condensée des instructions:

$ ssh pi@♣raspberry-pi-ip♣

mot de passe: ♣mot de passe♣ $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd câblagePi $ git pull origin $./build

Exécutez la commande gpio pour vérifier l'installation:

$ gpio -v

Version gpio: 2.29 Copyright (c) 2012-2015 Gordon Henderson Ceci est un logiciel gratuit avec ABSOLUMENT AUCUNE GARANTIE. Pour plus de détails, tapez: gpio -warranty Raspberry Pi Détails: Type: Modèle 2, Révision: 1.1, Mémoire: 1024 Mo, Fabricant: Sony [OV] L'arborescence des périphériques est activée. Ce Raspberry Pi prend en charge l'accès GPIO au niveau utilisateur. -> Voir la page de manuel pour plus de détails $ gpio readall +-----+-----+---------+------+---+--- Pi 2---+---+------+---------+-----+-----+ | BCM | wpi | Nom | Mode | V | Physique | V | Mode | Nom | wpi | BCM | +-----+-----+---------+------+---+----++----+---+- -----+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | EN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | EN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | OUT | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | EN | 0 | 11 || 12 | 0 | EN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | EN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | EN | 0 | 15 || 16 | 1 | EN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | EN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | EN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | EN | 0 | 21 || 22 | 0 | EN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | EN | 0 | 23 || 24 | 1 | EN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | EN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | EN | 1 | 27 || 28 | 1 | EN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | EN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | EN | 1 | 31 || 32 | 0 | EN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | EN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | EN | 0 | 35 || 36 | 0 | EN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | EN | 0 | 37 || 38 | 0 | EN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | EN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+- -----+---------+-----+-----+ | BCM | wpi | Nom | Mode | V | Physique | V | Mode | Nom | wpi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+--- ---+---------+-----+-----+

Les commandes ci-dessus devraient vous donner l'assurance que le câblage Pi fonctionne correctement.

Installer Apache et PHP

Exécutez les commandes suivantes:

$ cd..

$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5

Pour vérifier que le serveur Web fonctionne, ouvrez un navigateur et dans la zone URL, saisissez:

♣framboise-pi-ip♣

Le site Web par défaut d'Apache répond par "It Works!"

Étape 4: Site Web

Ouvrez une fenêtre de terminal sur le Mac Book. Connectez-vous à Raspberry Pi, puis supprimez le fichier index.html par défaut, modifiez les autorisations sur le répertoire du site Web et modifiez un fichier appelé index.php.

$ ssh pi@♣raspberry-pi-ip♣

mot de passe: ♣mot de passe♣ $ sudo rm /var/www/index.html $ sudo chown pi:root /var/www $ sudo nano /var/www/index.php

Et entrez le code suivant:

Ouvre-garage

Automatisation de la maison

<?php if ($switch == 1) { echo"

"; } else { echo"

"; } ?>

Porte de garage Manuel d'ouvre-porte de garage fermé 1 ouvrir 0
<?php if ($trigger == 0) { echo " <td colspan=\"4\" } else { echo"

var13 -->

CTRL-o et ENTER pour écrire le fichier, et CTRL-x pour quitter l'éditeur.

Modifier les autorisations sur le fichier

$ sudo chmod 664 /var/www/index.php

Étape 5: Image du site Web

Image du site Web
Image du site Web
Image du site Web
Image du site Web

Prenez un ouvre-porte de garage à distance haute résolution sur le Web. Modifiez l'image comme vous le souhaitez à l'aide du pinceau Mac. Dans l'image ci-dessus, un ouvre-porte de garage Genie haute résolution a été utilisé, un logo Raspberry Pi a été ajouté et la led a été supprimée.

Une image est l'arrière-plan (remote-background.jpg), et l'autre est l'image active (remote-press.jpg).

Le plan était qu'en appuyant sur un bouton, au lieu de faire clignoter la LED, la framboise clignoterait. J'ai simplifié le site.

Copiez les images dans le raspberry pi:

$ scp *-j.webp

mot de passe: ♣mot de passe♣

Le site Web a un seul bouton poussoir. Pour vérifier, ouvrez un navigateur et entrez ♣raspberry-pi-ip♣. Au lieu du site Web par défaut d'Apache, qui dit "Ça marche !", le bouton devrait apparaître. Appuie.

Étape 6: Contrôler à distance le serveur Web

Pour faciliter l'accès à l'ouvre-porte de garage à distance, j'utilise un nom DNS dynamique. Parce que je n'aime pas me souvenir des adresses IP.

Avec cette fonctionnalité, j'entre ♣dynamic-hostname♣.getmyip.com dans le champ URL d'un navigateur. Remarque: l'adresse IP des routeurs domestiques peut changer sans préavis, mais cela arrive rarement. J'ai choisi d'utiliser DynDNS. Vous aurez besoin de connaître l'adresse IP publique de votre routeur.

IP du routeur U-Verse: uverse-public-ip♣

Vous pouvez afficher vos noms d'hôte et les détails de votre compte DynDNS Pro. Voici quelques conseils pour commencer:

  • Créez votre nom d'hôte DNS dynamique (1 sur 30):

    • ♣dynamic-hostname♣
    • Clé de mise à jour: ♣dynamic-ip-updater-key♣
  • Installez un client de mise à jour pour vous assurer que votre nom d'hôte pointe toujours vers la bonne adresse IP.

    • Télécharger et installer sur MacBook
    • Les adresses IP AT&T U-verse changent rarement, donc le programme de mise à jour ci-dessus peut être exécuté chaque fois qu'il change
    • Suivez les instructions:

      • Ajouter un compte
      • Entrez le nom d'utilisateur et le mot de passe: ♣dynamic-ip-username♣ ♣dynamic-ip-password♣
      • Sélectionnez le nom d'hôte
      • Cliquez sur Configurer les hôtes sélectionnés
      • L'hôte devrait devenir actif
    • Configurez votre réseau pour autoriser l'accès à votre appareil depuis Internet. Vous pouvez utiliser notre assistant Dyn pour obtenir des instructions générales sur la façon de procéder, utiliser des ressources telles que PortForward.com ou contacter le fabricant de l'appareil pour obtenir de l'aide.

      • AT&T U-verse
      • Redirection de port pour 2-Wire 3801HGV - c'est le routeur AT&T U-Verse que j'ai. Voir Mises à jour dans une annexe pour savoir comment transférer le port sur le routeur AT&T U-verse 5268ac.
      • Ouvrez le navigateur et accédez à ♣raspberry-pi-ip♣
      • Mot de passe: mot de passe♣
      • Paramètres
      • Pare-feu

        • Choisissez ♣raspberry-pi-hostname♣
        • Les serveurs

          • Serveur Web port 80
          • Serveur HTTPS - port 443
        • Ajouter
      • sauvegarder

Une fois cela fait, le serveur Web fonctionnera à partir d'Internet. Pour vérifier, entrez ♣dynamic-hostname♣ et vous devriez voir le bouton de l'ouvre-porte de garage.

Étape 7: Câblez le circuit au Raspberry Pi

Câblez le circuit au Raspberry Pi
Câblez le circuit au Raspberry Pi

Pour le code fourni (étapes 4 et 6), j'ai utilisé la broche GPIO 7. C'est une coïncidence si GPIO 7 est identique à la broche 7 de câblagePi. Dans le code PHP, les numéros de broche Pi de câblage sont utilisés et NON les numéros de broche GPIO. Vous pouvez utiliser celui que vous voulez, mais assurez-vous de changer le code.

J'ai essayé d'utiliser du fil torsadé, mais le relais ne tient pas bien sur le fil torsadé. Le fil solide est meilleur.

Lors de ma première tentative, j'ai créé trois câbles de connexion (femelle à mâle).

  • Utilisez trois câbles de démarrage femelle à femelle
  • Coupez trois morceaux de fil solide à environ 1 po.

    Dénudez 1/4 po aux deux extrémités du fil solide

  • Insérez un fil solide dans un câble de démarrage femelle.

Voici une meilleure façon de créer des câbles de connexion (femelle à mâle):

  • Utiliser uniquement du fil solide
  • Coupez trois morceaux de fil solide de 4 pouces
  • Dénudez 1/4 po aux deux extrémités du fil solide
  • Utiliser des broches de connexion femelles

    • Faites glisser une broche de connexion femelle sur une extrémité du fil solide et sertissez

      La broche femelle ne doit pas se desserrer, souder si nécessaire

    • Faites glisser la décharge de traction sur la broche de connexion femelle ou la broche de couverture avec du ruban d'électricien

Câblez le relais au pi comme indiqué sur le schéma:

  • Connectez l'extrémité femelle du câble à la broche Raspberry Pi.
  • Insérez le fil solide dans le relais.

Étape 8: Créer un service de démarrage

La plupart des relais, y compris celui acheté, fonctionnent comme ceci:

  • Lorsque le signal est activé, le circuit reste éteint.
  • Lorsque le signal est désactivé, le circuit est activé.

Si le Raspberry Pi perd de l'alimentation, le relais dispose d'un mécanisme de sécurité qui maintient le circuit éteint.

Un problème peut survenir lorsque le Rapberry Pi et le relais sont rétablis, mais avant que le Raspberry Pi n'ait fini de démarrer pour activer le signal, ce qui est nécessaire pour maintenir le circuit éteint. Vous pourriez vous réveiller le matin avec votre garage ouvert et potentiellement quelques nouveaux amis !

Cependant, le relais ne s'initialise pas tant que le mode de broche GPIO n'est pas défini via cette commande: gpio mode 7 out. De plus, si la broche GPIO est sur ON (gpio write 7 1) avant de définir le mode GPIO, le relais restera éteint une fois initialisé.

Pour que cette initialisation s'exécute au démarrage et ne vous réveille pas avec de nouveaux amis, utilisez le script de démarrage suivant.

$ ssh pi@♣raspberry-pi-ip♣

$ sudo nano /etc/init.d/garagerelay

Collez ensuite ce script:

# ! /bin/bash

# /etc/init.d/garagerelay # Exécuter des fonctions spécifiques lorsque le système le demande (case "$1" dans start) echo "Starting Relay" # Activer 7 qui maintient le relais éteint /usr/local/bin/gpio write 7 1 #Démarrer Gpio /usr/local/bin/gpio mode 7 out;; stop) echo "Arrêter gpio";; *) echo "Utilisation: /etc/init.d/garagerelay {start|stop}" exit 1;; esac sortie 0

Pour enregistrer: CTRL-o, ENTER

Pour quitter nano, CTRL-x

Rendez le fichier exécutable:

$ sudo chmod +x /etc/init.d/garagerelay

Maintenant, dites à votre pi d'exécuter ce script au démarrage:

$ sudo update-rc.d -f garagerelay start 4

(Remarque: vous pouvez ignorer en toute sécurité l'avertissement « balises LSB manquantes ».)

Assurez-vous que le script de démarrage est en cours d'exécution

$ sudo redémarrer

Ouvrez un navigateur et cliquez sur l'ouvreur. Le relais doit cliquer.

Étape 9: Fixez Raspberry Pi au garage

Attachez Raspberry Pi au garage
Attachez Raspberry Pi au garage

Lorsque vous déplacez le Raspberry Pi, assurez-vous d'exécuter:

$ arrêt -h 0

Vous voudrez peut-être couper l'alimentation du garage. Donc, l'ouvre-porte ne vous électrocute pas:). La vraie raison est que chaque fois que vous court-circuitez les fils, la porte monte et descend.

Dévissez les vis murales de l'ouvre-porte de type sonnette, qui fixe la sonnette au mur.

Percez un trou à travers le garage derrière l'ouvre-porte jusqu'à l'intérieur de la maison. Au Texas, le Raspberry Pi ne doit pas être dans le garage, la variation de température dans le garage est en dehors des spécifications de fonctionnement du Raspberry Pi.

Faites passer les fils du relais dans le trou (utilisez un cintre).

Desserrez les deux vis à l'arrière de l'ouvre-porte.

Dénudez les deux extrémités des fils de relais: 1) environ 1/8" de pouce du côté du relais et environ ½" de pouce du côté de la sonnette. Pliez le côté sonnette du fil dans une demi-boucle assez grande pour s'adapter autour de la vis arrière.

Connectez un fil de relais à chaque vis à l'arrière de la sonnette et serrez la vis. Les connexions sont comme indiqué dans l'image. Étant donné que le relais isole le circuit, la direction n'a même pas d'importance quel relais est attaché à quelle vis.

Étape 10: Fixer Raspberry Pi à SECO-LARM

Fixer le Raspberry Pi au SECO-LARM
Fixer le Raspberry Pi au SECO-LARM
Fixer le Raspberry Pi au SECO-LARM
Fixer le Raspberry Pi au SECO-LARM

Avant d'avoir terminé le code, ma famille et moi étions en vacances et j'ai ouvert mon navigateur. La dernière vue de mon navigateur était celle de l'ouvre-porte de garage - la page s'est rafraîchie et la porte de garage s'est ouverte. Quelques jours plus tard, un voisin a appelé et a demandé si la porte du garage devait être ouverte ? Heureusement, j'ai pu le fermer à 500 milles de distance.

Ce snafu m'a obligé à changer le code pour que cela n'arrive pas, et à ajouter un capteur et l'état de la porte de garage sur le site.

Il s'agit d'un lien vers l'original instructable pour ajouter un capteur. Cependant, étant donné tout ce qui a déjà été terminé, l'installation du capteur peut être grandement simplifiée et au lieu d'utiliser python, ajoutez quelques lignes de code à index.php.


Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:518 Stack trace: #0 W:\www\langs\.php-gen-lang\v3-core\macros.php(127): eval() #1 W:\www\langs\.php-gen-lang\v3-core\index-global.php(231): Macros->macros_parse('<!DOCTYPE html>...') #2 W:\www\langs\howwhatproduce.com\fr.howwhatproduce.com\index.php(9): require_once('W:\\www\\langs\\.p...') #3 {main} thrown in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code on line 518