Otvírač garážových vrat Raspberry Pi 3: 15 kroků (s obrázky)
Otvírač garážových vrat Raspberry Pi 3: 15 kroků (s obrázky)
Anonim
Otvírač garážových vrat Raspberry Pi 3
Otvírač garážových vrat Raspberry Pi 3

Tento instruktáž jsem vytvořil v roce 2014. Od té doby se toho hodně změnilo. V roce 2021 jsem zde aktualizoval Smart Garage Door Opener.

Pomocí Raspberry Pi a smartphonu otevřete a zavřete garážová vrata. Otevírání a zavírání dveří je zajištěno pomocí certifikátů s vlastním podpisem nainstalovaných v mobilních telefonech rodiny. Pokud jsou garážová vrata otevřená, i když by neměla být, odešlete textovou zprávu (SMS) na mobilní telefon.

Garážová vrata jsou nepřetržitě používána od konce roku 2014. V průběhu let jsem se snažil změny aktualizovat. Existuje příloha, která popisuje změny v pokynu.

Cílem tohoto projektu je:

  • Nastavit můj první pokyn - neměl jsem v plánu zveřejnit toto, ale obdržel jsem mnoho žádostí
  • Otevřete garážová vrata standardním dálkovým ovladačem
  • Otevřete garážová vrata pomocí otvírače garážových vrat na zeď
  • Otevřete garážová vrata pomocí smartphonu
  • Monitorujte stav garážových vrat na dálku prostřednictvím mobilního telefonu nebo notebooku (jsou otevřená nebo zavřená?)
  • Pošlete textovou zprávu na můj mobilní telefon, pokud jsou dveře otevřené, když by měly být zavřeny
  • Udržujte garážová vrata v bezpečí (např. Při výpadku napájení by se vrata neměla otevírat)
  • Nedovolte nikomu jinému na síti otevřít dveře (obousměrný certifikát SSL podepsaný svým držitelem)
  • Místo kabelového připojení použijte WiFi
  • Použijte Raspberry Pi 3

Základ pro tuto implementaci Garage Door Opener byl odvozen z Instructable: Raspberry Pi Garage Door Opener by quartarian. Původně jsem používal model B+ Raspberry Pi, poté jsem přešel na Raspberry Pi 2 model B a nyní používá Raspberry Pi 3.

Ke komunikaci s Raspberry Pi jsem použil MacBook, ale lze použít jakýkoli počítač.

Neexistuje žádný pádný důvod pro stavbu tohoto zařízení, ale byla to zábava. Jeho pořízení je nákladově efektivnější. Podobné zařízení lze zakoupit za přibližně 130 USD.

  • Lift master 828LM
  • Chamberlain MyQ 129 $
  • GoGo Gate 179 dolarů
  • Řemeslník 100 dolarů

Poznámky:

  • Text uzavřený piky, jako je tento ♣ nahradit-toto ♣, by měl být nahrazen skutečnou hodnotou
  • Arduino podtržený modrý text je odkaz. V tomto případě se jedná o odkaz na arduino verzi otvírače garážových vrat.
  • Pokusil jsem se připsat kredit každému použitému zdroji. Omlouvám se za případné opomenutí. Většina tohoto dokumentu je založena na práci jiných lidí.
  • $ označuje příkaz spuštěný v okně terminálu na MacBooku a obvykle se provádí na Raspberry Pi

Krok 1: Shromážděte součásti

Nakupujte nebo sbírejte díly a nástroje (ceny v USD).

  • Raspberry Pi 3 Model B Newark Element14 $ 35
  • 5,2 V 2,5 A USB napájecí adaptér od Amazonu za 9,99 $
  • Micro USB na USB kabel 6 stop od Amazonu 7,99 $
  • Pouzdro od Amazonu 6,99 $
  • SanDisk Ultra 16 GB microSDHC Class 10 s adaptérem (SDSQUAN-016G-G4A) od Amazonu za 8,99 $
  • 2kanálový reléový štítový modul SunFounder pro Arduino UNO 2560 1280 ARM PIC AVR STM32 Raspberry Pi - 6,79 USD
  • 3x propojovací vodiče žena-žena. Koupeno ve Fry’s za 4,95 $.
  • Dynamické DNS 40 $ ročně pro 30 jmen (dyn.com)
  • 1-Gang 18 cu. in. Old Work Heavy Wall Switch and Outlet Box, 3,12 $
  • Ultra Pro Single Brush White Wall Plate, 7,88 $
  • SECO-LARM SM 226L, senzor garážových vrat, cena se velmi liší, 9,99 $ na Amazonu s dopravou zdarma
  • 50 stop pevného termostatického drátu, Home Depot nebo Lowe's, ~ 20 $

Můj součet: ~ 172,00 $

Měl jsem následující díly, nástroje a služby:

  • Ethernetový kabel CAT5
  • Drát malého rozchodu, dlouhý 6 stop
  • Šroubovák s křížovou hlavou
  • Jehlové kleště
  • Kráječe krabic
  • Klenotník plochý šroubovák, potřebný k uvolnění šroubů na relé
  • MacBook (lze použít PC)
  • AT&T GigaPower (lze použít jakéhokoli poskytovatele internetových služeb)

Krok 2: Nastavení Raspberry Pi bez monitoru nebo klávesnice

Nastavte Raspberry Pi bez monitoru nebo klávesnice
Nastavte Raspberry Pi bez monitoru nebo klávesnice

Všechny projekty Raspberry Pi vyžadují určitý typ nastavení. Rád používám stejnou sadu pokynů a v případě potřeby mám jedno místo na aktualizaci těchto pokynů.

Nastavte Raspberry Pi pomocí následujícího instrukce:

Nastavte Raspberry Pi bez monitoru nebo klávesnice

Výše uvedený pokyn obsahuje volitelné kroky v příloze. Nezapomeňte provést tento krok:

Přidejte certifikáty na straně klienta na webové servery

Vypněte Raspberry Pi

$ sudo shutdown -h 0

Po vypnutí odstraňte

  • ethernetový kabel
  • USB sériový kabel

Ty už nebudou potřeba. Ke spouštění příkazů na Raspberry Pi použijte wifi, ssh a okno terminálu na Mac Book.

Odpojte napájení a znovu zapojte napájení a Raspberry Pi by se mělo restartovat.

Krok 3: Nainstalujte Wiring Pi, Apache a PHP

Nainstalujte Wiring Pi

Otevřete okno terminálu na Mac Book. Přihlaste se k Raspberry Pi, poté stáhněte, zkompilujte a nainstalujte Wiring Pi. Tento software umožňuje ovládání pinů GPIO. Zde je průvodce krok za krokem:

wiringpi.com/download-and-install/

Zde je zkrácená verze pokynů:

$ 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

Spusťte příkaz gpio a zkontrolujte instalaci:

$ gpio -v

Verze gpio: 2,29 Copyright (c) 2012-2015 Gordon Henderson Toto je bezplatný software s ABSOLUTNĚ ŽÁDNOU ZÁRUKOU. Podrobnosti zadejte: gpio -záruka Raspberry Pi Podrobnosti: Typ: Model 2, Revize: 1.1, Paměť: 1024 MB, Výrobce: Sony [OV] Je povolen strom zařízení. Tento Raspberry Pi podporuje uživatelský přístup GPIO. -> Další podrobnosti najdete na manuálové stránce $ gpio readall+-----+-----+---------+------+---+--- Pi 2 ---+---+------+---------+-----+-----+| BCM | wPi | Jméno | Režim | V | Fyzický | V | Režim | Jméno | wPi | BCM | +-----+-----+---------+------+---+---- ++ ----+---+- -----+---------+-----+-----+| | | 3,3 V | | | 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 | VENKU 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,3 V | | | 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 | Jméno | Režim | V | Fyzický | V | Režim | Jméno | wPi | BCM | +-----+-----+---------+------+---+--- Pi 2 ---+---+--- ---+---------+-----+-----+

Výše uvedené příkazy by vám měly dát jistotu, že wiringPi funguje dobře.

Nainstalujte si Apache a PHP

Spusťte následující příkazy:

$ cd..

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

Chcete -li ověřit funkčnost webového serveru, otevřete prohlížeč a do pole URL zadejte:

♣ malina-pi-ip ♣

Výchozí web Apache odpovídá „Funguje to!“

Krok 4: Web

Otevřete okno terminálu na Mac Book. Přihlaste se k Raspberry Pi, poté odeberte výchozí soubor index.html, změňte oprávnění v adresáři webových stránek a upravte soubor s názvem 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 zadejte následující kód:

Otvírač garáže

Automatizace domácnosti

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

";} else {echo"

"; } ?>

Otvírač garážových vrat Manuál k otvírání garážových vrat zavřeno 1 otevřeno 0
<? php if ($ trigger == 0) {echo "<td colspan = \" 4 / "} else {echo"

var13 ->

CTRL-o a ENTER pro zápis souboru a CTRL-x pro ukončení editoru.

Změňte oprávnění k souboru

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

Krok 5: Obrázek webových stránek

Obrázek webu
Obrázek webu
Obrázek webu
Obrázek webu

Popadněte vzdálený otvírač garážových vrat s vysokým rozlišením z webu. Pomocí štětce pro Mac upravte obrázek, jak chcete. Na výše uvedeném obrázku byl použit Genie Garage Opener s vysokým rozlišením, bylo přidáno logo maliny pi a odstraněna LED dioda.

Jeden obrázek je pozadí (remote-background.jpg) a druhý je aktivní obrázek (remote-press.jpg).

Plán byl takový, že po stisknutí tlačítka namísto blikání LED bude blikat malina. Zjednodušil jsem web.

Zkopírujte obrázky na malinový pi:

$ scp *-j.webp

heslo: ♣ heslo ♣

Web má jediné tlačítko. Chcete-li to ověřit, otevřete prohlížeč a zadejte ♣ raspberry-pi-ip ♣. Místo výchozího webu Apache, který říká „Funguje to!“, By se mělo objevit tlačítko. Zmáčkni to.

Krok 6: Vzdálené ovládání webového serveru

Aby byl snadný přístup k otvírači garážových vrat ze vzdáleného místa, používám dynamický název DNS. Protože nerad si pamatuji IP adresy.

S touto funkcí zadávám do pole URL prohlížeče ♣ dynamický název-hostitele ♣.getmyip.com. Poznámka: IP na domácích směrovačích se může změnit bez předchozího upozornění, ale to se stává zřídka. Rozhodl jsem se použít DynDNS. Budete potřebovat znát veřejnou IP adresu routeru.

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

Můžete zobrazit názvy hostitelů a podrobnosti o účtu DynDNS Pro. Zde je několik tipů, jak začít:

  • Vytvořte své dynamické jméno hostitele DNS (1 z 30):

    • ♣ název dynamického hostitele ♣
    • Aktualizační klíč: ♣ dynamický-ip-aktualizační klíč ♣
  • Nainstalujte si aktualizačního klienta, abyste zajistili, že váš název hostitele bude vždy nasměrován na správnou IP adresu.

    • Stáhněte a nainstalujte na MacBook
    • IP adresy AT&T U-verse se zřídka mění, takže výše uvedený aktualizátor lze spustit kdykoli se změní
    • Postupujte podle pokynů:

      • Přidat účet
      • Zadejte uživatelské jméno a heslo: ♣ dynamické-ip-uživatelské jméno ♣ ♣ dynamické-ip-heslo ♣
      • Vyberte název hostitele
      • Klikněte na Konfigurovat vybrané hostitele
      • Hostitel by se měl stát aktivním
    • Nakonfigurujte svou síť tak, aby umožňovala přístup k vašemu zařízení z internetu. Můžete použít našeho Dyn Wizard pro obecné pokyny, jak to udělat, použít zdroje jako PortForward.com nebo se obrátit o pomoc na výrobce zařízení.

      • AT&T U-verse
      • Přesměrování portů pro 2-Wire 3801HGV-to je router AT&T U-Verse, který mám. Jak portovat vpřed na routeru AT&T U-verse 5268ac, najdete v Aktualizace v dodatku.
      • Otevřete prohlížeč a přejděte na ♣ raspberry-pi-ip ♣
      • Heslo: ♣ heslo ♣
      • Nastavení
      • Firewall

        • Vyberte ♣ název hostitele raspberry-pi ♣
        • Servery

          • Port webového serveru 80
          • Server HTTPS - port 443
        • Přidat
      • Uložit

Jakmile to bude hotové, webový server bude fungovat z internetu. Chcete-li to ověřit, zadejte ♣ název dynamického hostitele ♣ a mělo by se vám zobrazit tlačítko otvírače garážových vrat.

Krok 7: Připojte obvod k Raspberry Pi

Připojte obvod k Raspberry Pi
Připojte obvod k Raspberry Pi

Pro poskytnutý kód (krok 4 a 6) jsem použil GPIO pin 7. Je náhoda, že GPIO 7 je stejné jako wiringPi pin 7. V kódu PHP se používá zapojení pinů Pin a NENÍ GPIO pinů. Můžete použít libovolný, ale chcete změnit kód.

Zkoušel jsem použít kroucený vodič, ale relé na krouceném vodiči nedrží dobře. Lepší je plný drát.

Na můj první pokus jsem vytvořil tři propojovací kabely (female-to-male).

  • Použijte tři propojovací kabely žena - žena
  • Odřízněte tři kusy pevného drátu asi na 1in.

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

  • Vložte jeden pevný vodič do jednoho propojovacího kabelu.

Zde je lepší způsob, jak vytvořit propojovací kabely (female-to-male):

  • Používejte pouze plný drát
  • Odřízněte tři 4palcové kusy pevného drátu
  • Odizolujte 1/4in na oba konce plného drátu
  • Použijte spojovací kolíky

    • Nasuňte jeden spojovací kolík na jeden konec plného drátu a zalisujte

      Zásuvka by se neměla uvolnit, v případě potřeby pájet

    • Nasuňte odlehčení tahu přes spojovací kolík nebo krycí kolík pomocí elektrikářské pásky

Připojte relé k pí podle schématu:

  • Připojte zásuvkový konec kabelu k pinu Raspberry Pi.
  • Vložte pevný vodič do relé.

Krok 8: Vytvořte spouštěcí službu

Většina relé, včetně zakoupeného, funguje takto:

  • Když je signál ZAPNUTÝ, obvod zůstane vypnutý.
  • Když je signál VYPNUT, obvod je zapnutý.

Pokud Raspberry Pi ztratí napájení, relé má bezpečnostní mechanismus, který udržuje obvod VYPNUTÝ.

Problém může nastat, když se napájení a relé Rapberry Pi a relé obnoví, ale než Raspberry Pi dokončí bootování, aby se zapnul signál, což je nutné k vypnutí obvodu. Mohli byste se ráno probudit s otevřenou garáží a potenciálně několika novými přáteli!

Relé se však ve skutečnosti neinicializuje, dokud není režim GPIO pin nastaven pomocí tohoto příkazu: gpio mode 7 out. Kromě toho, pokud se GPIO pin zapne (gpio write 7 1) před nastavením režimu GPIO, relé zůstane vypnuto po inicializaci.

Aby tato inicializace běžela při spuštění a neprobudili se noví přátelé, použijte následující spouštěcí skript.

$ ssh pi@♣ malina-pi-ip ♣

$ sudo nano /etc/init.d/garagerelay

Poté vložte tento skript:

#! /bin/bash

# /etc/init.d/garagerelay # Proveďte konkrétní funkce, když vás o to systémový případ požádá „$ 1“při startu) echo „Spouštěcí relé“# Zapněte 7, čímž zůstane relé vypnuto/usr/local/bin/gpio write 7 1 #Start Gpio/usr/local/bin/gpio mode 7 out;; stop) echo "Zastavení gpio";; *) echo "Použití: /etc/init.d/garagerelay {start | stop}" exit 1;; esac exit 0

Uložení: CTRL-o, ENTER

Chcete-li ukončit nano, CTRL-x

Nastavit soubor jako spustitelný:

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

Nyní řekněte svému pi, aby při spuštění spustil tento skript:

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

(Poznámka: Varování „chybějící značky LSB“můžete bezpečně ignorovat.)

Zajistěte, aby byl spuštěn spouštěcí skript

$ sudo restart

Otevřete prohlížeč a klikněte na otvírák. Relé by mělo cvaknout.

Krok 9: Připojte Raspberry Pi do garáže

Připojte Raspberry Pi do garáže
Připojte Raspberry Pi do garáže

Při stěhování Raspberry Pi nezapomeňte spustit:

$ shutdown -h 0

Možná budete chtít vypnout napájení garáže. Otvírač dveřních zvonků vás tedy nezabije elektrickým proudem:). Skutečným důvodem je, že pokaždé, když zkratujete dráty, dveře půjdou nahoru a dolů.

Odšroubujte šrouby na stěně z otvíráku typu zvonek, který připevňuje zvonek ke zdi.

Propíchněte díru z garáže za otvíračem zvonků dovnitř domu. V Texasu by Raspberry Pi neměl být v garáži, kolísání teploty v garáži je mimo provozní specifikace Raspberry Pi.

Protáhněte vodiče relé otvorem (použijte věšák).

Povolte oba šrouby na zadní straně otvírače zvonků.

Odizolujte oba konce vodičů relé: 1) asi 1/8 palce na straně relé a asi ½ palce na straně zvonku. Ohněte stranu zvonku drátu do poloviční smyčky, která je dostatečně velká, aby se vešla kolem zadního šroubu.

Připojte jeden vodič relé ke každému šroubu na zadní straně zvonku a utáhněte šroub. Připojení jsou taková, jak je znázorněno na obrázku. Protože relé izoluje obvod, na směru nezáleží ani na tom, které relé je připevněno ke kterému šroubu.

Krok 10: Připojte Raspberry Pi k SECO-LARM

Připojte Raspberry Pi k SECO-LARM
Připojte Raspberry Pi k SECO-LARM
Připojte Raspberry Pi k SECO-LARM
Připojte Raspberry Pi k SECO-LARM

Než jsem měl kód hotový, byli jsme s rodinou na dovolené a já jsem otevřel prohlížeč. Poslední pohled mého prohlížeče byl otvírač garážových vrat - stránka se obnovila a garážová vrata se otevřela. O několik dní později zavolal soused a zeptal se, zda mají být garážová vrata otevřená? Naštěstí jsem to mohl zavřít ze vzdálenosti 500 mil.

Toto snafu mě přinutilo změnit kód, aby se to nestalo, a přidat na web senzor a stav garážových vrat.

Toto je odkaz na původní instrukce pro přidání senzoru. Vzhledem ke všemu, co již bylo dokončeno, lze instalaci senzoru značně zjednodušit a místo použití pythonu přidat do index.php několik řádků 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\cs.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