„Raspberry Pi 3“garažo durų atidarytuvas: 15 žingsnių (su nuotraukomis)
„Raspberry Pi 3“garažo durų atidarytuvas: 15 žingsnių (su nuotraukomis)
Anonim
„Raspberry Pi 3“garažo durų atidarytuvas
„Raspberry Pi 3“garažo durų atidarytuvas

Šią instrukciją sukūriau 2014 m. Nuo to laiko daug kas pasikeitė. 2021 metais čia atnaujinau „Smart Garage Door Opener“.

Naudokite „Raspberry Pi“ir išmanųjį telefoną, kad atidarytumėte, uždarytumėte ir stebėtumėte garažo duris. Durų atidarymas ir uždarymas užtikrinamas naudojant savarankiškai pasirašytus sertifikatus, įdiegtus šeimos mobiliuosiuose telefonuose. Jei garažo durys atidarytos, kai to neturėtų būti, tada siųskite tekstinį pranešimą (SMS) į mobilųjį telefoną.

Garažo vartai buvo nuolat naudojami nuo 2014 m. Pabaigos. Bėgant metams stengiausi nuolat atnaujinti pakeitimus. Yra priedas, kuriame aprašomi nurodymų pakeitimai.

Šio projekto tikslai yra šie:

  • Padarykite savo pirmąjį pamokomą - neplanavau to paskelbti, bet gavau daug prašymų
  • Atidarykite garažo duris naudodami standartinį nuotolinio valdymo pultą
  • Atidarykite garažo duris su sieniniu durų skambučio garažo atidarytuvu
  • Atidarykite garažo duris naudodami išmanųjį telefoną
  • Stebėkite garažo durų būseną nuotoliniu būdu per mobilųjį telefoną ar nešiojamąjį kompiuterį (ar jis atidarytas ar uždarytas?)
  • Siųsti tekstinį pranešimą į mano mobilųjį telefoną, jei durys atidarytos, kai jos turėtų būti uždarytos
  • Saugokite garažo duris (pvz., Dingus elektrai, durys neturėtų atsidaryti)
  • Neleiskite niekam kitam tinkle esančiam asmeniui atidaryti duris (dvipusis SSL sertifikatas)
  • Vietoj laidinio ryšio naudokite „WiFi“
  • Naudokite „Raspberry Pi 3“

Šio garažo vartų atidarymo pagrindas buvo gautas iš „Instructable: Raspberry Pi“garažo durų atidarytuvo. Iš pradžių aš naudoju modelį B+ Raspberry Pi, tada perėjau prie Raspberry Pi 2 modelio B, o dabar jis naudoja Raspberry Pi 3.

Bendraudamas su „Raspberry Pi“naudojau „MacBook“, tačiau galima naudoti bet kurį kompiuterį.

Nėra įtikinamos priežasties kurti šį įrenginį, bet tai buvo smagu. Tai ekonomiškiau pirkti. Panašų įrenginį galima įsigyti už maždaug 130 USD.

  • Kėlimo meistras 828LM
  • Chamberlain MyQ 129 USD
  • „GoGo Gate“179 USD
  • Amatininkas 100 USD

Pastabos:

  • Tekstas, įtrauktas į kastuvus, toks kaip „pakeisti-tai“, turėtų būti pakeistas faktine verte
  • „Arduino“pabrauktas mėlynas tekstas yra nuoroda. Šiuo atveju tai yra nuoroda į garažo durų atidarytuvo arduino versiją.
  • Aš bandžiau įskaityti visus panaudotus šaltinius. Atsiprašau už bet kokius praleidimus. Dauguma šio dokumento yra pagrįsti kitų žmonių darbais.
  • $ reiškia komandą, įvykdytą „MacBook“terminalo lange ir paprastai vykdoma naudojant „Raspberry Pi“

1 žingsnis: Surinkite dalis

Pirkite arba surinkite dalis ir įrankius (kainos USD).

  • „Raspberry Pi 3“modelio B „Newark“elementas
  • 5.2V 2.5A USB maitinimo adapteris iš „Amazon“9,99 USD
  • „Micro USB“į USB kabelį 6 pėdų atstumu nuo „Amazon“7,99 USD
  • Dėklas iš „Amazon“6,99 USD
  • „SanDisk Ultra“16 GB „microSDHC Class 10“su adapteriu (SDSQUAN-016G-G4A) iš „Amazon“8,99 USD
  • „SunFounder“2 kanalų 5 V relės skydo modulis „Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi“- 6,79 USD
  • 3x moterų-moterų jungiamieji laidai. Pirktas „Fry's“už 4,95 USD.
  • Dinaminis DNS 40 USD per metus 30 vardų (dyn.com)
  • 1-gauja 18 kub. "Old Work Heavy Wall" jungiklis ir išleidimo dėžutė, 3,12 USD
  • „Ultra Pro“vieno šepetėlio balta sieninė plokštė, 7,88 USD
  • SECO-LARM SM 226L, garažo durų jutiklis, kaina labai skiriasi, 9,99 USD „Amazon“su nemokamu pristatymu
  • 50 pėdų kieto termostato laido, „Home Depot“arba „Lowe“, ~ 20 USD

Mano bendra suma: ~ 172,00 USD

Turėjau šias dalis, įrankius ir paslaugas:

  • CAT5 eterneto kabelis
  • Mažo skersmens viela, 6 pėdų ilgio
  • „Phillips“galvos atsuktuvas
  • Adatos nosies replės
  • Dėžutės pjaustytuvai
  • Juvelyrų plokščiagalvis atsuktuvas, reikalingas atlaisvinti relės varžtus
  • „MacBook“(galima naudoti kompiuterį)
  • „AT&T GigaPower“(galima naudoti bet kurį interneto paslaugų teikėją)

2 veiksmas: nustatykite „Raspberry Pi“be monitoriaus ar klaviatūros

Nustatykite „Raspberry Pi“be monitoriaus ar klaviatūros
Nustatykite „Raspberry Pi“be monitoriaus ar klaviatūros

Visi „Raspberry Pi“projektai reikalauja tam tikros sąrankos. Man patinka naudoti tą patį instrukcijų rinkinį ir, jei reikia, turėti vieną vietą atnaujinti tas instrukcijas.

Nustatykite „Raspberry Pi“naudodami šią instrukciją:

Nustatykite „Raspberry Pi“be monitoriaus ar klaviatūros

Aukščiau paminėtame priede yra pasirenkami veiksmai. Būtinai atlikite šiuos veiksmus:

Pridėkite kliento pusės sertifikatus prie žiniatinklio serverių

Išjunk Raspberry Pi

$ sudo išjungimas -h 0

Išjungę, pašalinkite

  • eterneto kabelis
  • USB nuoseklusis kabelis

Šių nebereikės. Naudokite „Wi -Fi“, „ssh“ir „Mac Book“terminalo langą, kad paleistumėte komandas „Raspberry Pi“.

Atjunkite maitinimą ir vėl įjunkite maitinimą, o „Raspberry pi“turėtų būti paleistas iš naujo.

3 veiksmas: įdiekite „Wiring Pi“, „Apache“ir PHP

Įdiekite „Wiring Pi“

„Mac Book“atidarykite terminalo langą. Prisijunkite prie „Raspberry Pi“, tada atsisiųskite, sukompiliuokite ir įdiekite „Wiring Pi“. Ši programinė įranga leidžia valdyti GPIO kaiščius. Čia yra žingsnis po žingsnio vadovas:

wiringpi.com/download-and-install/

Čia yra sutrumpinta instrukcijų versija:

$ ssh pi@♣ aviečių-pi-ip ♣

slaptažodis: ♣ slaptažodis ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd wiringPi $ git pull origin $./build

Norėdami patikrinti diegimą, paleiskite komandą gpio:

$ gpio -v

gpio versija: 2.29 Autorių teisės (c) 2012-2015 Gordonas Hendersonas Tai nemokama programinė įranga be jokių garantijų. Išsamesnės informacijos tipas: „gpio“-garantija „Raspberry Pi“Išsami informacija: tipas: 2 modelis, peržiūra: 1.1, atmintis: 1024 MB, gamintojas: „Sony“[OV] Įrenginių medis įgalintas. Šis „Raspberry Pi“palaiko vartotojo lygio GPIO prieigą. -> Daugiau informacijos rasite žmogaus puslapyje $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Pavadinimas | Režimas | V | Fizinis | V | Režimas | Pavadinimas | 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 | Pavadinimas | Režimas | V | Fizinis | V | Režimas | Pavadinimas | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Aukščiau pateiktos komandos turėtų suteikti jums tam tikrą pasitikėjimą, kad „wiringPi“veikia gerai.

Įdiekite „Apache“ir PHP

Vykdykite šias komandas:

$ cd..

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

Norėdami patikrinti, ar žiniatinklio serveris veikia, atidarykite naršyklę ir URL lauke įveskite:

„Aviečių-pi-ip“

Numatytoji „Apache“svetainė atsako „Tai veikia!“

4 žingsnis: svetainė

„Mac Book“atidarykite terminalo langą. Prisijunkite prie „Raspberry Pi“, tada pašalinkite numatytąjį index.html failą, pakeiskite leidimus svetainės kataloge ir redaguokite failą pavadinimu index.php.

$ ssh pi@♣ aviečių-pi-ip ♣

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

Ir įveskite šį kodą:

Garažo atidarytuvas

Namų automatika

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

";} dar {aidas"

"; } ?>

Garažo durų atidarytuvas Garažo durų atidarymo vadovas uždaryta 1 atidaryti 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} else {echo"

var13 ->

CTRL-o ir ENTER, kad parašytumėte failą, ir CTRL-x, jei norite išeiti iš redaktoriaus.

Pakeiskite failo leidimus

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

5 žingsnis: svetainės vaizdas

Svetainės vaizdas
Svetainės vaizdas
Svetainės vaizdas
Svetainės vaizdas

Patraukite didelės raiškos nuotolinį garažo durų atidarytuvą iš interneto. Pakeiskite vaizdą taip, kaip norėtumėte, naudodami „Mac“teptuką. Aukščiau esančiame paveikslėlyje buvo naudojamas didelės skiriamosios gebos „Genie Garage Opener“, pridėtas aviečių pi logotipas ir pašalintas šviesos diodas.

Vienas vaizdas yra fonas (remote-background.jpg), o kitas-aktyvus vaizdas (remote-press.jpg).

Planas buvo toks, kad paspaudus mygtuką, užuot mirksėjęs šviesos diodas, mirksi avietė. Supaprastinau svetainę.

Nukopijuokite vaizdus į aviečių pi:

$ scp *-j.webp

slaptažodis: „slaptažodis“

Svetainėje yra vienas mygtukas. Norėdami patikrinti, atidarykite naršyklę ir įveskite ♣ raspberry-pi-ip ♣. Vietoj numatytosios „Apache“svetainės, kurioje sakoma „Tai veikia!“, Turėtų pasirodyti mygtukas. Paspauskite jį.

6 veiksmas: nuotoliniu būdu valdykite interneto serverį

Kad būtų lengva pasiekti garažo durų atidarytuvą iš tolimos vietos, naudoju dinamišką DNS pavadinimą. Nes man nepatinka prisiminti IP adresus.

Naudodamas šią funkciją naršyklės URL laukelyje įvedu ♣ dynamic-hostname ♣.getmyip.com. Pastaba: namų maršrutizatorių IP gali pasikeisti be įspėjimo, tačiau tai atsitinka retai. Aš nusprendžiau naudoti „DynDNS“. Turite žinoti savo maršrutizatoriaus viešąjį IP adresą.

„U-Verse“maršrutizatoriaus IP: „uvers-public-ip“

Galite peržiūrėti pagrindinio kompiuterio pavadinimus ir išsamią „DynDNS Pro“paskyros informaciją. Štai keli patarimai, kaip pradėti:

  • Sukurkite dinaminio DNS pagrindinio kompiuterio pavadinimą (1 iš 30):

    • „Dinaminis pagrindinio kompiuterio pavadinimas“
    • Atnaujintojo raktas: „Dinaminis-ip-atnaujinimo raktas“
  • Įdiekite naujinimo klientą, kad įsitikintumėte, jog jūsų prieglobos serverio vardas visada nurodomas teisingu IP adresu.

    • Atsisiųskite ir įdiekite „MacBook“
    • „AT&T U“versijos IP retai keičiasi, todėl aukščiau pateiktą atnaujinimo priemonę galima paleisti, kai ji pasikeičia
    • Vykdykite nurodymus:

      • Pridėti paskyrą
      • Įveskite vartotojo vardą ir slaptažodį: ♣ dynamic-ip-username ♣ ♣ dynamic-ip-password ♣
      • Pasirinkite pagrindinio kompiuterio pavadinimą
      • Spustelėkite Konfigūruoti pasirinktus kompiuterius
      • Šeimininkas turėtų tapti aktyvus
    • Konfigūruokite savo tinklą, kad jis galėtų pasiekti jūsų įrenginį iš interneto. Galite naudoti mūsų „Dyn Wizard“, kad gautumėte bendrąsias instrukcijas, kaip tai padaryti, naudoti išteklius, tokius kaip „PortForward.com“, arba kreiptis pagalbos į įrenginio gamintoją.

      • AT&T eilėraštis
      • 2 laidų 3801HGV prievadų peradresavimas-tai mano turimas „AT&T U-Verse“maršrutizatorius. Žiūrėkite priede pateiktus atnaujinimus, kaip perkelti AT&T U-verse 5268ac maršrutizatorių.
      • Atidarykite naršyklę ir eikite į „Raspberry-pi-ip“
      • Slaptažodis: „slaptažodis“
      • Nustatymai
      • Ugniasienė

        • Pasirinkite ♣ aviečių-pi-pagrindinio kompiuterio pavadinimas ♣
        • Serveriai

          • Žiniatinklio serverio prievadas 80
          • HTTPS serveris - 443 prievadas
        • Papildyti
      • Sutaupyti

Kai tai bus padaryta, žiniatinklio serveris veiks iš interneto. Norėdami patikrinti, įveskite ♣ dynamic-hostname ♣ ir pamatysite garažo vartų atidarymo mygtuką.

7 žingsnis: Prijunkite grandinę prie „Raspberry Pi“

Prijunkite grandinę prie Raspberry Pi
Prijunkite grandinę prie Raspberry Pi

Pateiktam kodui (4 ir 6 veiksmai) naudojau GPIO kaištį 7. Atsitiktinai GPIO 7 yra tas pats kaip wiringPi kaištis 7. PHP kode naudojami laidų Pi kaiščių numeriai, o ne GPIO kaiščių numeriai. Galite naudoti bet kurį norimą, bet būtinai pakeiskite kodą.

Bandžiau naudoti susuktą vielą, tačiau relė blogai laikosi ant susuktos vielos. Kieta viela geriau.

Pirmuoju bandymu sukūriau tris jungiamuosius kabelius (nuo moterų iki vyrų).

  • Naudokite tris trumpiklius nuo moterų iki moterų
  • Iškirpkite tris vientisos vielos gabalus iki maždaug 1 colio.

    Juostelė 1/4 colio ant abiejų tvirtos vielos galų

  • Įkiškite vieną tvirtą laidą į vieną jungiamąjį kabelį.

Čia yra geresnis būdas sukurti jungiamuosius kabelius (nuo moterų iki vyrų):

  • Naudokite tik tvirtą laidą
  • Iškirpkite tris 4 colių vientisos vielos gabalus
  • Juostelė 1/4 colio ant abiejų tvirtos vielos galų
  • Naudokite jungiamuosius kaiščius

    • Pastumkite vieną jungiamąjį kaištį ant vientisos vielos galo ir užspauskite

      Patelė neturėtų atsilaisvinti, jei reikia, lituokite

    • Pastumkite įtempimą per jungiamąjį kaištį arba dangtelį su elektriko juosta

Prijunkite relę prie pi, kaip parodyta diagramoje:

  • Prijunkite kabelio galą prie Raspberry Pi kaiščio.
  • Įkiškite tvirtą laidą į relę.

8 veiksmas: sukurkite paleisties paslaugą

Dauguma relių, įskaitant įsigytą, veikia taip:

  • Kai signalas įjungtas, grandinė lieka išjungta.
  • Kai signalas išjungtas, grandinė įjungta.

Jei „Raspberry Pi“praranda galią, relė turi saugos mechanizmą, kuris išjungia grandinę.

Problema gali kilti, kai „Rapberry Pi“ir relė atgauna maitinimą, tačiau dar nepasibaigus „Raspberry Pi“paleidimui įjungti signalą, kurio reikia, kad grandinė nebūtų išjungta. Ryte galite pabusti atidarę garažą ir galbūt keletą naujų draugų!

Tačiau relė iš tikrųjų nepradeda veikti, kol GPIO kaiščio režimas nenustatytas naudojant šią komandą: „gpio mode 7 out“. Be to, jei GPIO kaištis įjungtas (gpio write 7 1) prieš nustatant GPIO režimą, inicijavus relė liks išjungta.

Jei norite, kad šis inicijavimas vyktų įkrovos metu ir nepabustų naujų draugų, naudokite šį paleidimo scenarijų.

$ ssh pi@♣ aviečių-pi-ip ♣

$ sudo nano /etc/init.d/garagerelay

Tada įklijuokite šį scenarijų:

#! /bin/bash

# /etc/init.d/garagerel 1 #Paleiskite „Gpio“/usr/local/bin/gpio režimą 7; stop) aidas "Stoping gpio";; *) echo "Naudojimas: /etc/init.d/garagerelay {start | stop}" išėjimas 1;; esac išėjimas 0

Norėdami išsaugoti: CTRL-o, ENTER

Norėdami išeiti iš „nano“, paspauskite CTRL-x

Padarykite failą vykdomąjį:

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

Dabar pasakykite savo pi, kad paleistumėte šį scenarijų įkrovos metu:

$ sudo update -rc.d -f garagerelay start 4

(Pastaba: galite saugiai ignoruoti įspėjimą „trūkstamų LSB žymų“.)

Įsitikinkite, kad paleisties scenarijus veikia

$ sudo perkraukite

Atidarykite naršyklę ir spustelėkite atidarytuvą. Relė turėtų spustelėti.

9 veiksmas: pritvirtinkite „Raspberry Pi“prie garažo

Pritvirtinkite Raspberry Pi prie garažo
Pritvirtinkite Raspberry Pi prie garažo

Perkeldami „Raspberry Pi“, būtinai paleiskite:

$ išjungimas -h 0

Galbūt norėsite išjungti garažo maitinimą. Taigi, durų skambučio atidarytuvas jūsų neužmuša elektra:). Tikroji priežastis yra ta, kad kiekvieną kartą sutrumpinus laidus, durys pakils aukštyn ir žemyn.

Atsukite varžtus nuo durų skambučio tipo atidarytuvo, kuris pritvirtina durų skambutį prie sienos.

Iš garažo už durų skambučio atidarytuvo padarykite skylę į namo vidų. Teksase „Raspberry Pi“neturėtų būti garaže, o temperatūros svyravimai garaže skiriasi nuo „Raspberry Pi“veikimo specifikacijų.

Praleiskite relės laidus per skylę (naudokite pakabą).

Atsukite abu varžtus, esančius galinėje durų skambučio atidarytuvo pusėje.

Pašalinkite abu relės laidų galus: 1) apie 1/8 colio relės pusės ir apie ½ colio durų skambučio pusėje. Sulenkite vielos durų skambučio pusę į pusę kilpą, pakankamai didelę, kad tilptų aplink galinį varžtą.

Prijunkite vieną relės laidą prie kiekvieno varžto, esančio galinėje durų skambučio pusėje, ir priveržkite varžtą. Sujungimai yra tokie, kaip parodyta paveikslėlyje. Kadangi relė izoliuoja grandinę, kryptis net nesvarbu, kuri relė yra pritvirtinta prie kokio varžto.

10 veiksmas: pritvirtinkite Raspberry Pi prie SECO-LARM

Pritvirtinkite Raspberry Pi prie SECO-LARM
Pritvirtinkite Raspberry Pi prie SECO-LARM
Pritvirtinkite Raspberry Pi prie SECO-LARM
Pritvirtinkite Raspberry Pi prie SECO-LARM

Kol nebaigiau kodo, mes su šeima atostogavome ir aš atidariau naršyklę. Paskutinis mano naršyklės vaizdas buvo garažo vartų atidarytuvas - puslapis atnaujintas ir atidarytos garažo durys. Po kelių dienų paskambino kaimynas ir paklausė, ar garažo durys turi būti atidarytos? Laimei, galėjau jį uždaryti iš 500 mylių.

Šis užkandis privertė mane pakeisti kodą, kad taip neatsitiktų, ir pridėti prie svetainės jutiklį ir garažo durų būseną.

Tai nuoroda į originalią instrukciją, kaip pridėti jutiklį. Tačiau, atsižvelgiant į viską, kas jau baigta, jutiklio įdiegimą galima labai supaprastinti ir vietoj „python“pridėti porą kodo eilučių į 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\lt.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