[Question] Conflit emetteur HF et VitualWire

Bonjour tout le monde =)

J'ouvre ce topic qui en fait est plutôt un cri à l'aide xD

En effet j'ai bricoler un système de contrôle de prises en HF ( 434 mhz) mais le soucis et qu'en voulant le combiner avec un projet bien plus conséquent bah plus rien ne marche ! :frowning:
En debugant il semble que le coupable est l'initialisation de la librairie VirtualWire :frowning:

Voila a quoi ressemble le début du code :

/* Gestion HF Chacon WEB*/

#include <SPI.h>
#include <Ethernet.h>
#include <VirtualWire.h>

const char *msg = "HelloWorld";

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4D, 0x7F };
byte ip[] = { 192,168,1,10 };			
byte gateway[] = { 192,168,1,254 };			
byte subnet[] = { 192,168,1,254 };               
Server server(80);

String readString = String(); //string for fetching data from address
String ValeurL;

int val;
int torf; // variable pour true or false

bool bit2[26]={};              // tableau pour adresse hexa.
int txPin = 2;                 // emmetteur 433mhz en pin 2

void setup(){

  Ethernet.begin(mac, ip, gateway, subnet);
  
  Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
  Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
  
  vw_set_tx_pin(2);
  vw_setup(2000);		// SI ON COMMENTE CETTE LIGNE CA MARCHE ...
  
  pinMode(txPin, OUTPUT);      // emmetteur pin en sortie
  }

par la suite le programme ressemble à ça :

transmit(torf,val);
        delay(10);
        transmit(torf,val);
        delay(100);
        
        Serial.print("TX ... "); // On signale le début de l'envoi
        vw_send((uint8_t *)msg, strlen(msg)); // On envoi le message 
        vw_wait_tx(); // On attend la fin de l'envoi
        Serial.println("Done !"); // On signal la fin de l'envoi
        delay(1000); // Et on attend 1s pour pas flooder

La fonction transmit est utilisé pour le HomeEasy.

Il semble donc que je ne puisse pas utiliser les deux protocoles en même temps ...

Si quelqu'un a déjà eu ce soucis ou si une idée vous passe par la tête je suis preneur :slight_smile:

Amicalement,
Trigger

trigger:
Bonjour tout le monde =)

J'ouvre ce topic qui en fait est plutôt un cri à l'aide xD

Il semble donc que je ne puisse pas utiliser les deux protocoles en même temps ...

Si quelqu'un a déjà eu ce soucis ou si une idée vous passe par la tête je suis preneur :slight_smile:

Amicalement,
Trigger

à chaud sans regarder le code je penche pour un des deux protocole (lib) qui maintient et ne libere donc pas l'emission en ASK l

faire un test d'ecoute pour une levée de doute : (recepteur sur audacity)

Salut,

Question bête ... Est ce que la lib ethernet n'utiliserai pas un timer ?
Parce que justement vw_setup() utilise un des timer (je sais plus lequel) pour la transmission.

@Skywodd

Question bête : on ne peut pas utiliser deux timer en meme temps ?

extrait de la lib virtualwire :

#ifndef TEST
    // Set up timer1 for a tick every 62.50 microseconds 
    // for 2000 bits per sec
    TCCR1A = 0;
    TCCR1B = _BV(WGM12) | _BV(CS10);
    // Caution: special procedures for setting 16 bit regs
    OCR1A = ocr1a;
    // Enable interrupt

Donc il utiliserait le timer 1 ?

Question bête ... Est ce que la lib ethernet n'utiliserai pas un timer ?
Parce que justement vw_setup() utilise un des timer (je sais plus lequel) pour la transmission.

j'arrive déjà a envoyer un message en passant par une page web :slight_smile: lien ou pas ? je suis pas doué ^^

trigger:
Question bête : on ne peut pas utiliser deux timer en meme temps ?

Oui et non, tu peut utiliser les trois timer 0/1/2 pour trois choses différentes mais pas en même temps (une interruption simultané uniquement).

Bon sinon ethernet + virtualWire c'est possible, la preuve : http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1289769139
(J'adord le concept du frigo qui tweet quand ya plus de bières 8))

Essaye de faire un vw_set_rx_pin(3); puisque par défaut la broche Rx est sur D11 ce qui correspond au port SPI (utilisé pour communiquer avec l'ethernet shield).
Et de mettre le Ethernet.begin après les vw_set_... et vw_begin ...

@Skywodd

Merci de mettre un peu le nez dans ce contre temps :slight_smile:

Pour le moment j'ai déjà fait un sketch avec ton tuto ( super d’ailleurs, merci encore) avec un Ethernet Shield.
On arrive a saisir une chaine de cratères via une page web et faire un envoie vers un autre Arduino.

Dans l'exemple ci dessus j'utilise la pin 18 en tx, je ne comprend pas pk je devrais changer la rx alors que le système n'a pas de recepteur ... j'ai raté quelque chose ??

Changer le sens de certaines lignes au niveau du setup peu changer le déroulement ?

trigger:
On arrive a saisir une chaine de cratères via une page web et faire un envoie vers un autre Arduino.

[HUM]
surement ça !

désolé , je n'ai pas pu m'en empêcher :grin:

trigger:
Dans l'exemple ci dessus j'utilise la pin 18 en tx, je ne comprend pas pk je devrais changer la rx alors que le système n'a pas de recepteur ... j'ai raté quelque chose ??

Que tu utilise ou non la broche Rx celle ci est mise en INPUT, ça peut poser probléme je pense (mais pas sur).

trigger:
Changer le sens de certaines lignes au niveau du setup peu changer le déroulement ?

Oui dans le cas de VirtualWire certaines fonctions doivent être appelé avec d'autre ça peut être la cause de ton bug.

Artouste:
surement ça !
Chaîne des Puys — Wikipédia

désolé , je n'ai pas pu m'en empêcher :grin:

héhé Vive l'auvergne ! Auvergne FTW !

Et oui vive l'Auvergne !!!! :slight_smile:

Désolé Skywodd mais je ne comprend pas ton histoire de tx alors que je n'ai pas de recepteur ... ( je suis un boulé je sais ^^)
J'ai modifié l’ordre mais toujours le même soucis je n'ai pas de soucis pour l'envoi ( comme dans ton tuto) mais des que je passe pour commander les objets ( prises ou autres) ya plus rien qui marche ...

trigger:
Désolé Skywodd mais je ne comprend pas ton histoire de tx rx alors que je n'ai pas de recepteur ... ( je suis un boulé je sais ^^)

Si la lib virtualWire travail avec la broche D12 en Rx (comme elle le fait par défaut) même si il n'y a pas de récepteur elle risque de venir foutre la m*rde avec la shield ethernet vu que D12 c'est aussi la broche MISO du bus SPI.
Essaye de mettre un vw_set_rx_pin(3); ça coute rien et si ça ce trouve ça réglera le probléme.

Bonjours tout le monde :=)

J'ai bien pris note de toute vos remarques et je me suis donc lancé dans un petit sketch pour rechercher les erreurs.

Dans le code si dessus j'ai commenté/dé-commenté étape par étape pour chercher la où ça plante et il se trouve que c'est au moment de l'initialisation ...

N'étant pas du tout à l'aise avec les timers je ne sais pas trop où chercher ...

Amicalement,
Trigger

Arduino_Chacon_web_beta.txt (8.97 KB)