Taula de continguts:
- Pas 1: materials
- Pas 2: planificació
- Pas 3: impressió 3D
- Pas 4: Muntatge: traieu els LED
- Pas 5: Muntatge: afegiu capçaleres de forats passants
- Pas 6: Muntatge: connecteu els LED
- Pas 7: Muntatge: connecteu el PhidgetIR
- Pas 8: Muntatge: afegir botons
- Pas 9: Muntatge: unir-ho tot
- Pas 10: Programari: codi
- Pas 11: Programari: ordres CIR
- Pas 12: Execució del programa
- Pas 13: Resultat
Vídeo: Tecnologia per al teu avi: 13 passos (amb imatges)
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-10 13:46
Quantes vegades heu anat a casa dels vostres avis per ajudar-vos amb un "problema tecnològic" que acabava sent un cable d'alimentació desconnectat, una bateria remota morta o que no podia canviar la font del televisor? Sé que per a mi això passa bastant sovint. Tot i que la majoria dels seus problemes es poden resoldre simplement executant-se a la botiga per obtenir alguns AA nous, de vegades podrien beneficiar-se d’una solució més personalitzada.
Per exemple, l’avi de la meva xicota va aconseguir un televisor nou i vam intentar ensenyar-lo a canviar la font perquè pogués canviar entre DVD i TV, però no ho va saber. També té problemes amb la vista fallida i no li interessa massa intentar recordar processos complicats, només vol veure els seus programes quan vulgui. Després d’intentar explicar amb calma els passos de la nostra última visita sense gaire èxit, vaig decidir que només li convertiria en el seu senzill comandament a distància de dos botons. Això li permetria canviar la font d’entrada del televisor sense cap dolor, canviant entre els seus estimats DVD Matlock i Price is Right amb facilitat.
Pas 1: materials
- PhidgetIR
- PhidgetSBC4 (o qualsevol ordinador de placa com el Raspberry Pi)
- Soldador
- Talladors laterals
- Decapants de filferro
- Filferros de pont
- Cable USB
- Cable Phidget
- Recinte
- Capçaleres del forat
- Tubs retràctils
Pas 2: planificació
Per tal de crear el comandament a distància, necessitava la possibilitat d’enviar comandes d’infrarojos del consumidor (CIR) al televisor. Vaig decidir utilitzar el PhigetIR per a aquesta tasca. El PhidgetIR és un dispositiu controlat per USB que pot enviar i rebre comandes CIR. He escollit això per uns quants motius:
- Volia acabar aquest projecte el més aviat possible i fer-lo servir, de manera que la idea de trencar el meu oscil·loscopi i tauleta no era atractiva. A més, com és de probable que els meus circuits soldats a mà continuessin funcionant d'aquí a un any o dos?
- El PhidgetIR té la capacitat d '"aprendre" ordres CIR fent que el desenvolupament sigui extremadament senzill.
- Podeu utilitzar gairebé qualsevol llenguatge de programació convencional amb el PhidgetIR. Això significava que podia utilitzar Java i acabar les coses ràpidament.
- Finalment, treballo per a Phidgets, de manera que em sento còmode amb l’API i sempre hi ha dispositius de recanvi.
Com que vaig optar per utilitzar el PhidgetIR, necessitava un ordinador per executar-lo. Volia que aquest projecte fos una aplicació autònoma, com un comandament a distància normal, de manera que no hi havia un ordinador de sobretaula o un ordinador portàtil. Vaig optar per utilitzar un PhidgetSBC4 (un ordinador de placa única que executava Debian Linux), perquè em permetia connectar-me amb els dos botons de pressió sense cap maquinari addicional. Es poden connectar directament al centre VINT integrat. Nota: també podeu utilitzar un Raspberry Pi per a aquest projecte. Finalment, a més de tenir un so funcional, volia que aquest projecte tingués un aspecte fantàstic, de manera que vaig decidir que seria necessari un recinte imprès en 3D.
Pas 3: impressió 3D
Per a aquest projecte, Geomagic es va utilitzar per modelar el recinte. Hi ha fitxers de pas en 3D disponibles tant per al PhidgetIR com per al PhidgetSBC4, cosa que ha simplificat el procés. Durant aquest pas es van prendre algunes decisions sobre la mida i la funcionalitat del recinte:
- El PhidgetIR té dos LEDs IR que han d’estar orientats cap al televisor per enviar ordres. En lloc de dissenyar el recinte al voltant de la placa PhidgetIR, els LED IR es podrien dessoldar i enganxar als forats del costat del recinte. La placa PhidgetIR es podria muntar allunyada dels LED, utilitzant l'espai buit.
- Els connectors del concentrador VINT del PhidgetSBC4 es podrien inclinar cap amunt, cosa que encara permetria l’accés a les connexions de polsador i també evitaria haver de crear un recinte més gran.
També vaig decidir afegir una etiqueta per als botons i una etiqueta que indiqués la direcció que hauria d’afrontar de manera que els LEDs IR estiguessin apuntats en la direcció correcta. Vaig imprimir el gabinet localment de plàstic ABS negre.
Pas 4: Muntatge: traieu els LED
Els LEDs IR s’acabaran enganxant als forats del lateral del recinte. Això significa que primer cal dessoldar-los.
Pas 5: Muntatge: afegiu capçaleres de forats passants
A continuació, es van afegir capçaleres de forats passants allà on hi havia els LED, cosa que els va facilitar la connexió mitjançant un cable de pont de 4 pins. Utilitzeu tubs termoretràctils per evitar contactes accidentals.
Pas 6: Muntatge: connecteu els LED
Enganxeu els LED al lateral del recinte.
Pas 7: Muntatge: connecteu el PhidgetIR
Connecteu el PhidgetIR al recinte i connecteu els LED.
Pas 8: Muntatge: afegir botons
Els botons polsadors han d’estar connectats al concentrador VINT integrat al PhidgetSBC, de manera que vaig tallar un cable Phidget per la meitat i vaig soldar els extrems als botons. Tingueu en compte que només es requereix el cable blanc (senyal) i el negre (terra).
Pas 9: Muntatge: unir-ho tot
Es requeria una certa gestió de cables per aconseguir que tot s’unís, però el recinte funcionava bé.
Pas 10: Programari: codi
Només cal un fitxer Java únic per a aquest projecte que podeu trobar aquí. El programa utilitza un objecte PhidgetIR i dos objectes DigitalInput. Podeu crear aquests objectes així:
PhidgetIR ir = nou PhidgetIR ();
DigitalInput tvButton = new DigitalInput (); DigitalInput otherButton = new DigitalInput ();
Els objectes d’entrada digital s’assignen a un botó físic del concentrador VINT. Els esdeveniments de connexió, separació, error i canvi d'estat també estan subscrits a:
tv.setIsHubPortDevice (cert);
tvButton.setHubPort (4); tvButton.addAttachListener (onAttachListener); tvButton.addDetachListener (onDetachListener); tvButton.addErrorListener (onErrorListener); tvButton.addStateChangeListener (onStateChangeListener); tvButton.open (); otherButton.setIsHubPortDevice (true); otherButton.setHubPort (5); otherButton.addAttachListener (onAttachListener); otherButton.addDetachListener (onDetachListener); otherButton.addErrorListener (onErrorListener); otherButton.addStateChangeListener (onStateChangeListener); otherButton.open ();
L'oient de canvis d'estat referit més amunt té aquest aspecte:
privatestatic DigitalInputStateChangeListener onStateChangeListener = new DigitalInputStateChangeListener () {@ OverridepublicvoidonStateChange (DigitalInputStateChangeEvent disce) {
DigitalInput ch = (DigitalInput) disce.getSource (); prova {if (ch.getHubPort () == 4 && disce.getState () == true) {tvButtonActivated = true;} if (ch.getHubPort () == 5 && disce.getState () == true) {otherButtonActivated = true;}} catch (PhidgetException ex) {System.out.println ("Error:" + ex.getDescription ());}}};
Quan s’activa un botó, el codi d’esdeveniment s’executarà i establirà un indicador. Aquests indicadors es faran referència i es restabliran al bucle principal. El bucle principal simplement espera un canvi en l'estat del botó i, a continuació, envia ordres IR mitjançant la funció de transmissió disponible a l'API PhidgetIR.
while (true) {if (tvButtonActivated) {
tvButtonActivated = fals; Log.log (LogLevel. INFO, "FONT CANVIANT - TV"); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (rightButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} if (otherButtonActivated) {otherButtonActivated = false; Log.log (LogLevel. INFO, "FONT CANVIANT - DVD"); ir.transmit (sourceButtonString, codeInfo); Thread.sleep (500); ir.transmit (leftButtonString, codeInfo); Thread.sleep (500); ir.transmit (enterButtonString, codeInfo);} Thread.sleep (250);}
Pas 11: Programari: ordres CIR
Aquí teniu un exemple de com crear una ordre (en aquest cas, una ordre d’augmentar el volum):
// Codi IR
IRCodeInfo sourceButtonCI = new IRCodeInfo (); String volumeUp = "77e1d0f0"; // Configura el botó font sourceButtonCI.bitCount = 32; sourceButtonCI.encoding = IRCodeEncoding. SPACE; sourceButtonCI.gap = 108921; sourceButtonCI.trail = 549; sourceButtonCI.zero = newint [2]; sourceButtonCI.zero [0] = 549; sourceButtonCI.zero [1] = 627; sourceButtonCI.one = newint [2]; sourceButtonCI.one [0] = 549; sourceButtonCI.one [1] = 1755; sourceButtonCI.header = newint [2]; sourceButtonCI.header [0] = 9084; sourceButtonCI.header [1] = 4600; sourceButtonCI.repeat = newint [3]; sourceButtonCI.repeat [0] = 9084; sourceButtonCI.repeat [1] = 2308; sourceButtonCI.repeat [2] = 549; sourceButtonCI.length = IRCodeLength. CONSTANT;
Per obtenir la informació d’aquesta ordre, simplement he utilitzat l’exemple de PhidgetIR que inclou les biblioteques de Phidget. Després d’assenyalar el comandament a distància cap al PhidgetIR i mantenir premut el botó d’augmentar el volum, l’IR “aprèn” el codi i omple l’exemple. Aquesta informació es pot copiar simplement al codi.
Pas 12: Execució del programa
El fitxer Java es pot escriure i compilar en un ordinador extern. Col·loqueu PhidgetRemote.java i phidget22.jar a la mateixa carpeta i executeu l'ordre següent:
Windowsjavac -classpath.; Phidget22.jar PhidgetRemote.java
macOS / Linuxjavac -classpath.: phidget22.jar PhidgetRemote.java
Després de compilar, copieu els fitxers de classe generats al PhidgetSBC4 i configureu-los perquè s'executi a l'arrencada.
Pas 13: Resultat
Quan vaig donar el comandament a l’avi de la meva xicota i li vaig mostrar com l’utilitzava, es va meravellar del simple que era. Mireu el vídeo per veure'l en acció.
Tercer premi del concurs de control remot 2017