Otvarač za garažna vrata Raspberry Pi 3: 15 koraka (sa slikama)
Otvarač za garažna vrata Raspberry Pi 3: 15 koraka (sa slikama)
Anonim
Otvarač za garažna vrata Raspberry Pi 3
Otvarač za garažna vrata Raspberry Pi 3

Ovu instrukciju sam stvorio 2014. Dosta se promijenilo od tada. Godine 2021. ovdje sam ažurirao Otvarač pametnih garažnih vrata.

Koristite Raspberry Pi i pametni telefon za otvaranje, zatvaranje i nadziranje garažnih vrata. Otvaranje i zatvaranje vrata osigurano je samopotpisanim certifikatima instaliranim na obiteljskim mobilnim telefonima. Ako su garažna vrata otvorena kada ne bi trebala biti, pošaljite tekstualnu poruku (SMS) na mobitel.

Garažna vrata su u stalnoj upotrebi od kraja 2014. Tijekom godina nastojala sam ažurirati promjene. Postoji dodatak koji opisuje promjene u uputama.

Ciljevi ovog projekta su:

  • Neka moje prve instrukcije budu - nisam planirao ovo objaviti, ali primio sam mnogo zahtjeva
  • Otvorite garažna vrata standardnim daljinskim upravljačem
  • Otvorite garažna vrata pomoću zidnog otvarača za garažna vrata
  • Otvorite garažna vrata pomoću pametnog telefona
  • Daljinski pratite stanje garažnih vrata putem mobitela ili prijenosnog računala (jesu li otvorena ili zatvorena?)
  • Pošalji tekstualnu poruku na moj mobitel ako su vrata otvorena kad bi se trebala zatvoriti
  • Neka garažna vrata budu sigurna (npr. Pri nestanku struje, vrata se ne smiju otvoriti)
  • Ne dopustite nikome na internetu da otvori vrata (dvosmjerni samopotpisani SSL certifikat)
  • Koristite WiFi umjesto žičane veze
  • Koristite Raspberry Pi 3

Temelj za ovu implementaciju otvarača garažnih vrata izveden je iz instruktora Instrumenttable: Raspberry Pi otvarača garažnih vrata koji je izradio kvartar. Prvotno sam koristio model B+ Raspberry Pi, zatim prešao na Raspberry Pi 2 model B, a sada koristi Raspberry Pi 3.

Koristio sam MacBook za komunikaciju s Raspberry Pi, ali može se koristiti bilo koje računalo.

Ne postoji uvjerljiv razlog za izgradnju ovog uređaja, ali bilo je zabavno. Isplativije je kupiti jedan. Sličan uređaj može se kupiti za oko 130 USD.

  • Majstor za dizanje 828LM
  • Chamberlain MyQ 129 USD
  • GoGo Gate 179 USD
  • Obrtnik 100 dolara

Bilješke:

  • Tekst zatvoren pikovima, poput ovog ♣ zamijeni-ovo ♣ treba zamijeniti stvarnom vrijednošću
  • Arduino podcrtani plavi tekst je veza. U ovom slučaju to je veza na arduino verziju otvarača za garažna vrata.
  • Pokušao sam kreditirati svaki korišteni izvor. Ispričavam se na eventualnim propustima. Većina ovog dokumenta temelji se na radu drugih ljudi.
  • $ označava naredbu koja se izvršava u prozoru terminala na MacBooku i obično se izvršava na Raspberry Pi

Korak 1: Skupite dijelove

Kupujte ili skupljajte dijelove i alate (cijene u USD).

  • Raspberry Pi 3 Model B Newark Element14 35 USD
  • 5.2V 2.5A USB adapter za napajanje s Amazona 9,99 USD
  • Micro USB na USB kabel 6ft od Amazona 7,99 USD
  • Slučaj iz Amazona 6,99 USD
  • SanDisk Ultra 16 GB microSDHC klase 10 s adapterom (SDSQUAN-016G-G4A) od Amazona 8,99 USD
  • SunFounder 2 -kanalni 5V relejni štitni modul za Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - 6,79 USD
  • 3x žensko-ženske žice kratkospojnika. Kupljeno u Fry's za 4,95 USD.
  • Dinamički DNS 40 USD godišnje za 30 imena (dyn.com)
  • 1-banda 18 cu. in. Old Work Heavy Wall Switch and Outlet Box, 3,12 USD
  • Bijela zidna ploča s jednom četkom Ultra Pro, 7,88 USD
  • SECO-LARM SM 226L, Senzor garažnih vrata, cijena uvelike varira, 9,99 USD na Amazonu s besplatnom dostavom
  • 50 stopa pune žice termostata, Home Depot ili Lowe's, ~ 20 USD

Moj ukupni iznos: ~ 172,00 USD

Imao sam sljedeće dijelove, alate i usluge:

  • Ethernet kabel CAT5
  • Žica malog kolosijeka, duga 6 stopa
  • Odvijač s Phillips glavom
  • Kliješta za nos s iglama
  • Rezači za kutije
  • Zlatarski odvijač s ravnom glavom, potreban za otpuštanje vijaka na releju
  • MacBook (može se koristiti računalo)
  • AT&T GigaPower (može se koristiti bilo koji davatelj internetskih usluga)

Korak 2: Postavite Raspberry Pi bez monitora ili tipkovnice

Postavljanje Raspberry Pi bez monitora ili tipkovnice
Postavljanje Raspberry Pi bez monitora ili tipkovnice

Svi projekti Raspberry Pi zahtijevaju neku vrstu postavljanja. Volim koristiti isti skup uputa i po potrebi imati jedno mjesto za ažuriranje tih uputa.

Postavite Raspberry Pi pomoću sljedećih uputstava:

Postavljanje Raspberry Pi bez monitora ili tipkovnice

Gore navedene upute uključuju izborne korake u dodatku. Obavezno napravite sljedeći korak:

Dodajte certifikate na strani klijenta web poslužiteljima

Isključivanje Raspberry Pi

$ sudo shutdown -h 0

Nakon isključivanja, uklonite

  • ethernet kabel
  • USB serijski kabel

Ovo više neće biti potrebno. Upotrijebite wifi, ssh i prozor terminala na Mac Book -u za pokretanje naredbi na Raspberry Pi.

Isključite napajanje i ponovno ga uključite, a malina pi bi se trebala ponovno pokrenuti.

Korak 3: Instalirajte Wiring Pi, Apache i PHP

Instalirajte Wiring Pi

Otvorite prozor terminala na Mac Book -u. Prijavite se na Raspberry Pi, zatim preuzmite, kompajlirajte i instalirajte Wiring Pi. Ovaj softver omogućuje kontrolu GPIO pinova. Evo vodiča korak po korak:

wiringpi.com/download-and-install/

Evo skraćene verzije uputa:

$ ssh pi@♣ malina-pi-ip ♣

lozinka: ♣ lozinka ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd ožičenjePi $ git pull origin $./build

Pokrenite naredbu gpio da biste provjerili instalaciju:

$ gpio -v

gpio verzija: 2.29 Autorsko pravo (c) 2012-2015 Gordon Henderson Ovo je besplatni softver s APSOLUTNO BEZ JAMSTVA. Za detalje upišite: gpio -jamstvo Raspberry Pi Detalji: Tip: Model 2, Revizija: 1.1, Memorija: 1024MB, Proizvođač: Sony [OV] Stablo uređaja je omogućeno. Ova Raspberry Pi podržava GPIO pristup na razini korisnika. -> Više pojedinosti potražite na man stranici $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Ime | Način rada | V | Fizički | V | Način rada | 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 | IZLAZI | 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 rada | V | Fizički | V | Način rada | Ime | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Gore navedene naredbe trebale bi vam dati povjerenje da wiringPi radi u redu.

Instalirajte Apache i PHP

Pokrenite sljedeće naredbe:

$ cd..

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

Da biste provjerili funkcionira li web poslužitelj, otvorite preglednik i u okvir URL unesite:

♣ malina-pi-ip ♣

Zadana web stranica Apachea odgovara "Radi!"

Korak 4: Web stranica

Otvorite prozor terminala na Mac Book -u. Prijavite se na Raspberry Pi, a zatim uklonite zadanu datoteku index.html, promijenite dopuštenja u direktoriju web stranice i uredite datoteku pod nazivom index.php.

$ ssh pi@♣ malina-pi-ip ♣

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

I unesite sljedeći kôd:

Otvarač garaže

Kućna automatizacija

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

";} else {echo"

"; } ?>

Otvarač garažnih vrata Upute za otvaranje garažnih vrata zatvoreno 1 otvori 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} else {echo"

var13 ->

CTRL-o i ENTER za pisanje datoteke, a CTRL-x za izlaz iz uređivača.

Promijenite dopuštenja za datoteku

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

Korak 5: Slika web stranice

Slika web stranice
Slika web stranice
Slika web stranice
Slika web stranice

Zgrabite daljinski otvarač za garažna vrata visoke razlučivosti s weba. Izmijenite sliku kako želite pomoću Mac četke. Na gornjoj slici upotrijebljen je Genie Garage Opener visoke rezolucije, dodan je malinov pi logo, a LED dioda uklonjena.

Jedna slika je pozadina (remote-background.jpg), a druga je aktivna slika (remote-press.jpg).

Plan je bio da će pritiskom na gumb, umjesto treptanja LED diode, malina treptati. Pojednostavio sam web stranicu.

Kopirajte slike u malinovo pi:

$ scp *-j.webp

lozinka: ♣ lozinka ♣

Web stranica ima samo jedan gumb. Za potvrdu otvorite preglednik i unesite ♣ raspberry-pi-ip ♣. Umjesto zadane Apache web stranice na kojoj piše "Radi!", Trebao bi se pojaviti gumb. Pritisnite ga.

Korak 6: Daljinsko upravljanje web poslužiteljem

Kako bih olakšao pristup otvaraču garažnih vrata s udaljenog mjesta, koristim dinamički DNS naziv. Jer ne volim pamćenje IP adresa.

Ovom značajkom u polje URL URL preglednika unosim ♣naziv dinamičkog hosta ♣.getmyip.com. Napomena: IP na kućnim usmjerivačima može se promijeniti bez prethodne najave, ali to se rijetko događa. Odlučio sam se za DynDNS. Morat ćete znati javnu IP adresu usmjerivača.

IP usmjerivača U-Verse: „uverse-public-ip“

Možete vidjeti svoje nazive domaćina i pojedinosti o DynDNS Pro računu. Evo nekoliko savjeta za početak:

  • Izradite svoj Dynamic DNS naziv hosta (1 od 30):

    • "Dinamičko ime hosta"
    • Ključ za ažuriranje: ♣ ključ za dinamičko ažuriranje ip-ažuriranja ♣
  • Instalirajte klijenta za ažuriranje kako biste osigurali da je vaše ime hosta uvijek usmjereno na ispravnu IP adresu.

    • Preuzmite i instalirajte na MacBook
    • AT&T U-verse IP-ovi rijetko se mijenjaju, pa se gornji program za ažuriranje može pokrenuti kad god se promijeni
    • Slijedite upute:

      • Dodaj račun
      • Unesite korisničko ime i lozinku: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
      • Odaberite naziv hosta
      • Kliknite Konfiguriraj odabrane hostove
      • Domaćin bi trebao postati aktivan
    • Konfigurirajte svoju mrežu da dopušta pristup vašem uređaju s Interneta. Možete koristiti naš Dyn čarobnjak za neke opće upute o tome kako to učiniti, koristiti resurse poput PortForward.com ili se obratiti proizvođaču uređaja za pomoć.

      • AT&T U-stih
      • Prosljeđivanje portova za 2-žični 3801HGV-ovo je AT&T U-Verse usmjerivač koji imam. Pogledajte Ažuriranja u Dodatku za informacije o tome kako prenijeti naprijed na usmjerivaču AT&T U-verse 5268ac.
      • Otvorite preglednik i idite na ♣ raspberry-pi-ip ♣
      • Lozinka: ♣ lozinka ♣
      • Postavke
      • Vatrozid

        • Odaberite ♣ raspberry-pi-hostname ♣
        • Poslužitelji

          • Ulaz za web poslužitelj 80
          • HTTPS poslužitelj - port 443
        • Dodati
      • Uštedjeti

Nakon što to učini, web poslužitelj će raditi s interneta. Za potvrdu unesite ♣naziv dinamičkog hosta ♣ i trebali biste vidjeti gumb za otvaranje garažnih vrata.

Korak 7: Spojite krug na Raspberry Pi

Ožičite krug na Raspberry Pi
Ožičite krug na Raspberry Pi

Za dostavljeni kôd (koraci 4 i 6) koristio sam GPIO pin 7. Slučajnost je da je GPIO 7 isto što i wiringPi pin 7. U PHP kodu koriste se ožičenje Pi pin brojevi, a NE GPIO pin brojevi. Možete koristiti koji god želite, ali svakako promijenite kôd.

Pokušao sam koristiti upletenu žicu, ali relej ne drži dobro na upletenoj žici. Puna žica je bolja.

U svom prvom pokušaju stvorio sam tri spojna kabela (ženski na muški).

  • Upotrijebite tri ženska spojna kabela
  • Izrežite tri komada čvrste žice na otprilike 1 inč.

    Uklonite 1/4 inča na oba kraja pune žice

  • Umetnite jednu čvrstu žicu u jedan ženski kratkospojni kabel.

Evo boljeg načina za stvaranje spojnih kabela (ženski na muški):

  • Koristite samo čvrstu žicu
  • Izrežite tri komada žice od 4 inča
  • Uklonite 1/4 inča na oba kraja pune žice
  • Upotrijebite ženske spojne igle

    • Gurnite jedan ženski spojni zatik na jednom kraju čvrste žice i namotajte

      Ženski zatik se ne bi trebao olabaviti, lemiti ako je potrebno

    • Klizite rasterećenje preko ženskog spojnog zatiča ili pokrovnog zatika s električnom trakom

Spojite relej na pi kako je prikazano na dijagramu:

  • Spojite ženski kraj kabela na pin Raspberry Pi.
  • Umetnite čvrstu žicu u relej.

Korak 8: Stvorite uslugu pokretanja

Većina releja, uključujući i onaj koji je kupljen, radi ovako:

  • Kad je signal UKLJUČEN krug ostaje isključen.
  • Kad je signal isključen, krug je uključen.

Ako Raspberry Pi izgubi snagu, relej ima sigurnosni mehanizam koji drži krug isključenim.

Problem bi mogao nastati kada se Rapberry Pi i relej ponovo uspostave napajanje, ali prije nego što se Raspberry Pi završi s pokretanjem kako bi uključio signal što je potrebno da bi se krug isključio. Mogli biste se ujutro probuditi s otvorenom garažom i potencijalno s nekoliko novih prijatelja!

Međutim, relej se zapravo ne pokreće sve dok se GPIO pin način ne postavi putem ove naredbe: gpio mode 7 out. Nadalje, ako je GPIO pin na ON (gpio write 7 1) prije nego što postavite GPIO način rada, relej će ostati isključen nakon inicijalizacije.

Da biste pokrenuli ovu inicijalizaciju pri pokretanju i ne budili se s novim prijateljima, upotrijebite sljedeću početnu skriptu.

$ ssh pi@♣ malina-pi-ip ♣

$ sudo nano /etc/init.d/garagerelay

Zatim zalijepite ovu skriptu:

#! /bin/bash

# /etc/init.d/garagerelay # Izvršite određene funkcije kada to zatraži kućište sustava "$ 1" na početku) odjek "Startni relej" # Uključite 7 koji zadržava relej isključen/usr/local/bin/gpio write 7 1 #Pokrenite način rada Gpio/usr/local/bin/gpio 7 van;; stop) echo "Zaustavljanje gpio -a";; *) echo "Usage: /etc/init.d/garagerelay {start | stop}" exit 1;; esac izlaz 0

Za spremanje: CTRL-o, ENTER

Za izlaz iz nano, CTRL-x

Učinite datoteku izvršnom:

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

Sada recite svom pi da pokrene ovu skriptu pri pokretanju:

$ sudo update -rc.d -f garažni relej početak 4

(Napomena: Sigurno možete zanemariti upozorenje "nedostaju LSB oznake".)

Provjerite je li pokrenuta skripta za pokretanje

$ sudo ponovno podizanje sustava

Otvorite preglednik i kliknite na otvarač. Relej bi trebao kliknuti.

Korak 9: Pričvrstite Raspberry Pi na garažu

Pričvrstite Raspberry Pi u garažu
Pričvrstite Raspberry Pi u garažu

Prilikom premještanja Raspberry Pi, obavezno pokrenite:

$ shutdown -h 0

Možda želite isključiti napajanje garaže. Dakle, otvarač zvona na vratima vas ne udari strujom:). Pravi razlog je svaki put kad prekinete žice, vrata će se dizati i spuštati.

Odvijte zidne vijke s otvarača za zvono na vratima koji pričvršćuje zvono na zid.

Provucite rupu iz garaže iza otvarača zvona na vratima u unutrašnjost kuće. U Teksasu Raspberry Pi ne bi trebao biti u garaži, varijacija temperature u garaži je izvan operativnih specifikacija Raspberry Pi.

Provucite žice releja kroz rupu (upotrijebite vješalicu).

Otpustite oba vijka na stražnjoj strani otvarača zvona na vratima.

Skinite oba kraja relejnih žica: 1) oko 1/8 "inča sa strane releja i oko ½" inča sa strane zvona na vratima. Savijte stranu žice na vratima u polu petlju dovoljno veliku da stane oko stražnjeg vijka.

Spojite jednu relejnu žicu na svaki vijak na stražnjoj strani zvona na vratima i zategnite vijak. Priključci su prikazani na slici. Budući da relej izolira krug, smjer nije ni bitan koji je relej pričvršćen na koji vijak.

Korak 10: Pričvrstite Raspberry Pi na SECO-LARM

Pričvrstite Raspberry Pi na SECO-LARM
Pričvrstite Raspberry Pi na SECO-LARM
Pričvrstite Raspberry Pi na SECO-LARM
Pričvrstite Raspberry Pi na SECO-LARM

Prije nego što sam dovršio kôd, moja obitelj i ja bili smo na odmoru i otvorio sam preglednik. Posljednji pogled mog preglednika bio je na otvaranje garažnih vrata - stranica se osvježila i garažna vrata su se otvorila. Nekoliko dana kasnije susjeda je nazvala i pitala bi li garažna vrata trebala biti otvorena? Srećom, mogao sam ga zatvoriti s udaljenosti od 500 milja.

Ovaj snafu me natjerao da promijenim kôd kako se to ne bi dogodilo, te na web stranicu dodao senzor i stanje garažnih vrata.

Ovo je veza na izvorne upute za dodavanje senzora. No, s obzirom na sve što je već dovršeno, instaliranje senzora može se uvelike pojednostaviti i umjesto korištenja pythona dodati indexu.php nekoliko redaka koda.


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\hr.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