Raspberry Pi 3 Hapësja e dyerve të garazhit: 15 hapa (me fotografi)
Raspberry Pi 3 Hapësja e dyerve të garazhit: 15 hapa (me fotografi)
Anonim
Raspberry Pi 3 Hapës i Garazheve
Raspberry Pi 3 Hapës i Garazheve

Unë e krijova këtë të udhëzueshëm në vitin 2014. Shumë gjëra kanë ndryshuar që atëherë. Në vitin 2021, unë azhurnova Hapësen e Dyerve të Garazhit të Zgjuar këtu.

Përdorni një Raspberry Pi dhe një smartphone për të hapur, mbyllur dhe monitoruar derën e garazhit. Hapja dhe mbyllja e derës sigurohet duke përdorur certifikata të vetë-nënshkruara të instaluara në telefonat celularë të familjes. Nëse dera e garazhit është e hapur kur nuk duhet, atëherë dërgoni një mesazh me tekst (SMS) në një celular.

Dera e garazhit ka qenë në përdorim të vazhdueshëm që nga fundi i vitit 2014. Me kalimin e viteve, jam përpjekur t'i mbaj përditësuar ndryshimet. Ekziston një shtojcë që përshkruan ndryshimet në udhëzimet.

Qëllimet e këtij projekti janë:

  • Bëni mësimin tim të parë - nuk kam planifikuar ta postoj këtë, por kam marrë shumë kërkesa
  • Hapni një derë garazhi me një telekomandë standarde
  • Hapni një derë garazhi me hapësin e garazhit të ziles së montuar në mur
  • Hapni një derë garazhi me një Smartphone
  • Monitoroni statusin e derës së garazhit nga distanca përmes një telefoni celular ose laptop (a është e hapur apo e mbyllur?)
  • Dërgo një mesazh me tekst në celularin tim nëse dera është e hapur kur duhet të mbyllet
  • Mbani derën e garazhit të sigurt (p.sh., me humbje të energjisë, dera nuk duhet të hapet)
  • Mos lejoni që dikush tjetër në rrjet të hap derën (certifikatë SSL e vetë-nënshkruar me dy drejtime)
  • Përdorni WiFi në vend të një lidhjeje me tel
  • Përdorni Raspberry Pi 3

Baza për këtë zbatim të Hapësit të Garazheve derivoi nga Instructable: Raspberry Pi Garage Door Opener nga quartarian. Fillimisht, kam përdorur një model B+ Raspberry Pi, pastaj u transferova në një Raspberry Pi 2 model B, dhe tani ai përdor një Raspberry Pi 3.

Kam përdorur një MacBook për të komunikuar me Raspberry Pi, por çdo kompjuter mund të përdoret.

Nuk ka asnjë arsye bindëse për të ndërtuar këtë pajisje, por ishte argëtuese. Costshtë më kosto -efektive për të blerë një të tillë. Një pajisje e ngjashme mund të blihet për rreth 130 dollarë.

  • Master ngritës 828LM
  • Chamberlain MyQ 129 dollarë
  • GoGo Gate 179 dollarë
  • Zejtar 100 dollarë

Shënime:

  • Teksti i mbyllur me lopata, si ky ♣ zëvendëso-këtë ♣ duhet të zëvendësohet me një vlerë aktuale
  • Arduino nënvizoi tekstin blu është një lidhje. Në këtë rast, është një lidhje me një version arduino të një hapësi të dyerve të garazhit.
  • Unë jam përpjekur të kreditoj çdo burim të përdorur. Kërkoj falje për çdo lëshim. Shumica e këtij dokumenti bazohet në punën e njerëzve të tjerë.
  • $ tregon një komandë të ekzekutuar në një dritare terminale në MacBook dhe zakonisht po ekzekutohet në Raspberry Pi

Hapi 1: Mblidhni pjesë

Blini ose mblidhni pjesë dhe mjete (çmimet në USD).

  • Raspberry Pi 3 Model B Newark Element14 35 dollarë
  • Përshtatës USB 5.2V 2.5A USB nga Amazon 9.99 dollarë
  • Kabllo mikro USB në USB 6 metra nga Amazon 7.99 dollarë
  • Rasti nga Amazon 6.99 dollarë
  • SanDisk Ultra 16 GB microSDHC Class 10 me përshtatës (SDSQUAN-016G-G4A) nga Amazon 8.99 dollarë
  • SunFounder 2 Channel 5V Relay Shield Module për Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - $ 6.79
  • 3x Fijet Femra-Femra Jumper Wires. Blerë në Fry's për 4.95 dollarë.
  • DNS dinamike 40 dollarë në vit për 30 emra (dyn.com)
  • 1-Banda 18 cu. in. Ndërprerës dhe kuti dalëse e murit të rëndë të punës së vjetër, 3.12 dollarë
  • Pllakë muri e bardhë Ultra Pro me një furçë, 7.88 dollarë
  • SECO-LARM SM 226L, Sensori i dyerve të garazhit, çmimi ndryshon shumë, 9.99 dollarë në Amazon me transport falas
  • 50 metra tela të ngurta termostati, Home Depot ose Lowe's, 20 dollarë

Totali im: 2 172,00 dollarë

Unë kisha pjesët, mjetet dhe shërbimet e mëposhtme:

  • Kabllo Ethernet CAT5
  • Teli i vogël matës, 6 ft i gjatë
  • Kaçavidë Phillips
  • Pincë hundë me gjilpërë
  • Prerës kuti
  • Bizhuteritë vidë me kokë të sheshtë, të nevojshme për të liruar vidhat në stafetë
  • MacBook (mund të përdoret një kompjuter)
  • AT&T GigaPower (mund të përdoret çdo ofrues i shërbimit të internetit)

Hapi 2: Konfiguroni Raspberry Pi Pa Monitor ose Tastierë

Vendosni Raspberry Pi pa monitor ose tastierë
Vendosni Raspberry Pi pa monitor ose tastierë

Të gjitha projektet Raspberry Pi kërkojnë një lloj konfigurimi. Më pëlqen të përdor të njëjtin grup udhëzimesh dhe, kur është e nevojshme, të kem një vend për të përditësuar ato udhëzime.

Vendosni Raspberry Pi duke përdorur udhëzimet e mëposhtme:

Vendosni Raspberry Pi pa monitor ose tastierë

Udhëzimi i mësipërm përfshin hapa opsionalë në shtojcë. Sigurohuni që të bëni hapin:

Shtoni certifikata nga ana e klientit në serverët në internet

Shutdown Raspberry Pi

$ sudo mbyllje -h 0

Pasi të fiket, hiqeni

  • kabllo ethernet
  • Kabllo serike USB

Këto nuk do të nevojiten më. Përdorni wifi, ssh dhe një dritare terminale në Mac Book për të ekzekutuar komandat në Raspberry Pi.

Shkëputeni nga priza dhe lidheni përsëri, dhe mjedra pi duhet të rindizet.

Hapi 3: Instaloni Wiring Pi, Apache dhe PHP

Instaloni Wiring Pi

Hapni një dritare terminale në Librin Mac. Hyni në Raspberry Pi, pastaj shkarkoni, përpiloni dhe instaloni Wiring Pi. Ky program ju lejon të kontrolloni kunjat GPIO. Këtu është një udhëzues hap pas hapi:

wiringpi.com/download-and-install/

Këtu është një version i kondensuar i udhëzimeve:

$ ssh pi@♣ mjedër-pi-ip

fjalëkalim: ♣ fjalëkalim ♣ $ sudo apt-get install git-core $ git clone git: //git.drogon.net/wiringPi $ cd instalime elektrikePi $ git tërheq origjinën $./build

Drejtoni komandën gpio për të kontrolluar instalimin:

$ gpio -v

gpio version: 2.29 E drejta e autorit (c) 2012-2015 Gordon Henderson Ky është softuer falas me ABSOLUTISHT PA GARANCI. Për detajet lloji: gpio -garanti Raspberry Pi Detajet: Lloji: Modeli 2, Rishikimi: 1.1, Memoria: 1024MB, Prodhuesi: Sony [OV] Pema e pajisjes është e aktivizuar. Ky Raspberry Pi mbështet qasjen GPIO të nivelit të përdoruesit. -> Shih faqen-faqe për më shumë detaje $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Emri | Mënyra | V | Fizike | V | Mënyra | Emri | wPi | BCM | +-----+-----+---------+------+---+---- ++ ----+---+- -----+---------+-----+-----+| | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | NE | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | NE | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | JASHT | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | NE | 0 | 11 || 12 | 0 | NE | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | NE | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | NE | 0 | 15 || 16 | 1 | NE | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | NE | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | NE | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | NE | 0 | 21 || 22 | 0 | NE | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | NE | 0 | 23 || 24 | 1 | NE | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | NE | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | NE | 1 | 27 || 28 | 1 | NE | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | NE | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | NE | 1 | 31 || 32 | 0 | NE | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | NE | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | NE | 0 | 35 || 36 | 0 | NE | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | NE | 0 | 37 || 38 | 0 | NE | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | NE | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+---- ++ ----+---+- -----+---------+-----+-----+| BCM | wPi | Emri | Mënyra | V | Fizike | V | Mënyra | Emri | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Komandat e mësipërme duhet t'ju japin njëfarë besimi se wiringPi po funksionon mirë.

Instaloni Apache dhe PHP

Drejtoni komandat e mëposhtme:

cd $..

$ sudo apt-merrni përditësim $ sudo apt-merrni instaloni apache2 php5 libapache2-mod-php5

Për të verifikuar funksionimin e serverit në internet, hapni një shfletues dhe futni në kutinë e URL -së:

♣ mjedër-pi-ip

Uebfaqja e paracaktuar e Apache përgjigjet me "Punon!"

Hapi 4: Uebfaqe

Hapni një dritare terminale në Librin Mac. Hyni në Raspberry Pi, pastaj hiqni skedarin e paracaktuar index.html, ndryshoni lejet në drejtorinë e faqes në internet dhe modifikoni një skedar të quajtur index.php.

$ ssh pi@♣ mjedër-pi-ip

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

Dhe futni kodin e mëposhtëm:

Hapës garazhi

Automatizimi në shtëpi

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

";} tjetër {jehonë"

"; } ?>

Hapës i dyerve të garazhit Manual për hapjen e dyerve të garazhit e mbyllur 1 hapur 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} tjetër {echo"

var13 ->

CTRL-o dhe ENTER për të shkruar skedarin, dhe CTRL-x për të dalë nga redaktuesi.

Ndryshoni lejet në skedar

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

Hapi 5: Imazhi i faqes në internet

Imazhi i faqes në internet
Imazhi i faqes në internet
Imazhi i faqes në internet
Imazhi i faqes në internet

Merrni një hapëse të dyerve të garazhit me rezolucion të lartë nga uebi. Ndryshoni imazhin ashtu siç dëshironi të përdorni furçën e bojës Mac. Në imazhin e mësipërm, u përdor një Genie Garage Opener me rezolucion të lartë, u shtua një logo pi mjedër dhe led u hoq.

Një imazh është sfondi (distanca-background.jpg), dhe tjetra është imazhi aktiv (distanca-shtyp.jpg).

Plani ishte që në shtypjen e butonit, në vend që të ndizte led -in, mjedra do të binte në sy. Unë thjeshtova faqen e internetit.

Kopjoni imazhet në mjedër pi:

$ scp *-j.webp

fjalëkalimi: ♣ fjalëkalimi

Faqja e internetit ka një buton të vetëm shtypës. Për të verifikuar, hapni një shfletues dhe futni ♣ raspberry-pi-ip. Në vend të uebfaqes së paracaktuar të Apache, e cila thotë "Punon!", Butoni duhet të shfaqet. Shtypeni atë.

Hapi 6: Kontrolli në distancë i serverit të uebit

Për ta bërë më të lehtë qasjen në Hapësin e Garazheve nga një vend i largët, unë përdor një emër dinamik DNS. Sepse nuk më pëlqen të kujtoj adresat IP.

Me këtë veçori, futem ♣ dinamik-hostname ♣.getmyip.com në fushën URL të një shfletuesi. Shënim: IP në ruterët shtëpiak mund të ndryshojë pa paralajmërim, por kjo ndodh rrallë. Zgjodha të përdor DynDNS. Ju do të duhet të dini adresën IP publike të ruterit tuaj.

U-Verse Router IP: ♣ uverse-public-ip

Ju mund të shihni emrat tuaj të hostit dhe detajet e llogarisë DynDNS Pro. Këtu janë disa këshilla për të filluar:

  • Krijoni emrin tuaj host Dynamic DNS (1 nga 30):

    • ♣ dinamike-hostname
    • Çelësi i përditësuesit: ♣ çelësi dinamik-ip-përditësues ♣
  • Instaloni një klient të azhurnuar për të siguruar që emri i hostit tuaj të tregohet gjithmonë në adresën e saktë IP.

    • Shkarkoni dhe instaloni në MacBook
    • IP-të e AT-T të vargjeve U ndryshojnë rrallë, kështu që përditësuesi i mësipërm mund të ekzekutohet sa herë që ndryshon
    • Ndiqni udhëzimet:

      • Shtoni Llogari
      • Futni emrin e përdoruesit dhe fjalëkalimin: ♣ dinamik-ip-emrin e përdoruesit ♣ ♣ dinamik-ip-fjalëkalimin
      • Zgjidhni emrin e hostit
      • Klikoni Konfiguro hostet e zgjedhur
      • Pritësi duhet të bëhet aktiv
    • Konfiguroni rrjetin tuaj për të lejuar qasjen në pajisjen tuaj nga Interneti. Ju mund të përdorni Dyn Wizard për disa udhëzime të përgjithshme se si ta bëni këtë, përdorni burime të tilla si PortForward.com ose kontaktoni prodhuesin e pajisjes për ndihmë.

      • Vargu AT&T U
      • Port Forwarding për 2-Wire 3801HGV-ky është ruteri AT&T U-Verse që kam. Shihni Përditësimet në një Shtojcë se si të transferoni përpara në ruterin AT & T U-varg 5268ac.
      • Hapni shfletuesin dhe shkoni te ♣ mjedër-pi-ip
      • Fjalëkalimi: ♣ fjalëkalim
      • Cilësimet
      • Firewall

        • Zgjidhni ♣ mjedër-pi-hostname
        • Serverat

          • Porta e serverit në internet 80
          • Server HTTPS - porti 443
        • Shto
      • Ruaj

Pasi të bëhet kjo, serveri i uebit do të funksionojë nga interneti. Për ta verifikuar, futni ♣ dinamik-hostname ♣ dhe duhet të shihni butonin e hapjes së derës së garazhit.

Hapi 7: Lidhni qarkun në Raspberry Pi

Lidhni qarkun me Raspberry Pi
Lidhni qarkun me Raspberry Pi

Për kodin e dhënë (hapi 4 dhe 6), kam përdorur pinin GPIO 7. coincshtë rastësi që GPIO 7 është e njëjtë me instalimin e kunjit Pi 7. Në kodin PHP, përdoren numrat e kunjave Pi të instalimeve elektrike dhe JO numrat e pinit GPIO. Mund të përdorni cilindo që dëshironi, por sigurohuni që ta ndryshoni kodin.

Unë u përpoqa të përdor tela të përdredhur, por stafeta nuk mbahet mirë në tela të përdredhur. Teli i fortë është më i mirë.

Në përpjekjen time të parë, krijova tre kabllo lidhës (femra me meshkuj).

  • Përdorni tre kabllo kërcyes nga femra në femra
  • Pritini tre pjesë të telit të ngurtë në rreth 1in.

    Rrip 1/4in në të dy skajet e telit të ngurtë

  • Futni një tel të fortë në një kabllo kërcyesi femër.

Këtu është një mënyrë më e mirë për të krijuar kabllo lidhës (femra me meshkuj):

  • Përdorni vetëm tela të fortë
  • Pritini tre copa tela të ngurta 4 inç
  • Rrip 1/4in në të dy skajet e telit të ngurtë
  • Përdorni kunjat lidhëse femërore

    • Rrëshqitni një kunj lidhës femër në njërin skaj të telit të fortë dhe shtrëngoni

      Kunja e femrës nuk duhet të lihet, të bashkohet nëse është e nevojshme

    • Rrëshqitni lehtësimin e tendosjes mbi kunjin lidhës femëror ose kunjin e mbulimit me shirit elektricisti

Teli i stafetës në pi siç tregohet në diagram:

  • Lidhni skajin femëror të kabllit me kunjin Raspberry Pi.
  • Futni tela të fortë në Stafetë.

Hapi 8: Krijoni një shërbim fillestar

Shumica e stafetëve përfshirë atë të blerë, funksionojnë kështu:

  • Kur sinjali është ON qarku qëndron i fikur.
  • Kur sinjali është OFF atëherë qarku është i ndezur.

Nëse Raspberry Pi humbet fuqinë, stafeta ka një mekanizëm sigurie që e mban qarkun OFF.

Një problem mund të ndodhë kur Rapberry Pi dhe stafeta të rikthehen në energji, por para se Raspberry Pi të ketë përfunduar nisjen për të ndezur sinjalin i cili është i nevojshëm për të mbajtur qarkun të fikur. Ju mund të zgjoheni në mëngjes me garazhin tuaj të hapur dhe potencialisht disa miq të rinj!

Sidoqoftë, stafeta nuk inicializohet derisa modaliteti i pinit GPIO të vendoset përmes kësaj komande: modaliteti gpio 7 jashtë. Për më tepër, nëse kunja GPIO është e ndezur (gpio shkruaj 7 1) para se të vendosni modalitetin GPIO, stafeta do të qëndrojë e fikur sapo të inicializohet.

Për ta bërë këtë inicim të fillojë në nisje dhe të mos zgjoheni me miq të rinj, përdorni skriptin e mëposhtëm të fillimit.

$ ssh pi@♣ mjedër-pi-ip

$ sudo nano /etc/init.d/garagerelay

Pastaj ngjitni këtë skenar:

#! /bin/bash

# /etc/init.d/garagerelay # Kryeni funksione specifike kur ju kërkohet nga kutia e sistemit "$ 1" në fillim) jehonë "Releta e fillimit" # Turn 7 në të cilën mbahet stafeta e fikur/usr/local/bin/gpio shkruaj 7 1 #Start Gpio/usr/local/bin/gpio mode 7 jashtë;; stop) jehonë "Ndalimi i gpio";; *) jehonë "Përdorimi: /etc/init.d/garagerelay {start | stop}" dalja 1;; dalja esac 0

Për të ruajtur: CTRL-o, ENTER

Për të dalë nga nano, CTRL-x

Bëni skedarin të ekzekutueshëm:

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

Tani thuaji piut tënd që ta ekzekutojë këtë shkrim në nisje:

$ sudo update -rc.d -f fillimi i garazhit 4

(Shënim: Ju mund të injoroni me siguri paralajmërimin "mungojnë etiketat LSB".)

Sigurohuni që skripti i fillimit po funksionon

$ sudo rindezje

Hapni një shfletues dhe klikoni në hapës. Stafeta duhet të klikojë.

Hapi 9: Bashkojeni Raspberry Pi në Garazh

Bashkangjit Raspberry Pi në Garazh
Bashkangjit Raspberry Pi në Garazh

Kur lëvizni Raspberry Pi, sigurohuni që të vraponi:

$ mbyllje -h 0

Ju mund të dëshironi të fikni energjinë në garazh. Pra, hapësi i ziles nuk ju godet me elektrik:). Arsyeja e vërtetë është se sa herë që shkurtoni telat, dera do të shkojë lart e poshtë.

Hiqni vidhat e murit nga hapësi i llojit të ziles, e cila e lidh zilen e derës në mur.

Hapni një vrimë nga garazhi prapa hapësit të ziles në brendësi të shtëpisë. Në Teksas, Raspberry Pi nuk duhet të jetë në garazh, ndryshimi i temperaturës në garazh është jashtë karakteristikave të funksionimit të Raspberry Pi.

Kaloni telat e stafetës përmes vrimës (përdorni një varëse rrobash).

Lironi të dy vidhat në pjesën e pasme të hapësit të ziles.

Shiriti të dy skajet e telave të stafetës: 1) rreth 1/8 inç të anës së stafetës, dhe rreth inch inç në anën e ziles së derës. Përkulni anën e ziles së telit në një lak gjysmë të madh aq sa të përshtatet rreth vidës së pasme.

Lidhni një tel stafetë në secilën vidë në pjesën e pasme të ziles së derës dhe shtrëngoni vidën. Lidhjet janë siç tregohen në figurë. Meqenëse stafeta izolon qarkun, drejtimi nuk ka rëndësi as cili stafetë është ngjitur në cilën vidë.

Hapi 10: Bashkojeni Raspberry Pi SECO-LARM

Bashkangjit Raspberry Pi në SECO-LARM
Bashkangjit Raspberry Pi në SECO-LARM
Bashkangjit Raspberry Pi në SECO-LARM
Bashkangjit Raspberry Pi në SECO-LARM

Para se të mbaroja kodin, unë dhe familja ime ishim me pushime dhe hapa shfletuesin tim. Pamja e fundit e shfletuesit tim ishte për hapjen e dyerve të garazhit - faqja u rifreskua dhe dera e garazhit u hap. Disa ditë më vonë një fqinj thirri dhe e pyeti nëse dera e garazhit duhet të jetë e hapur? Për fat të mirë, unë mund ta mbyllja atë nga 500 kilometra larg.

Ky snafu më detyroi të ndryshoj kodin në mënyrë që kjo të mos ndodhë, dhe të shtoj një sensor dhe gjendjen e derës së garazhit në faqen e internetit.

Kjo është një lidhje me udhëzuesin origjinal për shtimin e një sensori. Sidoqoftë, duke pasur parasysh gjithçka që është përfunduar tashmë, instalimi i sensorit mund të thjeshtohet shumë dhe në vend që të përdorni python, shtoni disa rreshta të kodit në 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\sq.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