
Sommario:
- Passaggio 1: raccogliere le parti
- Passaggio 2: configura Raspberry Pi senza monitor o tastiera
- Passaggio 3: installa Wiring Pi, Apache e PHP
- Passaggio 4: sito web
- Passaggio 5: immagine del sito web
- Passaggio 6: controllo remoto del server Web
- Passaggio 7: collegare il circuito al Raspberry Pi
- Passaggio 8: creare un servizio di avvio
- Passaggio 9: collegare Raspberry Pi al garage
- Passaggio 10: collegare Raspberry Pi a SECO-LARM
- Passaggio 11: inviare un avviso se la porta è aperta quando dovrebbe essere chiusa
- Passaggio 12: inserisci Raspberry Pi nel libro segreto
- Passaggio 13: Appendice: Riferimenti
- Passaggio 14: Appendice: Aggiornamenti
- Passaggio 15: Appendice: risoluzione dei problemi
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-06-01 06:09

Ho creato questo istruibile nel 2014. Da allora molto è cambiato. Nel 2021, ho aggiornato l'apriporta intelligente del garage qui.
Usa un Raspberry Pi e uno smartphone per aprire, chiudere e monitorare una porta del garage. L'apertura e la chiusura della porta è garantita dall'utilizzo di certificati autofirmati installati sui telefoni cellulari della famiglia. Se la porta del garage è aperta quando non dovrebbe essere, invia un messaggio di testo (SMS) a un telefono cellulare.
La porta del garage è in uso continuo dalla fine del 2014. Nel corso degli anni, ho cercato di mantenere aggiornate le modifiche. C'è un'appendice che descrive le modifiche all'istruibile.
Gli obiettivi di questo progetto sono:
- Crea il mio primo istruibile - non avevo intenzione di pubblicarlo, ma ho ricevuto molte richieste
- Apri una porta del garage con un telecomando standard
- Apri una porta del garage con l'apriporta da garage con campanello a parete
- Apri una porta del garage con uno smartphone
- Monitorare lo stato della porta del garage da remoto tramite cellulare o laptop (è aperta o chiusa?)
- Invia un messaggio di testo al mio cellulare se la porta è aperta quando dovrebbe essere chiusa
- Mantieni sicura la porta del garage (ad esempio, in caso di interruzione di corrente, la porta non deve aprirsi)
- Non consentire a nessun altro in rete di aprire la porta (certificato SSL autofirmato a due vie)
- Usa il WiFi invece di una connessione cablata
- Usa un Raspberry Pi 3
La base per questa implementazione di Garage Door Opener è stata derivata da Instructable: Raspberry Pi Garage Door Opener di quartarian. Inizialmente, ho usato un modello B + Raspberry Pi, quindi sono passato a un modello B Raspberry Pi 2 e ora utilizza un Raspberry Pi 3.
Ho usato un MacBook per comunicare con il Raspberry Pi, ma è possibile utilizzare qualsiasi computer.
Non c'è una ragione convincente per costruire questo dispositivo, ma è stato divertente. È più conveniente acquistarne uno. Un dispositivo simile può essere acquistato per circa $ 130 USD.
- Ascensore maestro 828LM
- Ciambellano MyQ $129
- Porta GoGo $ 179
- Artigiano $ 100
Appunti:
- Il testo racchiuso tra picche, come questo sostituisci-questo♣ dovrebbe essere sostituito con un valore effettivo
- Il testo blu sottolineato Arduino è un collegamento. In questo caso, è un collegamento a una versione arduino di un apriporta per garage.
- Ho cercato di accreditare ogni fonte utilizzata. Le mie scuse per eventuali omissioni. La maggior parte di questo documento si basa sul lavoro di altre persone.
- $ indica un comando eseguito in una finestra di terminale sul MacBook e di solito viene eseguito sul Raspberry Pi
Passaggio 1: raccogliere le parti
Acquista o raccogli parti e strumenti (prezzi in USD).
- Raspberry Pi 3 Modello B Newark Element14 $ 35
- Adattatore di alimentazione USB da 5,2 V 2,5 A da Amazon $ 9,99
- Cavo da Micro USB a USB 6 piedi da Amazon $ 7,99
- Custodia da Amazon $ 6,99
- SanDisk Ultra 16 GB microSDHC Classe 10 con adattatore (SDSQUAN-016G-G4A) da Amazon $ 8,99
- Modulo scudo relè SunFounder 2 canali 5V per Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6,79
- 3x cavi jumper femmina-femmina. Acquistato da Fry's per $ 4,95.
- DNS dinamico $ 40 all'anno per 30 nomi (dyn.com)
- 1-Gang 18 cu. in. Vecchio interruttore a parete pesante e scatola di derivazione, $ 3,12
- Piatto da parete bianco a spazzola singola Ultra Pro, $ 7,88
- SECO-LARM SM 226L, sensore per porta del garage, il prezzo varia ampiamente, $ 9,99 su Amazon con spedizione gratuita
- 50 piedi di cavo termostato solido, Home Depot o Lowe's, ~ $ 20
Il mio totale: ~$172,00
Ho avuto le seguenti parti, strumenti e servizi:
- Cavo Ethernet CAT5
- Cavo di piccolo calibro, lungo 6 piedi
- Cacciavite a croce
- Pinze ago
- Taglierini
- Cacciavite a testa piatta per gioiellieri, necessario per allentare le viti sul relè
- MacBook (è possibile utilizzare un PC)
- AT&T GigaPower (è possibile utilizzare qualsiasi provider di servizi Internet)
Passaggio 2: configura Raspberry Pi senza monitor o tastiera

Tutti i progetti Raspberry Pi richiedono un qualche tipo di configurazione. Mi piace usare lo stesso insieme di istruzioni e, quando necessario, avere un posto per aggiornare tali istruzioni.
Imposta Raspberry Pi utilizzando il seguente comando:
Configura Raspberry Pi senza monitor o tastiera
L'istruzione sopra include passaggi facoltativi nell'appendice. Assicurati di fare il passaggio:
Aggiungi certificati lato client ai server web
Spegnimento Raspberry Pi
$ sudo spegnimento -h 0
Una volta spento, rimuovere
- cavo Ethernet
- Cavo seriale USB
Questi non saranno più necessari. Usa wifi, ssh e una finestra di terminale sul Mac Book per eseguire comandi sul Raspberry Pi.
Scollegare l'alimentazione e ricollegarla e il raspberry pi dovrebbe riavviarsi.
Passaggio 3: installa Wiring Pi, Apache e PHP
Installa cablaggio più
Apri una finestra di terminale sul Mac Book. Accedi a Raspberry Pi, quindi scarica, compila e installa Wiring Pi. Questo software consente il controllo dei pin GPIO. Ecco una guida passo passo:
wiringpi.com/download-and-install/
Ecco una versione ridotta delle istruzioni:
$ ssh pi@♣raspberry-pi-ip♣
password: password♣ $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd cablaggioPi $ git pull origin $./build
Eseguire il comando gpio per verificare l'installazione:
$ gpio -v
gpio versione: 2.29 Copyright (c) 2012-2015 Gordon Henderson Questo è un software gratuito con ASSOLUTAMENTE NESSUNA GARANZIA. Per i dettagli, digitare: gpio -warranty Dettagli Raspberry Pi: Tipo: Modello 2, Revisione: 1.1, Memoria: 1024 MB, Produttore: Sony [OV] L'albero dei dispositivi è abilitato. Questo Raspberry Pi supporta l'accesso GPIO a livello di utente. -> Vedi la pagina man per maggiori dettagli $ gpio readall +-----+-----+---------+------+---+--- Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Nome | Modalità | V | Fisico | V | Modalità | Nome | wPi | BCM | +-----+-----+---------+------+---+----++----+---+- -----+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | FUORI | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+- -----+---------+-----+-----+ | BCM | wPi | Nome | Modalità | V | Fisico | V | Modalità | Nome | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+--- ---+---------+-----+-----+
I comandi precedenti dovrebbero darti una certa sicurezza sul fatto che cablaggioPi funzioni correttamente.
Installa Apache e PHP
Esegui i seguenti comandi:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Per verificare che il server web funzioni, apri un browser e nella casella dell'URL inserisci:
raspberry-pi-ip♣
Il sito Web predefinito di Apache risponde con "Funziona!"
Passaggio 4: sito web
Apri una finestra di terminale sul Mac Book. Accedi a Raspberry Pi, quindi rimuovi il file index.html predefinito, modifica i permessi nella directory del sito Web e modifica un file chiamato index.php.
$ ssh pi@♣raspberry-pi-ip♣
password: password♣ $ sudo rm /var/www/index.html $ sudo chown pi:root /var/www $ sudo nano /var/www/index.php
E inserisci il seguente codice:
Apri garage
Domotica |
---|
Apriporta del garage | Manuale dell'apriporta del garage | chiuso 1 | aperto 0 |
CTRL-o e ENTER per scrivere il file e CTRL-x per uscire dall'editor.
Modificare i permessi sul file
$ sudo chmod 664 /var/www/index.php
Passaggio 5: immagine del sito web


Prendi un apriporta da garage remoto ad alta risoluzione dal web. Modifica l'immagine come desideri utilizzando il pennello Mac. Nell'immagine sopra, è stato utilizzato un Genie Garage Opener ad alta risoluzione, è stato aggiunto un logo Raspberry Pi e il led è stato rimosso.
Un'immagine è lo sfondo (remote-background.jpg) e l'altra è l'immagine attiva (remote-press.jpg).
Il piano era che premendo un pulsante, invece di far lampeggiare il led, il lampone lampeggiasse. Ho semplificato il sito.
Copia le immagini nel Raspberry Pi:
$ scp *-j.webp
password: password♣
Il sito web ha un solo pulsante. Per verificare, apri un browser e inserisci ♣raspberry-pi-ip♣. Invece del sito Web predefinito di Apache, che dice "Funziona!", dovrebbe apparire il pulsante. Premilo.
Passaggio 6: controllo remoto del server Web
Per facilitare l'accesso a Garage Door Opener da una posizione remota, utilizzo un nome DNS dinamico. Perché non mi piace ricordare gli indirizzi IP.
Con questa funzione, inserisco ♣dynamic-hostname♣.getmyip.com nel campo URL di un browser. Nota: l'IP sui router domestici può cambiare senza preavviso, ma ciò accade raramente. Ho scelto di utilizzare DynDNS. Dovrai conoscere l'indirizzo IP pubblico del tuo router.
IP del router U-Verse: uverse-public-ip♣
Puoi visualizzare i tuoi nomi host e i dettagli dell'account DynDNS Pro. Ecco alcuni suggerimenti per iniziare:
-
Crea il tuo nome host DNS dinamico (1 di 30):
- nome-host dinamico♣
- Chiave di aggiornamento: dynamic-ip-updater-key♣
-
Installa un client di aggiornamento per assicurarti che il tuo nome host sia sempre puntato sull'indirizzo IP corretto.
- Scarica e installa su MacBook
- Gli IP AT&T U-verse cambiano raramente, quindi il programma di aggiornamento sopra può essere eseguito ogni volta che cambia
-
Segui le indicazioni:
- Aggiungi account
- Inserisci nome utente e password: nomeutente-ip-dinamico♣ password-ip-dinamico♣
- Seleziona il nome host
- Fare clic su Configura host selezionati
- L'host dovrebbe diventare attivo
-
Configura la tua rete per consentire l'accesso al tuo dispositivo da Internet. Puoi utilizzare la nostra procedura guidata Dyn per alcune istruzioni generali su come eseguire questa operazione, utilizzare risorse come PortForward.com o contattare il produttore del dispositivo per assistenza.
- AT&T U-verso
- Port Forwarding per 3801HGV 2-Wire - questo è il router AT&T U-Verse che ho. Vedere Aggiornamenti in un'appendice per informazioni su come eseguire il port forwarding sul router AT&T U-verse 5268ac.
- Apri il browser e vai su raspberry-pi-ip♣
- Password: password♣
- Impostazioni
-
Firewall
- Scegli raspberry-pi-hostname♣
-
Server
- Porta Web Server 80
- Server HTTPS - porta 443
- Aggiungere
- Salva
Fatto ciò, il server web funzionerà da Internet. Per verificare, inserisci "nome host dinamico" e dovresti vedere il pulsante di apertura della porta del garage.
Passaggio 7: collegare il circuito al Raspberry Pi

Per il codice fornito (passi 4 e 6), ho usato il pin 7 GPIO. È una coincidenza che GPIO 7 sia uguale al pin 7 di cablaggioPi. Nel codice PHP, vengono utilizzati i numeri di pin Pi di cablaggio e NON i numeri di pin GPIO. Puoi usare quello che vuoi, ma assicurati di cambiare il codice.
Ho provato a usare un cavo intrecciato, ma il relè non regge bene sul cavo intrecciato. Il filo solido è meglio.
Al mio primo tentativo, ho creato tre cavi di collegamento (femmina-maschio).
- Utilizzare tre cavi jumper da femmina a femmina
-
Tagliare tre pezzi di filo solido a circa 1 pollice.
Spelare 1/4 di pollice su entrambe le estremità del filo solido
- Inserire un filo solido in un cavo jumper femmina.
Ecco un modo migliore per creare cavi di collegamento (femmina-maschio):
- Utilizzare solo filo solido
- Taglia tre pezzi da 4 pollici di filo pieno
- Spelare 1/4 di pollice su entrambe le estremità del filo solido
- Utilizzare pin di collegamento femmina
-
Far scorrere un pin di collegamento femmina su un'estremità del filo solido e crimpare
Il perno femmina non deve allentarsi, saldare se necessario
- Far scorrere il pressacavo sul perno di collegamento femmina o sul perno di copertura con nastro da elettricista
-
Collegare il relè al pi come mostrato nello schema:
- Collegare l'estremità femmina del cavo al pin Raspberry Pi.
- Inserire il filo solido nel relè.
Passaggio 8: creare un servizio di avvio
La maggior parte dei relè, compreso quello acquistato, funziona in questo modo:
- Quando il segnale è ON il circuito rimane spento.
- Quando il segnale è OFF, il circuito è acceso.
Se il Raspberry Pi perde potenza, il relè ha un meccanismo di sicurezza che mantiene il circuito spento.
Potrebbe verificarsi un problema quando il Rapberry Pi e il relè vengono ripristinati, ma prima che il Raspberry Pi abbia terminato l'avvio per attivare il segnale necessario per mantenere il circuito spento. Potresti svegliarti la mattina con il tuo garage aperto e potenzialmente qualche nuovo amico!
Tuttavia, il relè non si inizializza effettivamente finché la modalità pin GPIO non viene impostata tramite questo comando: gpio mode 7 out. Inoltre, se il pin GPIO è su ON (gpio write 7 1) prima di impostare la modalità GPIO, il relè rimarrà spento una volta inizializzato.
Per fare in modo che questa inizializzazione venga eseguita all'avvio e non risvegli con nuovi amici, usa il seguente script di avvio.
$ ssh pi@♣raspberry-pi-ip♣
$ sudo nano /etc/init.d/garagerelay
Quindi incolla questo script:
#! /bin/bash
# /etc/init.d/garagerelay # Esegue funzioni specifiche quando richiesto dal sistema case "$1" in start) echo "Starting Relay" # Attiva 7 che mantiene il relè spento /usr/local/bin/gpio write 7 1 #Avvia Gpio /usr/local/bin/gpio mode 7 out;; stop) echo "Stop gpio";; *) echo "Utilizzo: /etc/init.d/garagerelay {start|stop}" exit 1;; esac uscita 0
Per salvare: CTRL-o, ENTER
Per uscire da nano, CTRL-x
Rendi eseguibile il file:
$ sudo chmod +x /etc/init.d/garagerelay
Ora dì al tuo pi di eseguire questo script all'avvio:
$ sudo update-rc.d -f garagerelay start 4
(Nota: puoi tranquillamente ignorare l'avviso "tag LSB mancanti".)
Assicurati che lo script di avvio sia in esecuzione
$ sudo reboot
Apri un browser e fai clic sull'apri. Il relè dovrebbe fare clic.
Passaggio 9: collegare Raspberry Pi al garage

Quando sposti il Raspberry Pi, assicurati di eseguire:
$ spegnimento -h 0
Potresti voler togliere l'alimentazione al garage. Quindi, l'apriporta non ti fulmina:). Il vero motivo è che ogni volta che metti in corto i fili, la porta si alza e si abbassa.
Svitare le viti a muro dall'apriporta campanello, che fissa il campanello alla parete.
Fai un buco attraverso il garage dietro l'apriporta all'interno della casa. In Texas, il Raspberry Pi non dovrebbe essere in garage, la variazione di temperatura nel garage è al di fuori delle specifiche operative del Raspberry Pi.
Fai passare i cavi del relè attraverso il foro (usa un appendiabiti).
Allentare entrambe le viti sul retro dell'apriporta.
Spellare entrambe le estremità dei cavi del relè: 1) circa 1/8 di pollice dal lato del relè e circa ½ pollice dal lato del campanello. Piega il lato del cavo del campanello in un mezzo anello abbastanza grande da adattarsi alla vite sul retro.
Collega un cavo relè a ciascuna vite sul retro del campanello e stringi la vite. I collegamenti sono come mostrato nell'immagine. Poiché il relè isola il circuito, la direzione non importa nemmeno quale relè è collegato a quale vite.
Passaggio 10: collegare Raspberry Pi a SECO-LARM


Prima che avessi finito il codice, io e la mia famiglia eravamo in vacanza e ho aperto il mio browser. L'ultima visualizzazione del mio browser riguardava l'apriporta del garage: la pagina si aggiornava e la porta del garage si apriva. Pochi giorni dopo un vicino ha chiamato e ha chiesto se la porta del garage doveva essere aperta? Fortunatamente, potrei chiuderlo da 500 miglia di distanza.
Questo intoppo mi ha costretto a cambiare il codice in modo che ciò non accadesse e ad aggiungere un sensore e lo stato della porta del garage al sito web.
Questo è un collegamento all'istruzione originale per l'aggiunta di un sensore. Tuttavia, dato tutto ciò che è già stato completato, l'installazione del sensore può essere notevolmente semplificata e invece di utilizzare python aggiungere un paio di righe di codice a 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:516 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\it.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 516