Table des matières:

Télécommande basée sur le navigateur Arduino (linux): 9 étapes (avec images)
Télécommande basée sur le navigateur Arduino (linux): 9 étapes (avec images)

Vidéo: Télécommande basée sur le navigateur Arduino (linux): 9 étapes (avec images)

Vidéo: Télécommande basée sur le navigateur Arduino (linux): 9 étapes (avec images)
Vidéo: 30 Ultimate Windows 10 Tips and Tricks for 2020 2024, Novembre
Anonim
Télécommande basée sur le navigateur Arduino (linux)
Télécommande basée sur le navigateur Arduino (linux)
Télécommande basée sur le navigateur Arduino (linux)
Télécommande basée sur le navigateur Arduino (linux)

Nous avons des enfants. Je les adore mais ils cachent toujours la télécommande du satellite et de la télévision lorsqu'ils mettent les chaînes pour enfants. Après que cela se soit produit quotidiennement pendant plusieurs années, et après que ma femme chérie m'ait permis d'avoir un Arduino pour Noël, j'ai décidé qu'il était temps de faire quelque chose d'utile (à ses yeux !) avec l'Arduino. Nous avons donc ici le point culminant de cela: une interface Web vers l'Arduino qui remplace mes télécommandes et est accessible depuis mon réseau interne. Lorsque je comprendrai pourquoi mon bouclier Ethernet ne permet pas à mon arduino de conserver un croquis, j'écrirai un nouveau croquis qui utilise le bouclier Ethernet comme serveur Web, ce qui signifie que je n'ai pas besoin d'installer Apache sur mon ordinateur. Restez connectés, j'y arriverai !

Étape 1: Prérequis

Conditions préalables
Conditions préalables

Matériel: Côté Arduino: Arduino - J'utilise une planche à pain Arduino Uno R2 - votre magasin d'électronique local, ou la cuisine si vous voulez une planche à pain authentique Boîtier de montage - J'ai utilisé un vieux boîtier en plastique avec un couvercle transparent Composants: LED infrarouge - J'ai dessoudé un d'une télécommande cassée (merci les enfants!) Récepteur infrarouge - J'ai obtenu le mien à partir d'un répéteur à distance Magic Eye Transistor - J'ai utilisé une résistance BC547 - J'ai utilisé une résistance variable de 1,5 k ohm réglée sur 1 k ohm Fils de cavalier de planche à pain - J'ai le mien à partir d'un enrouleur de câble RJ45 à âme pleine Côté ordinateur: ordinateur à utiliser comme serveur câble USB vers le logiciel Arduino: logiciel Arduino - à partir de la bibliothèque irremote arduino.cc - à partir de https://www.arcfn.com/2009/08/multi-protocol- infrarouge-remote-library.html (merci Ken, excellent travail !) Serveur web Apache avec PHP installé - apache.org Adresse IP interne - la mienne est 192.168.0.9 Image de votre télécommande - google ou une photo prise avec votre appareil photo. J'ai enregistré le mien en résolution 200x600

Étape 2: Construire le tableau

Construire le Conseil
Construire le Conseil

L'utilisation d'une maquette pour un arduino est fortement recommandée. J'ai monté mon Arduino et une planche à pain dans le même boîtier et j'ai câblé toutes les broches que j'utilise régulièrement directement à la planche à pain en permanence. Broches Arduino utilisées pour ce projet: 5v, masse Broches numériques 3, 11 (la broche 3 contrôle la LED IR, la broche 11 se connecte au récepteur IR)

Étape 3: Schéma

Schématique
Schématique

Ce schéma est très simple, 4 composants et 6 fils. Connexions LED IR: connectez l'une des pattes de la résistance à la broche numérique Arduino 3 Connectez l'autre patte de la résistance à la broche de base du transistor (la patte du milieu dans mon cas) Connectez l'émetteur du transistor à la terre Connectez le collecteur du transistor à la branche négative de la LED (jambe courte, côté plat de la LED) Connectez la branche positive (jambe longue, côté incurvé) de la LED aux connexions du récepteur IR à broche 5v (vous auriez besoin de trouver le brochage pour votre récepteur IR particulier): broche GND à la broche VS à la terre à la broche 5v VO à la broche numérique Arduino 11

Étape 4: Ajouter la bibliothèque Irremote au logiciel Arduino

Ajouter la bibliothèque Irremote au logiciel Arduino
Ajouter la bibliothèque Irremote au logiciel Arduino

irremote est une excellente bibliothèque écrite par Ken Shirriff et est disponible sur son blog à https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Téléchargez la bibliothèque à partir de https://arcfn.com/files/IRremote.zip et installez-le comme vous le feriez pour n'importe quelle autre bibliothèque pour l'arduino. Son blog contient de nombreuses informations utiles sur la bibliothèque et sur la façon de l'installer.

Étape 5: Enregistrez les codes de vos télécommandes

Voici le début de la partie ennuyeuse (mais inévitable): appuyer sur chaque bouton de la télécommande, enregistrer la chaîne de sortie et la mapper sur la télécommande virtuelle. Vous n'avez besoin de le faire qu'une seule fois, comptez environ 20 minutes. Démarrez un éditeur de texte pour enregistrer votre sortie. Créez un nouveau document et tapez chaque bouton de votre télécommande, un par ligne: Power Up Down Left Right.. et cetera Démarrez l'IDE Arduino et cliquez sur "Files->Examples->IRremote->IRrecvDump" et téléchargez-le sur votre Arduino. Cet exemple videra les codes à distance sur le port série. Démarrez le moniteur du port série et appuyez sur une touche de votre télécommande. Vous verrez une chaîne apparaître dans la fenêtre du moniteur série: "Decoded *: * (* bits)". Copiez cette ligne et enregistrez-la dans votre document sur la ligne appropriée. Répétez jusqu'à ce que toutes vos clés soient stockées dans le fichier texte. Je sais à quel point ce morceau est amusant, je l'ai fait deux fois jusqu'à présent:P Nous devons maintenant faire une petite recherche et un remplacement dans le fichier texte: rechercher "Decoded" remplacer par "" rechercher ": 0x" remplacer par ", " rechercher " (" remplacer par ", " rechercher " bits) " remplacer par " " Donc pour une ligne telle que: Decoded NEC: 0x000110 (15 bits) nous devrions maintenant avoir une ligne qui dit: NEC, 000110, 15

Étape 6: créez la page Web pour votre télécommande

Nous devons maintenant mapper les boutons sur votre image de votre télécommande.

J'ai utilisé https://www.maschek.hu/imagemap/imgmap pour mapper les boutons et modifié le code que ce site Web vous donne pour le faire fonctionner.

Cliquez sur "Utiliser une image sur votre ordinateur: [choisir un fichier]", sélectionnez votre image, cliquez sur [télécharger], cliquez sur [accepter] Déposez des rectangles, des cercles, etc. sur chaque bouton. Pour HREF, mettez /remote.php?command= et la ligne pour ce bouton du document texte par exemple /remote.php?command=NEC, 000110, 15 Il serait sage (et aiderait énormément au débogage) si vous remplissiez également Alt: avec le nom du bouton mais c'est à vous de décider.

Répétez l'opération pour chaque bouton.

Terminé? Ensuite, nous continuerons. Au bas de cette page se trouve "Code", cliquez dessus et une boîte s'ouvrira montrant le code de l'imagemap. Copiez-le et collez-le dans un nouveau document texte. Ceci est la partie principale de notre page Web.

Voici ma page web complète, il suffit de remplacer le …

avec votre propre code ci-dessus et enregistrez-le sous le nom remote.php dans votre répertoire Web (/var/www sous linux) avec vos images de télécommande. Modifiez les lignes de vos propres images:

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

Contrôle LED Arduino

Étape 7: téléchargez le code de la télécommande sur votre Arduino

Téléchargez le code de la télécommande sur votre Arduino
Téléchargez le code de la télécommande sur votre Arduino

Créez un nouveau croquis et collez-y le code suivant: /* * WebRemote * Une LED IR doit être connectée à la broche 3 de l'Arduino PWM. * Version 0.1 juillet 2009 * Ce code est protégé par les droits d'auteur 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); retour obj; } booléen terminé = faux; char inData[64]; // Taille selon l'indice d'octet approprié = 0; #define EOP "\n" IRsend irsend; void setup() { Serial.begin(9600); Série << "Port série initialisé" << EOP; } boucle vide() { Chaîne pch, sType, sTemp; char inChar, sTest, k; int sBits; long sHex; int i, j; while(1) { while(Serial.available() > 0) { inChar = Serial.read(); if(index == 0) { pch = ""; } if(inChar == '\r' || inChar == '\n' || inChar == '/') // EOP { terminé = vrai; indice = 0; Pause; } else { if(index < 64) // Taille du tableau { pch += inChar; index++; } } } if(ended) { // Analyse les données dans inData ici… pch.toUpperCase(); i = pch.indexOf(' ') != -1 ? pch.indexOf(' '): pch.indexOf(', '); sType = pch.substring(0, i); je++; // ignore ', ' ou ' ' // je pointe maintenant vers le début de l'hexadécimal j = pch.lastIndexOf(' ') != -1 ? pch.lastIndexOf(' '): pch.lastIndexOf(', '); // j pointe maintenant vers ', ' ou ' ' après hex sHex = 0; sTemp = pch.substring(i, j); if(sTemp.substring(0, 2) == String("0X")) sTemp = sTemp.substring(2); for(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'); sinon si (k >= 'A' && k <= 'F') sHex += ((k - 'A') + 10); if(!((k >= '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring(j+1); sBits = 0; for(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 << "Type de code: "<< sType << " Hex: "; Serial.print(sHex, HEX); Série << " Bits: " << sBits; } sendIt(sType, sHex, sBits); pch = ""; terminé = 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 << "Retarder" << EOP; retard (450); } délai(30); } }

Étape 8: Connectez-vous au serveur Web à partir de votre ordinateur

Connectez-vous au serveur Web depuis votre ordinateur
Connectez-vous au serveur Web depuis votre ordinateur

.. ou téléphone ou android ou ipad ou autre: allez sur https://webserver IP address/remote.php dans votre navigateur Pour moi l'adresse est https://192.168.0.9/remote.php mais la votre sera sans doute différente. Si tout fonctionne, vous devriez voir une image de votre télécommande avec des boutons sur lesquels vous pouvez cliquer.

Étape 9: Étape facultative: modifiez votre fichier d'hôtes pour le rendre plus facile à utiliser

Étape facultative: modifiez votre fichier d'hôtes pour le rendre plus facile à utiliser
Étape facultative: modifiez votre fichier d'hôtes pour le rendre plus facile à utiliser

Une étape que j'ai faite a été de modifier mon fichier hosts (/etc/hosts sous Linux, C:\Windows\System32\Drivers\etc\hosts sous Windows). Notez que ce fichier ne peut être édité que dans une invite de commande administrative (windows) ou par su (linux) Ajoutez la ligne ip.add.re.ss remote remplacez ip.add.re.ss par l'adresse IP du serveur et enregistrez le fichier. Vous devrez le faire sur chaque appareil pour lequel vous souhaitez accéder à la page Web avec le nom abrégé. Maintenant, vous pouvez accéder à la télécommande avec https://remote/remote.php C'est mon premier bon instructable, soyez doux et faites-moi savoir s'il y a des problèmes afin que je puisse les résoudre.

Conseillé: