Taula de continguts:

Control remot basat en el navegador Arduino (Linux): 9 passos (amb imatges)
Control remot basat en el navegador Arduino (Linux): 9 passos (amb imatges)

Vídeo: Control remot basat en el navegador Arduino (Linux): 9 passos (amb imatges)

Vídeo: Control remot basat en el navegador Arduino (Linux): 9 passos (amb imatges)
Vídeo: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! 2024, De novembre
Anonim
Control remot basat en el navegador Arduino (Linux)
Control remot basat en el navegador Arduino (Linux)
Control remot basat en el navegador Arduino (Linux)
Control remot basat en el navegador Arduino (Linux)

Tenim fills. M’agraden a trossos, però segueixen ocultant el comandament a distància del satèl·lit i la televisió quan posen els canals infantils. Després d’això diàriament durant diversos anys, i després que la meva estimada dona em permetés tenir un Arduino per Nadal, vaig decidir que era hora de fer alguna cosa útil (als seus ulls!) Amb l’Arduino. Així doncs, aquí tenim la culminació d’això: una interfície basada en web a l’Arduino que substitueix els comandaments a distància i és accessible des de la meva xarxa interna. Quan comprengui per què el meu blindatge Ethernet no permetrà que el meu arduino mantingui un esbós, escriuré un nou esbós que utilitzi el blindatge Ethernet com a servidor web, és a dir, que no necessito instal·lar apache al meu ordinador. Estigueu atents, hi arribaré!

Pas 1: requisits previs

Requisits previs
Requisits previs

Maquinari: costat Arduino: Arduino - Estic fent servir una placa de pa Arduino Uno R2 - la vostra botiga d’electrònica local o la cuina si voleu una autèntica caixa de muntatge. un d'un comandament a distància trencat (gràcies als nens!) Receptor d'infrarojos: he rebut el meu d'un extensor remot d'ulls màgics Transistor - He utilitzat una resistència BC547 - He utilitzat una resistència variable d'1,5 k ohm fixada a 1 k ohm de cables del pont de la taula de pa - Tinc la meva des d’una bobina de cable RJ45 de nucli sòlid Part de l’ordinador: l’ordinador que s’utilitzarà com a servidor USB porta a Arduino Software: programari Arduino - de la biblioteca irremote arduino.cc - de https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (gràcies Ken, molt bé!) Servidor web Apache amb PHP instal·lat - apache.org Adreça IP interna: la meva és 192.168.0.9 Imatge del vostre control remot: google o una foto presa a la càmera. Vaig guardar la meva a una resolució de 200x600

Pas 2: construir el consell

Construint la Junta
Construint la Junta

És molt recomanable utilitzar un tauler de control per a un arduino. Vaig muntar el meu Arduino i una placa de configuració al mateix recinte i vaig connectar permanentment tots els pins que faig servir regularment a la taula de programació. Pins Arduino utilitzats per a aquest projecte: 5v, terra Pins digitals 3, 11 (el pin 3 controla el LED IR, el pin 11 es connecta al receptor IR)

Pas 3: Esquema

Esquema
Esquema

Aquest esquema és molt senzill, té 4 components i 6 cables. Connexions LED IR: connecteu una de les potes de la resistència al pin digital Arduino. del transistor a la pota negativa del LED (pota curta, costat pla del LED) Connecteu la pota positiva (pota llarga, costat corbat) del LED a les connexions del receptor IR de 5 v pins (haureu de trobar el pinout per a el vostre receptor IR particular): pin GND a terra VS pin a 5 V VO pin a Arduino digital pin 11

Pas 4: afegiu la biblioteca Irremote al programari Arduino

Afegiu la biblioteca Irremote al programari Arduino
Afegiu la biblioteca Irremote al programari Arduino

irremote és una gran biblioteca escrita per Ken Shirriff i està disponible al seu bloc a https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Descarregueu la biblioteca des de https:// arcfn.com / files / IRremote.zip i instal·leu-lo com ho faríeu amb qualsevol altra biblioteca de l’arduino. El seu bloc conté molta informació útil sobre la biblioteca i sobre com instal·lar-la.

Pas 5: registreu els codis dels comandaments a distància

Aquí teniu l’inici de la part avorrida (però inevitable): prement tots els botons del comandament a distància, desant la cadena de sortida i assignant-la al control remot virtual. Només heu de fer-ho una vegada; espereu uns 20 minuts aproximadament. Inicieu un editor de text per desar la vostra sortida. Creeu un document nou i escriviu tots els botons del control remot, un per línia: Apagueu l'esquerra a la dreta.. etcètera Inicieu l'IDE Arduino i feu clic a "Fitxers-> Exemples-> IRremote-> IRrecvDump" i pengeu-lo a el vostre Arduino. Aquest exemple bolcarà els codis remots al port sèrie. Inicieu el monitor del port sèrie i premeu una tecla del control remot. Veureu una cadena a la finestra del monitor sèrie: "Decoded *: * (* bits)". Copieu aquesta línia i deseu-la al document a la línia adequada. Repetiu-ho fins que tingueu totes les claus emmagatzemades al fitxer de text. Sé el divertit que és aquest bit, fins ara ho he fet dues vegades: P Ara hem de fer una mica de cerca i substitució al fitxer de text: cercar "Descodificat" substituir per "" buscar ": 0x" substituir per "," cerca "(" substituir per "," buscar "bits)" substituir per "" Així que per a una línia com: NEC descodificada: 0x000110 (15 bits) ara hauríem de tenir una línia que digui: NEC, 000110, 15

Pas 6: creeu la pàgina web per al vostre control remot

Ara hem de mapar els botons de la imatge del comandament a distància.

He utilitzat https://www.maschek.hu/imagemap/imgmap per mapar els botons i he modificat el codi que us proporciona el lloc web perquè funcioni.

Feu clic a "Utilitza una imatge a l'ordinador: [trieu un fitxer]", seleccioneu la vostra imatge, feu clic a [puja], feu clic a [accepta] Deixa anar rectangles, cercles, etc. a cada botó. Per a HREF, poseu /remote.php?command= i la línia del botó del document de text, per exemple /remote.php?command=NEC, 000110, 15 Seria aconsellable (i ajudaria enormement a depurar) si també empleneu Alt: amb el nom del botó, però depèn de vosaltres.

Repetiu per a cada botó.

Tot fet? Després continuarem. A la part inferior d'aquesta pàgina hi ha "Codi", feu-hi clic i s'obrirà un quadre amb el codi del mapa d'imatges. Copieu-lo i enganxeu-lo en un document de text nou. Aquesta és la part principal de la nostra pàgina web.

Aquí teniu la meva pàgina web completa, només heu de substituir la …

amb el vostre propi codi anterior i deseu-lo com a remote.php al directori web (/ var / www a linux) juntament amb les imatges del vostre control remot. Canvieu les línies de les vostres imatges:

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

Control LED Arduino

Pas 7: pengeu el codi de control remot al vostre Arduino

Pengeu el codi de control remot al vostre Arduino
Pengeu el codi de control remot al vostre Arduino

Creeu un nou esbós i enganxeu-hi el codi següent: / * * WebRemote * Cal connectar un LED IR al pin 3. Arduino PWM. * Versió 0.1 de juliol de 2009 * Aquest codi és copyright 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); tornar obj; } final booleà = fals; char inData [64]; // Mida segons índex de bytes adequat = 0; #define EOP "\ n" IRsend irsend; configuració nul·la () {Serial.begin (9600); Sèrie << "Port sèrie inicialitzat" << EOP; } void loop () {cadena pch, sType, sTemp; char inChar, sTest, k; int sBits; sHex llarg; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (índex == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {end = true; índex = 0; trencar; } else {if (índex <64) // Mida de la matriu {pch + = inChar; índex ++; }}} if (finalitzat) {// Analitzeu aquí les dades d’inData … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // passa per alt ',' o '// Ara apunto a l'inici de l'hex hexagonal j = pch.lastIndexOf (' ')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j ara apunta a ',' o '' després de l'hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); per a (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! ((k> = '0' && k = 'A' && k <= 'F')))) trencar; sHex * = 16; if (k> = '0' && k <= '9') sHex + = (k - '0'); else if (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F')))) trencar; } sTemp = pch.substring (j + 1); sBits = 0; per a (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits * = 10; if (k> = '0' && k <= '9') sBits + = (k - '0'); } if (sType.length ()> 0) {Sèrie << pch << EOP << "Tipus de codi:" << sType << "Hex:"; Serial.print (sHex, HEX); << sèrie: "bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; finalitzat = 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 (""))) {Sèrie << "Retard" << EOP; retard (450); } retard (30); }}

Pas 8: connecteu-vos al servidor web des de l'ordinador

Connecteu-vos al servidor web des de l’ordinador
Connecteu-vos al servidor web des de l’ordinador

.. o telèfon, Android o iPad o qualsevol altra cosa: aneu a https:// adreça IP del servidor web / remote.php al vostre navegador Per a mi, l'adreça és https://192.168.0.9/remote.php, però sens dubte la vostra serà diferent. Si tot funciona, hauríeu de veure una imatge del comandament a distància amb botons als quals podeu fer clic.

Pas 9: Pas opcional: editeu el fitxer d'amfitrions per facilitar-ne l'ús

Pas opcional: editeu el fitxer d'amfitrions per fer-lo més fàcil d'utilitzar
Pas opcional: editeu el fitxer d'amfitrions per fer-lo més fàcil d'utilitzar

Un pas que vaig fer va ser editar el fitxer hosts (/ etc / hosts a Linux, C: / Windows / System32 / Drivers / etc / hosts a Windows). Tingueu en compte que aquest fitxer només es pot editar en un símbol del sistema administratiu (windows) o mitjançant su (linux).. Hauríeu de fer-ho en tots els dispositius que desitgeu accedir a la pàgina web amb el nom curt. Ara podeu accedir al comandament a distància amb https://remote/remote.php Aquesta és la meva primera instrucció adequada, sigueu gentil i feu-me saber si hi ha problemes per poder solucionar-los.

Recomanat: