
INHOUDSOPGAWE:
- Stap 1: Versamel onderdele
- Stap 2: Stel Raspberry Pi op sonder monitor of sleutelbord
- Stap 3: Installeer Wiring Pi, Apache en PHP
- Stap 4: webwerf
- Stap 5: Webwerfbeeld
- Stap 6: Beheer die bediener op afstand
- Stap 7: Draai die kring na die Raspberry Pi
- Stap 8: Skep 'n opstartdiens
- Stap 9: Koppel Raspberry Pi aan die motorhuis
- Stap 10: Koppel Raspberry Pi aan SECO-LARM
- Stap 11: Stuur waarskuwing as die deur oop is wanneer dit gesluit moet word
- Stap 12: Sit Raspberry Pi in die geheime boek
- Stap 13: Bylaag: Verwysings
- Stap 14: Bylaag: opdaterings
- Stap 15: Bylaag: probleemoplossing
2025 Outeur: John Day | [email protected]. Laas verander: 2025-06-01 06:08

Ek het hierdie instruksies geskep in 2014. Sedertdien het baie verander. In 2021 het ek die Smart Garage Door Opener hier opgedateer.
Gebruik 'n Raspberry Pi en 'n slimfoon om 'n motorhuisdeur oop te maak, toe te maak en te monitor. Die opening en sluiting van die deur word beveilig deur gebruik te maak van selfondertekende sertifikate wat op die gesin se selfone geïnstalleer is. As die deur van die motorhuis oop is wanneer dit nie behoort nie, stuur dan 'n SMS na 'n selfoon.
Die motorhuisdeur word sedert laat 2014 deurlopend gebruik. Deur die jare het ek probeer om die veranderinge op datum te hou. Daar is 'n bylae wat die veranderinge aan die instruksies beskryf.
Die doelwitte van hierdie projek is om:
- Maak my eerste instruksies - ek was nie van plan om dit te plaas nie, maar ek het baie versoeke ontvang
- Maak 'n motorhuisdeur oop met 'n standaard afstandsbediening
- Maak 'n garagedeur oop met die muurmotordeurdeur
- Maak 'n motorhuisdeur oop met 'n slimfoon
- Monitor die status van die motorhuisdeur op afstand via 'n selfoon of skootrekenaar (is dit oop of toe?)
- Stuur 'n SMS na my selfoon as die deur oop is wanneer dit gesluit moet word
- Hou die motorhuisdeur veilig (byvoorbeeld, as die krag weg is, moet die deur nie oopgaan nie)
- Moenie toelaat dat iemand anders op die internet die deur oopmaak nie (tweerigting selfondertekende SSL-sertifikaat)
- Gebruik WiFi in plaas van 'n bedrade verbinding
- Gebruik 'n Raspberry Pi 3
Die basis vir hierdie implementering van Garage Door Opener is afgelei van die Instructable: Raspberry Pi Garage Door Opener by quartarian. Oorspronklik het ek 'n model B+ Raspberry Pi gebruik, daarna na 'n Raspberry Pi 2 model B, en nou gebruik dit 'n Raspberry Pi 3.
Ek het 'n MacBook gebruik om met die Raspberry Pi te kommunikeer, maar enige rekenaar kan gebruik word.
Daar is geen dwingende rede om hierdie toestel te bou nie, maar dit was pret. Dit is meer koste -effektief om een te koop. 'N Soortgelyke toestel kan vir ongeveer $ 130 dollar gekoop word.
- Hef meester 828LM
- Chamberlain MyQ $ 129
- GoGo Gate $ 179
- Vakman $ 100
Notas:
- Teks ingesluit in grawe, soos hierdie ♣ vervang-hierdie ♣ moet vervang word met 'n werklike waarde
- Arduino onderstreep blou teks is 'n skakel. In hierdie geval is dit 'n skakel na 'n arduino -weergawe van 'n motordeuropening.
- Ek het probeer om elke bron wat gebruik word, te krediteer. Ek vra om verskoning vir enige weglatings. Die meeste van hierdie dokument is gebaseer op ander mense se werk.
- $ dui 'n opdrag aan wat uitgevoer word in 'n terminale venster op die MacBook en word gewoonlik uitgevoer op die Raspberry Pi
Stap 1: Versamel onderdele
Koop of versamel onderdele en gereedskap (pryse in USD).
- Raspberry Pi 3 Model B Newark Element14 $ 35
- 5.2V 2.5A USB -kragadapter van Amazon $ 9,99
- Mikro -USB na USB -kabel 6 voet van Amazon $ 7,99
- Case van Amazon $ 6,99
- SanDisk Ultra 16 GB microSDHC Klas 10 met adapter (SDSQUAN-016G-G4A) van Amazon $ 8,99
- SunFounder 2 -kanaals 5V Relay Shield -module vir Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6,79
- 3x vroulike-vroulike springdrade. By Fry's gekoop vir $ 4,95.
- Dinamiese DNS $ 40 per jaar vir 30 name (dyn.com)
- 1-bende 18 cu. in. Old Work Heavy Wall Switch and Outlet Box, $ 3,12
- Ultra Pro enkelborsel wit muurbord, $ 7,88
- SECO-LARM SM 226L, Garage Door Sensor, prys wissel baie, $ 9,99 op Amazon met gratis aflewering
- 50 voet vaste termostaatdraad, Home Depot of Lowe's, $ 20
My totaal: ~ $ 172,00
Ek het die volgende onderdele, gereedskap en dienste gehad:
- CAT5 Ethernet -kabel
- Klein maatdraad, 6 voet lank
- Phillips kopskroewedraaier
- Naald tang
- Boksnyers
- Juweliers het 'n platte skroewedraaier, wat nodig is om die skroewe op die relais los te maak
- MacBook ('n rekenaar kan gebruik word)
- AT&T GigaPower (enige internetdiensverskaffer kan gebruik word)
Stap 2: Stel Raspberry Pi op sonder monitor of sleutelbord

Alle Raspberry Pi -projekte benodig 'n soort opstelling. Ek gebruik graag dieselfde stel instruksies en het, indien nodig, een plek om die instruksies by te werk.
Stel Raspberry Pi op met behulp van die volgende instruksies:
Stel Raspberry Pi op sonder monitor of sleutelbord
Die instruksies hierbo bevat opsionele stappe in die bylaag. Maak seker dat u die stap doen:
Voeg sertifikate aan die kliëntkant by webbedieners
Raspberry Pi afskakel
$ sudo afsluit -h 0
Sodra dit gesluit is, verwyder dit
- ethernetkabel
- Seriële USB -kabel
Dit sal nie meer nodig wees nie. Gebruik wifi, ssh en 'n terminale venster op die Mac Book om opdragte op die Raspberry Pi uit te voer.
Ontkoppel die krag en steek die stroom weer in, en die framboos pi moet herlaai.
Stap 3: Installeer Wiring Pi, Apache en PHP
Installeer Wiring Pi
Maak 'n terminale venster op die Mac Book oop. Teken in op Raspberry Pi, laai, kompileer en installeer Wiring Pi. Met hierdie sagteware kan u die GPIO -penne beheer. Hier is 'n stap-vir-stap gids:
wiringpi.com/download-and-install/
Hier is 'n verkorte weergawe van die instruksies:
$ ssh pi@♣ framboos-pi-ip ♣
wagwoord: ♣ wagwoord ♣ $ sudo apt-get install git-core $ git kloon git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull oorsprong $./build
Voer die gpio -opdrag uit om die installasie na te gaan:
$ gpio -v
gpio weergawe: 2.29 Kopiereg (c) 2012-2015 Gordon Henderson Dit is gratis sagteware met absoluut GEEN GARANTIE. Vir besonderhede, tipe: gpio -waarborg Raspberry Pi -besonderhede: Tipe: Model 2, hersiening: 1.1, geheue: 1024MB, vervaardiger: Sony [OV] Toestelboom is aangeskakel. Hierdie Raspberry Pi ondersteun GPIO-toegang op gebruikersvlak. -> Sien die man-bladsy vir meer besonderhede $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Naam | Modus | V | Fisiek | 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 | Fisiek | V | Modus | Naam | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+
Bogenoemde opdragte moet u die vertroue gee dat wiringPi goed werk.
Installeer Apache en PHP
Voer die volgende opdragte uit:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Om te verifieer dat die webbediener werk, maak 'n blaaier oop en voer die URL in:
♣ framboos-pi-ip ♣
Die standaardwebwerf van Apache reageer met 'Dit werk!'
Stap 4: webwerf
Maak 'n terminale venster op die Mac Book oop. Teken in op Raspberry Pi, verwyder dan die standaard index.html -lêer, verander die regte op die webwerfgids en wysig 'n lêer genaamd index.php.
$ ssh pi@♣ framboos-pi-ip ♣
wagwoord: ♣ wagwoord ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root/var/www $ sudo nano /var/www/index.php
En voer die volgende kode in:
Garage Opener
Tuisautomatisering |
---|
Garage Door Opener | Handleiding vir motordeurdeure | gesluit 1 | oop 0 |
CTRL-o en ENTER om die lêer te skryf, en CTRL-x om die redakteur te verlaat.
Verander toestemmings op die lêer
$ sudo chmod 664 /var/www/index.php
Stap 5: Webwerfbeeld


Haal 'n hoë-resolusie oop motorhuisdeuropener van die internet af. Verander die prentjie soos u wil met 'n Mac -kwas. In die prent hierbo is 'n hoë resolusie Genie Garage Opener gebruik, 'n framboos pi -logo is bygevoeg en die led is verwyder.
Een beeld is die agtergrond (remote-background.jpg), en die ander is die aktiewe beeld (remote-press.jpg).
Die plan was dat die framboos met die knoppie druk, in plaas van die LED te knip. Ek het die webwerf vereenvoudig.
Kopieer die beelde na die framboos pi:
$ scp *-j.webp
wagwoord: ♣ wagwoord ♣
Die webwerf het 'n enkele drukknop. Om dit te verifieer, maak 'n blaaier oop en voer 'framboos-pi-ip' in. In plaas van die standaard webwerf van Apache, wat sê "Dit werk!", Moet die knoppie verskyn. Druk dit.
Stap 6: Beheer die bediener op afstand
Ek maak 'n dinamiese DNS -naam gebruik om toegang tot die deur van die motordeur van 'n afgeleë plek te verkry. Omdat ek nie daarvan hou om IP -adresse te onthou nie.
Met hierdie funksie voer ek 'dinamiese-gasheernaam'.getmyip.com in die URL-veld van 'n blaaier in. Opmerking: die IP op tuisrouters kan verander sonder kennisgewing, maar dit gebeur selde. Ek het gekies om DynDNS te gebruik. U moet die openbare IP -adres van u router ken.
U-Verse Router IP: ♣ uverse-public-ip ♣
U kan u gasheernaam en DynDNS Pro -rekeningbesonderhede sien. Hier is 'n paar wenke om aan die gang te kom:
-
Skep u dinamiese DNS -gasheernaam (1 van 30):
- ♣ dinamiese gasheernaam ♣
- Opdateringsleutel: ♣ dinamiese-ip-opdaterer-sleutel ♣
-
Installeer 'n opdateringskliënt om te verseker dat u gasheernaam altyd na die korrekte IP -adres verwys word.
- Laai af en installeer op MacBook
- AT & T U-vers IP's verander selde, dus die opdatering hierbo kan uitgevoer word wanneer dit verander
-
Volg die instruksies:
- Voeg rekening
- Voer gebruikersnaam en wagwoord in: ♣ dynamic-ip-gebruikersnaam ♣ ♣ dynamic-ip-password ♣
- Kies gasheernaam
- Klik op Configure Selected Hosts
- Die gasheer moet aktief word
-
Stel u netwerk op om toegang tot u toestel vanaf die internet toe te laat. U kan ons Dyn Wizard gebruik vir algemene instruksies oor hoe u dit moet doen, hulpbronne soos PortForward.com gebruik of die vervaardiger van die toestel kontak vir hulp.
- AT & T U-vers
- Port Forwarding for 2-Wire 3801HGV-dit is die AT&T U-Verse-router wat ek het. Sien opdaterings in 'n aanhangsel vir meer inligting oor hoe u na AT&T U-vers 5268ac-router kan stuur.
- Maak die blaaier oop en gaan na 'framboos-pi-ip'
- Wagwoord: ♣ wagwoord ♣
- Instellings
-
Firewall
- Kies 'framboos-pi-gasheernaam'
-
Bedieners
- Webbedienerpoort 80
- HTTPS -bediener - poort 443
- Voeg by
- Stoor
Sodra dit gedoen is, werk die webbediener vanaf die internet. Voer ♣ dinamiese-gasheernaam enter in om te verifieer, en u moet die knoppie van die deur van die motordeur sien.
Stap 7: Draai die kring na die Raspberry Pi

Vir die kode (stap 4 en 6) gebruik ek GPIO -pen 7. Dit is toevallig dat GPIO 7 dieselfde is as wiringPi -pen 7. In die PHP -kode word bedradingspeldnommers gebruik en NIE GPIO -speldnommers nie. U kan die een wat u wil gebruik, maar verander die kode.
Ek het probeer om gedraaide draad te gebruik, maar die aflos hou nie goed op die gedraaide draad nie. Soliede draad is beter.
Met my eerste poging het ek drie aansluitkabels (vrou-tot-man) gemaak.
- Gebruik drie vroulike tot vroulike springkabels
-
Sny drie stukke soliede draad tot ongeveer 1 duim.
Strooi 1/4 duim aan albei kante van soliede draad
- Steek een soliede draad in een vroulike springkabel.
Hier is 'n beter manier om aansluitkabels (vroulik-manlik) te maak:
- Gebruik slegs soliede draad
- Sny drie stukke soliede draad van 4 cm
- Strooi 1/4 duim aan albei kante van soliede draad
-
Gebruik vroulike verbindingspenne
-
Skuif een verbindingspen aan die een kant van soliede draad en krimp
Vroulike pen moet nie loskom nie, soldeer indien nodig
- Skuif rekverligting oor vroulike verbindingspen of dekselpen met band van elektrisiën
-
Dra die relais na die pi soos in die diagram getoon:
- Koppel die vroulike uiteinde van die kabel aan die Raspberry Pi -pen.
- Steek soliede draad in Relay.
Stap 8: Skep 'n opstartdiens
Die meeste relais, insluitend die gekoopte, werk soos volg:
- As die sein AAN is, bly die stroombaan af.
- As die sein AF is, is die stroombaan aan.
As die Raspberry Pi krag verloor, het die aflos 'n veiligheidsmeganisme wat die stroombaan UIT hou.
Daar kan 'n probleem ontstaan as die Rapberry Pi en die aflos die krag herstel, maar voordat die Raspberry Pi klaar is met die oplaai om die sein aan te skakel wat nodig is om die stroombaan af te hou. U kan soggens wakker word met u motorhuis oop en moontlik 'n paar nuwe vriende!
Die aflos begin egter nie eers voordat die GPIO -penmodus ingestel is met hierdie opdrag: gpio -modus 7 uit. Verder, as die GPIO -pen op AAN (gpio skryf 7 1) is voordat u die GPIO -modus instel, bly die relais af sodra dit geïnisialiseer is.
Gebruik die volgende opstartskrif om hierdie inisialisering by die opstart te laat loop en nie met nuwe vriende wakker te word nie.
$ ssh pi@♣ framboos-pi-ip ♣
$ sudo nano /etc/init.d/garagerelay
Plak dan hierdie skrif:
#! /bin/bash
# /etc/init.d/garagerelay # Voer spesifieke funksies uit wanneer die stelselkas "$ 1" dit in aanvang vra) eggo "Start relais" # Skakel 7 aan wat relais afskakel/usr/local/bin/gpio skryf 7 1 #Begin Gpio/usr/local/bin/gpio af 7 uit;; stop) eggo "Stop gpio";; *) eggo "Gebruik: /etc/init.d/garagerelay {begin | stop}" afrit 1;; esac afrit 0
Om te stoor: CTRL-o, ENTER
Om nano te verlaat, CTRL-x
Maak die lêer uitvoerbaar:
$ sudo chmod +x /etc/init.d/garagerelay
Sê nou vir u pi om hierdie script tydens die opstart uit te voer:
$ sudo update -rc.d -f garagerelay begin 4
(Let wel: u kan die waarskuwing "ontbrekende LSB -etikette" veilig ignoreer.)
Maak seker dat die opstartskrip loop
$ sudo herlaai
Maak 'n blaaier oop en klik op die opener. Die aflos moet klik.
Stap 9: Koppel Raspberry Pi aan die motorhuis

As u die Raspberry Pi verplaas, moet u die volgende uitvoer:
$ afsluit -h 0
Miskien wil u die motor se motor afskakel. Die deurklokkie -oopmaker maak u dus nie elektrisiteit nie:). Die eintlike rede is dat die deur elke keer as u die drade kort, op en af gaan.
Draai die muurskroewe los van die deurklokopener, wat die deurklokkie aan die muur heg.
Steek 'n gat deur van die motorhuis agter die deuropening tot binne -in die huis. In Texas behoort die Raspberry Pi nie in die motorhuis te wees nie; die temperatuurvariasie in die motorhuis is buite die funksies van die Raspberry Pi.
Dra die aflosdrade deur die gat (gebruik 'n kapstok).
Draai albei skroewe aan die agterkant van die deurklokkie oop.
Trek albei kante van die aflosdrade af: 1) ongeveer 1/8 duim van die afloskant, en ongeveer ½ duim aan die deurklokkant. Buig die deurklokkie van die draad in 'n halwe lus wat groot genoeg is om om die agterkantskroef te pas.
Koppel een aflosdraad aan elke skroef aan die agterkant van die deurklokkie en draai die skroef vas. Die verbindings is soos in die prent getoon. Aangesien die relais die stroombaan isoleer, maak die rigting nie eers saak watter relais aan watter skroef geheg is nie.
Stap 10: Koppel Raspberry Pi aan SECO-LARM


Voordat ek die kode voltooi het, was ek en my gesin met vakansie en het ek my blaaier oopgemaak. My blaaier se laaste siening was van die deur van die motorhuis - die bladsy word verfris en die deur van die motorhuis is oopgemaak. 'N Paar dae later bel 'n buurman en vra of die motorhuisdeur oop moet wees? Gelukkig kon ek dit van 500 myl af sluit.
Hierdie snafu het my gedwing om die kode te verander sodat dit nie gebeur nie, en 'n sensor en die toestand van die garagedeur by die webwerf voeg.
Dit is 'n skakel na die oorspronklike instruksie vir die toevoeging van 'n sensor. Gegewe alles wat reeds voltooi is, kan die installering van die sensor egter baie vereenvoudig word en in plaas van python 'n paar reëls kode by index.php voeg.
Fatal error: Uncaught Error: Call to undefined function exec() in W:\www\langs\.php-gen-lang\v3-core\macros.php(127) : eval()'d code:513 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\af.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 513