
Inhoudsopgave:
- Stap 1: Verzamel onderdelen
- Stap 2: Stel Raspberry Pi in zonder monitor of toetsenbord
- Stap 3: Installeer Wiring Pi, Apache en PHP
- Stap 4: Website
- Stap 5: Websiteafbeelding
- Stap 6: Webserver op afstand bedienen
- Stap 7: Sluit het circuit aan op de Raspberry Pi
- Stap 8: Maak een opstartservice
- Stap 9: Bevestig Raspberry Pi aan de garage
- Stap 10: Bevestig Raspberry Pi aan SECO-LARM
- Stap 11: Stuur een waarschuwing als de deur open is wanneer deze gesloten moet zijn
- Stap 12: Zet Raspberry Pi in het geheime boek
- Stap 13: Bijlage: Referenties
- Stap 14: Bijlage: Updates
- Stap 15: Bijlage: Problemen oplossen
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-06-01 06:10

Ik heb deze instructable in 2014 gemaakt. Sindsdien is er veel veranderd. In 2021 heb ik de Smart Garage Door Opener hier geüpdatet.
Gebruik een Raspberry Pi en een smartphone om een garagedeur te openen, te sluiten en te bewaken. Het openen en sluiten van de deur wordt beveiligd met behulp van zelfondertekende certificaten die op de mobiele telefoons van het gezin zijn geïnstalleerd. Als de garagedeur open staat terwijl dat niet zou moeten, stuur dan een sms (sms) naar een mobiele telefoon.
De garagedeur is sinds eind 2014 continu in gebruik. In de loop der jaren heb ik geprobeerd de wijzigingen up-to-date te houden. Er is een bijlage waarin de wijzigingen in de instructable worden beschreven.
De doelen van dit project zijn:
- Maak mijn eerste instructable - ik was niet van plan dit te posten, maar ik heb veel verzoeken ontvangen
- Open een garagedeur met een standaard afstandsbediening
- Open een garagedeur met de aan de muur gemonteerde deurbel garageopener
- Open een garagedeur met een SmartPhone
- Bewaak de status van de garagedeur op afstand via een mobiele telefoon of laptop (is deze open of gesloten?)
- Stuur een sms naar mijn mobiele telefoon als de deur open is terwijl deze gesloten moet zijn
- Houd de garagedeur veilig (bijv. bij stroomuitval mag de deur niet openen)
- Sta niet toe dat iemand anders op het internet de deur opent (tweerichtings zelfondertekend SSL-certificaat)
- Gebruik wifi in plaats van een bekabelde verbinding
- Gebruik een Raspberry Pi 3"
De basis voor deze Garage Door Opener-implementatie is afgeleid van de Instructable: Raspberry Pi Garage Door Opener van quartarian. Oorspronkelijk gebruikte ik een model B+ Raspberry Pi, daarna verhuisde ik naar een Raspberry Pi 2 model B, en nu gebruikt het een Raspberry Pi 3.
Ik gebruikte een MacBook om met de Raspberry Pi te communiceren, maar elke computer kan worden gebruikt.
Er is geen dwingende reden om dit apparaat te bouwen, maar het was leuk. Het is voordeliger om er een te kopen. Een soortgelijk apparaat kan worden gekocht voor ongeveer $ 130 USD.
- Liftmaster 828LM
- Chamberlain MyQ $ 129
- GoGo-poort $ 179
- Ambachtsman $ 100
Opmerkingen:
- Tekst tussen schoppen, zoals deze ♣vervang-dit♣ moet worden vervangen door een werkelijke waarde
- Arduino onderstreepte blauwe tekst is een link. In dit geval is het een link naar een arduino-versie van een garagedeuropener.
- Ik heb geprobeerd elke gebruikte bron te vermelden. Mijn excuses voor eventuele omissies. Het grootste deel van dit document is gebaseerd op het werk van anderen.
- $ geeft een opdracht aan die wordt uitgevoerd in een terminalvenster op de MacBook en meestal wordt uitgevoerd op de Raspberry Pi
Stap 1: Verzamel onderdelen
Koop of verzamel onderdelen en gereedschappen (prijzen in USD).
- Raspberry Pi 3 Model B Newark Element14 $ 35
- 5.2V 2.5A USB-lichtnetadapter van Amazon $ 9,99
- Micro-USB naar USB-kabel 6ft van Amazon $ 7,99
- Hoes van Amazon $ 6,99
- SanDisk Ultra 16 GB microSDHC klasse 10 met adapter (SDSQUAN-016G-G4A) van Amazon $ 8,99
- SunFounder 2-kanaals 5V Relay Shield-module voor Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $6.79
- 3x Vrouwelijk-Vrouwelijke Doorverbindingsdraden. Gekocht bij Fry's voor $ 4,95.
- Dynamische DNS $ 40 per jaar voor 30 namen (dyn.com)
- 1-Bende 18 cu. in. Oude zware wandschakelaar en stopcontactdoos, $ 3,12
- Ultra Pro enkele borstel witte muurplaat, $ 7,88"
- SECO-LARM SM 226L, garagedeursensor, prijs varieert sterk, $ 9,99 op Amazon met gratis verzending
- 50ft solide thermostaatdraad, Home Depot of Lowe's, ~ $ 20
Mijn totaal: ~$172,00
Ik had de volgende onderdelen, gereedschappen en diensten:
- CAT5 Ethernet-kabel
- Draad van kleine dikte, 6 ft lang
- Kruiskopschroevendraaier
- Naaldbektang
- Dozensnijders
- Juweliers platte schroevendraaier, nodig om schroeven op relais los te draaien
- MacBook (er kan een pc worden gebruikt)
- AT&T GigaPower (elke internetprovider kan worden gebruikt)
Stap 2: Stel Raspberry Pi in zonder monitor of toetsenbord

Alle Raspberry Pi-projecten vereisen een bepaalde configuratie. Ik gebruik graag dezelfde set instructies en heb, indien nodig, één plek om die instructies bij te werken.
Stel Raspberry Pi in met behulp van de volgende instructable:
Raspberry Pi instellen zonder monitor of toetsenbord
De instructable hierboven bevat optionele stappen in de bijlage. Zorg ervoor dat u de stap uitvoert:
Client-side certificaten toevoegen aan webservers
Raspberry Pi afsluiten
$ sudo afsluiten -h 0
Eenmaal afgesloten, verwijder
- ethernetkabel
- USB seriële kabel
Deze zijn niet meer nodig. Gebruik wifi, ssh en een terminalvenster op de Mac Book om opdrachten op de Raspberry Pi uit te voeren.
Haal de stekker uit het stopcontact en steek de stekker er weer in, en de raspberry pi zou opnieuw moeten opstarten.
Stap 3: Installeer Wiring Pi, Apache en PHP
Bedrading Pi. installeren
Open een terminalvenster op de Mac Book. Log in op Raspberry Pi en download, compileer en installeer vervolgens Wiring Pi. Deze software maakt controle over de GPIO-pinnen mogelijk. Hier is een stapsgewijze handleiding:
wiringpi.com/download-and-install/
Hier is een verkorte versie van de instructies:
$ ssh pi@♣raspberry-pi-ip♣
wachtwoord: ♣wachtwoord♣ $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi $ cd bedradingPi $ git pull origin $./build
Voer de gpio-opdracht uit om de installatie te controleren:
$ gpio -v
gpio versie: 2.29 Copyright (c) 2012-2015 Gordon Henderson Dit is gratis software met ABSOLUUT GEEN GARANTIE. Voor details type: gpio -garantie Raspberry Pi Details: Type: Model 2, Revisie: 1.1, Geheugen: 1024MB, Maker: Sony [OV] Apparaatstructuur is ingeschakeld. Deze Raspberry Pi ondersteunt GPIO-toegang op gebruikersniveau. -> Zie de man-pagina voor meer details $ gpio readall +-----+-----+---------+------+---+--- Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Naam | Modus | V | Fysiek | V | Modus | Naam | 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 | UIT | 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 | Naam | Modus | V | Fysiek | V | Modus | Naam | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+--- ---+---------+-----+-----+
De bovenstaande opdrachten zouden u enig vertrouwen moeten geven dat bedradingPi goed werkt.
Apache en PHP installeren
Voer de volgende opdrachten uit:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Om te controleren of de webserver werkt, opent u een browser en voert u in het URL-vak het volgende in:
framboos-pi-ip♣
De standaardwebsite van Apache reageert met "It Works!"
Stap 4: Website
Open een terminalvenster op de Mac Book. Log in op Raspberry Pi, verwijder vervolgens het standaard index.html-bestand, wijzig de machtigingen in de websitemap en bewerk een bestand met de naam index.php.
$ ssh pi@♣raspberry-pi-ip♣
wachtwoord: ♣wachtwoord♣ $ sudo rm /var/www/index.html $ sudo chown pi:root /var/www $ sudo nano /var/www/index.php
En voer de volgende code in:
Garageopener
Domotica |
---|
Garagedeuropener | Handleiding garagedeuropener | gesloten 1 | open 0 |
CTRL-o en ENTER om het bestand te schrijven en CTRL-x om de editor af te sluiten.
Machtigingen voor het bestand wijzigen
$ sudo chmod 664 /var/www/index.php
Stap 5: Websiteafbeelding


Pak een externe garagedeuropener met hoge resolutie van internet. Pas de afbeelding naar wens aan met Mac-penseel. In de bovenstaande afbeelding werd een Genie Garage Opener met hoge resolutie gebruikt, een Raspberry Pi-logo toegevoegd en de led verwijderd.
De ene afbeelding is de achtergrond (remote-background.jpg) en de andere is de actieve afbeelding (remote-press.jpg).
Het plan was dat bij het indrukken van de knop, in plaats van de led te knipperen, de framboos zou knipperen. Ik heb de website vereenvoudigd.
Kopieer de afbeeldingen naar de Raspberry Pi:
$ scp *-j.webp
wachtwoord: ♣wachtwoord♣
De website heeft een enkele drukknop. Om te verifiëren, opent u een browser en voert u "raspberry-pi-ip" in. In plaats van de standaardwebsite van Apache, die zegt "Het werkt!", zou de knop moeten verschijnen. Druk erop.
Stap 6: Webserver op afstand bedienen
Om het gemakkelijk te maken om vanaf een externe locatie toegang te krijgen tot de garagedeuropener, gebruik ik een dynamische DNS-naam. Omdat ik niet graag IP-adressen onthoud.
Met deze functie voer ik ♣dynamic-hostname♣.getmyip.com in het URL-veld van een browser in. Opmerking: het IP-adres op thuisrouters kan zonder kennisgeving worden gewijzigd, maar dit gebeurt zelden. Ik heb ervoor gekozen om DynDNS te gebruiken. U moet het openbare IP-adres van uw router weten.
U-Verse Router IP: "uverse-public-ip"
U kunt uw hostnamen en DynDNS Pro-accountgegevens bekijken. Hier zijn een paar tips om te beginnen:
-
Maak uw dynamische DNS-hostnaam (1 van 30):
- ♣dynamische-hostnaam♣
- Updater-sleutel: ♣dynamische-ip-updater-sleutel♣
-
Installeer een update-client om ervoor te zorgen dat uw hostnaam altijd naar het juiste IP-adres verwijst.
- Downloaden en installeren op MacBook
- AT&T U-verse IP's veranderen zelden, dus de bovenstaande updater kan worden uitgevoerd wanneer deze verandert
-
Volg de aanwijzingen:
- Account toevoegen
- Voer gebruikersnaam en wachtwoord in: ♣dynamic-ip-username♣ ♣dynamic-ip-password♣
- Selecteer hostnaam
- Klik op Geselecteerde hosts configureren
- De host moet actief worden
-
Configureer uw netwerk om toegang tot uw apparaat vanaf internet toe te staan. U kunt onze Dyn Wizard gebruiken voor enkele algemene instructies over hoe u dit moet doen, bronnen zoals PortForward.com gebruiken of contact opnemen met de fabrikant van het apparaat voor hulp.
- AT&T U-vers
- Port Forwarding voor 2-Wire 3801HGV - dit is de AT&T U-Verse router die ik heb. Zie Updates in een bijlage voor informatie over port forwarding op een AT&T U-verse 5268ac-router.
- Open de browser en ga naar "raspberry-pi-ip"
- Wachtwoord: ♣wachtwoord♣
- Instellingen
-
Firewall
- Kies "raspberry-pi-hostname"
-
Servers
- Webserver-poort 80
- HTTPS-server - poort 443
- Toevoegen
- Opslaan
Zodra dit is gebeurd, werkt de webserver vanaf internet. Om te verifiëren, voert u ♣dynamic-hostname♣ in en u zou de knop voor de garagedeuropener moeten zien.
Stap 7: Sluit het circuit aan op de Raspberry Pi

Voor de verstrekte code (stap 4 en 6) heb ik GPIO pin 7 gebruikt. Het is toeval dat GPIO 7 hetzelfde is als bedradingPi pin 7. In de PHP-code worden bedrading Pi-pinnummers gebruikt en NIET GPIO-pinnummers. U kunt gebruiken welke u wilt, maar zorg ervoor dat u de code wijzigt.
Ik heb geprobeerd gedraaide draad te gebruiken, maar het relais houdt niet goed vast op gedraaide draad. Stevige draad is beter.
Bij mijn eerste poging heb ik drie verbindingskabels gemaakt (vrouw-naar-man).
- Gebruik drie vrouwelijke naar vrouwelijke startkabels
-
Knip drie stukken massief draad af tot ongeveer 1 inch.
Strip 1/4 inch aan beide uiteinden van massieve draad
- Steek een stevige draad in een vrouwelijke startkabel.
Hier is een betere manier om verbindingskabels te maken (vrouw-naar-man):
- Gebruik alleen massieve draad
- Knip drie stukken van 4 inch massief draad
- Strip 1/4 inch aan beide uiteinden van massieve draad
-
Gebruik vrouwelijke verbindingspinnen
-
Schuif een vrouwelijke verbindingspen op het ene uiteinde van de massieve draad en krimp
Vrouwelijke pin mag niet losraken, soldeer indien nodig
- Schuif trekontlasting over vrouwelijke verbindingspen of afdekpen met elektricienstape
-
Sluit het relais aan op de pi zoals weergegeven in het diagram:
- Sluit het vrouwelijke uiteinde van de kabel aan op de Raspberry Pi-pin.
- Steek een stevige draad in het relais.
Stap 8: Maak een opstartservice
De meeste relais, inclusief het gekochte, werken als volgt:
- Als het signaal AAN is, blijft het circuit uit.
- Als het signaal UIT is, is het circuit aan.
Als de Raspberry Pi stroom verliest, heeft het relais een veiligheidsmechanisme dat het circuit UIT houdt.
Er kan een probleem optreden wanneer de Rapberry Pi en het relais weer stroom krijgen, maar voordat de Raspberry Pi klaar is met opstarten om het signaal AAN te zetten, wat nodig is om het circuit uit te houden. Je zou 's ochtends wakker kunnen worden met je garage open en mogelijk een paar nieuwe vrienden!
Het relais wordt echter pas echt geïnitialiseerd als de GPIO-pinmodus is ingesteld via dit commando: gpio-modus 7 uit. Bovendien, als de GPIO-pin op AAN staat (gpio write 7 1) voordat u de GPIO-modus instelt, blijft het relais uitgeschakeld nadat het is geïnitialiseerd.
Om deze initialisatie bij het opstarten uit te voeren en niet wakker te worden met nieuwe vrienden, gebruikt u het volgende opstartscript.
$ ssh pi@♣raspberry-pi-ip♣
$ sudo nano /etc/init.d/garagerelay
Plak dan dit script:
#! /bin/bash
# /etc/init.d/garagerelay # Voer specifieke functies uit wanneer daarom wordt gevraagd door het systeem case "$1" in start) echo "Starting Relay" # Zet 7 aan waardoor relais uitgeschakeld blijft /usr/local/bin/gpio write 7 1 #Start Gpio /usr/local/bin/gpio-modus 7 uit;; stop) echo "Gpio stoppen";; *) echo "Gebruik: /etc/init.d/garagerelay {start|stop}" exit 1;; esac uitgang 0
Om op te slaan: CTRL-o, ENTER
Om nano af te sluiten, CTRL-x
Maak het bestand uitvoerbaar:
$ sudo chmod +x /etc/init.d/garagerelay
Vertel je pi nu om dit script bij het opstarten uit te voeren:
$ sudo update-rc.d -f garagerelay start 4
(Opmerking: u kunt de waarschuwing "ontbrekende LSB-tags" negeren.)
Zorg ervoor dat het opstartscript actief is
$ sudo opnieuw opstarten
Open een browser en klik op de opener. Het relais moet klikken.
Stap 9: Bevestig Raspberry Pi aan de garage

Zorg ervoor dat u bij het verplaatsen van de Raspberry Pi het volgende uitvoert:
$ afsluiten -h 0
Misschien wilt u de stroom naar de garage uitschakelen. Dus de deurbelopener elektrocuteert je niet:). De echte reden is dat elke keer dat je de draden kortsluit, de deur op en neer gaat.
Maak de muurschroeven los van de deurbelopener, waarmee de deurbel aan de muur is bevestigd.
Prik een gat door van de garage achter de deurbelopener naar binnen in het huis. In Texas hoort de Raspberry Pi niet in de garage te staan, de temperatuurvariatie in de garage valt buiten de operationele specificaties van de Raspberry Pi.
Leid de relaisdraden door het gat (gebruik een kleerhanger).
Draai beide schroeven aan de achterkant van de deurbelopener los.
Strip beide uiteinden van de relaisdraden: 1) ongeveer 1/8” inch van de relaiszijde en ongeveer ½” inch aan de deurbelzijde. Buig de deurbelzijde van de draad in een halve lus die groot genoeg is om rond de schroef aan de achterkant te passen.
Sluit een relaisdraad aan op elke schroef aan de achterkant van de deurbel en draai de schroef vast. De aansluitingen zijn zoals weergegeven in de afbeelding. Omdat het relais het circuit isoleert, maakt de richting niet eens uit welk relais aan welke schroef is bevestigd.
Stap 10: Bevestig Raspberry Pi aan SECO-LARM


Voordat ik de code af had, waren mijn familie en ik op vakantie en opende ik mijn browser. Het laatste beeld van mijn browser was van de garagedeuropener - de pagina werd vernieuwd en de garagedeur ging open. Een paar dagen later belde een buurman en vroeg of de garagedeur open moest? Gelukkig kon ik hem op 500 mijl afstand sluiten.
Deze snafu dwong me om de code te wijzigen zodat dit niet zou gebeuren, en een sensor en de staat van de garagedeur toe te voegen aan de website.
Dit is een link naar de originele instructable voor het toevoegen van een sensor. Echter, gezien alles wat al is voltooid, kan het installeren van de sensor aanzienlijk worden vereenvoudigd en in plaats van python te gebruiken, voegt u een paar regels code toe aan 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\nl.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