Cuprins:
- Pasul 1: premise
- Pasul 2: Construirea consiliului
- Pasul 3: Schematic
- Pasul 4: Adăugați Biblioteca Irremote la software-ul Arduino
- Pasul 5: Înregistrați codurile de pe telecomandă
- Pasul 6: Creați pagina Web pentru telecomanda dvs
- Pasul 7: Încărcați codul telecomenzii pe Arduino
- Pasul 8: Conectați-vă la serverul web de pe computer
- Pasul 9: Pasul opțional: Editați fișierul gazdelor pentru a fi mai ușor de utilizat
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
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
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
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
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
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
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
.. 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
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.