Difference between revisions of "Projets:Perso:2013:IR remote via PC"

From Electrolab
Jump to: navigation, search
(Created page with "{{Project |name= IR remote via PC |author= Helorem |proposal_date= 18/08/2013 |abstract1=L'objectif : enregistrer un signal IR provenant d'une télécommande pour pouvoir le rejo...")
 
m
 
(4 intermediate revisions by one user not shown)
Line 3: Line 3:
 
|author= Helorem
 
|author= Helorem
 
|proposal_date= 18/08/2013
 
|proposal_date= 18/08/2013
|abstract1=L'objectif : enregistrer un signal IR provenant d'une télécommande pour pouvoir le rejouer par la suite.
+
|abstract1=L'objectif : Enregistrer un signal IR provenant d'une télécommande pour pouvoir le rejouer par la suite. Puis faire passer ca via CPL pour atteindre ma TV :-)
 
|abstract2=
 
|abstract2=
 
|abstract3=
 
|abstract3=
Line 12: Line 12:
 
|budget=
 
|budget=
 
}}
 
}}
 +
  
 
= Présentation =
 
= Présentation =
Line 17: Line 18:
  
 
*Pourquoi : De mon PC, je veux pouvoir allumer la TV, le lecteur DVD, ect...
 
*Pourquoi : De mon PC, je veux pouvoir allumer la TV, le lecteur DVD, ect...
 +
  
 
L'idée de base est de faire un Man-in-the-middle infrarouge.
 
L'idée de base est de faire un Man-in-the-middle infrarouge.
Le module se branche en USB, et a deux modes :  
+
 
 +
Le module se branche en USB, et a deux modes :
 +
 
 
- Enregistrement d'un signal IR
 
- Enregistrement d'un signal IR
 +
 
- Envoi d'un signal IR
 
- Envoi d'un signal IR
 +
  
 
= Avancement =
 
= Avancement =
 +
 
# {{Avancement|100||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 1 : communication USB -> PC
 
# {{Avancement|100||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 1 : communication USB -> PC
 
# {{Avancement|30||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 2 : Transmettre un signal IR
 
# {{Avancement|30||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 2 : Transmettre un signal IR
Line 31: Line 38:
 
# {{Avancement|5||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL
 
# {{Avancement|5||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL
 
# {{Avancement|0||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 7 : Faire passer le signal IR via CPL
 
# {{Avancement|0||border: solid 1px gray;background-color: lightgray;width: 50px;margin-right:10px;margin-top:-5px;display:inline-block;}}Etape 7 : Faire passer le signal IR via CPL
 +
  
 
== Etape 1 : communication USB -> PC ==
 
== Etape 1 : communication USB -> PC ==
  
 
Ce premier module permet d'interagir avec le circuit depuis le PC via USB.
 
Ce premier module permet d'interagir avec le circuit depuis le PC via USB.
 +
 
Pour ce faire, j'utilise un PIC16f1455, qui est le plus petit pic avec gestion de l'USB.
 
Pour ce faire, j'utilise un PIC16f1455, qui est le plus petit pic avec gestion de l'USB.
J'utilise l'USB comme source electrique, normalement 5V/200mA me suffiront largement.
+
 
 +
J'utilise l'USB comme source electrique, normalement 5V/200mA me sufiront largement.
 +
 
 
La classe du peripherique est HID, car ainsi pas besoin de drivers. C'est possible car je n'ai pas besoin d'un gros debit, et comme ca la gestion des données brutes se fait en userspace.
 
La classe du peripherique est HID, car ainsi pas besoin de drivers. C'est possible car je n'ai pas besoin d'un gros debit, et comme ca la gestion des données brutes se fait en userspace.
 +
 
Coté logiciel, j'ai fait un petit programme en python pour gerer mon protocol USB perso.
 
Coté logiciel, j'ai fait un petit programme en python pour gerer mon protocol USB perso.
 +
  
 
== Etape 2 : Transmettre un signal IR ==
 
== Etape 2 : Transmettre un signal IR ==
 +
 
[[File:ir_forwarder.png]]
 
[[File:ir_forwarder.png]]
  
 
Je connecte un recepteur IR directement a une led IR.
 
Je connecte un recepteur IR directement a une led IR.
 +
 
La LED a une longueur d'onde de 940nm, et le recepteur une frequence de 38kHz. D'après mes recherches sur la toile, cela devrait couvrir la majorité des télécommandes.
 
La LED a une longueur d'onde de 940nm, et le recepteur une frequence de 38kHz. D'après mes recherches sur la toile, cela devrait couvrir la majorité des télécommandes.
 +
 
Pour tester, j'ai un recepteur IR avec la telecommande utilisé pour controller le pc.
 
Pour tester, j'ai un recepteur IR avec la telecommande utilisé pour controller le pc.
  
*Problème : Bin ca ne marche pas :-(
+
 
 +
*Problème : Bin ca ne marche pas :-( la LED envoi bien un signal, mais le recepteur ne le prend pas en compte. J'ai aussi essayé en inversant le signal, sans resultat.
 +
 
 +
 
 +
*[Edit] On m'a dit de verifier si ce n'etait pas un probleme de bruit infrarouge à cause des lumieres. Même test dans le noir et même resultat...
 +
 
  
 
== Etape 3 : Enregistrer un signal IR ==
 
== Etape 3 : Enregistrer un signal IR ==
J'etais parti sur les chapeaux de roue, donc la partie logiciel est deja bien avancée. Je peux deja enregistrer les etats d'une pin dans un buffer avec une compression et quand mon buffer est plein, l'envoyer vers le PC.
+
 
 +
J'etais parti sur les chapeaux de roue, donc la partie logiciel est deja bien avancée.
 +
 
 +
Je peux deja enregistrer les etats d'une pin dans un buffer avec une compression et quand mon buffer est plein, l'envoyer vers le PC.
 +
 
 
Coté PC, le script python decode le buffer et l'affiche dans une fenetre graphique genre oscilloscope en permettant de zoomer, etc...
 
Coté PC, le script python decode le buffer et l'affiche dans une fenetre graphique genre oscilloscope en permettant de zoomer, etc...
Au final, le script devrait pouvoir deduire le signal unitaire et l'enregistrer pour un usage ulterieur
+
 
 +
Au final, le script devrait pouvoir deduire le signal unitaire et l'enregistrer pour un usage ulterieur.
 +
 
  
 
== Etape 4 : Envoyer un signal IR ==
 
== Etape 4 : Envoyer un signal IR ==
 +
 
Là aussi une bonen partie du logiciel est faite.
 
Là aussi une bonen partie du logiciel est faite.
 +
 
Le controleur peut recevoir un buffer compressé et le rejouer.
 
Le controleur peut recevoir un buffer compressé et le rejouer.
 +
 
Coté PC, rien n'est encore fait (j'envoie le buffer que j'ai recu sans modifications).
 
Coté PC, rien n'est encore fait (j'envoie le buffer que j'ai recu sans modifications).
 +
  
 
== Etape 5 : Faire passer de la donnée via courant porteur ==
 
== Etape 5 : Faire passer de la donnée via courant porteur ==
 +
 
Ma TV est eloignée de mon PC, donc pour communiquer avec le module qui comporte la LED, je veux passer par courant porteur.
 
Ma TV est eloignée de mon PC, donc pour communiquer avec le module qui comporte la LED, je veux passer par courant porteur.
 +
 
il faut dabord que je puisse faire un interrupteur via courant porteur, qui est la base materiel avant de mettre en place un protocol de communication.
 
il faut dabord que je puisse faire un interrupteur via courant porteur, qui est la base materiel avant de mettre en place un protocol de communication.
 +
  
 
== Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL ==
 
== Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL ==
 +
 
J'ai deja une idée du protocole de reconnaissance des modules
 
J'ai deja une idée du protocole de reconnaissance des modules
 +
  
 
== Etape 7 : Faire passer le signal IR via CPL ==
 
== Etape 7 : Faire passer le signal IR via CPL ==
 +
 
Et quand j'en serais la ca sera fini !! :-)
 
Et quand j'en serais la ca sera fini !! :-)

Latest revision as of 20:25, 19 August 2013

IR remote via PC
Auteur Helorem
Date de proposition 18/08/2013
Tags du projet ir
Type de projet

Projet personnel de Helorem

Projet IR remote via PC

L'objectif : Enregistrer un signal IR provenant d'une télécommande pour pouvoir le rejouer par la suite. Puis faire passer ca via CPL pour atteindre ma TV :-)





Présentation

  • Objectif : Enregistrer un signal IR provenant d'une télécommande pour pouvoir le rejouer par la suite.
  • Pourquoi : De mon PC, je veux pouvoir allumer la TV, le lecteur DVD, ect...


L'idée de base est de faire un Man-in-the-middle infrarouge.

Le module se branche en USB, et a deux modes :

- Enregistrement d'un signal IR

- Envoi d'un signal IR


Avancement

  1. 100 %
    Etape 1 : communication USB -> PC
  2. 30 %
    Etape 2 : Transmettre un signal IR
  3. 50 %
    Etape 3 : Enregistrer un signal IR
  4. 50 %
    Etape 4 : Envoyer un signal IR
  5. 0 %
    Etape 5 : Interrupteur via courant porteur
  6. 5 %
    Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL
  7. 0 %
    Etape 7 : Faire passer le signal IR via CPL


Etape 1 : communication USB -> PC

Ce premier module permet d'interagir avec le circuit depuis le PC via USB.

Pour ce faire, j'utilise un PIC16f1455, qui est le plus petit pic avec gestion de l'USB.

J'utilise l'USB comme source electrique, normalement 5V/200mA me sufiront largement.

La classe du peripherique est HID, car ainsi pas besoin de drivers. C'est possible car je n'ai pas besoin d'un gros debit, et comme ca la gestion des données brutes se fait en userspace.

Coté logiciel, j'ai fait un petit programme en python pour gerer mon protocol USB perso.


Etape 2 : Transmettre un signal IR

Ir forwarder.png

Je connecte un recepteur IR directement a une led IR.

La LED a une longueur d'onde de 940nm, et le recepteur une frequence de 38kHz. D'après mes recherches sur la toile, cela devrait couvrir la majorité des télécommandes.

Pour tester, j'ai un recepteur IR avec la telecommande utilisé pour controller le pc.


  • Problème : Bin ca ne marche pas :-( la LED envoi bien un signal, mais le recepteur ne le prend pas en compte. J'ai aussi essayé en inversant le signal, sans resultat.


  • [Edit] On m'a dit de verifier si ce n'etait pas un probleme de bruit infrarouge à cause des lumieres. Même test dans le noir et même resultat...


Etape 3 : Enregistrer un signal IR

J'etais parti sur les chapeaux de roue, donc la partie logiciel est deja bien avancée.

Je peux deja enregistrer les etats d'une pin dans un buffer avec une compression et quand mon buffer est plein, l'envoyer vers le PC.

Coté PC, le script python decode le buffer et l'affiche dans une fenetre graphique genre oscilloscope en permettant de zoomer, etc...

Au final, le script devrait pouvoir deduire le signal unitaire et l'enregistrer pour un usage ulterieur.


Etape 4 : Envoyer un signal IR

Là aussi une bonen partie du logiciel est faite.

Le controleur peut recevoir un buffer compressé et le rejouer.

Coté PC, rien n'est encore fait (j'envoie le buffer que j'ai recu sans modifications).


Etape 5 : Faire passer de la donnée via courant porteur

Ma TV est eloignée de mon PC, donc pour communiquer avec le module qui comporte la LED, je veux passer par courant porteur.

il faut dabord que je puisse faire un interrupteur via courant porteur, qui est la base materiel avant de mettre en place un protocol de communication.


Etape 6 : Mise ne place d'un protocole de communication entre les modules via CPL

J'ai deja une idée du protocole de reconnaissance des modules


Etape 7 : Faire passer le signal IR via CPL

Et quand j'en serais la ca sera fini !! :-)