Sadržaj:

Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)
Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)

Video: Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)

Video: Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)
Video: CS50 2013 - Week 9 2024, Septembar
Anonim
Arduino daljinski upravljač zasnovan na pregledniku (linux)
Arduino daljinski upravljač zasnovan na pregledniku (linux)
Arduino daljinski upravljač zasnovan na pregledniku (linux)
Arduino daljinski upravljač zasnovan na pregledniku (linux)

Imamo djecu. Obožavam ih na komade, ali stalno skrivaju daljinski upravljač za satelit i televiziju kad uključe dječje kanale. Nakon što se to svakodnevno događalo nekoliko godina, i nakon što mi je draga supruga dopustila da popijem Arduino za Božić, odlučio sam da je vrijeme da napravim nešto korisno (u njenim očima!) S Arduinom. Dakle, ovdje imamo vrhunac toga: web sučelje za Arduino koje zamjenjuje moje daljinske upravljače i dostupno je s moje interne mreže. Kada shvatim zašto moj ethernet štit ne dopušta mom arduinu da zadrži skicu, napisat ću novu skicu koja koristi ethernet štit kao web poslužitelj, što znači da mi ne treba apache instaliran na računaru. Pratite nas, stići ću!

Korak 1: Preduvjeti

Preduslovi
Preduslovi

Hardver: Arduino strana: Arduino - koristim Arduino Uno R2 Breadboard - vašu lokalnu trgovinu elektronike ili kuhinju ako želite autentičnu ploču za montažu - koristio sam staru plastičnu kutiju s prozirnim poklopcem Komponente: infracrvena LED - raspakirao sam jedan s pokvarenog daljinskog upravljača (hvala djeco!) Infracrveni prijemnik - ja sam svoj dobio od tranzistora za daljinsko proširenje čarobnog oka - koristio sam otpornik BC547 - koristio sam promjenjivi otpornik od 1,5 k ohma postavljen na 1 k ohma Žice za kratkospojnike - dobio sam svoj sa punog jezgra RJ45 kabelskog valjka Strana računara: Računar koji će se koristiti kao server USB vodi do Arduino softvera: Arduino softver - iz arduino.cc biblioteke za uklanjanje - sa https://www.arcfn.com/2009/08/multi-protocol- infrared -remote -library.html (hvala Ken, odlično obavljeno!) Apache web server sa instaliranim PHP -om - apache.org Interna IP adresa - moja je 192.168.0.9 Slika vašeg daljinskog upravljača - google ili slika snimljena kamerom. Ja sam svoj sačuvao u rezoluciji 200x600

Korak 2: Izgradnja odbora

Izgradnja odbora
Izgradnja odbora

Preporučuje se upotreba matične ploče za arduino. Montirao sam svoj Arduino i ploču u isto kućište i trajno ožičio sve igle koje redovno koristim izravno na ploču. Arduino pinovi korišteni za ovaj projekt: 5v, uzemljeni Digitalni pinovi 3, 11 (pin 3 kontrolira IC LED, pin 11 se povezuje s IC prijemnikom)

Korak 3: Shema

Shematski
Shematski

Ova shema je vrlo jednostavna, 4 komponente i 6 žica. IC LED veze: Spojite jednu nogu otpornika na Arduino digitalni pin 3 Drugu nogu otpornika spojite na osnovni pin tranzistora (srednja noga u mom slučaju) Spojite odašiljač tranzistora na masu Spojite kolektor tranzistora na negativni krak LED -a (kratka noga, ravna strana LED -a) Spojite pozitivnu nogu (dugačka noga, zakrivljena strana) LED -a na 5 -polne priključke IC prijemnika (trebali biste pronaći pinout za vaš IC prijemnik): GND pin na masu VS pin na 5v VO pin na Arduino digitalni pin 11

Korak 4: Dodajte Irremote biblioteku u Arduino softver

Dodajte biblioteku Irremote u softver Arduino
Dodajte biblioteku Irremote u softver Arduino

unremote je sjajna biblioteka koju je napisao Ken Shirriff i dostupna je sa njegovog bloga na https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Preuzmite biblioteku sa https:// arcfn.com/files/IRremote.zip i instalirajte ga kao i bilo koju drugu biblioteku za arduino. Njegov blog ima mnogo korisnih informacija o biblioteci i načinu njene instalacije.

Korak 5: Snimite kodove sa svojih daljinskih upravljača

Evo početka dosadnog (ali neizbježnog) dijela: Pritiskom na svako dugme na daljinskom upravljaču spremate izlazni niz i preslikavate ga na virtualni daljinski upravljač. Morate to učiniti samo jednom, očekujte da će vam trebati oko 20 minuta. Pokrenite uređivač teksta da biste spremili ispis. Kreirajte novi dokument i otkucajte svako dugme na daljinskom upravljaču, po jedno u svakom retku: Uključite se dolje lijevo desno.. itd. Pokrenite Arduino IDE i kliknite na "Datoteke-> Primjeri-> IRremote-> IRrecvDump" i prenesite ga na vaš Arduino. Ovaj primjer će izbaciti udaljene kodove na serijski port. Pokrenite monitor serijskog porta i pritisnite taster na daljinskom upravljaču. U prozoru serijskog monitora ćete vidjeti niz: "Decoded *: * (* bits)". Kopirajte ovu liniju i spremite je u svoj dokument na odgovarajućoj liniji. Ponavljajte sve dok svi ključevi ne budu pohranjeni u tekstualnoj datoteci. Znam koliko je ovo zabavno, do sada sam to učinio dva puta: P Sada moramo malo pretražiti i zamijeniti u tekstualnoj datoteci: potražiti "Decoded" zamijeniti sa "" tražiti ": 0x" zamijeniti sa "," search for "(" replace with "," search for "bits)" replace with "" Dakle, za red kao što je: Decoded NEC: 0x000110 (15 bita) sada bismo trebali imati red koji kaže: NEC, 000110, 15

Korak 6: Kreirajte web stranicu za daljinski upravljač

Sada moramo mapirati gumbe na vašoj slici vašeg daljinskog upravljača.

Koristio sam https://www.maschek.hu/imagemap/imgmap za mapiranje gumba i izmijenio kôd koji vam web stranica daje kako bi funkcionirao.

Kliknite na "Koristi sliku na svom računaru: [odaberi datoteku]", odaberite svoju sliku, kliknite [otpremi], kliknite [prihvati] Na svako dugme ispustite pravokutnike, krugove itd. Za HREF stavite /remote.php?command= i red za to dugme iz tekstualnog dokumenta, na primjer /remote.php?command=NEC, 000110, 15 Bilo bi pametno (i neizmjerno pomoći u otklanjanju grešaka) ako i ispunite Alt: s imenom gumba, ali to ovisi o vama.

Ponovite za svako dugme.

Sve završeno? Zatim ćemo nastaviti. Pri dnu stranice nalazi se "Kôd", kliknite na nju i otvorit će se okvir s kodom za slikovnu kartu. Kopirajte to i zalijepite u novi tekstualni dokument. Ovo je glavni dio naše web stranice.

Evo moje potpune web stranice, samo zamijenite…

s gornjim vlastitim kodom i spremite ga kao remote.php u svoj web direktorij (/var/www na linuxu) zajedno sa slikama na daljinskom upravljaču. Promijenite linije za svoje slike:

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

Arduino LED kontrola

Korak 7: Prenesite kod za daljinsko upravljanje na svoj Arduino

Prenesite kod za daljinsko upravljanje na svoj Arduino
Prenesite kod za daljinsko upravljanje na svoj Arduino

Kreirajte novu skicu i zalijepite sljedeći kôd u nju:/ * * WebRemote * IR LED mora biti spojen na Arduino PWM pin 3. * Verzija 0.1 srpanj 2009 * Ovaj kod zaštićen je Gregory Fenton, https://labby.co. uk/2012/02/unremote-arduino-experimentation/ * IRremote biblioteka autorska prava 2009 Ken Shirriff, https://arcfn.com */#include predložak inline Print & operator << (Print & obj, T arg) {obj.print (arg); return obj; } logičko završeno = false; char inData [64]; // Veličina prema potrebi indeks bajta = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Serijski << "Serijski port inicijaliziran" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; long sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (indeks == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {završeno = tačno; indeks = 0; break; } else {if (indeks <64) // Veličina niza {pch += inChar; index ++; }}} if (završeno) {// Raščlanite podatke u inData ovdje… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // preskočite ',' ili '' // i sada pokazuje početak hex -a j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j sada pokazuje ',' ili '' nakon hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); za (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'); inace if (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring (j+1); sBits = 0; za (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBitovi *= 10; if (k> = '0' && k <= '9') sBitovi += (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Tip koda:" << sType << "Hex:"; Serial.print (sHex, HEX); Serijski << "Bitovi:" << sBitovi; } sendIt (sType, sHex, sBits); pch = ""; završeno = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBitovi); } 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; kašnjenje (450); } kašnjenje (30); }}

Korak 8: Povežite se sa web serverom sa svog računara

Povežite se sa web serverom sa svog računara
Povežite se sa web serverom sa svog računara

.. ili telefon ili android ili ipad ili šta već: idite na https:// webserver IP adresu/remote.php u svom pregledniku. Za mene je adresa https://192.168.0.9/remote.php, ali vaša će nesumnjivo biti drugačija. Ako sve radi, trebali biste vidjeti sliku vašeg daljinskog upravljača s gumbima na koje možete kliknuti.

Korak 9: Opcionalni korak: Uredite datoteku domaćina kako biste je olakšali

Opcijski korak: Uredite datoteku domaćina kako biste je olakšali
Opcijski korak: Uredite datoteku domaćina kako biste je olakšali

Korak koji sam učinio je bio da uredim datoteku domaćina (/etc/hosts na linux -u, C: / Windows / System32 / Drivers / etc / hosts na Windowsima). Imajte na umu da se ova datoteka može uređivati samo u administrativnoj naredbenoj liniji (windows) ili pomoću su (linux) Dodajte redak ip.add.re.ss daljinski zamijenite ip.add.re.ss s IP adresom poslužitelja i spremite datoteku. To biste trebali učiniti na svakom uređaju s kojim želite pristupiti web stranici s kratkim imenom. Sada možete pristupiti daljinskom upravljaču putem https://remote/remote.php Ovo je moje prvo odgovarajuće uputstvo, budite nježni i obavijestite me ako postoje problemi kako bih ih mogao riješiti.

Preporučuje se: