Otvárač garážových brán Raspberry Pi 3: 15 krokov (s obrázkami)
Otvárač garážových brán Raspberry Pi 3: 15 krokov (s obrázkami)
Anonim
Otvárač garážových brán Raspberry Pi 3
Otvárač garážových brán Raspberry Pi 3

Tento návod som vytvoril v roku 2014. Od tej doby sa toho veľa zmenilo. V roku 2021 som tu aktualizoval inteligentný otvárač garážových brán.

Pomocou Raspberry Pi a smartfónu otvárajte, zatvárajte a monitorujte garážové brány. Otváranie a zatváranie dverí je zabezpečené pomocou certifikátov s vlastným podpisom nainštalovaných v rodinných mobilných telefónoch. Ak sú garážové brány otvorené, aj keď by nemali byť, odošlite textovú správu (SMS) na mobilný telefón.

Garážová brána sa používa nepretržite od konca roku 2014. V priebehu rokov som sa snažil zmeny aktualizovať. Zmeny v pokynoch sú uvedené v prílohe.

Cieľom tohto projektu je:

  • Urobiť môj prvý pokyn - nemal som v pláne uverejniť to, ale dostal som veľa žiadostí
  • Otvorte garážovú bránu štandardným diaľkovým ovládaním
  • Otvorte garážovú bránu pomocou nástenného garážového otvárača
  • Otvorte garážovú bránu pomocou SmartPhone
  • Monitorujte stav garážových brán na diaľku prostredníctvom mobilného telefónu alebo prenosného počítača (sú otvorené alebo zatvorené?)
  • Ak sú dvere otvorené a majú sa zavrieť, pošlite mi správu na mobilný telefón
  • Udržujte garážovú bránu v bezpečí (napríklad pri výpadku napájania by sa dvere nemali otvárať)
  • Nedovoľte nikomu inému na sieti, aby otvoril dvere (obojsmerný certifikát SSL s vlastným podpisom)
  • Namiesto káblového pripojenia použite WiFi
  • Použite Raspberry Pi 3

Základ pre túto implementáciu otvárača garážových brán bol odvodený z kvartariátu Instructable: Raspberry Pi Garage Door Opener by quartarian. Pôvodne som používal model B+ Raspberry Pi, potom som prešiel na Raspberry Pi 2 model B a teraz používa Raspberry Pi 3.

Na komunikáciu s Raspberry Pi som použil MacBook, ale je možné použiť akýkoľvek počítač.

Neexistuje žiadny presvedčivý dôvod na stavbu tohto zariadenia, ale bola to zábava. Ich kúpa je cenovo výhodnejšia. Podobné zariadenie je možné kúpiť za približne 130 USD.

  • Zdvihový majster 828LM
  • Chamberlain MyQ 129 dolárov
  • GoGo Gate 179 dolárov
  • Remeselník 100 dolárov

Poznámky:

  • Text uzavretý rýľovaním, ako je tento ♣ nahradiť-toto ♣, by sa mal nahradiť skutočnou hodnotou
  • Arduino podčiarknutý modrý text je odkaz. V tomto prípade ide o odkaz na arduino verziu otvárača garážových brán.
  • Pokúsil som sa pripísať kredit na každý použitý zdroj. Ospravedlňujem sa za akékoľvek opomenutia. Väčšina tohto dokumentu je založená na práci iných ľudí.
  • $ označuje príkaz vykonaný v terminálovom okne na MacBooku a zvyčajne sa vykonáva na Raspberry Pi

Krok 1: Zhromaždite diely

Nakúpte alebo zozbierajte diely a nástroje (ceny v USD).

  • Raspberry Pi 3 Model B Newark Element14 35 dolárov
  • 5,2 V 2,5 A USB napájací adaptér od Amazonu za 9,99 dolárov
  • Kábel micro USB na USB 6 stôp od Amazonu za 7,99 dolárov
  • Prípad od Amazonu 6,99 dolára
  • SanDisk Ultra 16 GB microSDHC Class 10 s adaptérom (SDSQUAN-016G-G4A) od Amazonu za 8,99 dolára
  • 2 -kanálový 5V reléový štítový modul SunFounder pre Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - 6,79 dolárov
  • 3x prepojovacie vodiče žena-žena. Kúpené vo Fry’s za 4,95 dolára.
  • Dynamické DNS 40 dolárov ročne pre 30 mien (dyn.com)
  • 1-gang 18 cu. palcový ťažký nástenný vypínač a zásuvka Old Work, 3,12 dolárov
  • Biela nástenná doska Ultra Pro Single Brush, 7,88 dolárov
  • SECO-LARM SM 226L, senzor garážových brán, cena sa výrazne líši, 9,99 dolára na Amazone s dovozom zadarmo
  • 50 stôp drôtu pevného termostatu, Home Depot alebo Lowe's, ~ 20 dolárov

Môj celkový súčet: ~ 172,00 dolárov

Mal som nasledujúce diely, nástroje a služby:

  • Ethernetový kábel CAT5
  • Malý drôt, dlhý 6 stôp
  • Skrutkovač s krížovou hlavou
  • Ihlové kliešte na nos
  • Krájače boxov
  • Klenotník plochý skrutkovač, potrebný na uvoľnenie skrutiek na relé
  • MacBook (je možné použiť počítač)
  • AT&T GigaPower (je možné použiť ktoréhokoľvek poskytovateľa internetových služieb)

Krok 2: Nastavte Raspberry Pi bez monitora alebo klávesnice

Nastavte Raspberry Pi bez monitora alebo klávesnice
Nastavte Raspberry Pi bez monitora alebo klávesnice

Všetky projekty Raspberry Pi vyžadujú určitý typ nastavenia. Rád používam rovnakú sadu pokynov a v prípade potreby mám jedno miesto na aktualizáciu týchto pokynov.

Nastavte Raspberry Pi podľa nasledujúceho návodu:

Nastavte Raspberry Pi bez monitora alebo klávesnice

Vyššie uvedené pokyny obsahujú voliteľné kroky v prílohe. Uistite sa, že ste urobili tento krok:

Pridajte certifikáty na strane klienta na webové servery

Vypnite Raspberry Pi

$ sudo shutdown -h 0

Po vypnutí odstráňte

  • ethernetový kábel
  • USB sériový kábel

Tieto už nebudú potrebné. Na spustenie príkazov na Raspberry Pi použite v MacBook wifi, ssh a okno terminálu.

Odpojte napájanie a znova ho zapojte a malinový pi by sa mal reštartovať.

Krok 3: Nainštalujte Wiring Pi, Apache a PHP

Nainštalujte kabeláž Pi

V Mac Book otvorte okno terminálu. Prihláste sa do Raspberry Pi, potom si stiahnite, skompilovajte a nainštalujte Wiring Pi. Tento softvér umožňuje ovládanie pinov GPIO. Tu je návod krok za krokom:

wiringpi.com/download-and-install/

Tu je skrátená verzia pokynov:

$ ssh pi@♣ malina-pi-ip ♣

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

Spustite príkaz gpio a skontrolujte inštaláciu:

$ gpio -v

Verzia gpio: 2,29 Copyright (c) 2012-2015 Gordon Henderson Toto je bezplatný softvér s ABSOLÚCNE BEZ ZÁRUKY. Pre podrobnosti typ: gpio -záruka Raspberry Pi Podrobnosti: Typ: Model 2, Revízia: 1.1, Pamäť: 1024 MB, Výrobca: Sony [OV] Je povolený strom zariadení. Tento Raspberry Pi podporuje prístup GPIO na úrovni používateľa. -> Na man-stránke nájdete ďalšie podrobnosti $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Meno | Režim | V | Fyzický | V | Režim | Meno | 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 | VONKAJŠIE | 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 | Meno | Režim | V | Fyzický | V | Režim | Meno | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Vyššie uvedené príkazy by vám mali poskytnúť istotu, že wiringPi funguje dobre.

Nainštalujte si Apache a PHP

Spustite nasledujúce príkazy:

$ cd..

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

Ak chcete overiť funkčnosť webového servera, otvorte prehliadač a do poľa pre adresu URL zadajte:

♣ malina-pi-ip ♣

Predvolená webová stránka Apache odpovedá „Funguje to!“

Krok 4: Webová stránka

V Mac Book otvorte okno terminálu. Prihláste sa do Raspberry Pi, potom odstráňte predvolený súbor index.html, zmeňte povolenia v adresári webových stránok a upravte súbor s názvom index.php.

$ ssh pi@♣ malina-pi-ip ♣

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

A zadajte nasledujúci kód:

Otvárač garáže

Domáca automatizácia

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

";} else {echo"

"; } ?>

Otvárač garážových brán Príručka otvárača garážových brán zatvorené 1 otvorené 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} else {echo"

var13 ->

CTRL-o a ENTER na zapísanie súboru a CTRL-x na ukončenie editora.

Zmeňte povolenia k súboru

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

Krok 5: Obrázok webovej stránky

Obrázok webovej stránky
Obrázok webovej stránky
Obrázok webovej stránky
Obrázok webovej stránky

Vezmite si z webu diaľkový otvárač garážových brán s vysokým rozlíšením. Pomocou štetca na počítači Mac upravte obrázok, ako chcete. Na obrázku vyššie bol použitý Genie Garage Opener s vysokým rozlíšením, bolo pridané logo malinového pi a bola odstránená dióda.

Jeden obrázok je pozadie (remote-background.jpg) a druhý je aktívny obrázok (remote-press.jpg).

Plán bol taký, že po stlačení tlačidla, namiesto blikania LED diódy, začne blikať malina. Web som zjednodušil.

Skopírujte obrázky na malinový pi:

$ scp *-j.webp

heslo: ♣ heslo ♣

Webová stránka má jediné tlačidlo. Ak to chcete overiť, otvorte prehliadač a zadajte príkaz ♣ raspberry-pi-ip ♣. Tlačidlo by sa malo objaviť namiesto predvoleného webu Apache, ktorý uvádza „Funguje to!“. Stlačte ho.

Krok 6: Diaľkovo ovládajte webový server

Aby som mal ľahký prístup k otváraču garážových brán zo vzdialeného miesta, používam dynamický názov DNS. Pretože nerád si pamätám IP adresy.

Vďaka tejto funkcii zadám do poľa URL v prehliadači adresu ♣ dynamický názov hostiteľa ♣.getmyip.com. Poznámka: IP na domácich smerovačoch sa môže zmeniť bez predchádzajúceho upozornenia, ale to sa stáva zriedka. Rozhodol som sa použiť DynDNS. Budete potrebovať verejnú IP adresu smerovača.

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

Môžete si prezrieť svoje názvy hostiteľov a podrobnosti o účte DynDNS Pro. Tu je niekoľko tipov, ako začať:

  • Vytvorte svoje dynamické meno hostiteľa DNS (1 z 30):

    • ♣ názov dynamického hostiteľa ♣
    • Aktualizačný kľúč: ♣ dynamický-ip-aktualizačný kľúč ♣
  • Nainštalujte si aktualizačného klienta, aby ste zaistili, že váš názov hostiteľa bude vždy smerovaný na správnu adresu IP.

    • Stiahnite a nainštalujte na MacBook
    • IP adresy AT&T U-verse sa zriedka menia, takže aktualizátor vyššie môže byť spustený vždy, keď sa zmení
    • Postupujte podľa pokynov:

      • Pridať účet
      • Zadajte používateľské meno a heslo: ♣ dynamické-ip-používateľské meno ♣ ♣ dynamické-ip-heslo ♣
      • Vyberte názov hostiteľa
      • Kliknite na položku Konfigurovať vybraných hostiteľov
      • Hostiteľ by mal byť aktívny
    • Nakonfigurujte svoju sieť tak, aby umožňovala prístup k vášmu zariadeniu z internetu. Môžete použiť nášho Sprievodcu Dyn, ktorý vám poskytne všeobecné pokyny, ako to urobiť, použiť zdroje ako PortForward.com alebo sa obrátiť na výrobcu zariadenia so žiadosťou o pomoc.

      • Verzia AT&T U
      • Forwarding port for 2-Wire 3801HGV-this is the AT&T U-Verse router I have. Informácie o spôsobe prenosu dopredu na smerovači AT&T U-verse 5268ac nájdete v aktualizáciách v prílohe.
      • Otvorte prehliadač a prejdite na ♣ raspberry-pi-ip ♣
      • Heslo: ♣ heslo ♣
      • nastavenie
      • POŽARNE dvere

        • Vyberte ♣ raspberry-pi-hostname ♣
        • Servery

          • Port webového servera 80
          • Server HTTPS - port 443
        • Pridať
      • Uložiť

Akonáhle to urobíte, webový server bude fungovať z internetu. Na overenie zadajte ♣ názov dynamického hostiteľa ♣ a mali by ste vidieť tlačidlo otvárača garážových brán.

Krok 7: Pripojte obvod k Raspberry Pi

Pripojte obvod k Raspberry Pi
Pripojte obvod k Raspberry Pi

Pre poskytnutý kód (krok 4 a 6) som použil GPIO pin 7. Je náhoda, že GPIO 7 je to isté ako wiringPi pin 7. V kóde PHP sa používa zapojenie pinov Pi a NIE GPIO pin. Môžete použiť ľubovoľný z nich, ale nezabudnite zmeniť kód.

Skúsil som použiť skrútený vodič, ale relé na skrútenom drôte dobre nedrží. Lepší je pevný drôt.

Na prvý pokus som vytvoril tri prepojovacie káble (zásuvka-zásuvka).

  • Použite tri prepojovacie káble medzi ženami a ženami
  • Odrežte tri kusy pevného drôtu asi na 1 palec.

    Odizolujte 1/4in na oba konce plného drôtu

  • Vložte jeden pevný vodič do jedného samičieho prepojovacieho kábla.

Tu je lepší spôsob, ako vytvoriť prepojovacie káble (zásuvka-zásuvka):

  • Používajte iba pevný drôt
  • Odrežte tri 4 -palcové kusy pevného drôtu
  • Odizolujte 1/4in na oba konce plného drôtu
  • Použite samičie spojovacie kolíky

    • Na jeden koniec plného drôtu nasuňte jeden spojovací kolík a zvlňte

      Zásuvka by sa nemala uvoľniť, v prípade potreby spájkovať

    • Prevlečte odľahčenie ťahu cez spojovací kolík alebo krycí kolík pomocou elektrikárskej pásky

Pripojte relé k pí, ako je znázornené na obrázku:

  • Pripojte ženský koniec kábla k kolíku Raspberry Pi.
  • Vložte pevný vodič do relé.

Krok 8: Vytvorte službu pri spustení

Väčšina relé, vrátane zakúpeného, funguje takto:

  • Keď je signál ZAPNUTÝ, obvod zostane vypnutý.
  • Keď je signál VYPNUTÝ, obvod je zapnutý.

Ak Raspberry Pi stratí napájanie, relé má bezpečnostný mechanizmus, ktorý udržuje obvod VYPNUTÝ.

Problém môže nastať vtedy, keď sa Rapberry Pi a relé obnovia napájanie, ale skôr, ako Raspberry Pi dokončí bootovanie, aby sa zapol signál, ktorý je potrebný na vypnutie obvodu. Ráno by ste sa mohli zobudiť s otvorenou garážou a potenciálne aj s niekoľkými novými priateľmi!

Relé sa však v skutočnosti neinicializuje, kým nie je režim PIN GPIO nastavený pomocou tohto príkazu: gpio mode 7 out. Okrem toho, ak sa prepínač GPIO prepne do polohy ON (gpio write 7 1) pred nastavením režimu GPIO, relé zostane po inicializácii vypnuté.

Aby bola táto inicializácia spustená pri štarte a neprebudila sa z nových priateľov, použite nasledujúci štartovací skript.

$ ssh pi@♣ malina-pi-ip ♣

$ sudo nano /etc/init.d/garagerelay

Potom prilepte tento skript:

#! /bin/bash

# /etc/init.d/garagerelay # Vykonajte konkrétne funkcie, keď vás o to systémový prípad požiada „$ 1“pri štarte) echo „Spúšťacie relé“# Zapnite 7, čím zostane relé vypnuté/usr/local/bin/gpio write 7 1 #Spustite režim Gpio/usr/local/bin/gpio 7; stop) echo „Zastavenie gpio“;; *) echo "Použitie: /etc/init.d/garagerelay {start | stop}" exit 1;; esac exit 0

Ak chcete uložiť: CTRL-o, ENTER

Ak chcete ukončiť nano, CTRL-x

Nastaviť súbor ako spustiteľný:

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

Teraz povedzte svojmu pí, aby pri štarte spustil tento skript:

$ sudo update -rc.d -f garagerelay štart 4

(Poznámka: Varovanie „chýbajúce značky LSB“môžete pokojne ignorovať.)

Zaistite, aby bol spustený spúšťací skript

$ sudo reštart

Otvorte prehliadač a kliknite na otvárač. Relé by malo cvaknúť.

Krok 9: Pripojte Raspberry Pi do garáže

Pripojte Raspberry Pi do garáže
Pripojte Raspberry Pi do garáže

Pri presúvaní Raspberry Pi spustite:

$ shutdown -h 0

Možno budete chcieť vypnúť napájanie garáže. Otvárač zvončeka vás teda elektricky nezabije:). Skutočným dôvodom je, že pri každom skratovaní drôtov sa dvere budú pohybovať hore a dole.

Odskrutkujte skrutky na stenu z otvárača zvončeka, ktorý pripevňuje zvonček k stene.

Vykopnite dieru z garáže za otváračom zvončekov dovnútra domu. V Texase by Raspberry Pi nemal byť v garáži, kolísanie teploty v garáži je mimo prevádzkových špecifikácií Raspberry Pi.

Veďte káble relé cez otvor (použite vešiak na šaty).

Uvoľnite obe skrutky na zadnej strane otvárača zvončekov.

Odizolujte oba konce vodičov relé: 1) asi 1/8 palca na strane relé a asi ½ palca na strane zvončeka. Ohnite stranu zvončeka drôtu do polovičnej slučky, ktorá je dostatočne veľká na to, aby sa zmestila okolo skrutky na zadnej strane.

Pripojte jeden reléový vodič ku každej skrutke na zadnej strane zvončeka a utiahnite skrutku. Pripojenia sú také, ako je znázornené na obrázku. Pretože relé izoluje obvod, na smere ani nezáleží, ktoré relé je pripevnené ku ktorej skrutke.

Krok 10: Pripojte Raspberry Pi k SECO-LARM

Pripojte Raspberry Pi k SECO-LARM
Pripojte Raspberry Pi k SECO-LARM
Pripojte Raspberry Pi k SECO-LARM
Pripojte Raspberry Pi k SECO-LARM

Kým som mal kód hotový, boli sme s rodinou na dovolenke a otvoril som prehliadač. Posledný pohľad môjho prehliadača bol na otvárač garážových brán - stránka sa obnovila a garážové dvere sa otvorili. O niekoľko dní zavolal sused a spýtal sa, či majú byť garážové brány otvorené? Našťastie som ho mohol zavrieť zo vzdialenosti 500 míľ.

Toto snafu ma prinútilo zmeniť kód, aby sa to nestalo, a na webovú stránku pridať senzor a stav garážovej brány.

Toto je odkaz na pôvodný návod na pridanie senzora. Vzhľadom na všetko, čo už bolo dokončené, je však možné inštaláciu senzora výrazne zjednodušiť a namiesto použitia jazyka python pridať do index.php niekoľko riadkov kódu.


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