Go Down

Topic: [RESOLU] adapter un programme pour arduino v3 (telecommande pour freebox v6) (Read 1 time) previous topic - next topic

Bonjour,

je cherche à adapter un programme prévu pour un arduino mais il ne fonctionne pas avec la v3.

le projet :   http://www.ituilerie.com/?p=967#comments

le programme d'origine qui fonctionne sur les ancienne version :   avec les commentaire des parties modifiés pour que la compilation soit ok
je n'ai modifé que les deux ligne avec mes commentaire et bien sur mis a jour l'adresse mac et reseau + code telecommande de ma freebox.
je précise également je n'y connais rien et les deux ligne que j'ai modifé j'ai trouvé la solution avec google et je ne suis sur de rien.
avec mes modifs ca compile sans erreur et a chaque appuis sur la telecommande il y a de l'activité sur le reseau mais pas d'action sur ma freebox..

Merci a vous si vous avez une idée

// Controle d'une FreeBox par IR  V1.0
// Par Thomas Feillant  04/11
// Tuto par Cyril sur www.ituilerie.com
#include <IRremote.h>
#include <SPI.h>
#include <Ethernet.h>

//Initialisation du reseau
byte mac[] = {  0x90, 0xA2, 0xDA, 0x0D, 0x9D, 0xEC }; // MacID de l'Ethernet Shield
byte ip[] = { 192,168,0,30 }; // IP que prendra le module
byte gateway[] = { 192,168,0,254 }; // Adresse de la Passerelle (routeur)
byte server[] = { 212,27,40,254 }; //Adresse de la FreeBox 212,27,40,253 ou 212,27,40,254
Client client(server, 80);       -----> modifé en :  EthernetClient client;

int RECV_PIN = 5;// Borne de Reception des infos
IRrecv irrecv(RECV_PIN);
decode_results results;
String CodeFree;  // Sert a stocker le code a transmettre

void setup() {
irrecv.enableIRIn(); // Demarage du recepteur
// Demarage de la librairie Communication serie
Serial.begin(9600);
Serial.println("Connexion...");
// Tempo pour laisser une seconde a l'Ethernet Shield le temps de s'initialiser
Ethernet.begin(mac, ip, gateway);
delay(1000);
}

void loop()
{
if (irrecv.decode(&results)) {
  if (client.connect()) {      ----> modifé en :  if(client.connect(server, 80)>0) {
    CodeFree = String("none");
      switch (results.value) {
        case 1261: CodeFree = String("prgm_inc"); break;   // La valeur du case correspond au code IR reçu
        case 17645: CodeFree = String("prgm_dec"); break;
        case 14317: CodeFree = String("ok"); break;
        case 21741: CodeFree = String("power"); break;
        case 3821: CodeFree = String("home"); break;
        case 10221: CodeFree = String("up"); break;
        case 26605: CodeFree = String("down"); break;
        case 6125: CodeFree = String("right"); break;
        case 22509: CodeFree = String("left"); break;
        case 237: CodeFree = String("1"); break;
        case 16621: CodeFree = String("2"); break;
        case 8429: CodeFree = String("3"); break;
        case 24813: CodeFree = String("4"); break;
        case 4333: CodeFree = String("5"); break;
        case 20717: CodeFree = String("6"); break;
        case 12525: CodeFree = String("7"); break;
        case 28909: CodeFree = String("8"); break;
        case 2285: CodeFree = String("9"); break;
        case 18669: CodeFree = String("0"); break;
        case 19949: CodeFree = String("red"); break;
        case 3565: CodeFree = String("green"); break;
        case 2797: CodeFree = String("yellow"); break;
        case 27373: CodeFree = String("blue"); break;
        case 23789: CodeFree = String("rec"); break;
        case 11501: CodeFree = String("play"); break; // Play est repété 2 fois car sur la logitec il y a play et pause
        case 19693: CodeFree = String("play"); break;// Alors que sur la freebox il n'y a qu'une touche pour les 2
        case 27885: CodeFree = String("bwd"); break;
        case 7405: CodeFree = String("fwd"); break;
        case 29421: CodeFree = String("vol_inc"); break;
        case 10733: CodeFree = String("vol_dec"); break;
        case 6637: CodeFree = String("mute"); break;

    }
    if (CodeFree.equals("none")) {
       // Pas d'envoie de commande
      Serial.println("Pas d'envoie");
      Serial.println(results.value);    // Affichage du code IR
    } else {
      Serial.println("Envoie Code");
      client.println("GET /pub/remote_control?code=59042557&key="+CodeFree+" HTTP/1.0"); // Entrer le code Telecomande a distance
      client.println();
    }
    client.stop();
  }
// Tempo pour eviter la repetition d'une commande non voulu
  delay(100);
  irrecv.resume();  // reprise de la reception IR, necessaire
}
}


barbudor

Bonjour

Pense à mettre ton code entre des balises [ code] et [/ code] pour le rendre lisible.

As tu bien mis ton bon code de télécommande freebox ? (il s'obtient sur la freebox dans les menus paramètres / info système, quelque chose de ce genre).
Les adresses IP sont-elles correctes par rapport à ton réseau local ?

Modifie le code comme ceci :
Code: [Select]
     if (CodeFree.equals("none")) {
        // Pas d'envoie de commande
       Serial.println("Pas d'envoie");
       Serial.println(results.value);    // Affichage du code IR
     } else {
       Serial.print("Touche code " );
       Serial.print( result.value );
       Serial.print( " Envoie CodeFree ");
       Serial.println( CodeFree );
       client.println("GET /pub/remote_control?code=59042557&key="+CodeFree+" HTTP/1.0"); // Entrer le code Telecomande a distance
       client.println();
     }


Et vérifie sur le moniteur série ce qui s'affiche : est-ce que les bonnes touches sont reconnues ?
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Merci pour la réponse

oui j'ai vérifié le code télécommande et les ip reseau :d'ailleur ça répond bien au ping

Et vérifie sur le moniteur série ce qui s'affiche : c'est quoi le moniteur série ???

Merci et désolé je débute

barbudor

Le moniteur série, ou terminal série, ou console série : c'est la fenêtre qui s'ouvre par le bouton complètement à droite de la barre de bouton et dans lequel s'affichent les Serial.print()

Lire ici : http://arduino.cc/fr/Main/DebuterPresentationLogiciel
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

merci

dans le moniteur j'ai :

Connexion...

et rien ne se passe quoi que je fasse.

Merci encore pour l'aide

barbudor

Tu as donc un problème coté réception IR
Vérifie ton cablage
Qu'as tu acheté comme récepteur IR ?
Est-tu sur que ton modèle de télécommande est compatible avec la lib IRremote ?
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Tu as donc un problème coté réception IR -->

Vérifie ton cablage  --> câblage verifié : à chaque appuis sur une touche de la télécommande la led du kit vers le réseau est en activité, si je débranche le récepteur Ir  plus d'activité donc je pense que c'est ok de ce coté la.

Qu'as tu acheté comme récepteur IR ?  --> kit acheté complet arduino + ethernet + recepteur avec la résistance.

Est-tu sur que ton modèle de télécommande est compatible avec la lib IRremote ? --> télécommande universel logitecj harmony 1100 configurer comme sur le tuto que j'ai suivi.

en fait j'ai l'impression que la réception Ir est ok ensuite il y a bien une activité sur le reseau mais la je pense que je ne vais pas sur ma freebox...et c'est la que l'ai modifé le code d'origine pour l'adapter a la nouvelle version.Je vais donc chercher de ce coté la car entre ethernet client server etc...ce n'est pas tres clair de mon coté.
Merci encore.

je reprends ça demain tranquillement.

Merci pour l'aide

barbudor

Si quelque chose se passe sur le réseau chaque fois que tu presses une touche de la télécommande, c'est que tu passe sur les lignes entre client.connect() et client.stop().
Donc tu passes par des Serial.print() et quelque chose devrait s'afficher sur les lignes du terminal série.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

maintenant j'ai ça dans le terminal serie :

une serie de carré accolé avec une lettre au milieu

j'ai l'impression que le code IR n'est pas reconnu

pourtant si je prend une autre télécommande il n'y a rien, seul l'harmony fait apparaitre ces carrés

Bonsoir,

Bon finalement j'ai changé de tuto :

http://www.ituilerie.com/?p=1098  --> connexion usb plus besoin du reseau

avec celui ci ça fonctionne partiellement : il me manque certaine touche comme prg+ et prg-

je pense que les codes ne sont pas correct je vais chercher ca

par contre avec cette methode j'ai effacé le flash du chip de l'arduino et j'ai oublié de faire une sauvegarde.
quelqu'un sait ou trouver l'origine afin de pouvoir remettre l'interface dans son état d'origine ?

Merci

barbudor

Tu veux dire que tu a reflasher le AT90 qui est l'interface USB de la UNO ?

Le firmware d'origine est là : c:\arduino\hardware\arduino\firmwares\atmegaxxu2
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

#11
Jan 30, 2013, 09:52 pm Last Edit: Jan 30, 2013, 10:02 pm by aristotelis Reason: 1
Bon ça y est tout fonctionne : j'avais bien un problème sur le réseau.

J'ai simplement lancer le reseau avec l'adresse mac et le DHCP de la freebox lui a attribué une ip
code modifié : Ethernet.begin(mac);

merci à tous pour l'aide et les infos

je laisse le qui est ok ici et je vais également le mettre sur le site de la personne qui a fait le code de départ.

Code: [Select]

// Controle d'une FreeBox par IR  V1.0
// Par Thomas Feillant  04/11
// Tuto par Cyril sur www.ituilerie.com
#include <IRremote.h>
#include <SPI.h>
#include <Ethernet.h>
#include "Arduino.h"

//Initialisation du reseau
byte mac[] = {  0x90, 0xA2, 0xDA, 0x0D, 0x9D, 0xEC }; // MacID de l'Ethernet Shield
byte ip[] = { 192,168,0,30 }; // IP que prendra le module
byte gateway[] = { 192,168,0,254 }; // Adresse de la Passerelle (routeur)
byte server[] = { 212,27,40,254 }; //Adresse de la FreeBox 212,27,40,253 ou 212,27,40,254
EthernetClient client;

int RECV_PIN = 5;// Borne de Reception des infos
IRrecv irrecv(RECV_PIN);
decode_results results;
String CodeFree;  // Sert a stocker le code a transmettre

void setup() {
irrecv.enableIRIn(); // Demarage du recepteur
// Demarage de la librairie Communication serie
Serial.begin(9600);
Serial.println("Connexion ...");
// Tempo pour laisser une seconde a l'Ethernet Shield le temps de s'initialiser
Ethernet.begin(mac);
delay(1000);
}

void loop()
{
if (irrecv.decode(&results)) {
  if(client.connect(server, 80)>0) {
    CodeFree = String("none");
      switch (results.value) {
        case 1261: CodeFree = String("prgm_inc"); break;   // La valeur du case correspond au code IR reçu
        case 17645: CodeFree = String("prgm_dec"); break;
        case 14317: CodeFree = String("ok"); break;
        case 21741: CodeFree = String("power"); break;
        case 3821: CodeFree = String("home"); break;
        case 10221: CodeFree = String("up"); break;
        case 26605: CodeFree = String("down"); break;
        case 6125: CodeFree = String("right"); break;
        case 22509: CodeFree = String("left"); break;
        case 237: CodeFree = String("1"); break;
        case 16621: CodeFree = String("2"); break;
        case 8429: CodeFree = String("3"); break;
        case 24813: CodeFree = String("4"); break;
        case 4333: CodeFree = String("5"); break;
        case 20717: CodeFree = String("6"); break;
        case 12525: CodeFree = String("7"); break;
        case 28909: CodeFree = String("8"); break;
        case 2285: CodeFree = String("9"); break;
        case 18669: CodeFree = String("0"); break;
        case 19949: CodeFree = String("red"); break;
        case 3565: CodeFree = String("green"); break;
        case 2797: CodeFree = String("yellow"); break;
        case 27373: CodeFree = String("blue"); break;
        case 23789: CodeFree = String("rec"); break;
        case 11501: CodeFree = String("play"); break; // Play est repété 2 fois car sur la logitec il y a play et pause
        case 19693: CodeFree = String("play"); break;// Alors que sur la freebox il n'y a qu'une touche pour les 2
        case 27885: CodeFree = String("bwd"); break;
        case 7405: CodeFree = String("fwd"); break;
        case 29421: CodeFree = String("vol_inc"); break;
        case 10733: CodeFree = String("vol_dec"); break;
        case 6637: CodeFree = String("mute"); break;

    }
    if (CodeFree.equals("none")) {
       // Pas d'envoie de commande
      Serial.println("Pas d'envoie");
      Serial.println(results.value);    // Affichage du code IR
    } else {
      Serial.println("Envoie Code");
      client.println("GET /pub/remote_control?code=59042557&key="+CodeFree+" HTTP/1.0"); // Entrer le code Telecomande a distance
      client.println();
    }
    client.stop();
  }
// Tempo pour eviter la repetition d'une commande non voulu
  delay(100);
  irrecv.resume();  // reprise de la reception IR, necessaire
}
}

Go Up