Table des matières:

Récepteur USB IR ATtiny85 : 11 étapes (avec photos)
Récepteur USB IR ATtiny85 : 11 étapes (avec photos)

Vidéo: Récepteur USB IR ATtiny85 : 11 étapes (avec photos)

Vidéo: Récepteur USB IR ATtiny85 : 11 étapes (avec photos)
Vidéo: EB_#563 Découverte - Plateforme de développement DigiSpark ATtiny85 2024, Juillet
Anonim
Récepteur USB IR ATtiny85
Récepteur USB IR ATtiny85

ATTENTION, CETTE INSTRUCTION EST DEVENUE OBSOLETE

La bibliothèque v-usb est conçue pour fonctionner avec le protocole USB 1.1 qui existe à peine de nos jours. Avec l'arrivée de l'USB3, vous aurez plus qu'un mal de tête à essayer de faire fonctionner les périphériques v-usb. Après avoir changé mon centre multimédia, j'ai de nombreux problèmes de stabilité et même si le récepteur fonctionne, au bout d'un moment il cesse de fonctionner. Je n'ai pas réussi à essayer de le réparer. J'ai également fait une version atmega328p mais celle-ci avait les mêmes problèmes. L'utilisation d'une minuterie de surveillance pour réinitialiser la carte périodiquement n'a pas aidé non plus, j'ai donc abandonné le v-usb.

Faites-vous plaisir et n'allez pas de l'avant avec cette instructable, sauf si c'est à des fins éducatives. Je recommande plutôt d'acheter un module à puce ATmega 32U4 qui a déjà intégré l'interface usb et de suivre ce guide:

www.sparkfun.com/tutorials/337

Ajoutez ensuite un capteur infrarouge TSOP31238 et vous êtes prêt à partir.

Salut les fabricants ! il s'agit d'une instructable pour construire un récepteur IR USB fonctionnel à l'aide d'un microcontrôleur Attiny85. En suivant ces instructions, vous pouvez créer un récepteur infrarouge USB programmable qui fonctionne avec n'importe quelle télécommande infrarouge pour quelques dollars.

Tout d'abord, cette instructable n'existerait pas sans le travail acharné des personnes qui ont créé les bibliothèques que j'utilise ici:

  • David A. Mellis pour son noyau attiny
  • Rowdy Dog Software pour leur bibliothèque TinyTuner
  • Rowdy Dog Software pour leur petit chargeur de démarrage
  • Rancidbacon (https://rancidbacon.com/) pour son port arduino de la bibliothèque v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee pour sa bibliothèque IR pour les noyaux minuscules trouvée sur les commentaires du code instructable https://www.instructables.com/id/Attiny-IR-librar… sur https://www.instructables.com/id/Attiny-IR -bibliothécaire…

Parfois, il n'est pas facile de trouver le bon propriétaire d'une bibliothèque, donc au cas où je ferais une erreur, veuillez laisser un commentaire et je résoudrais le problème dès que possible.

Ce guide existe parce que je n'ai pas trouvé de tutoriel/guide complet prêt à l'emploi (il existe peut-être, mais je ne l'ai pas trouvé), j'ai donc rassemblé toutes les informations disponibles sur le Web et après une bonne quantité d'essais et erreurs J'ai proposé un guide complet pour créer un récepteur IR USB fonctionnel qui fonctionne plutôt bien.

Les principales sources d'informations que j'ai suivies:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

Étape 1: Quelques considérations

  • Je ne possède pas de programmeur AVR ISP et je n'ai pas vraiment envie d'en acheter un, j'ai donc utilisé un Arduino pour programmer l'attiny85
  • Je ne me soucie pas d'un autre système d'exploitation que GNU/Linux, donc je ne sais pas si cela fonctionnera autrement.
  • il existe d'autres bibliothèques IR mais je ne pouvais pas les faire fonctionner même avec un arduino. Considérez cependant que j'ai commencé avec une connaissance limitée des bibliothèques IR. Peut-être que je pourrais les faire fonctionner maintenant après l'expérience acquise en traitant pas mal de problèmes. Quoi qu'il en soit, j'étais perdu et désespéré avant de trouver la bibliothèque fournie par Seejaydee et je l'utilise depuis (merci beaucoup mec!).
  • Il existe d'autres configurations matérielles, mais je n'ai utilisé que celle qui utilise 5V pour alimenter l'attiny85 et deux diodes Zener 3,6V 0,5W pour serrer la tension des lignes de données, cela fonctionne immédiatement, donc je n'ai pas gâché avec autres configurations.
  • Vous pouvez utiliser un cristal 16Mhz ou vous pouvez utiliser la bibliothèque tinytuner pour calibrer l'horloge interne de votre attiny85. Je conseille fortement l'utilisation du cristal, il est beaucoup plus stable et vous évitera probablement bien des maux de tête.
  • J'utilise ici deux chargeurs de démarrage différents pour l'attiny85:

a) Version Rowdy Dog Software, il a intégré une interface série très sympa et très petite donc vous avez plus d'espace pour votre programme et d'autres bibliothèques. Le problème est que pour certaines raisons, même si cela fonctionne plutôt bien, après un certain temps, le périphérique USB s'est déconnecté (vous pouvez trouver les problèmes avec la commande dmesg). Je ne sais pas s'il s'agit d'un problème du noyau ou d'une combinaison mixte du noyau et des bibliothèques choisies donc après un certain temps j'ai décidé d'utiliser ce noyau juste pour décoder les touches de la télécommande et calibrer l'horloge (quand je n'utilise pas un 16Mhz cristal). Après cela, je viens de graver le chargeur de démarrage Mellis et de télécharger le croquis définitif qui n'utilise pas l'interface série.

b) Version Mellis, bootloader stable, je l'ai utilisé dans de nombreux projets. J'aurais toujours utilisé ce chargeur de démarrage s'il avait inclus une interface série. J'utilise ce noyau dans le croquis final après avoir décodé toutes les touches de mes télécommandes.

Étape 2: Commençons par le matériel

Commençons par le matériel
Commençons par le matériel
Commençons par le matériel
Commençons par le matériel
Commençons par le matériel
Commençons par le matériel

Outils dont vous avez besoin:

  • une carte compatible arduino
  • un adaptateur série vers usb pour décoder vos télécommandes (il suffit d'utiliser un FT232RL)
  • un PC avec GNU/Linux installé et l'arduino IDE correctement configuré, j'utilise arduino IDE 1.8.0
  • une télécommande IR pour tester votre appareil (même une merde comme celles trouvées dans les kits de démarrage arduino fonctionnera)
  • un multimètre pour déboguer votre carte (j'espère que vous n'en aurez pas besoin, bonne chance !)

La liste des matériaux:

  • 1 attirance85
  • 2 résistances 68R
  • 1 résistance 1.5K
  • 1 résistance 4.7K
  • 1 cristal 16Mhz
  • 1 condensateur 22pF
  • 1 condensateur 0.1uF
  • 1 condensateur 10uF
  • 2 diodes Zener 3,6V 0,5W
  • 1 connecteur USB type A mâle
  • 1 broche de bande avec 6 broches pour programmer et déboguer la carte.
  • 1 capteur infrarouge TSOP31238
  • beaucoup de café pour vous tenir éveillé

Avant de souder la carte définitive, vous voudriez probablement faire un prototype de maquette à des fins de test, suivre le schéma joint à cette instructable devrait suffire à la construire.

Pour connecter l'attiny85 au PC, la conception finale utilise un connecteur USB de type A qui est soudé dans la carte, mais pour le prototype, vous devrez créer un câble USB que vous pourrez connecter à une maquette:

Soudez dans un petit morceau de panneau perforé 4 broches, puis coupez un ancien câble USB et soudez les broches à 4 des fils à l'intérieur du câble USB:

  • le rouge est VCC (5V)
  • le noir est GND
  • le blanc est D-
  • le vert est D+

Gardez le tout ensemble avec de la colle chaude.

Nous devons maintenant connecter le programmeur ISP (Arduino), l'adaptateur USB vers série (FT232RL) et le capteur IR à l'attiny85.

Vous pouvez laisser connecté tous ensemble afin que vous puissiez graver différents chargeurs de démarrage, charger des croquis et vérifier le port série sans changer de fils, Pour ce faire, connectez le tout en suivant ces instructions:

Programmeur ISP (Arduino): cela nous permet de graver des chargeurs de démarrage et de charger des croquis

  • attiny85 PB0 (pin5) à pin11 (MOSI) dans arduino
  • attiny85 PB1 (pin6) à pin12 (MISO) dans arduino
  • attiny85 PB2 (pin7) à pin13 (SCK) dans arduino
  • attiny85 RESET (pin1) avec pullup (4.6k à VCC) à pin10 dans arduino
  • attiny85 VCC à 5V dans arduino
  • attiny85 GND à GND dans arduino

adaptateur usb vers série (FT232RL): cela nous permet de vérifier le port série

  • attiny85 PB0 (pin5 RX) à TX dans le FT232RL
  • attiny85 PB2 (pin7 TX) à RX dans le FT232RL
  • attiny85 GND (pin4) à GND sur le FT232RL
  • puisque l'attiny85 est déjà alimenté par l'arduino vous n'avez pas besoin de connecter le 5v sur le FT232RL, sinon connectez: attiny85 VCC (pin8) à 5V sur le FT232RL

adaptateur USB vers série (FT232RL) uniquement pour l'étalonnage de l'horloge (uniquement pour le chargeur de démarrage "ATtiny85 @ 8MHz (oscillateur interne; BOD désactivé)")

  • PB4 (pin3 RX) à TX dans le FT232RL attiny85
  • PB3 (pin2 TX) à RX dans le FT232RL attiny85
  • GND (broche 4) à GND sur le FT232RL
  • puisque l'attiny85 est déjà alimenté par l'arduino vous n'avez pas besoin de connecter le 5v sur le FT232RL, sinon connectez: attiny85 VCC (pin8) à 5V sur le FT232RL

Si vous utilisez un cristal 16Mhz, connectez-le aux broches Attiny85 PB3 (broche2) et PB4 (broche3) et connectez chaque broche à GND également via un capuchon 22pF chacune.

Filtre Attiny85 VCC avec des condensateurs 0.1uF et 10uF les connectant en parallèle à GND

Connectez la broche de sortie du capteur IR à l'attiny85 PB1 (broche 6), allumez-le.

Construisez et connectez l'interface USB:

  • GND (fil noir): connectez-le au GND commun (toutes les masses sont connectées ensemble)
  • D- (fil blanc) connecté à attiny85 PB0 (broche5) via une résistance 68R, connectez-le également à la terre via un zener 3,6V 0,5W et tirez-le jusqu'à VCC avec une résistance 1,5K
  • D+ (fil vert) connecté à PB2 via une résistance 68R, connectez-le à la terre via un zener 3,6V 0,5W
  • 5V, vous pouvez le laisser déconnecté puisque tout est alimenté par l'Arduino à ce stade, sinon connectez-le au attiny85 VCC

Les diodes Zener sont connectées de manière à ce que les anodes soient liées à GND et les cathodes soient connectées aux lignes de données D+ et D-.

Étape 3: Conception finale

Conception finale
Conception finale
Conception finale
Conception finale
Conception finale
Conception finale

Pour la conception finale, vous pouvez utiliser une carte perforée avec des composants à trous traversants ou graver votre propre carte et utiliser des composants smd. Pour apprendre à graver une planche, il suffit de la rechercher sur Google, il existe de superbes tutoriels disponibles en ligne.

J'ai gravé ma propre planche et je suis très content du résultat final (petite planche stable et robuste). il suffit de couper la planche avec mes ciseaux à cisaille.

D'ailleurs, les traces sur les images ne sont pas du cuivre nu, elles ont été traitées avec un produit chimique désagréable qui étame légèrement le cuivre (il est suspecté d'induire le cancer, alors utilisez-le avec beaucoup de précautions, des globes en latex et un masque anti-poussière):

Utilisez les schémas ci-dessus pour concevoir votre mise en page ou vous pouvez simplement utiliser mon empreinte PCB pour graver votre carte.

Étape 4: Traiter avec le logiciel

Le circuit de ce projet est très simple, le logiciel demande plutôt un effort plus important.

Nous avons besoin d'au moins 2 bibliothèques (une de plus si vous n'utilisez pas de cristal) et de 2 chargeurs de démarrage pour que cela fonctionne. Lorsque j'ai commencé ce projet, j'ai testé certaines bibliothèques, parfois elles ne fonctionnaient pas et plusieurs fois elles n'étaient tout simplement pas configurées pour fonctionner avec un Attiny85 prêt à l'emploi (je ne le savais pas encore). Ensuite, j'ai trouvé des problèmes avec les interruptions de chevauchement des bibliothèques / chargeurs de démarrage. Enfin, j'ai dû faire face à pas mal d'erreurs lorsque j'ai connecté le circuit final à mon PC. Je n'avais pas ce guide cependant, donc je pense que vous iriez bien, suivez simplement les étapes de cette instructable, si vous le faites sans faire d'erreurs, ça devrait aller:)

Nous devons maintenant installer et configurer quelques bibliothèques:

  • bibliothèque v-usb pour arduino: cette bibliothèque permet au microcontrôleur d'être reconnu par le PC en tant que clavier USB HID, et nous l'utiliserons pour envoyer des frappes de touches au PC. Cette bibliothèque a besoin de quelques modifications pour être compatible avec l'attiny85
  • bibliothèque tinytuner uniquement si vous n'utilisez pas de cristal 16Mhz. Il vous faudra alors calibrer l'horloge interne du microcontrôleur. Cette bibliothèque fonctionne hors de la boîte.
  • Attiny-IR-library pour interagir avec le capteur IR. Cette bibliothèque fonctionne hors de la boîte.

Nous avons également besoin de 2 bootloaders:

  • Version Dog Software, avec l'interface série disponible. Ce chargeur de démarrage a besoin d'un petit ajustement pour fonctionner avec l'attiny85 car il utilise le timer1 pour la fonction millis() et ne fonctionnera pas avec la bibliothèque IR. Nous devons changer le timer en timer0.
  • Version Mellis, bootloader stable que nous utiliserons dans la phase finale. Cela fonctionne hors de la boîte.

Étape 5: Installation et configuration de la bibliothèque V-usb

Téléchargez la bibliothèque à partir de https://code.google.com/archive/p/vusb-for-arduin… Décompressez le fichier et copiez le dossier library/UsbKeyboard dans votre dossier de bibliothèques de sketchbook.

Vous devez maintenant modifier quelques fichiers pour être compatible avec l'ATtiny85 (il est configuré pour fonctionner avec arduino):

A) éditez usbconfig.h:

sous "Configuration matérielle", modifiez:

#define USB_CFG_IOPORTNAME Dto##define USB_CFG_IOPORTNAME B

et

#define USB_CFG_DMINUS_BIT 4to#define USB_CFG_DMINUS_BIT 0

sous « Configuration matérielle facultative », modifiez:

#define USB_CFG_PULLUP_IOPORTNAME Dto##define USB_CFG_PULLUP_IOPORTNAME B

Pour créer une spécification complète "HID compatible avec le démarrage" (sinon aucune clé multimédia ne fonctionnera), modifiez également:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto#define USB_CFG_INTERFACE_SUBCLASS 0x01 // Boot

et

#define USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto#define USB_CFG_INTERFACE_PROTOCOL 0x01 // Clavier

En option, vous pouvez également modifier le nom du fabricant et de l'appareil dans les définitions suivantes:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) éditez UsbKeyboard.h:

monnaie:

PORTD = 0; // A FAIRE: Uniquement pour les broches USB ?DDRD |= ~USBMASK;

à

PORTB = 0; // A FAIRE: Uniquement pour les broches USB ?DDRB |= ~USBMASK;

Pour autoriser les codes clés au-delà de 101, modifiez également:

0x25, 0x65, // LOGICAL_MAXIMUM (101)à:0x25, 0xE7, // LOGICAL_MAXIMUM (231)

et

0x29, 0x65, // USAGE_MAXIMUM (Application clavier) à: 0x29, 0xE7, // USAGE_MAXIMUM (Application clavier)

Vous devrez peut-être éditer également ces 3 fichiers:

usbdrv.husbdrv.cUsbKeyboard.h

et chaque fois que vous voyez PROGMEM ajoutez "const" avant le nom du type de variable (ex: PROGMEN char usbHidReportDescriptor[35] ==> PROGMEM const char usbHidReportDescriptor[35])

Si ce n'est pas clair, visitez

Vous pouvez éviter toutes ces modifications si vous téléchargez simplement la bibliothèque ci-jointe (j'ai fait toutes ces modifications moi-même) et extrayez-la simplement dans votre dossier de bibliothèques de carnets de croquis:

UsbKeyboard configuré pour attiny85

Edit: récemment, j'ai découvert qu'Alejandro Leiva (https://github.com/gloob) s'est occupé de cette bibliothèque et semble bien fonctionner également. Vous pouvez également essayer sa version avec les modifications nécessaires que j'ai apportées pour la faire fonctionner avec l'attiny, donc si vous voulez vérifier cela, extrayez-la simplement dans votre dossier de bibliothèques de carnets de croquis.

UsbKeyboard configuré pour attiny85 (version Alejandro Leiva)

Étape 6: Installation des bibliothèques Attiny-IR et Tinytuner

A) Bibliothèque Attiny-IR:

téléchargez-le à partir de https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… puis décompressez-le dans votre dossier de bibliothèques de carnets de croquis.

B) Bibliothèque Tinytuner:

Ceci n'est nécessaire que si vous n'utilisez pas de cristal 16Mhz, mais croyez-moi, même s'il fonctionne également sans cristal, il est beaucoup plus stable et coûte quelques centimes, alors restez simple, utilisez un cristal et sautez cette bibliothèque.

Pas encore convaincu ? ok, téléchargez la bibliothèque à partir de https://storage.googleapis.com/google-code-archive… puis décompressez-la dans votre dossier de bibliothèques de carnets de croquis.

Nous avons terminé avec les bibliothèques, nous passons maintenant à l'installation des chargeurs de démarrage.

Étape 7: Installation et configuration des chargeurs de démarrage

Nous allons installer deux chargeurs de démarrage, celui de Mellis est selon mon expérience plus stable et nous l'utiliserons dans le croquis final. L'autre développé par Rowdy Dog Software est un noyau génial, très petit et avec une interface série intégrée disponible, mais ma télécommande s'est écrasée après un certain temps, nous utiliserons donc ce chargeur de démarrage juste pour calibrer l'horloge interne attiny85 et décoder notre télécommande boutons.

Je sais qu'il existe des bibliothèques disponibles pour donner aux capacités série attiny85, mais vous devrez ensuite modifier les bibliothèques qui utilisent l'objet série… J'aime mieux cette procédure.

Commençons par l'installation:

A) Chargeur de démarrage Mellis:

ouvrez simplement les préférences de l'IDE Arduino et ajoutez les URL du gestionnaire de cartes supplémentaires:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Ensuite, ouvrez le gestionnaire de cartes IDE Arduino et recherchez attiny, installez les cartes à partir de Mellis. Vous devriez maintenant voir l'ID Arduino des cartes ATtiny25/45/85 et ATtiny24/44/84.

B) Petit chargeur de démarrage de Rowdy Dog Software:

téléchargez le bootloader sur

Décompressez le fichier et copiez le petit dossier dans votre carnet de croquis/matériel (créez ce dossier s'il n'existe pas encore). puis déplacez-vous dans le dossier sketchbook/hardware/tiny/avr/ et:

1) copier le fichier Prospective Boards.txt dans le fichier boards.txt

2) éditez le fichier platform.txt et apportez quelques modifications:

Décommentez la variable compiler.path et laissez-la pointer vers le dossier hardware/tools/avr/bin/ dans votre dossier d'installation arduino:

compiler.path={CHEMIN_TO_YOUR_ARDUINO_FOLDER}/hardware/tools/avr/bin/

changer aussicompiler. S.flags=-c -g -assembler-with-cpptocompiler. S.flags=-c -g -x assembler-with-cpp

Modifiez ensuite les variables suivantes en vous assurant que tout est à sa place (ces fichiers doivent exister, sinon pointez les variables sur les bons chemins):

tools.avrdude.cmd.path={runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux={runtime.ide.path}/hardware/tools/avr/bin/avrdude

tools.avrdude.config.path.linux={runtime.ide.path}/hardware/tools/avr/etc/avrdude.conf

3) éditez le fichier cores/tiny/core_build_options.h et changez:

#define TIMER_TO_USE_FOR_MILLIS 1 à#define TIMER_TO_USE_FOR_MILLIS 0

Ceci est très important, sinon le récepteur IR produira des zéros pour chaque bouton. Cette instruction configure le timer0 pour la fonction millis() en laissant le timer1 disponible pour la bibliothèque IR. L'esquisse finale désactivera le timer0 de toute façon, vous n'aurez donc pas de fonctions millis() et delay() disponibles. Vous pouvez avoir la fonction delayMicroseconds() disponible à la place.

Ce chargeur de démarrage est minimal, mais inclut la prise en charge des objets série:

Attiny85 PB2 (pin7) est TX et PB0 (pin5) est RX

Vous pouvez avoir une configuration avec le programmeur ISP (arduino) et l'adaptateur série vers usb connectés en même temps afin que vous n'ayez pas besoin de changer les fils trop souvent:

Maintenant que les bibliothèques et les chargeurs de démarrage sont installés et correctement configurés, le travail le plus dur est terminé et nous pouvons commencer à tester les choses.

Étape 8: Graver des chargeurs de démarrage et télécharger des croquis

Je conseille fortement d'activer la sortie détaillée dans les préférences Arduino IDE afin que vous puissiez résoudre tout problème éventuel.

Pour graver un chargeur de démarrage dans l'Attiny85, vous devez télécharger l'exemple de FAI sur l'Arduino, puis sélectionner le programmeur Arduino en tant que FAI.

Placez maintenant un condensateur de 10 uF entre les broches de réinitialisation et de masse sur l'arduino (ce n'est pas nécessaire pour le processus de gravure, mais c'est pour télécharger des croquis sur l'attiny85).

L'arduino est maintenant prêt à graver des chargeurs de démarrage et à charger des croquis. Il vous suffit de sélectionner la bonne carte compatible avec votre attiny et de la graver.

Pour charger un croquis dans l'Attiny85, chargez-le dans l'IDE arduino et cliquez sur "Télécharger à l'aide du programmeur".

IMPORTANT: lors du téléchargement du croquis, il y a 3 étapes, la compilation, l'écriture et la vérification. Si la compilation et l'écriture ont fonctionné avec succès, mais que le processus de vérification échoue, il est possible que l'esquisse fonctionne de toute façon.

Étape 9: Calibrez l'horloge interne Attiny85 (ignorez ceci si vous utilisez un cristal)

Si vous décidez de ne pas utiliser le cristal 16Mhz, vous devez calibrer votre horloge attiny85, nous aurons donc besoin d'un chargeur de démarrage avec une interface série disponible et nous utiliserons la bibliothèque tinytuner pour obtenir le bon calibrage.

Suivez les étapes suivantes

  • sélectionnez sous outils l'Arduino en tant que programmeur ISP
  • sélectionnez la carte "ATtiny85 @ 8MHz (oscillateur interne; DBO désactivé)"
  • Je suppose que vous avez la connexion ISP prête comme décrit avant de vous connecter, sinon faites les connexions
  • graver le chargeur de démarrage
  • ce chargeur de démarrage a configuré différentes broches pour l'interface série, utilisez cette configuration uniquement pour le chargeur de démarrage actuel

- PB4 (pin3 RX) à TX dans le FT232RL attiny85 - PB3 (pin2 TX) à RX dans le FT232RL attiny85 - GND (pin4) à GND sur le FT232RL puisque l'attiny85 est déjà alimenté par l'arduino vous n'avez pas besoin de vous connecter le 5v sur le FT232RL, sinon connectez: attiny85 VCC (pin8) au 5V sur le FT232RL

  • télécharger l'exemple de tinytuner sur attiny85
  • ouvrez le programme screen pour surveiller la communication série: screen /dev/ttyUSB0 9600
  • réinitialiser l'attiny85 en connectant la broche RESET (pin1) à GND (juste un instant), un message de bienvenue devrait s'afficher sur la fenêtre de l'écran
  • Continuez à envoyer des caractères « x » uniques (pas de retour chariot; pas de saut de ligne) jusqu'à la fin de l'étalonnage
  • annoter quelque part la valeur de l'étalonnage (OSCCAL = 0x). C'est la valeur que vous devrez déclarer sur les croquis finaux

Étape 10: Décodez vos boutons de télécommande

Il est maintenant temps de décoder nos boutons de télécommande et de les affecter à des frappes de touches spécifiques sur le PC, pour ce faire, suivez les étapes suivantes:

  • sélectionnez la carte "ATtiny85 @ 16MHz (PLL interne; 4.3V DBO)" si vous n'utilisez pas de cristal, "ATtiny85 @ 16 MHz (cristal externe; 4.3 V DBO" sinon, puis gravez-le
  • chargez le croquis:
  • Si vous n'utilisez pas de cristal, décommentez la ligne qui contient la variable OSCCAL et attribuez-lui la valeur que vous avez trouvée lors de l'étalonnage de l'horloge
  • Je suppose que le capteur est connecté comme décrit précédemment, sinon connectez-le
  • Je suppose également que l'adaptateur série vers usb FT232RL est connecté, sinon connectez-le
  • réinitialiser l'attiny85 en connectant la broche RESET (broche 1) à GND (juste un instant)
  • appuyez plusieurs fois sur les boutons de votre télécommande et vérifiez la fenêtre de l'écran, vous devez annoter le dernier numéro pour chaque enregistrement, chaque bouton peut produire 2 numéros différents

Exemple:

REÇU D44 3396REÇU 544 1348

Annotez 3396 et 1348 en association avec le bouton que vous venez d'appuyer, puis vous devez décider ce que vous voulez faire avec ce bouton. Par exemple, je pourrais vouloir que ce bouton envoie le code clé multimédia "Augmenter le volume", alors je dois trouver l'ID de ce code clé. Pour cela, téléchargez le PDF:

Recherchez la section « Page du clavier/clavier » page 53 et utilisez les chiffres de la colonne ID d'utilisation (Déc) pour lier les boutons de votre télécommande aux codes du clavier. Dans notre exemple, nous pouvons voir que le code clé pour "Volume up" est: 128.

Modifiez le fichier UsbKeyboard.h dans la bibliothèque UsbKeyboard à partir du package v-usb que nous avons installé auparavant et ajoutez-le aux définitions existantes s'il n'y est pas déjà:

#define KEY_VOL_UP 128

Lorsque nous avons terminé avec tous nos boutons de télécommande et que toutes les définitions du fichier UsbKeyboard.h sont prêtes, nous pouvons passer à la dernière étape.

Étape 11: Chargement du croquis final et espoir pour le meilleur

Chargement du croquis final et espoir pour le meilleur !
Chargement du croquis final et espoir pour le meilleur !
Chargement du croquis final et espoir pour le meilleur !
Chargement du croquis final et espoir pour le meilleur !

Nous avons maintenant tous les boutons de la télécommande décodés, le fichier UsbKeyboard.h est rempli de nos codes clés, nous pouvons donc maintenant charger dans l'IDE Arduino le croquis définitif à partir de:

github.com/venumz/ATtiny85-USB-IR-receiver…

Ce fichier est le fichier exact que j'utilise pour mon récepteur, et il fonctionne pour 2 télécommandes différentes, il est donc clair que vous devrez le mettre à jour pour pouvoir fonctionner avec votre/vos télécommande(s).

Si vous n'utilisez pas de cristal, décommentez la ligne qui contient la variable OSCCAL et attribuez-lui la valeur que vous avez trouvée lors de l'étalonnage de l'horloge

Notez que dans la fonction de boucle, il y a beaucoup d'instructions comme celle-ci:

if(results.value==3405 || results.value==1357) { // flèche vers le haut

if(lastStroke!=results.value) UsbKeyboard.sendKeyStroke(KEY_ARROW_UP);

}

Vous devez créer vos propres relevés, un par bouton de votre télécommande. Dans la condition "if" vous devez mettre dans results.value les valeurs que vous avez trouvées en décodant votre télécommande et comme argument de la méthode UsbKeyboard.sendKeyStroke vous devez mettre un des keycodes déjà définis dans le fichier UsbKeyboard.h.

La condition " if(lastStroke!=results.value) " est nécessaire car certaines télécommandes envoient le même code deux fois par hit, ce qui empêche le deuxième hit. Je ne suis pas totalement sûr et cela peut dépendre du protocole IR qui a été programmé dans votre télécommande (je ne suis pas vraiment un expert en protocoles IR) mais selon mon expérience avec mes propres télécommandes, chaque bouton peut produire 2 codes différents et pendant que vous maintenez le bouton enfoncé, il envoie le même code, mais si vous appuyez à nouveau sur le bouton, il envoie l'autre. Il semble donc que les codes soient envoyés d'une manière alternative, je suppose que c'est un mode standard pour savoir combien de fois vous appuyez vraiment sur le bouton.

Ok, nous avons presque terminé, il suffit de télécharger le croquis final, de le connecter au PC et de voir comment ça se passe.

Pour cette étape, il est préférable de débrancher à la fois l'arduino et l'adaptateur USB vers série, puis de brancher l'USB sur le port de votre PC (en cas de problème, votre circuit sera plus simple à déboguer).

Si tout a bien fonctionné, lorsque vous ouvrez un terminal et envoyez la commande dmesg, vous devriez voir quelque chose de similaire à la première image de cette étape. S'il y avait des problèmes, vous devriez avoir des erreurs comme celles trouvées dans la deuxième image et vous devez commencer à déboguer votre circuit et/ou le logiciel. L'une des sources des erreurs initiales que j'ai eues était un concentrateur USB qui ne fonctionnait pas avec mon récepteur IR (d'autres fonctionnaient cependant)… il est donc préférable pour cette dernière étape de brancher le récepteur IR directement sur le port de votre PC. D'éventuelles erreurs pourraient être difficiles à trouver, mais au final, comme moi, vous en apprendriez beaucoup et le prix à payer en vaut la peine, je vous assure.

C'est tout, faites le moi savoir si vous remarquez des erreurs dans cette instructable et profitez de votre tout nouveau récepteur USB IR !

Conseillé: