Obsah:

Ovládač relé Alexa Raspberry Pi: 6 krokov
Ovládač relé Alexa Raspberry Pi: 6 krokov

Video: Ovládač relé Alexa Raspberry Pi: 6 krokov

Video: Ovládač relé Alexa Raspberry Pi: 6 krokov
Video: Amazon Alexa + esp8266 = smart home 2024, Júl
Anonim
Reléový ovládač Alexa Raspberry Pi
Reléový ovládač Alexa Raspberry Pi
Reléový ovládač Alexa Raspberry Pi
Reléový ovládač Alexa Raspberry Pi
Reléový ovládač Alexa Raspberry Pi
Reléový ovládač Alexa Raspberry Pi

Tento návod som vytvoril, aby som sa podelil o svoje skúsenosti s integráciou zariadení IOT s Alexou od Amazonu.

Tento projekt umožňuje ovládanie reléovej dosky pripojenej k malinovému pi z inteligentného ovládača.

Bol testovaný s Alexou, ale zdá sa, že funguje dobre aj so Samsung Smartthings a inými ovládacími rozhraniami, pretože napodobňuje sériu zásuviek Belkin Wemo.

Existuje veľa príkladov založených na vynikajúcom kóde FAUXMO, ale to znamenalo naučiť sa python a nedalo mi podrobnú kontrolu, ktorú som potreboval pre svoje zariadenia, a tak som sa rozhodol znova ho vytvoriť od začiatku pomocou C ako základného kódovacieho jazyka.

Tiež som nechcel ísť do hĺbky lambda kódu na Amazon.com, takže som to zjednodušil.

Zverejnil som zdroj a poznámky na Github:

github.com/Switchdoctorstu/StuPiMo

Tento tutoriál má skutočne pokryť to, ako funguje, a zverejniť svoje poznámky v prípade, že to pomôže iným.

Krok 1: Spotrebný materiál a pripojenia

Spotrebný materiál a pripojenia
Spotrebný materiál a pripojenia
Spotrebný materiál a pripojenia
Spotrebný materiál a pripojenia
Spotrebný materiál a pripojenia
Spotrebný materiál a pripojenia

Veci, ktoré potrebujete, sú ľahko dostupné na Amazon / EBay:

  • Malinový koláč *
  • Napájací zdroj Pi
  • Dupont konektory
  • Reléová doska
  • Starý kábel micro USB (na zníženie napájania reléovej karty na polovicu)

Akákoľvek malinová Pi bude fungovať, testoval som to na modeli B a Zero.

*Ak používate Pi Zero, budete potrebovať sieťový adaptér OTG (pokiaľ si nekúpite verziu „W“s podporou WiFi)

Budete musieť pripojiť Pi k sieti.

Na pripojenie reléovej karty k Pi použite dupontové konektory.

Všimnite si toho, že reléová karta by mala používať externé napájanie (odstráňte prepojenie a pripojte k externému 5v). Bude fungovať s napájaním z PI, ale nie je odporúčané pre spustenie výroby.

Na svoje nastavenie som použil externe napájaný USB HUB. To poskytuje výkon PI.

Tiež som prerušil koniec starého USB kábla a napájal relé z druhého USB pripojenia k rozbočovaču, aby som zostal v bezpečí. Moja „produkčná“verzia používa malý 5V 5A spínaný zdroj. Opäť som skrátil kábel USB na polovicu, aby som napájal Pi cez Micro-USB a vyrezal dva dupontové konektory na napájanie reléovej dosky. V kábli USB sú 4 vodiče, väčšina používa červenú/čiernu na označenie napájania 5 V, ale v prípade pochybností použite merač, aby ste sa uistili, že dostanete správne vodiče.

Reléové piny na doske sú prepojené s príslušnými GPIO pinmi na hlavičke PI.

Kód vám umožňuje vybrať piny GPIO, ale predvolené nastavenie, ktoré som použil, bolo:

  1. Reléový kolík 1 - uzemnenie
  2. Pin relé 2 - relé 1 - GPIO 0
  3. Pin relé 3 - Relé 2 - GPIO 1
  4. Pin relé 4 - Relé 3 - GPIO 2
  5. Kolík relé 5 - relé 4 - GPIO 3
  6. Pin 6 relé - relé 5 - GPIO 4
  7. Pin 7 relé - relé 6 - GPIO 5
  8. Kolík relé 8 - relé 7 - GPIO 6
  9. Pin relé 9 - Relé 8 - GPIO 7
  10. Reléový kolík 10 - +5v pre logiku

Krok 2: Nastavenie PI

Nebudem znova vytvárať návod, ako uviesť váš PI do prevádzky a pripojiť sa k sieti.

Existuje mnoho sprievodcov vrátane vynikajúceho návodu na:

www.instructables.com/id/Ultimate-Raspberr…

Budete sa musieť dostať do bodu, kedy je PI v sieti viditeľné a môžete sa k nemu pripojiť.

Nezáleží na tom, či je to prostredníctvom ethernetového alebo bezdrôtového pripojenia.

Tento projekt je možné dokončiť iba pomocou Raspberry PI pomocou editora Geany Programmers Editor, ale mne osobne je jednoduchšie pripraviť si kód na počítači pomocou programu Visual Studio alebo Eclipse (alebo dokonca pomocou programu Poznámkový blok ++) a potom ho nahrať do PI na ladenie pomocou Pripojenie VNC. Opäť to nebudem pokrývať, pretože existuje veľa vynikajúcich inštrukcií o nastavení VNC na RPi.

Všetko, čo potrebujete, je dostať sa do bodu, kedy môžete nahrať a skompilovať kód.

Jedna poznámka, ktorá je dôležitá, je, že pretože obslužný program UPNP vyžaduje multicast UDP, použité rozhrania musia byť nastavené na 'promiskuitný' režim.

To je možné vykonať na príkazovom riadku:

pi@raspberrypi: ~ $ ifconfig eth0 promisc

a / alebo

pi@raspberrypi: ~ $ ifconfig wlan0 promisc

Toto musí byť trvalé, preto som upravil súbor /etc/rc.local

sudo nano / etc / rc.local

zahrnúť riadok:

sudo ifconfig eth0 promisc

po prvom súbore bannerových # riadkov, aby ste sa uistili, že rozhrania boli nastavené pri spustení.

Krok 3: Stiahnutie a kompilácia kódu

Samotný kód sa nachádza v mojom úložisku Github;

github.com/Switchdoctorstu/StuPiMo/blob/ma…

zatiaľ čo existujú „správne“spôsoby klonovania úložiska. pre mňa bolo jednoduchšie otvoriť editor Geany na ploche Pi a vložiť kód.

Podobne, ak používate príkazový riadok;

Vytvorte nový adresár

mkdir Stu

Zmeň to

cd Stu

Vytvorte nový textový súbor

nano StuPiMo.c

Skopírujte kód z Github raw a vložte ho do nového súboru

Uložiť a ukončiť.

Akonáhle budete mať súbor ako objekt zdrojového kódu C, môžete ho skompilovať pomocou

gcc -o StuPiMo StuPiMo.c -l zapojeniePi

všimnite si "-l wiringPi", aby sa zabezpečilo, že prekladač prepojí požadovanú knižnicu wiringPi.

Kód je potom možné spustiť pomocou

./StuPiMo

Ak chcete, aby to bežalo aj pri štarte, použite príkaz:

sudo nano /etc/rc.local

pridať nasledujúci riadok

sudo/home/pi/Stu/StuPiMo &

do vášho súboru /etc/rc.local. Nezabudnite súbor uložiť pri výstupe.

Všimnite si toho, že '&' je nevyhnutné na zabezpečenie spustenia podprocesu, aby sa zabezpečilo, že skript v tomto mieste nie je zablokovaný.

Krok 4: Používanie

Akonáhle spustíte kód, požiadajte Alexu o „Objavte zariadenia“a mala by nájsť všetkých 8 virtuálnych zariadení Wemo.

Potom stačí povedať: „Alexa zapne zásuvku 1“alebo „Alexa vypne zásuvku 6“atď. A príslušné relé sa zmení.

Krok 5: Ako kód funguje

Kód funguje tak, že napodobňuje sériu zásuvkových zariadení Belkin Wemo.

Aby to bolo možné dosiahnuť, musí zvládnuť 2 hlavné funkcie

  • obslužný program zisťovania vysielania UPNP
  • „obsluha zariadenia“(jedna na virtuálne zariadenie) na správu príkazov odoslaných do zariadenia a požadovaných odpovedí.

„Bonusovou“funkciou je, že publikuje aj webovú stránku, ktorá umožňuje ovládanie zariadení.

Obsluha UPNP

Obslužný program UPNP otvára zásuvku na monitorovanie paketov protokolu SSDP na porte 239.255.255.250 1900.

Reaguje na všetky otázky typu „M-SEARCH“, ktoré prichádzajú s balíčkom odpovedí na zistenie, ktorý jednotlivým emulátorom wemo oznámi každého, kto sa pýta.

Handler zariadenia

Obslužné zariadenia zariadení (jeden na virtuálne zariadenie) monitorujú sériu portov IP a reagujú na požiadavky.

Na požiadanie poslúži odpovedi setup.xml

Na požiadanie bude slúžiť súboru s popisom udalosti

Odpovie na požiadavku GETBINARYSTATE

Spracuje a odpovie na požiadavku SETBINARYSTATE

Webový server

Webový server je jednoduchá rutina, ktorá vytvára formulár HTML obsahujúci tlačidlo na relé.

Reaguje na stlačenie tlačidiel a podľa toho prepne stav relé.

Krok 6: Prispôsobenie a priateľské mená

Prispôsobenie a priateľské mená
Prispôsobenie a priateľské mená

Nezbláznil som sa z kódu, aby bol jednoduchý a upraviteľný.

Základy je možné prispôsobiť definíciami na začiatku kódu:

// globálne definície#definujte port WEBPORT 5353 //, na ktorom chcete spustiť webový server

#define NUMDEVICES 8 // Počet virtuálnych zariadení, ktoré sa majú vytvoriť

#define PORTBASE 43450 // základný IP port na zvýšenie o

WEBPORT je číslo portu, na ktorom vstavaný webový server beží. Dalo by sa to urobiť aj na 80, aby bolo všetko jednoduché, ale zistil som, že je to v rozpore s Tomcat alebo inými službami bežiacimi lokálne.

NUMDEVICES definuje počet spustenia jednotlivých emulátorov WEMO. Ak máte reléovú kartu s 2 portami, nastavte ju na 2, 4 porty = 4 atď.

Popisné názvy zariadení sa nastavujú v rutine s názvom setup_names:

int setup_names (char friendly [NUMDEVICES] [NAMELEN]) {int i = 0;

// použite túto slučku

pre (i = 0; i <NUMDEVICES; i ++) {

sprintf (spriatelený , "zásuvka %d", i + 1);

}

// alebo nasledujúca manuálna tabuľka na vyplnenie názvov zariadení

/*

strcpy (priateľský [0], "TV v spálni");

strcpy (priateľský [1], „elektrická deka“);

strcpy (priateľský [2], „lampa do spálne“);

strcpy (priateľský [3], "Zásuvka 4");

strcpy (priateľský [4], "zásuvka 5");

strcpy (priateľský [5], "zásuvka 6");

strcpy (priateľský [6], "Zásuvka 7");

strcpy (priateľský [7], "Zásuvka 8");

*/

vrátiť i;

}

Použil som slučku na to, aby som každé zo zariadení nazval „Zásuvka n“, ale túto slučku môžete odstrániť a namiesto toho pridať svoje vlastné priateľské mená (uistite sa, že zadáte rovnaké číslo ako NUMDEVICES), ak odstránite / * * /

Ak urobíte akékoľvek zmeny, nezabudnite kód znova skompilovať.

Odporúča: