
Kazalo:
- Korak: Zberite dele
- Korak: Namestite Raspberry Pi brez monitorja ali tipkovnice
- 3. korak: Namestite Wiring Pi, Apache in PHP
- 4. korak: Spletno mesto
- 5. korak: Podoba spletnega mesta
- 6. korak: Daljinski nadzor spletnega strežnika
- 7. korak: Povežite vezje z Raspberry Pi
- 8. korak: Ustvarite zagonsko storitev
- 9. korak: Pritrdite Raspberry Pi v garažo
- 10. korak: pritrdite Raspberry Pi na SECO-LARM
- 11. korak: Pošljite opozorilo, če so vrata odprta, ko jih je treba zapreti
- Korak: Postavite Raspberry Pi v skrivno knjigo
- 13. korak: Dodatek: Reference
- 14. korak: Dodatek: Posodobitve
- 15. korak: Dodatek: Odpravljanje težav
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-06-01 06:10

To navodilo sem ustvaril leta 2014. Od takrat se je veliko spremenilo. Leta 2021 sem tukaj posodobil odpirač pametnih garažnih vrat.
Za odpiranje, zapiranje in spremljanje garažnih vrat uporabite Raspberry Pi in pametni telefon. Odpiranje in zapiranje vrat je zaščiteno s samopodpisanimi potrdili, nameščenimi na mobilnih telefonih družine. Če so garažna vrata odprta, ko ne bi smela, pošljite besedilno sporočilo (SMS) na mobilni telefon.
Garažna vrata so v stalni uporabi od konca leta 2014. Skozi leta sem poskušala posodobiti spremembe. Obstaja dodatek, ki opisuje spremembe navodil.
Cilji tega projekta so:
- Naj bo moj prvi pouk - tega nisem nameraval objaviti, vendar sem prejel veliko prošenj
- Odprite garažna vrata s standardnim daljinskim upravljalnikom
- Odprite garažna vrata s stenskim odpiračem za vrata
- Odprite garažna vrata s pametnim telefonom
- Na daljavo spremljajte stanje garažnih vrat prek mobilnega telefona ali prenosnega računalnika (ali so odprta ali zaprta?)
- Pošlji besedilno sporočilo na moj mobilni telefon, če so vrata odprta, ko jih je treba zapreti
- Zagotovite, da so garažna vrata varna (npr. Ob izpadu električne energije se vrata ne smejo odpreti)
- Ne dovolite, da bi kdo drug na internetu odprl vrata (dvosmerno samopodpisano potrdilo SSL)
- Namesto žične povezave uporabite WiFi
- Uporabite Raspberry Pi 3
Osnova za to izvedbo odpirača garažnih vrat je bila pridobljena iz instruktorja: Raspberry Pi za odpiranje garažnih vrat, ki ga je izdelal kvartar. Sprva sem uporabil model B+ Raspberry Pi, nato sem prešel na Raspberry Pi 2 model B, zdaj pa uporablja Raspberry Pi 3.
Za komunikacijo z Raspberry Pi sem uporabil MacBook, vendar je mogoče uporabiti kateri koli računalnik.
Za izdelavo te naprave ni prepričljivega razloga, vendar je bilo zabavno. Nakup je cenejši. Podobno napravo lahko kupite za približno 130 USD.
- Dvižni mojster 828LM
- Chamberlain MyQ 129 dolarjev
- GoGo Gate 179 dolarjev
- Obrtnik 100 dolarjev
Opombe:
- Besedno besedilo, kot je ta ♣ zamenjaj-to ♣, je treba nadomestiti z dejansko vrednostjo
- Arduino podčrtano modro besedilo je povezava. V tem primeru je to povezava do arduino različice odpirača garažnih vrat.
- Poskušal sem kreditirati vse uporabljene vire. Se opravičujem za morebitne pomanjkljivosti. Večina tega dokumenta temelji na delu drugih ljudi.
- $ označuje ukaz, ki se izvede v terminalskem oknu MacBook in se običajno izvaja na Raspberry Pi
Korak: Zberite dele
Kupite ali zberite dele in orodja (cene v USD).
- Raspberry Pi 3 Model B Newark Element14 35 USD
- 5.2V 2.5A USB napajalnik od Amazona 9,99 USD
- Kabel Micro USB v USB 6ft pri Amazonu 7,99 USD
- Etui iz Amazona 6,99 USD
- SanDisk Ultra 16 GB microSDHC razred 10 z adapterjem (SDSQUAN-016G-G4A) od Amazona 8,99 USD
- SunFounder 2 -kanalni 5V relejni ščitni modul za Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - 6,79 USD
- 3x Žensko-ženska skakalna žica. Kupljeno pri Fry's za 4,95 USD.
- Dinamični DNS 40 USD na leto za 30 imen (dyn.com)
- 1-tolpa 18 cu. v. Old Work Heavy Wall Switch and Outlet Box, 3,12 USD
- Bela stenska plošča Ultra Pro z eno krtačo, 7,88 USD
- SECO-LARM SM 226L, senzor garažnih vrat, cena se zelo razlikuje, 9,99 USD na Amazon z brezplačno dostavo
- 50ft trdne žice termostata, Home Depot ali Lowe's, ~ 20 USD
Moje skupaj: ~ 172,00 USD
Imel sem naslednje dele, orodja in storitve:
- Ethernetni kabel CAT5
- Žica majhnega profila, dolga 6 čevljev
- Križni izvijač z glavo
- Klešče za nos
- Rezalniki za škatle
- Izvijač s plosko glavo za draguljarje, potreben za odvijanje vijakov na releju
- MacBook (lahko uporabite računalnik)
- AT&T GigaPower (lahko uporabite katerega koli ponudnika internetnih storitev)
Korak: Namestite Raspberry Pi brez monitorja ali tipkovnice

Vsi projekti Raspberry Pi zahtevajo določeno vrsto nastavitve. Rad uporabljam isti nabor navodil in po potrebi imam eno mesto za posodobitev teh navodil.
Nastavite Raspberry Pi z naslednjimi navodili:
Nastavite Raspberry Pi brez monitorja ali tipkovnice
Zgornje navodilo vključuje neobvezne korake v dodatku. Naredite naslednji korak:
Spletnim strežnikom dodajte potrdila na strani odjemalca
Zaustavitev Raspberry Pi
$ sudo shutdown -h 0
Po zaustavitvi odstranite
- ethernetni kabel
- Serijski kabel USB
Te ne bodo več potrebne. Uporabite wifi, ssh in terminalsko okno v Mac Book za izvajanje ukazov na Raspberry Pi.
Odklopite napajanje in ga znova vklopite, malina pi pa se mora znova zagnati.
3. korak: Namestite Wiring Pi, Apache in PHP
Namestite Wiring Pi
Odprite terminalsko okno v knjigi Mac Book. Prijavite se v Raspberry Pi, nato prenesite, prevedite in namestite Wiring Pi. Ta programska oprema omogoča nadzor zatičev GPIO. Tukaj je vodnik po korakih:
wiringpi.com/download-and-install/
Tu je zgoščena različica navodil:
$ ssh pi@♣ malina-pi-ip ♣
geslo: ♣ geslo ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd ožičenjePi $ git pull origin $./build
Zaženite ukaz gpio, da preverite namestitev:
$ gpio -v
gpio različica: 2.29 Avtorska pravica (c) 2012-2015 Gordon Henderson To je brezplačna programska oprema z ABSOLUTNO BREZ GARANCIJE. Za podrobnosti vnesite: gpio -garancija Podrobnosti o Raspberry Pi: Tip: Model 2, Revizija: 1.1, Pomnilnik: 1024 MB, Izdelovalec: Sony [OV] Drevo naprav je omogočeno. Ta Raspberry Pi podpira dostop GPIO na ravni uporabnika. -> Za več podrobnosti si oglejte stran s podatki $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Ime | Način | V | Fizično | V | Način | Ime | 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 | OUT | 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 | Ime | Način | V | Fizično | V | Način | Ime | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+
Zgornji ukazi bi morali dati nekaj zaupanja, da wiringPi deluje v redu.
Namestite Apache in PHP
Zaženite naslednje ukaze:
$ cd..
$ sudo apt-get update $ sudo apt-get install apache2 php5 libapache2-mod-php5
Če želite preveriti delovanje spletnega strežnika, odprite brskalnik in v polje URL vnesite:
♣ malina-pi-ip ♣
Privzeto spletno mesto Apache se odzove z "Deluje!"
4. korak: Spletno mesto
Odprite terminalsko okno v knjigi Mac. Prijavite se v Raspberry Pi, nato odstranite privzeto datoteko index.html, spremenite dovoljenja v imeniku spletnega mesta in uredite datoteko, imenovano index.php.
$ ssh pi@♣ malina-pi-ip ♣
geslo: ♣ geslo ♣ $ sudo rm /var/www/index.html $ sudo chown pi: root/var/www $ sudo nano /var/www/index.php
In vnesite naslednjo kodo:
Garažni odpirač
Domača avtomatizacija |
---|
Odpirač za garažna vrata | Priročnik za odpiranje garažnih vrat | zaprto 1 | odpri 0 |
CTRL-o in ENTER za zapis datoteke in CTRL-x za izhod iz urejevalnika.
Spremenite dovoljenja za datoteko
$ sudo chmod 664 /var/www/index.php
5. korak: Podoba spletnega mesta


Z spleta vzemite daljinsko odpiranje garažnih vrat z visoko ločljivostjo. Prilagodite sliko tako, kot želite, s čopičem Mac. Na zgornji sliki je bil uporabljen odpirač za garažo Genie z visoko ločljivostjo, dodan je logotip maline pi in led je bil odstranjen.
Ena slika je ozadje (remote-background.jpg), druga pa aktivna slika (remote-press.jpg).
Načrt je bil, da bo ob pritisku na gumb namesto utripanja LED -ja malina utripala. Poenostavil sem spletno stran.
Kopirajte slike v malinovo pi:
$ scp *-j.webp
geslo: ♣ geslo ♣
Spletna stran ima en sam gumb. Za preverjanje odprite brskalnik in vnesite ♣ raspberry-pi-ip ♣. Namesto privzetega spletnega mesta Apache, na katerem piše "Deluje!", Bi se moral prikazati gumb. Pritisnite.
6. korak: Daljinski nadzor spletnega strežnika
Za lažji dostop do odpirača garažnih vrat z oddaljene lokacije uporabljam dinamično ime DNS. Ker se ne maram spominjati naslovov IP.
S to funkcijo v polje »URL« brskalnika vnesem »ime dinamičnega gostitelja«.getmyip.com. Opomba: IP na domačih usmerjevalnikih se lahko spremeni brez obvestila, vendar se to zgodi redko. Odločil sem se za uporabo DynDNS. Morali boste poznati javni naslov IP usmerjevalnika.
IP usmerjevalnika U-Verse: ♣ uverse-public-ip ♣
Ogledate si lahko imena svojih gostiteljev in podatke o računu DynDNS Pro. Tukaj je nekaj nasvetov za začetek:
-
Ustvarite ime gostitelja Dynamic DNS (1 od 30):
- "Dinamično ime gostitelja"
- Ključ za posodabljanje: ♣ ključ za dinamično ip-posodabljanje ♣
-
Namestite odjemalca za posodobitve, da zagotovite, da je ime gostitelja vedno usmerjeno na pravilen naslov IP.
- Prenesite in namestite na MacBook
- AT&T U-verse IP-ji se redko spreminjajo, zato je zgornji program za posodobitev mogoče zagnati, kadar koli se spremeni
-
Sledite navodilom:
- Dodaj račun
- Vnesite uporabniško ime in geslo: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
- Izberite ime gostitelja
- Kliknite Konfiguriraj izbrane gostitelje
- Gostitelj bi moral postati aktiven
-
Konfigurirajte svoje omrežje tako, da dovoljuje dostop do vaše naprave iz interneta. Če želite nekaj splošnih navodil, kako to narediti, uporabite našega čarovnika Dyn, uporabite sredstva, kot je PortForward.com, ali se za pomoč obrnite na proizvajalca naprave.
- AT&T U-verz
- Posredovanje vrat za 2-žični 3801HGV-to je usmerjevalnik AT&T U-Verse, ki ga imam. Glejte Posodobitve v dodatku za informacije o prenašanju na usmerjevalniku AT&T U-verse 5268ac.
- Odprite brskalnik in pojdite na ♣ raspberry-pi-ip ♣
- Geslo: ♣ geslo ♣
- Nastavitve
-
Požarni zid
- Izberite ♣ ime maline-pi-gostitelja ♣
-
Strežniki
- Vrata za spletni strežnik 80
- Strežnik HTTPS - vrata 443
- Dodaj
- Shrani
Ko bo to storjeno, bo spletni strežnik deloval iz interneta. Če želite preveriti, vnesite »dinamično ime gostitelja« in prikazal se bo gumb za odpiranje garažnih vrat.
7. korak: Povežite vezje z Raspberry Pi

Za priloženo kodo (korak 4 in 6) sem uporabil pin GPIO 7. Naključje je, da je GPIO 7 enak ožičenju pin Pin 7. V kodi PHP se uporabljajo ožičenje Pi pin številke in NE številke pin GPIO. Uporabite lahko katero koli, vendar spremenite kodo.
Poskušal sem uporabiti zvito žico, vendar se rele ne drži dobro na zviti žici. Boljša je trdna žica.
V prvem poskusu sem ustvaril tri povezovalne kable (ženski-moški).
- Uporabite tri mostične kable ženski do ženski
-
Odrežite tri kose trdne žice na približno 1 palca.
Odstranite 1/4 palca na obeh koncih trdne žice
- V en ženski mostični kabel vstavite eno trdno žico.
Tu je boljši način za ustvarjanje povezovalnih kablov (ženski-moški):
- Uporabljajte samo trdno žico
- Odrežite tri 4 -palčne kose trdne žice
- Odstranite 1/4 palca na obeh koncih trdne žice
-
Uporabite ženske priključne zatiče
-
Potisnite en ženski povezovalni zatič na enem koncu trdne žice in ga stisnite
Ženski zatič se ne sme popustiti, po potrebi ga spajkajte
- Z električnim trakom potisnite razbremenitev napetosti po ženskem priključnem zatiču ali pokrovčku
-
Priključite rele na pi, kot je prikazano na diagramu:
- Priključite ženski konec kabla na pin Raspberry Pi.
- V rele vstavite trdno žico.
8. korak: Ustvarite zagonsko storitev
Večina relejev, vključno s kupljenim, deluje tako:
- Ko je signal ON, vezje ostane izklopljeno.
- Ko je signal izklopljen, je vezje vklopljeno.
Če Raspberry Pi izgubi moč, ima rele varnostni mehanizem, ki ohranja vezje OFF.
Težava bi se lahko pojavila, ko se Rapberry Pi in rele ponovno vzpostavi napajanje, vendar preden se Raspberry Pi konča s zagonom, vklopi signal, ki je potreben za izklop vezja. Zjutraj bi se lahko zbudili z odprto garažo in potencialno nekaj novimi prijatelji!
Vendar se rele dejansko ne inicializira, dokler ni nastavljen način pin GPIO s tem ukazom: gpio mode 7 out. Poleg tega, če je GPIO pin na ON (gpio write 7 1), preden nastavite način GPIO, bo rele po inicializaciji ostal izklopljen.
Če želite, da se ta inicializacija izvaja ob zagonu in se ne zbudi med novimi prijatelji, uporabite naslednji zagonski skript.
$ ssh pi@♣ malina-pi-ip ♣
$ sudo nano /etc/init.d/garagerelay
Nato prilepite ta skript:
#! /bin/bash
# /etc/init.d/garagerelay # Izvedite posebne funkcije, ko to zahteva sistemski primer "$ 1" na začetku) odmev "Starting Relay" # Vklopite 7, ki ohranja rele izklopljen/usr/local/bin/gpio write 7 1 #Začni način Gpio/usr/local/bin/gpio 7 ven; stop) echo "Ustavljanje gpio";; *) odmev "Usage: /etc/init.d/garagerelay {start | stop}" exit 1;; esac izhod 0
Če želite shraniti: CTRL-o, ENTER
Za izhod iz nano, CTRL-x
Naj bo datoteka izvedljiva:
$ sudo chmod +x /etc/init.d/garagerelay
Zdaj povejte svojemu pi, naj pri zagonu zažene ta skript:
$ sudo update -rc.d -f garažni rele rele start 4
(Opomba: Opozorilo »manjkajoče oznake LSB« lahko varno prezrete.)
Prepričajte se, da se zagonski skript izvaja
$ sudo ponovni zagon
Odprite brskalnik in kliknite na odpirač. Rele mora klikniti.
9. korak: Pritrdite Raspberry Pi v garažo

Ko premikate Raspberry Pi, zaženite:
$ shutdown -h 0
Morda boste želeli izklopiti napajanje garaže. Torej, odpirač za vrata vas ne udari z elektriko:). Pravi razlog je, da vsakič, ko skrajšate žice, vrata gredo gor in dol.
Odvijte stenske vijake odpirača za vrata, ki pritrdi zvonec na steno.
V garaži za odpiralnikom vrat v notranjost hiše naredite luknjo. V Teksasu Raspberry Pi ne bi smel biti v garaži, temperaturna nihanja v garaži so zunaj delovnih specifikacij Raspberry Pi.
Prenesite žice releja skozi luknjo (uporabite obešalnik).
Odvijte oba vijaka na zadnji strani odpirača za vrata.
Odstranite oba konca relejnih žic: 1) približno 1/8 "palca na strani releja in približno ½" palca na strani zvonca. Stran žice pri vratih upognite v pol zanko, ki je dovolj velika, da se prilega okoli zadnjega vijaka.
Priključite eno relejsko žico na vsak vijak na zadnji strani zvonca in privijte vijak. Povezave so prikazane na sliki. Ker rele ločuje vezje, smer niti ni pomembna, kateri rele je pritrjen na kateri vijak.
10. korak: pritrdite Raspberry Pi na SECO-LARM


Preden sem dokončal kodo, sva bila z družino na počitnicah in odprla sem brskalnik. Zadnji pogled mojega brskalnika je bil odpiranje garažnih vrat - stran je bila osvežena in garažna vrata so se odprla. Nekaj dni kasneje je klical sosed in vprašal, ali naj bodo garažna vrata odprta? Na srečo bi ga lahko zaprl s 500 milj stran.
Ta snafu me je prisilil, da spremenim kodo, da se to ne bi zgodilo, in na spletno mesto dodam senzor in stanje garažnih vrat.
To je povezava do izvirnega navodila za dodajanje senzorja. Glede na vse, kar je že zaključeno, lahko namestitev senzorja močno poenostavimo in namesto pythona v index.php dodamo nekaj vrstic kode.
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\sl.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