INHOUDSOPGAWE:

Afstandsbediening gebaseer op Arduino -blaaier (Linux): 9 stappe (met foto's)
Afstandsbediening gebaseer op Arduino -blaaier (Linux): 9 stappe (met foto's)

Video: Afstandsbediening gebaseer op Arduino -blaaier (Linux): 9 stappe (met foto's)

Video: Afstandsbediening gebaseer op Arduino -blaaier (Linux): 9 stappe (met foto's)
Video: Leap Motion SDK 2024, November
Anonim
Afstandsbediening gebaseer op Arduino -blaaier (Linux)
Afstandsbediening gebaseer op Arduino -blaaier (Linux)
Afstandsbediening gebaseer op Arduino -blaaier (Linux)
Afstandsbediening gebaseer op Arduino -blaaier (Linux)

Ons het kinders. Ek is mal daaroor, maar hulle steek die afstandsbediening vir die satelliet en TV weg terwyl hulle die kinders se kanale aansit. Nadat dit 'n paar jaar lank daagliks gebeur het en nadat my liefste vrou my toegelaat het om 'n Arduino vir Kersfees te neem, het ek besluit dat dit tyd is om iets nuttigs (in haar oë!) Saam met die Arduino te maak. Hier het ons die hoogtepunt hiervan: 'n webgebaseerde koppelvlak vir die Arduino wat my afstandsbedienings vervang en toeganklik is vanaf my interne netwerk. As ek agterkom waarom my ethernet -skild my arduino nie toelaat om 'n skets te hou nie, sal ek 'n nuwe skets skryf wat die ethernet -skild as die webbediener gebruik, wat beteken dat ek nie apache op my rekenaar hoef te installeer nie. Bly ingeskakel, ek kom daar!

Stap 1: Voorvereistes

Voorvereistes
Voorvereistes

Hardeware: Arduino -kant: Arduino - ek gebruik 'n Arduino Uno R2 -broodbord - u plaaslike elektronikawinkel of die kombuis as u 'n outentieke omhulsel vir broodbord wil hê - ek het 'n ou plastiekhouer met 'n deursigtige deksel gebruik Komponente: Infrarooi LED - ek het gesoldeer een van 'n gebreekte afstandsbediening (dankie kinders!) Infrarooi ontvanger - ek het myne gekry van 'n magiese oogverlenger -transistor - ek het 'n BC547 -weerstand gebruik - ek het 'n 1.5k ohm veranderlike weerstand op 1k ohm Breadboard -jumperdrade gebruik - ek het myne gekry van 'n soliede kern RJ45 -kabelhaspel Rekenaarkant: rekenaar om as bediener -USB te gebruik, lei na Arduino -sagteware: Arduino -sagteware - vanaf arduino.cc irremote -biblioteek - vanaf https://www.arcfn.com/2009/08/multi-protocol- infrarooi -afstand -biblioteek.html (dankie Ken, puik werk!) Apache -webbediener met PHP geïnstalleer - apache.org Interne IP -adres - myne is 192.168.0.9 Beeld van u afstandbeheer - google of 'n foto wat op u kamera geneem is. Ek het myne met 'n resolusie van 200 x 600 gestoor

Stap 2: Bou die bord

Die bou van die raad
Die bou van die raad

Dit word sterk aanbeveel om 'n broodbord vir 'n arduino te gebruik. Ek het my Arduino en 'n broodbord in dieselfde omhulsel gemonteer en al die penne wat ek gereeld gebruik, permanent aan die broodbord vasgemaak. Arduino -penne wat vir hierdie projek gebruik word: 5v, grond Digitale penne 3, 11 (pen 3 beheer die IR -LED, pen 11 kan met die IR -ontvanger verbind word)

Stap 3: Skematiese

Skematiese
Skematiese

Hierdie skema is baie eenvoudig, met 4 komponente en 6 drade. IR LED -verbindings: Koppel een van die bene van die weerstand aan die Arduino digitale pen 3 Koppel die ander been van die weerstand aan die basispen van die transistor (die middelste been in my geval) Koppel die emitter van die transistor aan die aarde Sluit die kollektor aan van die transistor aan die negatiewe been van die LED (kort been, plat kant van die LED) Sluit die positiewe been (lang been, geboë kant) van die LED aan op die 5v -pen IR -ontvanger -aansluitings (u moet die pinout vind vir u spesifieke IR -ontvanger): GND -pen om die VS -pen na die 5v VO -pen na die Arduino digitale pen 11 te grond

Stap 4: Voeg Irremote -biblioteek by die Arduino -sagteware

Voeg Irremote -biblioteek by die Arduino -sagteware
Voeg Irremote -biblioteek by die Arduino -sagteware

irremote is 'n wonderlike biblioteek geskryf deur Ken Shirriff en is beskikbaar op sy blog op https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Laai die biblioteek af van https:// arcfn.com/files/IRremote.zip en installeer dit soos enige ander biblioteek vir die arduino. Sy blog bevat baie nuttige inligting oor die biblioteek en hoe om dit te installeer.

Stap 5: Teken die kodes van u afstandsbedienings op

Hier is die begin van die vervelige (maar onvermydelike) deel: deur op elke knoppie op die afstandsbediening te druk, die uitvoerstring te stoor en dit aan die virtuele afstandsbediening toe te lig. U hoef dit slegs een keer te doen, en dit sal ongeveer 20 minute neem. Begin 'n teksredakteur om u uitvoer te stoor. Skep 'n nuwe dokument en tik elke knoppie op u afstandsbediening, een per reël: Skakel links regs in. Ensovoorts Begin die Arduino IDE en klik op "Files-> Voorbeelde-> IRremote-> IRrecvDump" en laai dit op na jou Arduino. Hierdie voorbeeld sal die afstandskodes na die seriële poort stort. Begin die seriële poortmonitor en druk 'n sleutel op u afstandbeheer. U sal 'n string in die seriële monitorvenster verskyn: "Gedecodeer *: * (* bits)". Kopieer hierdie reël en stoor dit in u dokument op die toepaslike reël. Herhaal totdat al u sleutels in die tekslêer gestoor is. Ek weet hoeveel pret hierdie stukkie is, ek het dit tot dusver twee keer gedoen: P Ons moet nou 'n bietjie soek en vervang in die tekslêer: soek na "Gedekodeer" vervang deur "" soek na ": 0x" vervang met "," soek na "(" vervang met "," soek na "stukkies)" vervang met "" So vir 'n reël soos: Gedecodeerde NEC: 0x000110 (15 bis) moet ons nou 'n reël hê wat sê: NEC, 000110, 15

Stap 6: Skep die webblad vir u afstandbeheer

Ons moet nou die knoppies op u beeld van u afstandbeheer in kaart bring.

Ek het https://www.maschek.hu/imagemap/imgmap gebruik om die knoppies in kaart te bring en die kode wat deur die webwerf gegee word, te verander sodat dit kan werk.

Klik op "Gebruik 'n prent op u rekenaar: [kies lêer]", kies u prent, klik [oplaai], klik [aanvaar] Laat reghoeke, sirkels, ens op elke knoppie val. Vir HREF sit /remote.php?command= en die reël vir die knoppie uit die teksdokument, byvoorbeeld /remote.php?command=NEC, 000110, 15 Dit sal verstandig wees (en baie help met ontfouting) as u ook invul Alt: met die knoppie se naam, maar dit is aan jou.

Herhaal vir elke knoppie.

Alles klaar? Dan gaan ons voort. Onderaan die bladsy is 'Kode', klik daarop en 'n venster sal oopmaak met die kode vir die beeldkaart. Kopieer dit en plak dit in 'n nuwe teksdokument. Dit is die belangrikste deel van ons webwerf.

Hier is my volledige webblad, vervang net die …

met u eie kode hierbo en stoor dit as remote.php in u webgids (/var/www op linux) saam met u afstandbeheerbeelde. Verander die reëls vir u eie beelde:

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

Arduino LED -beheer

Stap 7: Laai die afstandbeheerkode op na u Arduino

Laai die afstandbeheerkode op na u Arduino
Laai die afstandbeheerkode op na u Arduino

Skep 'n nuwe skets en plak die volgende kode daarin:/ * * WebRemote * 'n IR -LED moet aan Arduino PWM -pen 3 gekoppel word. * Weergawe 0.1 Julie, 2009 * Hierdie kode kopiereg 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); terugkeer obj; } boolean ended = false; char inData [64]; // Grootte soos gepaste byte -indeks = 0; #define EOP "\ n" IRsend irsend; ongeldige opstelling () {Serial.begin (9600); Seriële << "Seriële poort geïnisialiseer" << EOP; } leemte lus () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; lang sHex; int i, j; terwyl (1) {while (Serial.available ()> 0) {inChar = Serial.read (); as (indeks == 0) {pch = ""; } as (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {ended = true; indeks = 0; breek; } anders {if (indeks <64) // Array grootte {pch += inChar; indeks ++; }}} if (geëindig) {// Ontleed die data in inData hier … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); ek ++; // slaan oor ',' of '' // ek wys nou op die begin van hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j wys nou na ',' of '' na hex sHex = 0; sTemp = pch.substring (i, j); as (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); vir (i = 0; i <sTemp.length (); i ++) {k = sTemp ; as (! ((k> = '0' && k = 'A' && k <= 'F'))) breek; sHex *= 16; as (k> = '0' && k <= '9') sHex += (k - '0'); anders as (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); as (! ((k> = '0' && k = 'A' && k <= 'F'))) breek; } sTemp = pch.substring (j+1); sBits = 0; vir (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; as (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Code type:" << sType << "Hex:"; Serial.print (sHex, HEX); Seriële << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; geëindig = 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); } anders as (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } anders as (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } anders if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } anders if (sType.equals (String (""))) {Serial << "Delaying" << EOP; vertraging (450); } vertraging (30); }}

Stap 8: Koppel vanaf u rekenaar aan die webbediener

Koppel vanaf u rekenaar aan die webbediener
Koppel vanaf u rekenaar aan die webbediener

.. of telefoon of android of ipad of wat ook al: gaan na https:// webserver IP -adres/remote.php in u blaaier Vir my is die adres https://192.168.0.9/remote.php, maar u s'n sal ongetwyfeld anders wees. As alles werk, moet u 'n foto van u afstandbeheer sien met knoppies waarop u kan klik.

Stap 9: opsionele stap: wysig u gasheerlêer om dit makliker te maak om te gebruik

Opsionele stap: wysig u gasheerlêer om dit makliker te maak om te gebruik
Opsionele stap: wysig u gasheerlêer om dit makliker te maak om te gebruik

'N Stap wat ek gedoen het, was om my hosts -lêer (/etc/hosts op linux, C: / Windows / System32 / Drivers / etc / hosts op windows) te wysig. Let daarop dat hierdie lêer slegs in 'n administratiewe opdragprompt (windows) of deur su (linux) gewysig kan word. Voeg die reël ip.add.re.ss remote ip.add.re.ss by die bediener se IP -adres en stoor die lêer. U moet dit doen op elke toestel wat u met die kort naam op die webblad wil besoek. Nou kan u toegang tot die afstandsbediening kry met https://remote/remote.php Dit is my eerste behoorlike instruksie, wees saggies en laat my weet as daar probleme is, sodat ek dit kan regmaak.

Aanbeveel: