Librairie IR NEC pour ATTINY85

Support pour le kit de communication infra rouge (IR)

Librairie IR NEC pour ATTINY85

Message non lude phil » Mar 8 Jan 2013 14:05

1 Introduction

Le but de cette adaptation est de pouvoir utiliser la librairie IR sur des Attiny85.
La base de cette librairie est le fruit du travail de Ken Shirriff (http://www.arcfn.com/2009/08/multi-prot ... brary.html)
Un portage a été fait par Nick Gammon sur le forum Arduino (http://arduino.cc/forum/index.php?topic ... #msg687101). Il a fait la partie la plus difficile c'est-à-dire adapter la lib de Ken Shirriff en fonction des caractéristiques des ATTINY. En effet, il y a de nombreuses différences entre ATMEGA et ATTINY comme les timers et d’autres trucs encore auxquels je ne comprends pas grand-chose. Quoi qu’il en soit la librairie adapté est disponible ici http://gammon.com.au/Arduino/IRremote_Attiny.zip
Le problème de ce portage c’est que la librairie en l’état est « difficile » à utiliser. En effet, dans l’exemple donnée par Nick Gammon, il est impossible d’utiliser un « digital.write » c’est trop consommateur de mémoire… C’est dire si cela va être difficile de faire quelque chose de simple…

J’ai donc décidé de ne pas me prendre la tête et de faire un grand ménage pour libérer des ressources sur les ATTINY.
2 axes de nettoyages :
1 – Séparation en deux librairies une pour l’émission et l’autre pour la réception
2 – Gestion du protocole NEC uniquement
Voila la marche à suivre pour installer et utiliser la (les) librairie(s) pour Attiny85

2 Matériel utilisé

PC windows 7 SP1
Arduino IDE 1.0.2
Arduino board Duemilanove
Recepteur IR TSOP341 download/file.php?id=126
Image

Led IR BL-L513-IR download/file.php?id=127
Le nécessaire pour programmer les ATTINY (cf http://hlt.media.mit.edu/?p=1695 )


3 Préparation
3-1 Installation des libraires IRTinyTR et IRTinyRX


En premier lieu télécharger la librairie modifié ici

Cette librairie s’installe dans le répertoire « libraries » du sketchbook arduino comme toutes les autres lib.
A la racine du répertoire « libraries » il doit y avoir donc deux répertoires : IRTinyTX et IRTinyRX

Image

Dans la capture d’écran ci-dessus le skectchbook s’appelle « ardval »

3-2 Ajouter les Attiny dans les hardware supporté par l’IDE arduino

Pour ce faire, rien de plus simple il suffit de telecharger le fichier arduino-tiny-0100-0015.zip ici => http://code.google.com/p/arduino-tiny/downloads/list

Ensuite localiser le repertoire hardware de votre sketchbook et dezipper le contenu de l’archive
Image

Image

Ça doit ressembler à ça. (pour que cela fonctionne, il faut redémarrer l’IDE Arduino)

3-3 Uploder le code arduinoAsIsp dans un Arduino (Duemilanove dans mon cas)

Image

Sélection bonne board et bon programmateur

Image

Image

Utiliser l’Arduino avec le sketch Arduino as ISP pour programmer un ATTINYPour la partie hardware, je vous renvoie sur le site du MIT qui décrit très bien cette partie : http://hlt.media.mit.edu/?p=1695
Par contre n’utilisez pas ATtiny zip (from this GitHub repository https://github.com/damellis/attiny/archive/master.zip)

3-4 Modifier le bootolader de l’ATTINY


Une fois le hardware décrit plus haut en place, il suffit de sélectionner la board ATtiny85 @ 8 Mhz (internal oscillator ; BOD disabled) et le programmer Arduino as ISP. Cette manip est nécessaire, la lib ne fonctionnant qu’a une fréquence d’horloge de 8 Mhz

Image

Image

Enfin faire un « Burn Bootloader » (c’est assez rapide en général)

Image

4 - Montage pour les deux sktechs de demo
4 - 1 montage basique : sketch SimpleIRTinyTX.ino et SimpleIRTinyRX.ino


Partie TX

Ce montage est composé donc de

1 ATTINY 85 (@ 8 Mhz)
1 LED IR (BL-L513-IR)
1 bouton poussoir avec sa résistance de pull up
Une pile
Un switch (ON/OFF)

Image

Partie RX


Ce montage est composé donc de

1 ATTINY 85 (@ 8 Mhz)
1 récepteur IR TSOP341
1 led basique avec une resistance
Une pile
Un switch (ON/OFF)

Image

Le fonctionnement des deux montages est simple : Si on appuie sur le outon de la partie TX, la led s’allume sinon elle s’éteint…



4-2 montage avancé : sketch FourLedsIRTinyRX.ino et AnalogIRtinyTX.ino

Partie TX

1 ATTINY 85 (@ 8 Mhz)
1 LED IR (BL-L513-IR)
1 bouton poussoir avec sa résistance de pull up
1 potar 40 kohms (valeur sans importance du moment que c’est supérieur à 10 k…)
Une pile
Un switch (ON/OFF)

Image

Parie RX

1 ATTINY 85 (@ 8 Mhz)
1 récepteur IR TSOP341
4 leds basiques avec résistance
Une pile
Un switch (ON/OFF)

Image

Le fonctionnement de ces montages est le suivant

En fonction de la position du potar, un code IR est émis. Il y a 8 codes : tout éteint, Led 1 on, Led1 + Led2 on, Led2 on, Led2 + led3 on, Led3 on, Led 3 + Led 4 on, Led4 on.
Si on appuis sur le bouton poussoir, un code IR est transmis pour allumer toutes les leds…

Fichiers joints
IRTiny-v1.zip
(35.51 Kio) Téléchargé 277 fois
Dernière édition par phil le Lun 29 Sep 2014 11:21, édité 1 fois.
all your shields are belong to us...
Avatar de l’utilisateur
phil
 
Messages: 192
Inscription: Mer 7 Sep 2011 11:19

Re: Librairie IR NEC pour ATTINY85

Message non lude Stéphane » Mar 8 Jan 2013 19:00

Nice, super boulot phil !

J'édite pour te mettre en annonce.
Avatar de l’utilisateur
Stéphane
 
Messages: 179
Inscription: Lun 2 Mai 2011 09:40

Re: Librairie IR NEC pour ATTINY85

Message non lude lechacal » Sam 29 Aoû 2015 00:17

Excellente librairie. Merci. Exactement ce que je cherchais.

J'ai un soucis de compilation néanmoins avec l'exemple SimpleIRTinyRX.ino

Code: Tout sélectionner
core.a(wiring.c.o): In function `init':
/usr/share/arduino/hardware/arduino/cores/arduino/wiring.c:193: multiple definition of `__vector_5'
IRTinyRX/IRTinyRX.cpp.o:/home/nono/Documents/sketchbook/libraries/IRTinyRX/IRTinyRX.cpp:310: first defined here


Au préalable j'ai du changer <Wprogram.h> en <Arduino.h> dans le fichier IRTinyIntRX.h. Sinon il y avait une erreur.

Quelqu'un aurait une solution?
lechacal
 
Messages: 1
Inscription: Sam 29 Aoû 2015 00:09

Re: Librairie IR NEC pour ATTINY85

Message non lude Laetitia » Jeu 10 Sep 2015 09:58

Bonjour,

Cette erreur de compilation indique une double définition d'un vecteur d'interruption. Les définitions de wiring.c ne doivent pas être modifiées, l'erreur viendrait de la librairie ? Quelque chose me paraît étrange : avant la compilation, avez-vous bien sélectionné "ATtiny85" dans Outils > Type de carte ?

lechacal a écrit:Au préalable j'ai du changer <Wprogram.h> en <Arduino.h> dans le fichier IRTinyIntRX.h. Sinon il y avait une erreur.

C'est une modification nécessaire pour toutes les librairies ayant été développées avant la version 1.0 de l'IDE Arduino. Les librairies compatibles avec toutes les version de l'IDE présentent la directive suivante :

Code: Tout sélectionner
#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Re: Librairie IR NEC pour ATTINY85

Message non lude snfever » Dim 13 Sep 2015 16:14

Salut tout le monde !

j'ai bien suivi les instructions pour l'installation de la lib irtinyrx
hélas, j'ai la même erreur que le monsieur qui a posté un peu plus haut
je la recolle :

Code: Tout sélectionner
C:\Users\monpc\AppData\Local\Temp\build3786721327743216929.tmp/core.a(wiring.c.o): In function `__vector_5':
C:\Users\monpc\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.8\cores\arduino/wiring.c:49: multiple definition of `__vector_5'
IRTinyRX\IRTinyRX.cpp.o:C:\Users\monpc\Documents\Arduino\libraries\IRTinyRX/IRTinyRX.cpp:93: first defined here
collect2.exe: error: ld returned 1 exit status
Erreur lors de la compilation.


lorsque j'ouvre l'exemple "simpleirtinyrx.ino" fourni avec la lib
j'ai bien modifié le nom du fichier Header dans irtinyintrx.h comme indiqué plus haut
je précise aussi que je suis sous l'ide 1.6.5 et que j'ai bien choisi l'ATTiny85 @ 8MHz avec le bootloader gravé dessus qui va bien

je ne comprends pas...
snfever
 
Messages: 1
Inscription: Dim 13 Sep 2015 16:07

Re: Librairie IR NEC pour ATTINY85

Message non lude Laetitia » Mer 21 Oct 2015 13:37

Bonjour,

Le conflit est dû à la redéfinition de l'ISR sur débordement du Timer 0.
Dans wiring.c l'interruption sert à compter le temps écoulé depuis la mise en route du micro-contrôleur, et est donc nécessaire pour les fonctions comme delay() ou millis().
[> Voir tutoriel sur les interruptions]

Théoriquement si vous avez choisi la bonne cible (ATtiny au lieu de Uno), l'IDE est sensée aller chercher les fichiers qui lui sont spécifiques, qui devraient être quelque part dans Arduino\hardware\arduino\avr\core\tiny\... et non dans Arduino\hardware\arduino\avr\core\arduino\...

Vérifiez que vous avez bien la version des cores "tiny" qui correspond aux versions 1.6.x de l'IDE, le cas échéant téléchargez-les ici.

Si cela ne résout pas le problème, essayez une autre librairie, par exemple celle-ci.
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse


Retourner vers Kit Communication IR

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron