Cuprins:

Telecomandă bazată pe browser Arduino (linux): 9 pași (cu imagini)
Telecomandă bazată pe browser Arduino (linux): 9 pași (cu imagini)

Video: Telecomandă bazată pe browser Arduino (linux): 9 pași (cu imagini)

Video: Telecomandă bazată pe browser Arduino (linux): 9 pași (cu imagini)
Video: CS50 2015 - Week 10 2024, Decembrie
Anonim
Control de la distanță bazat pe browser Arduino (linux)
Control de la distanță bazat pe browser Arduino (linux)
Control de la distanță bazat pe browser Arduino (linux)
Control de la distanță bazat pe browser Arduino (linux)

Avem copii. Îi iubesc până la capăt, dar ascund în continuare telecomanda pentru satelit și TV atunci când pun canalele pentru copii. După ce s-a întâmplat zilnic de câțiva ani și după ce draga mea soție mi-a permis să am un Arduino de Crăciun, am decis că este timpul să fac ceva util (în ochii ei!) Cu Arduino. Deci, aici avem punctul culminant: o interfață web către Arduino care îmi înlocuiește telecomenzile și este accesibilă din rețeaua mea internă. Când îmi dau seama de ce scutul meu Ethernet nu va permite arduino-ului meu să păstreze o schiță, voi scrie o schiță nouă care folosește scutul Ethernet ca server web, ceea ce înseamnă că nu am nevoie de apache instalat pe computer. Rămâneți la curent, voi ajunge acolo!

Pasul 1: premise

Condiții prealabile
Condiții prealabile

Hardware: partea Arduino: Arduino - Folosesc o placă de pâine Arduino Uno R2 - magazinul dvs. local de electronice sau bucătăria dacă doriți o placă de panouri autentică Carcasă de montare - Am folosit o cutie veche din plastic cu capac transparent Componente: LED cu infraroșu - Am desoldat unul de la o telecomandă ruptă (mulțumesc copiilor!) Receptor cu infraroșu - am primit al meu de la un ochi magic de la distanță Transistor - am folosit un rezistor BC547 - am folosit un rezistor variabil de 1,5k ohm setat la 1k ohm fire de jumper de panou - am primit al meu dintr-o bobină de cablu RJ45 cu nucleu solid Partea computerului: computerul de utilizat ca server USB conduce la software-ul Arduino: software Arduino - din biblioteca arduino.cc irremote - de la https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (mulțumesc Ken, mare treabă!) Server web Apache cu PHP instalat - apache.org Adresă IP internă - a mea este 192.168.0.9 Imagine a telecomenzii dvs. - google sau o fotografie făcută pe camera dvs. Am salvat-o pe a mea la o rezoluție de 200x600

Pasul 2: Construirea consiliului

Construirea consiliului
Construirea consiliului

Folosirea unei plăci pentru un arduino este foarte recomandată. Mi-am montat Arduino și o placă de măsurare în aceeași incintă și am conectat permanent toți știfturile pe care le folosesc în mod regulat direct la tablă. Pinii Arduino utilizați pentru acest proiect: 5v, împământare Pinii digitali 3, 11 (pinul 3 controlează LED-ul IR, pinul 11 se conectează la receptorul IR)

Pasul 3: Schematic

Schematic
Schematic

Această schemă este foarte simplă, are 4 componente și 6 fire. Conexiuni cu LED-uri IR: Conectați unul dintre picioarele rezistorului la pinul digital Arduino. a tranzistorului la piciorul negativ al LED-ului (piciorul scurt, partea plană a LED-ului) Conectați piciorul pozitiv (piciorul lung, partea curbată) a LED-ului la conexiunile receptorului IR 5v pin (ar trebui să găsiți pinout-ul pentru receptorul IR special): pinul GND la pinul VS la sol la pinul VO de 5v la pinul digital Arduino 11

Pasul 4: Adăugați Biblioteca Irremote la software-ul Arduino

Adăugați Biblioteca Irremote la software-ul Arduino
Adăugați Biblioteca Irremote la software-ul Arduino

irremote este o mare bibliotecă scrisă de Ken Shirriff și este disponibilă de pe blogul său la https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Descărcați biblioteca de pe https:// arcfn.com / files / IRremote.zip și instalați-l așa cum ați face orice altă bibliotecă pentru arduino. Blogul său conține o mulțime de informații utile despre bibliotecă și despre modul de instalare.

Pasul 5: Înregistrați codurile de pe telecomandă

Iată începutul părții plictisitoare (dar inevitabilă): Apăsarea fiecărui buton de pe telecomandă, salvarea șirului de ieșire și maparea acestuia pe telecomanda virtuală. Trebuie să o faceți o singură dată, așteptați să durați aproximativ 20 de minute. Porniți un editor de text pentru a salva rezultatul. Creați un document nou și tastați fiecare buton de pe telecomandă, câte unul pe fiecare linie: Power Up Down Left Right.. et cetera Porniți ID-ul Arduino și faceți clic pe „Fișiere-> Exemple-> IRremote-> IRrecvDump” și încărcați-l în Arduino-ul tău. Acest exemplu va arunca codurile de la distanță pe portul serial. Porniți monitorul portului serial și apăsați o tastă de pe telecomandă. Veți vedea un șir care apare în fereastra monitorului serial: „Decoded *: * (* bits)”. Copiați această linie și salvați-o în documentul dvs. pe linia corespunzătoare. Repetați până când aveți toate cheile stocate în fișierul text. Știu cât de distractiv este acest bit, l-am făcut de două ori până acum: P Acum trebuie să căutăm și să înlocuim puțin în fișierul text: căutați „Decodat” înlocuiți cu „„ căutați „: 0x„ înlocuiți cu "," căutare "(" înlocuiți cu "," căutați "biți)" înlocuiți cu "" Deci, pentru o linie precum: NEC decodificat: 0x000110 (15 biți) ar trebui să avem acum o linie care spune: NEC, 000110, 15

Pasul 6: Creați pagina Web pentru telecomanda dvs

Acum trebuie să mapăm butoanele de pe imaginea dvs. a telecomenzii.

Am folosit https://www.maschek.hu/imagemap/imgmap pentru a mapa butoanele și am modificat codul pe care vi-l oferă site-ul web pentru ca acesta să funcționeze.

Faceți clic pe „Utilizați o imagine pe computer: [alegeți fișierul””, selectați imaginea dvs., faceți clic pe [încărcați], faceți clic pe [acceptați] Plasați dreptunghiuri, cercuri etc. pe fiecare buton. Pentru HREF puneți /remote.php?command= și linia pentru butonul respectiv din documentul text de exemplu /remote.php?command=NEC, 000110, 15 Ar fi înțelept (și ar ajuta foarte mult la depanare) dacă completați și Alt: cu numele butonului, dar asta depinde de dvs.

Repetați pentru fiecare buton.

Totul este gata? Atunci vom continua. În partea de jos a acelei pagini este „Cod”, faceți clic pe acesta și se va deschide o casetă care afișează codul pentru imagemap. Copiați-l și lipiți-l într-un document text nou. Aceasta este partea principală a paginii noastre web.

Iată pagina mea web completă, doar înlocuiește …

cu propriul cod de mai sus și salvați-l ca remote.php în directorul dvs. web (/ var / www pe linux) împreună cu imaginile de control de la distanță. Schimbați liniile pentru propriile imagini:

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

Control LED Arduino

Pasul 7: Încărcați codul telecomenzii pe Arduino

Încărcați codul telecomenzii pe Arduino
Încărcați codul telecomenzii pe Arduino

Creați o schiță nouă și lipiți următorul cod în ea: / * * WebRemote * Un LED IR trebuie să fie conectat la pinul Arduino PWM 3. * Versiunea 0.1 iulie, 2009 * Acest cod este protejat de 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); returnare obiect; } boolean ended = false; char inData [64]; // Mărimea după indicele de octet corespunzător = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Serial << "Port serial inițializat" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; sHex lung; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (index == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {încheiat = adevărat; index = 0; pauză; } else {if (index <64) // Dimensiunea matricei {pch + = inChar; index ++; }}} if (terminat) {// Analizați datele din inData aici … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // sări peste ',' sau '' // indic acum spre începutul hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j arată acum spre ',' sau '' după hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); pentru (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'); altfel if (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F')))) break; } sTemp = pch.substring (j + 1); sBits = 0; pentru (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 << "Tipul codului:" << sType << "Hex:"; Serial.print (sHex, HEX); Serial << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; încheiat = 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; întârziere (450); } întârziere (30); }}

Pasul 8: Conectați-vă la serverul web de pe computer

Conectați-vă la serverul web de pe computer
Conectați-vă la serverul web de pe computer

.. sau telefon sau Android sau iPad sau orice altceva: accesați https:// adresa IP a serverului web / remote.php din browserul dvs. Pentru mine adresa este https://192.168.0.9/remote.php, dar fără îndoială că a dvs. va fi diferită. Dacă totul funcționează, ar trebui să vedeți o imagine a telecomenzii cu butoane pe care puteți face clic.

Pasul 9: Pasul opțional: Editați fișierul gazdelor pentru a fi mai ușor de utilizat

Pas opțional: editați fișierul gazdelor pentru a fi mai ușor de utilizat
Pas opțional: editați fișierul gazdelor pentru a fi mai ușor de utilizat

Un pas pe care l-am făcut a fost să-mi editez fișierul hosts (/ etc / hosts pe Linux, C: / Windows / System32 / Drivers / etc / hosts pe Windows). Rețineți că acest fișier poate fi editat numai într-un prompt de comandă administrativ (Windows) sau de su (linux) Adăugați linia ip.add.re.ss la distanță înlocuiți ip.add.re.ss cu adresa IP a serverului și salvați fișierul. Trebuie să faceți acest lucru pe fiecare dispozitiv pe care doriți să îl accesați pe pagina web cu numele scurt. Acum puteți accesa telecomanda cu https://remote/remote.php Acesta este primul meu instructiv adecvat, fii blând și anunță-mă dacă există probleme, astfel încât să le pot rezolva.

Recomandat: