Outils pour utilisateurs

Outils du site


tpir

Ceci est une ancienne révision du document !


TD Bus de communication : Communication infrarouge NEC étendue

Objectifs

  • Génération des signaux de commandes infrarouge
  • Compréhension du format de trame NEC étendue
  • Utilisation de la maquette Arduino
  • Configuration des périphériques TIMER et PWM

Carte d'extension pour le TD/TP

Le shield à utiliser pour ce TP est présenté en tdcom2. Nous utiliserons une Led infrarouge pour émettre des trames à l'aide de l'Arduino. Une led verte est utilisée sur la maquette pour visualiser à l’œil nu l'activité en émission.

Analyse

Format des trames

Pour rappel, une trame NEC étendue est constitué d'un train de bits modulé à 38Khz. Il existe 2 types de trames:

  1. les trames complètes
  2. les trames de répétition

La trame complète contient:

  1. un entête de trame
  2. une adresse sur 16 bits, octet de poids fort d'abord (identifiant la télécommande)
  3. une valeur sur 8 bits (identifiant la touche)
  4. le complément à 1 de la précédente valeur sur 8 bits
  5. l'envoi d'un bit à 1 et un retour à l'état de repos

La trame de répétition contient:

  1. un entête de trame
  2. l'envoi d'un bit à 1 et un retour à l'état de repos

La durée séparant le début de 2 trames (complète ou de répétition) doit être au moins de 110ms.

Codage des bits

Les bits sont codés de la manière suivante:

  1. Le bit “1” est représenté par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité pour une durée totale du bit de 2.25ms.
  2. Le bit “0” est représenté par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 560us suivi par une inactivité pour une durée totale du bit de 1.12ms.

Les entêtes de trames sont codés de la manière suivante:

  1. La trame complète commence par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 4.5ms.
  2. La trame de répétition commence par un train d'impulsion à 38Khz (avec rapport cyclique 50%) pendant 9ms suivi par une inactivité de durée 2.25ms.

Dessin des chronogrammes

Dessiner l'allure des chronogrammes pour l'envoi d'une trame complète depuis la télécommande 0x1234 pour la touche 0x56.

Dessiner l'allure des chronogrammes pour l'envoi d'une trame de répétition depuis la télécommande 0x1234 pour la touche 0x56.

Configuration du timer 2

http://homepages.laas.fr/bvandepo/files/iut/Atmega328p_timer2.pdf

L'Atmega328 dispose de 4 timers : - Timer 0 : 8-bit avec PWM - Timer 1 : 16-bit avec PWM - Timer 2/3 : 8-bit avec PWM et possibilité d'horloge externe

Dans la suite des exercices nous utiliserons le Timer 2 en mode 7 “FAST PWM” (voir les différents mode en p 155!!!).

A l'aide de la documentation, proposer l'algorithme de configuration du timer 2 pour pouvoir générer un signal à 38Khz sur une broche du microcontrôleur sans solliciter le processeur. Identifier quelle broche du micro-contrôleur le timer 2 peut piloter.

Que faire pour autoriser la sortie PWM sur cette broche?

Que faire pour empécher la sortie PWM sur cette broche?

Dans la suite, pour maîtriser les durées, nous utiliserons la fonction delayMicroseconds(time);

Proposer l'algorithme pour la fonction void sendNECBYTE(unsigned char data) qui permet d'envoyer, bit de poids faible d'abord, les 8 bits de data.

Proposer l'algorithme pour la fonction void sendNECFrame(unsigned int adr, unsigned char cmd) qui permet d'envoyer la trame NEC complète, adr étant le numéro de télécommande et cmd le numéro de la touche.

Proposer l'algorithme pour la fonction void sendNECFrameRepeat() qui permet d'envoyer la trame NEC de répétition.

Codage et tests

Implémenter la fonction void setup(void) pour configurer la sortie PWM à 38Khz. Vérifier à l'oscilloscope la fréquence du signal généré.

Implémenter les fonctions void sendNECBYTE(unsigned char data), void sendNECFrame(unsigned int adr, unsigned char cmd) et void sendNECFrameRepeat() et proposer un programme principal de test qui permette de balayer plusieurs adresses et numéros de commandes.

Utiliser une caméra de téléphone portable pour visualiser l'activité de la Led infrarouge et demander à l'enseignant de valider avec le récepteur/démodulateur infrarouge.

Réception/décodage

Lire et interpréter le fichier suivant: maeNECPIC2.pdf Proposer un portage de cette fonctionnalité sur l'Arduino UNO R3.

tpir.1427638631.txt.gz · Dernière modification: 2015/03/29 16:17 par bvandepo