Obsah:

Ovladač relé Alexa Raspberry Pi: 6 kroků
Ovladač relé Alexa Raspberry Pi: 6 kroků

Video: Ovladač relé Alexa Raspberry Pi: 6 kroků

Video: Ovladač relé Alexa Raspberry Pi: 6 kroků
Video: How To Control A Solenoid With A Raspberry Pi Using a Relay 2024, Červenec
Anonim
Ovladač relé Alexa Raspberry Pi
Ovladač relé Alexa Raspberry Pi
Ovladač relé Alexa Raspberry Pi
Ovladač relé Alexa Raspberry Pi
Ovladač relé Alexa Raspberry Pi
Ovladač relé Alexa Raspberry Pi

Vytvořil jsem tento Instructable, abych se podělil o své zkušenosti s integrací zařízení IOT s Alexou od Amazonu.

Tento projekt umožňuje ovládat reléovou desku připojenou k Raspberry Pi pomocí ovladače Smarthome.

Byl testován s Alexou, ale zdá se, že funguje dobře i s Samsung Smartthings a dalšími řídicími rozhraními, protože emuluje řadu zásuvek Belkin Wemo.

Existuje spousta příkladů založených na vynikajícím kódu FAUXMO, ale to znamenalo naučit se python a nedalo mi podrobnou kontrolu, kterou jsem potřeboval pro svá zařízení, a tak jsem se rozhodl znovu vytvořit od nuly pomocí C jako mého základního kódovacího jazyka.

Také jsem nechtěl jít do hloubky lambda kódu na Amazon.com, takže jsem to opravdu zjednodušil.

Zveřejnil jsem zdroj a poznámky na Github:

github.com/Switchdoctorstu/StuPiMo

Tento tutoriál má skutečně popsat, jak funguje, a publikovat své poznámky pro případ, že by pomohl ostatním.

Krok 1: Spotřební materiál a připojení

Spotřební materiál a připojení
Spotřební materiál a připojení
Spotřební materiál a připojení
Spotřební materiál a připojení
Spotřební materiál a připojení
Spotřební materiál a připojení

Věci, které potřebujete, jsou snadno dostupné na Amazon / EBay:

  • Raspberry PI *
  • Pi napájecí zdroj
  • Dupont konektory
  • Reléová deska
  • Starý kabel micro USB (snížit na polovinu pro napájení reléové karty)

Jakýkoli malinový Pi bude fungovat, testoval jsem to na modelu B a Zero.

*Pokud používáte Pi Zero, budete potřebovat síťový adaptér OTG (pokud si nekoupíte verzi „W“s buitem ve WiFi)

Budete muset připojit Pi k síti.

Pomocí dupontních konektorů připojte reléovou kartu k Pi.

Všimněte si, že reléová karta by měla používat externí napájení (odpojte odkaz a připojte se k externímu 5v). Bude fungovat napájený z PI, ale není doporučeno pro běžící produkci.

Pro nastavení jsem použil externě napájený USB HUB. To poskytuje výkon PI.

Také jsem přerušil konec starého kabelu USB a napájel relé z 2. připojení USB k rozbočovači, abych zůstal v bezpečí. Moje 'produkční' verze používá malý 5V 5A spínaný napájecí zdroj. Znovu jsem zkrátil kabel USB na polovinu, abych napájel Pi přes Micro-USB a odpojil dva dupontní konektory pro napájení reléové desky. V kabelu USB jsou 4 vodiče, většina používá k označení napájení 5 V červenou/černou, ale v případě pochybností použijte měřič, abyste se ujistili, že dostanete správné vodiče.

Reléové piny na desce jsou připojeny k příslušným GPIO pinům na PI záhlaví.

Kód vám umožňuje vybrat piny GPIO, ale výchozí jsem použil:

  1. Reléový kolík 1 - uzemnění
  2. Reléový pin 2 - relé 1 - GPIO 0
  3. Reléový kolík 3 - Relé 2 - GPIO 1
  4. Reléový kolík 4 - Relé 3 - GPIO 2
  5. Reléový kolík 5 - Relé 4 - GPIO 3
  6. Reléový kolík 6 - Relé 5 - GPIO 4
  7. Reléový kolík 7 - Relé 6 - GPIO 5
  8. Reléový kolík 8 - Relé 7 - GPIO 6
  9. Reléový kolík 9 - Relé 8 - GPIO 7
  10. Reléový pin 10 - +5v pro logiku

Krok 2: Nastavení PI

Nebudu znovu vytvářet návod, jak zprovoznit PI a připojit se k síti.

Existuje mnoho průvodců, včetně vynikajících instrukcí na:

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

Budete se muset dostat do bodu, kdy je PI v síti viditelné a můžete se k němu připojit.

Nezáleží na tom, zda je to prostřednictvím ethernetového nebo bezdrátového připojení.

Tento projekt lze dokončit pouze pomocí Raspberry PI pomocí editoru Geany Programmers, ale pro mě osobně je snazší provést přípravu kódu na PC pomocí Visual Studio nebo Eclipse (nebo dokonce Notepad ++) a poté jej nahrát do PI pro ladění pomocí Připojení VNC. Opět to nebudu pokrývat, protože existuje mnoho vynikajících instrukcí o nastavení VNC na RPi.

Vše, co potřebujete, je dostat se do bodu, kdy můžete nahrát a zkompilovat kód.

Je důležité poznamenat, že vzhledem k tomu, že obslužný program UPNP vyžaduje vícesměrové vysílání UDP, musí být použitá rozhraní nastavena na režim 'Promiscuous'.

To lze provést na příkazovém řádku:

pi@raspberrypi: ~ $ ifconfig eth0 promisc

a / nebo

pi@raspberrypi: ~ $ ifconfig wlan0 promisc

To musí být trvalé, proto jsem upravil /etc/rc.local

sudo nano / etc / rc.local

zahrnout řádek:

sudo ifconfig eth0 promisc

po první sadě řádků banneru #, abyste zajistili, že rozhraní byla nastavena při spuštění.

Krok 3: Stažení a kompilace kódu

Samotný kód se nachází v mém úložiště Github;

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

zatímco existují „správné“způsoby klonování úložiště. pro mě bylo jednodušší otevřít editor Geany na ploše Pi a vložit kód.

Podobně pokud používáte příkazový řádek;

Vytvořte nový adresář

mkdir Stu

Změňte to

cd Stu

Vytvořte nový textový soubor

nano StuPiMo.c

Zkopírujte kód z Github raw a vložte jej do nového souboru

Uložit a odejít.

Jakmile máte soubor jako objekt zdrojového kódu C, můžete jej zkompilovat pomocí

gcc -o StuPiMo StuPiMo.c -l zapojeníPi

Všimněte si „-l wiringPi“, aby bylo zajištěno, že překladač propojí požadovanou knihovnu wiringPi.

Kód lze poté spustit pomocí

./StuPiMo

Opět platí, že pokud to chcete spustit při spuštění, použijte příkaz:

sudo nano /etc/rc.local

přidat následující řádek

sudo/home/pi/Stu/StuPiMo &

do vašeho souboru /etc/rc.local. Nezapomeňte soubor uložit při ukončení.

Všimněte si, že '&' je nezbytné k zajištění, že se spustí dílčí proces, aby se zajistilo, že skript není v tomto okamžiku blokován.

Krok 4: Použití

Jakmile spustíte kód, požádejte Alexu o „Discover Devices“a ona by měla najít všech 8 virtuálních zařízení Wemo.

Pak stačí říci: „Alexa zapněte zásuvku 1“nebo „Alexa vypněte zásuvku 6“atd. A příslušné relé se změní.

Krok 5: Jak kód funguje

Kód funguje tak, že emuluje řadu zásuvkových zařízení Belkin Wemo.

Aby toho bylo dosaženo, musí zvládnout 2 hlavní funkce

  • obslužný program zjišťování vysílání UPNP
  • „obsluha zařízení“(jedna na virtuální zařízení) pro správu příkazů odeslaných do zařízení a požadovaných odpovědí.

Funkce „bonus“spočívá v tom, že také publikuje webovou stránku, která umožňuje ovládání zařízení.

Obsluha UPNP

Obslužný program UPNP otevírá soket pro sledování paketů protokolu SSDP na portu 239.255.255.250 1900.

Reaguje na všechny dotazy typu „M-SEARCH“přicházející s balíčkem reakcí na objevy, který každému, kdo se zeptá, oznámí jednotlivé emulátory wemo.

Handler zařízení

Obslužné rutiny zařízení (jeden na virtuální zařízení) monitorují řadu IP portů a reagují na požadavky.

Na požádání poslouží odpověď setup.xml

Na požádání bude sloužit soubor s popisem události

Bude reagovat na požadavek GETBINARYSTATE

Zpracuje a odpoví na požadavek SETBINARYSTATE

Webový server

Webový server je jednoduchá rutina, která vytváří formulář HTML obsahující tlačítko na relé.

Reaguje na stisknutí tlačítek a podle toho přepíná stav relé.

Krok 6: Přizpůsobení a přátelská jména

Přizpůsobení a přátelská jména
Přizpůsobení a přátelská jména

Nezbláznil jsem se z kódu, aby byl jednoduchý a upravitelný.

Základy lze přizpůsobit definicemi na začátku kódu:

// globální definice#definujte WEBPORT 5353 // port, na kterém chcete spustit webový server

#define NUMDEVICES 8 // Počet virtuálních zařízení k vytvoření

#define PORTBASE 43450 // base IP port to increment up from

WEBPORT je číslo portu, na kterém běží vestavěný webový server. Dalo by se to udělat sedět na 80, aby to bylo snadné, ale zjistil jsem, že je to v rozporu s Tomcat nebo jinými službami běžícími lokálně.

NUMDEVICES definuje počet jednotlivých emulátorů WEMO, které mají být spuštěny. Pokud máte reléovou kartu se 2 porty, nastavte ji na 2, 4 porty = 4 atd.

Popisné názvy pro zařízení jsou nastaveny v rutině s názvem setup_names:

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

// použijte tuto smyčku

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

sprintf (friendly , "Socket %d", i + 1);

}

// nebo následující manuální tabulka k vyplnění názvů zařízení

/*

strcpy (přátelský [0], "TV v ložnici");

strcpy (přátelský [1], „elektrická deka“);

strcpy (přátelský [2], "Lampa do ložnice");

strcpy (přátelský [3], "Socket 4");

strcpy (friendly [4], "Socket 5");

strcpy (friendly [5], "Socket 6");

strcpy (přátelský [6], "Socket 7");

strcpy (přátelský [7], "Socket 8");

*/

vrátit i;

}

Použil jsem smyčku pro volání každého ze zařízení 'Socket n', ale můžete tuto smyčku smazat a místo toho přidat vlastní popisná jména (jen se ujistěte, že přidáte stejné číslo jako NUMDEVICES), pokud odstraníte / * * /

Pokud provedete jakékoli změny, nezapomeňte kód znovu zkompilovat.

Doporučuje: