Un remplacement télécommande climatiseur (3 / 4 étapes)

Étape 3: Programmation - côté PC

Côté sur le PC (que ce soit un Pi ou n’importe quel autre PC linux), voici un programme pour envoyer des commandes à l’arduino. Il repose sur le « encode.c » donné précédemment pour construire une commande IR.

Le programme va générer la charge utile de commande selon les options de ligne de commande (voir utilisation) et envoyer la commande à l’appareil connecté au port USB.
Le port peut être spécifié avec l’option -u, sinon il va essayer/dev/ttyUSB0, / dev/ttyUSB0, / dev/ttyACM0, /dev/ttyACM1, comme l’arduinos peut être mappée en tant que (au moins) ces fichiers, selon le type de l’arduino et les déconnexions/reconnexions.

Comme indiqué dans l’introduction de que l’Arduino doit avoir sa fonction autoreset désactivée, sinon il se réinitialise chaque fois qu’une connexion soit établie. Il s’agit de la façon dont l’IDE permet de programmer la puce, mais il n’est pas souhaitable dans notre cas. Si vous souhaitez tester le code avec un arduino autoreset activé, vous devez ajouter une commande de sleep(2) après la connexion (après l’ouverture du fichier ATS) à laisser l’arduino réinitialiser et être en mesure d’obtenir les messages.

Comme prévu, le code envoie un « I » caractère à l’Arduino, puis envoie la charge utile et lire le fichier pour attendre la réponse de l’Arduino. Cette étape n’est pas essentielle pour un envoi de commande simple, mais il sera si le but est d’extraire les informations de l’Arduino lui-même ou un autre dispositif commandé par radio. Car maintenant l’Arduino répond juste « OK » si le programme se contente d’afficher la réponse comme c’est.

Quant à la partie de l’Arduino, il y a une partie du code où le message est converti en représentation ASCII du message binaire.

message [0] = « I » ;
en tournant la charge utile binaire en caractères ASCII (représentation hexadécimal)
pour (i = 1, j = 0; j’ai < 39 ; j’ai += 2, j ++) {}
message [i] = (charge utile [j] & 0xF0) >> 4 ;
Si {(message [i] </10)
message [i] = « 0 » ; ASCII
} else {}
message [i] += « A » - 10 ;
}
message [i + 1] = charge utile [j] & 0x0F ;
Si (message [i + 1] < 10) {}
message [i + 1] = « 0 » ; ASCII
} else {}
message [i + 1] += « A » - 10 ;
}
printf ("0 x %c %c", message [i], message[i+1]) ;
}

Opérateurs de bits une fois de plus sont utilisés pour sélectionner et déplacer les premiers ou le derniers 4 bits et le convertir en un chiffre ou un caractère (A à F) :
message [i] = (charge utile [j] & 0xF0) >> 4 ;
Ici, nous prenons le byte et appliquez un masque 11110000 donc nous obtenons seulement les bits de gauche avant tout, et nous déplacer ces bits vers la droite
message [i + 1] = charge utile [j] & 0x0F ;
Ici même, mais les morceaux sélectionnés sont déjà à la droite de l’octet donc aucun changement n’est nécessaire.

Si {(message [i] </10)
message [i] = « 0 » ; ASCII
} else {}
message [i] += « A » - 10 ;
}

Ici, si le chiffre est < 10 la valeur ASCII est comprise entre 48 et 57 (décimal), et nous avons juste devez ajouter la valeur représentée à la valeur de caractère « 1 » (qui est 48 mais « 1 » est utilisable sans connaître la table ASCII par coeur;)). De même pour les caractères A à F, mais A(Hex) est 10(Decimal), donc si nous avons ajouté la valeur représentée à la valeur ASCII de « A » nous serions 10 valeurs à haut. Si l'on additionne la valeur -10 et la fin avec le caractère approprié.

Maintenant, vous vous demandez peut-être pourquoi nous dérange conversion hexadécimal en ASCII et ASCII pour Hex de l’autre côté. Vous ne serait pas juste de;)
En effet, dans ce cas, il est inutile, et la première version du code ont travaillé directement avec les valeurs binaires. En fait, il a travaillé en envoyant uniquement les 5 octets qui sont réellement utiles et l’Arduino fait la mise à jour du modèle de charge utile. Alors maintenant, nous enverrons 40 octets au lieu de 5. Pour quelle raison ?
Eh bien, même si c’est hors de ce particulier instructable j’ai indiqué que j’avais un deuxième micro contrôleur dans ma chambre pour la deuxième unité de climatisation. Cette puce est une abeille de Wifi Seeediuno. J’ai trouvé ça difficile à mettre en œuvre le comportement correct qu’à l’aide de la puce prises donc j’ai fini par utiliser le serveur web intégré de minimaliste, donc j’ai envoyer la pleine commande IR dans l’URL en caractères Hex.
Maintenant, vous avez la raison : je voulais utiliser le même code pour contrôler les deux unités, l’envoi de données sur USB ou via WiFi mais en manipulant le même message, dans le même format.

Articles Liés

(Concept) 275 $1440p projecteur (ou 225 $ pour 1080p)

(Concept) 275 $1440p projecteur (ou 225 $ pour 1080p)

Veuillez noter que ceci est tout écrit comme si j'avais déjà créé ce projecteur. Je n'ai pas le cas. Il s'agit d'un modèle de projecteur que j'ai l'intention d'apporter à la vie quand j'ai rassembler les ressources pour le faire. Pièces acheté en lig
Apache SSL serveur de WebDav

Apache SSL serveur de WebDav

tandis que DropBox et autre solotuoin de stockage en ligne sont bonnes, je trouve que je suis toujours à court d'espace et ne pas vouloir choisir quels fichiers j'ai dégivré pour construire une DropBox comme Cloud storage server.La solution qui se so
CO2 de vidange nettoyeur Hack

CO2 de vidange nettoyeur Hack

tout à l'heure, nous avons eu un drain en cours d'exécution lent qui semble être permanente.  Je suis tombé sur un produit appelé « Kleer des cerveaux » qui utilise des cartouches de CO2 pour faire sauter à travers des sabots.  J'ai pensé qu'il valai
Ressusciter une vieille brouette

Ressusciter une vieille brouette

Une vieille brouette a été mis dehors pour la poubelle... la peinture avait pour la plupart en flocons et le pneu a été complètement à plat, mais c'était charpentée, alors j'ai traîné pour une seconde chance à vie.J'ai corrigé celui-ci chez TechShop.
Audio stéréo avec Arduino

Audio stéréo avec Arduino

Récemment j'ai été annonce beaucoup de projets qui utilisent un 8 bits échelle de résistanceconvertisseur numérique analogique (DAC) et un Arduino à faire sonner. (voir la boîte d'effets vocaux Arduino, l'échantillonneur de tambour Arduino et mon tut
L’exécution conditionnelle dans lot

L’exécution conditionnelle dans lot

l'exécution conditionnelle signifie qu'une commande peut seulement être émise sous une certaine condition. Vous apprendrez également dans ce instructable comment faire un fichier batch de ligne unique et comment organiser et classer un fichier de com
Comment contrôler dynamiquement un servo ou le moteur par l’intermédiaire de votre ordinateur

Comment contrôler dynamiquement un servo ou le moteur par l’intermédiaire de votre ordinateur

je travaille sur la création du robot que je détaillerai dans ce instructable. Pour construire ce la nécessité se présente pour être en mesure de contrôler de manière dynamique un servo ou un moteur de l'ordinateur.Ceci est mon entrée pour le défi de
Saab 9-5 & remplacement de pile de la télécommande clé 9-3

Saab 9-5 & remplacement de pile de la télécommande clé 9-3

Vous avez reçu le message :« Télécommande batterie faible, remplacer la batterie »dans votre SID ? Ce tutoriel vous explique comment remplacer la batterie de votre Saab 9-5 (1998-2010) et Saab 9-3 (2000-2002) clé à distance.Pour ce faire, vous aurez
Remplacement de télécommandes infrarouge avec un iPhone

Remplacement de télécommandes infrarouge avec un iPhone

Dans tout le monde vie, tout le monde rencontre beaucoup de différentes télécommandes IR, mais il parfois obtenir frustrant de pointer la télécommande dans la bonne direction, ou le DVR ne joue pas quand vous le souhaitez. Je suis venu avec l'idée de
Comment faire pour remplacer un mécanisme de commande puissance porte serrure sur un camion de 1999-2010 Ford Ranger

Comment faire pour remplacer un mécanisme de commande puissance porte serrure sur un camion de 1999-2010 Ford Ranger

1 a Auto vous montre comment réparer, de difficulté, de modifier ou de remplacer un actionneur de verrouillage de porte cassé ou cassé la puissance sur 1999-2010 Ford Ranger modèles de camions. Le véhicule réel montré est un 2004 Ford Ranger. Tout d'
Protocole de contrôle de climatiseur télécommande ingénierie inverse

Protocole de contrôle de climatiseur télécommande ingénierie inverse

Salut, ceci est mon premier espoir instructable, vous l'aimez.Pour entrer dans l'électronique, j'ai choisi un projet domotique : un système me permettant de programme et contrôle les deux unités de climatisation dans mon appartement. Dans ce instruct
Comment faire pour remplacer le moteur de commande d’Air de ralenti (IAC) dans une Mustang de Ford 1999

Comment faire pour remplacer le moteur de commande d’Air de ralenti (IAC) dans une Mustang de Ford 1999

vous rencontrez des problèmes avec t/mn votre véhicule, fluctuant de haute et basse ? Survient-elle plus souvent pendant l'exécution de votre a/c et/ou autres éléments haute tension auxiliaires ? Votre moteur même parfois s'arrêtera ? Il peut-être en
Construire un circuit transistor pour contrôle télécommande de climatiseur avec Arduino

Construire un circuit transistor pour contrôle télécommande de climatiseur avec Arduino

je soutenais un groupe d'étudiants sur leur projet de remise des diplômes. Une des difficultés qu'ils rencontrent est sur le contrôle d'une unité de climatisation avec microcontrôleur Arduino.La première expérience, que nous avons essayé de s'en sort
Comment faire pour remplacer une carte de commande électronique du four

Comment faire pour remplacer une carte de commande électronique du four

si votre horloge ne répondre pas à l'entrée, ou de ne pas régler la température, vous aurez probablement à remplacer votre tableau de commande électronique du four. Vous pouvez suivre les étapes décrites dans cette vidéo pour vous aider à faire cette