Otvarač garažnih vrata Raspberry Pi 3: 15 koraka (sa slikama)
Otvarač garažnih 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. Mnogo se promijenilo od tada. 2021. godine ovdje sam ažurirao Pametno otvaranje 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 porodičnim mobilnim telefonima. Ako su garažna vrata otvorena kada to ne bi trebalo biti, pošaljite tekstualnu poruku (SMS) na mobitel.

Garažna vrata su u stalnoj upotrebi od kraja 2014. Tokom godina pokušavala sam ažurirati promjene. Postoji dodatak koji opisuje promjene u uputstvima.

Ciljevi ovog projekta su:

  • Neka moje prve instrukcije budu - nisam planirao ovo objavljivati, 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
  • Pratite daljinsko stanje garažnih vrata putem mobilnog telefona ili laptopa (jesu li otvorena ili zatvorena?)
  • Pošaljite tekstualnu poruku na moj mobitel ako su vrata otvorena kada ih treba zatvoriti
  • Neka garažna vrata budu sigurna (npr. Pri nestanku struje, vrata se ne smiju otvoriti)
  • Ne dozvolite nikome na internetu da otvori vrata (dvosmjerni samopotpisani SSL certifikat)
  • Koristite WiFi umjesto žičane veze
  • Koristite Raspberry Pi 3

Osnova za ovu implementaciju otvarača garažnih vrata izvedena je iz instruktora: Raspberry Pi za otvaranje garažnih vrata, koji je dao kvartar. Prvobitno sam koristio model B+ Raspberry Pi, zatim sam 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 koji računar.

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 podizanje 828LM
  • Chamberlain MyQ 129 USD
  • GoGo Gate 179 USD
  • Zanatlija 100 dolara

Napomene:

  • 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. Izvinjavam se na eventualnim propustima. Većina ovog dokumenta zasnovana je na radu drugih ljudi.
  • $ označava naredbu koja se izvršava u prozoru terminala na MacBook -u i obično se izvršava na Raspberry Pi

Korak 1: Prikupite 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 od Amazona 9,99 USD
  • Micro USB na USB kabel 6ft sa Amazon -a 7,99 USD
  • Kućište od Amazona 6,99 USD
  • SanDisk Ultra 16 GB microSDHC klase 10 sa adapterom (SDSQUAN-016G-G4A) sa 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-ženska kratkospojna žica. Kupljeno u Fry's za 4,95 USD.
  • Dinamički DNS 40 USD godišnje za 30 imena (dyn.com)
  • 1-Gang 18 cu. in. Old Work Heavy Wall Switch and Outlet Box, 3,12 USD
  • Bijela zidna ploča sa 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:

  • CAT5 Ethernet kabel
  • Žica malog kolosijeka, duga 6 stopa
  • Odvijač sa križnom glavom
  • Kliješta s iglastim nosem
  • Rezači za kutije
  • Zlatarski odvijač s ravnom glavom, potreban za otpuštanje vijaka na releju
  • MacBook (može se koristiti računar)
  • AT&T GigaPower (može se koristiti bilo koji pružatelj internetskih usluga)

Korak 2: Postavite Raspberry Pi bez monitora ili tastature

Postavite Raspberry Pi bez monitora ili tastature
Postavite Raspberry Pi bez monitora ili tastature

Svi projekti Raspberry Pi zahtijevaju neku vrstu postavljanja. Volim koristiti isti skup uputa i, ako je potrebno, imam jedno mjesto za ažuriranje tih uputa.

Postavite Raspberry Pi koristeći sljedeće upute:

Postavite Raspberry Pi bez monitora ili tastature

Gore navedene upute uključuju izborne korake u dodatku. Obavezno napravite ovaj korak:

Dodajte certifikate na strani klijenta web serverima

Isključivanje Raspberry Pi

$ sudo shutdown -h 0

Nakon isključivanja, uklonite

  • ethernet kabel
  • USB serijski kabel

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

Isključite napajanje i ponovo 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ćava kontrolu GPIO pinova. Evo vodiča korak po korak:

wiringpi.com/download-and-install/

Evo skraćene verzije uputstava:

$ 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 gpio naredbu da provjerite instalaciju:

$ gpio -v

gpio verzija: 2.29 Autorsko pravo (c) 2012-2015 Gordon Henderson Ovo je besplatni softver s APSOLUTNO BEZ GARANCIJE. Za detalje tip: gpio -garancija 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 korisničkom nivou. -> Za više detalja pogledajte stranicu s ljudima $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Ime | Mode | V | Fizički | V | Mode | 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 | Mode | V | Fizički | V | Mode | Ime | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Gore navedene naredbe trebale bi vam dati izvjesno 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 funkcioniranje web servera, otvorite preglednik i u okvir za URL unesite:

„Malina-pi-ip“

Apacheova zadana web stranica odgovara sa "Radi!"

Korak 4: Web stranica

Otvorite prozor terminala na Mac Book -u. Prijavite se na Raspberry Pi, zatim uklonite zadanu datoteku index.html, promijenite dozvole 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 kod:

Garage Opener

Kućna automatizacija

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

";} else {echo"

"; } ?>

Otvarač garažnih vrata Uputstvo 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 dozvole za datoteku

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

Korak 5: Slika web lokacije

Slika web lokacije
Slika web lokacije
Slika web lokacije
Slika web lokacije

Zgrabite daljinski otvarač garažnih vrata visoke rezolucije s weba. Izmijenite sliku kako želite pomoću Mac četke. Na gornjoj slici je korišten Genie garažni otvarač visoke rezolucije, dodan je malinov pi logo i uklonjena je LED dioda.

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

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

Kopirajte slike u maline pi:

$ scp *-j.webp

lozinka: ♣ lozinka ♣

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

Korak 6: Daljinsko upravljanje web serverom

Da bih olakšao pristup otvaraču garažnih vrata s udaljene lokacije, koristim dinamičko DNS ime. Zato što ne volim pamćenje IP adresa.

Ovom funkcijom unosim „dinamičko ime hosta“.getmyip.com u URL polje pretraživača. Napomena: IP na kućnim usmjerivačima može se promijeniti bez 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 imena svojih hostova i podatke o DynDNS Pro računu. Evo nekoliko savjeta za početak:

  • Kreirajte svoj Dynamic DNS hostname (1 od 30):

    • "Dinamičko ime hosta"
    • Ključ za ažuriranje: ♣ dinamički-ip-ključ za ažuriranje ♣
  • 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 se rijetko 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: ♣ dinamičko-ip-korisničko ime ♣ ♣ dinamičko-ip-lozinka ♣
      • Odaberite naziv hosta
      • Kliknite Konfiguriraj odabrane hostove
      • Domaćin bi trebao postati aktivan
    • Konfigurirajte svoju mrežu da dozvoli pristup vašem uređaju s interneta. Možete koristiti naš Dyn Wizard za neka opća uputstva 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 dalje na AT&T U-verse 5268ac usmjerivač.
      • Otvorite preglednik i idite na „raspberry-pi-ip“
      • Lozinka: ♣ lozinka ♣
      • Postavke
      • Firewall

        • Odaberite ♣ Raspberry-pi-hostname ♣
        • Serveri

          • Port web servera 80
          • HTTPS poslužitelj - port 443
        • Dodati
      • Save

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

Korak 7: Ožičite 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).

  • Koristite tri kratkospojna kabela za žene
  • 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 kratkospojnik.

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 spojeve

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

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

    • Klizite rasterećenje preko ženskog spojnog zatiča ili pokrova sa električnom trakom

Spojite relej na pi kako je prikazano na dijagramu:

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

Korak 8: Kreirajte uslugu pokretanja

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

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

Ako Raspberry Pi izgubi napajanje, relej ima sigurnosni mehanizam koji drži kolo 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 sistemski slučaj zatraži "$ 1" na početku) odjek "Startni relej" # Uključite 7 koji zadržava relej isključen/usr/local/bin/gpio write 7 1 #Pokrenite Gpio/usr/local/bin/gpio način 7 izlaz;; stop) echo "Zaustavljanje gpio -a";; *) echo "Upotreba: /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: Možete sigurno zanemariti upozorenje "nedostaju LSB oznake".)

Uvjerite se da je pokrenuta skripta za pokretanje

$ sudo ponovno pokretanje

Otvorite pregledač 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 sa 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, temperaturne varijacije u garaži su izvan operativnih specifikacija Raspberry Pi.

Provucite žice releja kroz rupu (koristite 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. Veze su prikazane na slici. Budući da relej izolira krug, smjer nije ni bitan koji je relej pričvršćen na koji vijak.

Korak 10: Priključite 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

Pre nego što sam dovršio kôd, moja porodica i ja smo bili na odmoru i otvorio sam pregledač. Posljednji pogled mog preglednika bio je otvarač garažnih vrata - stranica je osvježena i garažna vrata su se otvorila. Nekoliko dana kasnije pozvao je komšija i pitao da li garažna vrata treba da budu 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 da na web stranicu dodam senzor i stanje garažnih vrata.

Ovo je veza do izvorne upute za dodavanje senzora. Međutim, s obzirom na sve što je već dovršeno, instaliranje senzora može se uvelike pojednostaviti i umjesto korištenja pythona dodati nekoliko redaka koda u 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: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\bs.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