Obsah:

Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)
Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)

Video: Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)

Video: Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)
Video: Leap Motion SDK 2024, Listopad
Anonim
Dálkové ovládání založené na prohlížeči Arduino (Linux)
Dálkové ovládání založené na prohlížeči Arduino (Linux)
Dálkové ovládání založené na prohlížeči Arduino (Linux)
Dálkové ovládání založené na prohlížeči Arduino (Linux)

Máme děti. Miluji je, ale když zapnou dětské kanály, stále skrývají dálkové ovládání pro satelit a televizi. Poté, co se to stalo několik let denně, a poté, co mi moje milá manželka dovolila mít Arduino na Vánoce, rozhodl jsem se, že je načase udělat něco užitečného (v jejích očích!) S Arduinem. Takže tady to máme vrchol: webové rozhraní k Arduinu, které nahrazuje mé dálkové ovladače a je přístupné z mé vnitřní sítě. Když zjistím, proč můj ethernetový štít nedovolí mému arduinu ponechat si skicu, napíšu novou skicu, která používá ethernetový štít jako webový server, což znamená, že na svém počítači nepotřebuji instalovat apache. Zůstaňte naladěni, já se tam dostanu!

Krok 1: Předpoklady

Předpoklady
Předpoklady

Hardware: Arduino strana: Arduino - používám Breadboard Arduino Uno R2 - váš místní obchod s elektronikou, nebo kuchyň, pokud chcete autentický prkénko Montážní skříň - použil jsem staré plastové pouzdro s průhledným víkem Komponenty: Infračervená LED - Odpojil jsem jeden z nefunkčního dálkového ovladače (díky, děti!) Infračervený přijímač - můj jsem získal z dálkového prodlužovače kouzelného oka Transistor - použil jsem odpor BC547 - použil jsem 1,5k ohmový variabilní odpor nastavený na 1 k ohm propojovací vodiče Breadboard - dostal jsem svůj z kabelového bubnu RJ45 s pevným jádrem Strana počítače: Počítač, který se použije jako server USB, vede k softwaru Arduino Software: Software Arduino - z knihovny arduino.cc irremote - z https://www.arcfn.com/2009/08/multi-protocol- infrared -remote -library.html (díky Ken, skvělá práce!) Webový server Apache s nainstalovaným PHP - apache.org Interní IP adresa - moje je 192.168.0.9 Obrázek vašeho dálkového ovladače - google nebo obrázek pořízený na vašem fotoaparátu. Svůj jsem uložil v rozlišení 200x600

Krok 2: Sestavení rady

Budování rady
Budování rady

Důrazně doporučujeme použít prkénko pro arduino. Namontoval jsem Arduino a prkénko do stejného krytu a natrvalo jsem zapojil všechny kolíky, které pravidelně používám, přímo na prkénko. Pro tento projekt použité piny Arduino: 5v, zemní digitální piny 3, 11 (pin 3 ovládá IR LED, pin 11 se připojuje k IR přijímači)

Krok 3: Schéma

Schéma
Schéma

Toto schéma je velmi jednoduché, 4 komponenty a 6 vodičů. Připojení IR LED: Připojte jednu z nohou rezistoru k digitálnímu pinu Arduino 3 Připojte druhou nohu rezistoru k základnímu pinu tranzistoru (v mém případě střední noha) Připojte vysílač tranzistoru k zemi Připojte kolektor tranzistoru k záporné noze LED (krátká noha, plochá strana LED) Připojte kladnou nohu (dlouhá noha, zakřivená strana) LED k 5pólovým konektorům IR přijímače (budete muset najít pin pro váš konkrétní IR přijímač): GND pin k zemi VS pin k 5v VO pin k Arduino digitálnímu pinu 11

Krok 4: Přidejte Irremote Library do softwaru Arduino

Přidejte knihovnu Irremote do softwaru Arduino
Přidejte knihovnu Irremote do softwaru Arduino

irremote je skvělá knihovna napsaná Kenem Shirriffem a je k dispozici na jeho blogu na adrese https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Stáhněte si knihovnu z https:// arcfn.com/files/IRremote.zip a nainstalujte jej jako jakoukoli jinou knihovnu pro arduino. Jeho blog obsahuje spoustu užitečných informací o knihovně a o tom, jak ji nainstalovat.

Krok 5: Zaznamenejte kódy z dálkových ovladačů

Zde je začátek nudné (ale nevyhnutelné) části: Stisknutím každého tlačítka na dálkovém ovladači uložíte výstupní řetězec a namapujete jej na virtuální dálkové ovládání. Stačí to udělat jednou, počítejte s tím, že to zabere přibližně 20 minut. Spusťte textový editor a uložte výstup. Vytvořte nový dokument a zadejte každé tlačítko na dálkovém ovladači, jedno na řádek: Zapnout dolů Doleva Vpravo.. atd. Spusťte Arduino IDE a klikněte na „Soubory-> Příklady-> IRremote-> IRrecvDump“a nahrajte jej do vaše Arduino. Tento příklad vypsá vzdálené kódy na sériový port. Spusťte monitor sériového portu a stiskněte tlačítko na dálkovém ovládání. V okně sériového monitoru uvidíte řetězec: „Dekódováno *: * (* bity)“. Zkopírujte tento řádek a uložte jej do dokumentu na příslušném řádku. Opakujte, dokud nebudete mít všechny klíče uložené v textovém souboru. Vím, jak je tento bit zábavný, udělal jsem to zatím dvakrát: P Nyní potřebujeme trochu vyhledat a nahradit v textovém souboru: hledat "Dekódováno" nahradit "" hledat ": 0x" nahradit "," hledat "(" nahradit "," hledat "bity)" nahradit "" Takže pro řádek jako: Dekódovaný NEC: 0x000110 (15 bitů) bychom nyní měli mít řádek, který říká: NEC, 000110, 15

Krok 6: Vytvořte webovou stránku pro dálkové ovládání

Nyní potřebujeme zmapovat tlačítka na vašem obrázku dálkového ovladače.

Použil jsem https://www.maschek.hu/imagemap/imgmap k mapování tlačítek a upravil kód, který vám web dává, aby fungoval.

Klikněte na „Použít obrázek na vašem počítači: [vyberte soubor]“, vyberte svůj obrázek, klikněte na [nahrát], klikněte na [přijmout] Umístěte na každé tlačítko obdélníky, kruhy atd. Pro HREF vložte /remote.php?command= a řádek pro toto tlačítko z textového dokumentu například /remote.php?command=NEC, 000110, 15 Bylo by moudré (a nesmírně pomoci při ladění), pokud také vyplníte Alt: s názvem tlačítka, ale to je na vás.

Opakujte pro každé tlačítko.

Vše hotovo? Pak budeme pokračovat. Ve spodní části stránky je „Kód“, klikněte na něj a otevře se pole s kódem mapy obrázků. Zkopírujte to a vložte jej do nového textového dokumentu. Toto je hlavní část naší webové stránky.

Tady je moje kompletní webová stránka, stačí vyměnit …

s vlastním kódem výše a uložte jej jako remote.php ve vašem webovém adresáři (/var/www na linuxu) spolu s obrázky dálkového ovládání. Změňte řádky pro své vlastní obrázky:

"https://www.w3.org/TR/html4/loose.dtd">

Ovládání Arduino LED

Krok 7: Nahrajte kód dálkového ovládání do svého Arduina

Nahrajte kód dálkového ovládání do svého Arduina
Nahrajte kód dálkového ovládání do svého Arduina

Vytvořte nový náčrt a vložte do něj následující kód:/ * * WebRemote * Infračervená LED musí být připojena k pinu Arduino PWM 3. * Verze 0.1, červenec 2009 * Tento kód je autorským právem Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-experimentation/ * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com */#include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); vrátit obj; } boolean skončil = nepravda; char inData [64]; // Velikost podle potřeby byte index = 0; #define EOP "\ n" IRsend irsend; neplatné nastavení () {Serial.begin (9600); Sériový << "Inicializovaný sériový port" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; dlouhý sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (index == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {skončil = true; index = 0; přestávka; } else {if (index <64) // Velikost pole {pch += inChar; index ++; }}} if (skončil) {// Analyzujte data v inData zde … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // přeskočit ',' nebo '' // i nyní ukazuje na začátek hexu j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j nyní ukazuje na ',' nebo '' za hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); pro (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! (((k> = '0' && k = 'A' && k <= 'F'))) break; sHex *= 16; if (k> = '0' && k <= '9') sHex += (k - '0'); jinak if (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! (((k> = '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring (j+1); sBits = 0; pro (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; if (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Typ kódu:" << sType << "Hex:"; Serial.print (sHex, HEX); Sériové << "Bity:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; skončil = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBits); } else if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } else if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } else if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (String (""))) {Serial << "Delaying" << EOP; zpoždění (450); } zpoždění (30); }}

Krok 8: Připojte se k webovému serveru z počítače

Připojte se k webovému serveru z počítače
Připojte se k webovému serveru z počítače

.. nebo telefon nebo android nebo ipad nebo cokoli jiného: přejděte v prohlížeči na adresu https:// webová adresa IP/remote.php Pro mě je adresa https://192.168.0.9/remote.php, ale vaše bude nepochybně jiná. Pokud vše funguje, měli byste vidět obrázek dálkového ovladače s tlačítky, na která můžete kliknout.

Krok 9: Volitelný krok: Upravte soubor hostitelů, aby bylo používání jednodušší

Volitelný krok: Upravte soubor hostitelů, aby bylo používání jednodušší
Volitelný krok: Upravte soubor hostitelů, aby bylo používání jednodušší

Krok, který jsem udělal, bylo upravit soubor hosts (/etc/hosts na linuxu, C: / Windows / System32 / Drivers / etc / hosts na oknech). Tento soubor lze upravovat pouze v příkazovém řádku pro správu (Windows) nebo pomocí su (linux) Přidejte řádek ip.add.re.ss vzdáleně nahraďte ip.add.re.ss IP adresou serveru a soubor uložte. To budete muset provést na každém zařízení, které chcete použít pro přístup na webovou stránku s krátkým názvem. Nyní můžete přistupovat k dálkovému ovladači pomocí https://remote/remote.php Toto je můj první správný pokyn, buďte opatrní a dejte mi vědět, pokud se vyskytnou nějaké problémy, abych je mohl opravit.

Doporučuje: