Emetteur RF 434Mhz et Bluetooth HC-06

Voila étant sur un projet personnel de domotique pratiquement abouti, je viens de m'apercevoir que la partie programmation n'est pas parfaite... :slight_smile:

En gros... Sur ma carte Émetteur j'ai 4 Boutons poussoirs qui commande 4 Relays par l’intermédiaire d'un couple Émetteur 434 Mhz vers ma carte Récepteur avec le module RF 434Mhz de 'Snootlab'... Tout seul ça fonctionne...

Sur la même carte Émettrice j'ai aussi un module Bluetooth HC-06 qui reçoit les ordres depuis une application maison sur Android et qui m'allume des Leds... Tout seul ça fonctionne...

Mais dés que j'assemble les deux bout de code ensemble dans la carte Émettrice seul le code de l’Émetteur RF Fonctionne, mon application Android envoie les commandes en Bluetooth mais les Leds ne s'allument plus...

Ma question est la suivante peut on utiliser en même temps sur une carte Arduino Uno un module RF 434Mhz et un module Bluetooth...

Photo Emetteur-Recepteur

/* Turn an LED on/off based on a command send via BlueTooth
** Pin 02 -> Led Rouge Bas/Droite - ledPin01
** Pin 03 -> Led Infra Rouge Emetrice
** Pin 04 -> Emetteur RF 434 Mhz
** Pin 05 -> Led Rouge Milieu/Droite - ledPin02
** Pin 06 -> Bouton 01
** Pin 07 -> Bouton 02
** Pin 08 -> Bouton 03
** Pin 09 -> Bouton 04
** Pin 10 -> Bluetooth Rx -> Vers HC-06 Tx
** Pin 11 -> Bluetooth Tx -> Vers HC-06 Rx
** Pin 12 -> Led Rouge Haut/Droite - ledPin03
** Pin 13 -> Power Led On/Off
*/
// ------------------------------------------------------------
#include <VirtualWire.h>
#include <IRremote.h>
#include <SoftwareSerial.h>
// ------------------------------------------------------------
SoftwareSerial mySerial(10, 11); // RX, TX
IRsend irsend;

//char *nibble = "0000"; //Creates the variable nibble with the value of 0000  
//int le_pino; //Creates the variable to read the digital pins 
int ledPin01 = 2;  
int ledPin02 = 5;
int ledPin03 = 12;
int pwrLed = 13;
int state = 0;
int flag = 0;
// ------------------------------------------------------------
void setup()
{ 
  //++++++++++++++Initializes the transmitter module+++++++++++++++++++   
//  vw_set_ptt_inverted(true);   
//  vw_setup(2000);   
//  vw_set_tx_pin(4); //Configure the D4 pin to read the data   
  //================================================================   
//  Configure the pins 6 to 9 as input
//  for(int i=6; i<=9; i++)   
//  {     
//  pinMode(i, INPUT_PULLUP);   
//  }
  //======================================
  pinMode(ledPin01, OUTPUT);
  pinMode(ledPin02, OUTPUT);
  pinMode(ledPin03, OUTPUT);
  pinMode(pwrLed, OUTPUT);
  digitalWrite(ledPin01, LOW);
  digitalWrite(ledPin02, LOW);
  digitalWrite(ledPin03, LOW);
  digitalWrite(pwrLed, HIGH);
//  Serial.begin(9600);
  mySerial.begin(9600);
} 
// ------------------------------------------------------------
void loop()
  {
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
    //Increments the position for storage in nibble by i (0 to 4)   
    //Increments the position of the digital pins by j (6 to 9)   
//    int j=0;   
//    for(int i=6;i<=9;i++,j++)   
//    {     
//    le_pino = digitalRead(i); //Read the state of the button     
//    if(le_pino == 1) //If the button is pressed     
//    {       
//    while(le_pino == 1)
//    le_pino = digitalRead(i); //Wait until the button is unpressed       
//    nibble[j] = '1'; //Stores in the same position of nibble the character 1     
//    }     
//    else nibble[j] = '0'; //Or stores in the same position of nibble the character 1   
//    }
//    vw_send((uint8_t *)nibble, strlen(nibble)); //Sends the variable nibble   
//    vw_wait_tx(); //Waits the end of transmission   
    //=======================================================================================
// ----------------------------------------
      if (mySerial.available() != -1)
      {
      state = mySerial.read();
      flag = 0;
      }
// ----------------------------------------
    switch (state)
      {
// ----------------------------------------
        case 'A':
          digitalWrite(ledPin01, HIGH);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
        case 'a':
          digitalWrite(ledPin01, LOW);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
// ----------------------------------------
        case 'D':
          digitalWrite(ledPin02, HIGH);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
        case 'd':
          digitalWrite(ledPin02, LOW);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
// ----------------------------------------
        case 'K':
          digitalWrite(ledPin03, HIGH);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
        case 'k':
          digitalWrite(ledPin03, LOW);
          if(flag == 0)
          {
          flag = 1;
          }
        break;
// ----------------------------------------
        case 'P':
          irsend.sendNEC(0x20DF10EF, 32); // LG TV power On/Off code 20DF10EF
          if(flag == 0)
            {
            flag = 1;
            }
          delay(100);
        break;
        case 'p':
          irsend.sendNEC(0x20DF10EF, 32); // LG TV power On/Off code 20DF10EF
          if(flag == 0)
            {
            flag = 1;
            }
          delay(100);
        break;
// ----------------------------------------
  } 
}

Amt3ch:
Voila étant sur un projet personnel de domotique pratiquement abouti, je viens de m'apercevoir que la partie programmation n'est pas parfaite... :slight_smile:

En gros... Sur ma carte Émetteur j'ai 4 Boutons poussoirs qui commande 4 Relays par l’intermédiaire d'un couple Émetteur 434 Mhz vers ma carte Récepteur avec le module RF 434Mhz de 'Snootlab'... Tout seul ça fonctionne...

Sur la même carte Émettrice j'ai aussi un module Bluetooth HC-06 qui reçoit les ordres depuis une application maison sur Android et qui m'allume des Leds... Tout seul ça fonctionne...

Mais dés que j'assemble les deux bout de code ensemble dans la carte Émettrice seul le code de l’Émetteur RF Fonctionne, mon application Android envoie les commandes en Bluetooth mais les Leds ne s'allument plus...

Ma question est la suivante peut on utiliser en même temps sur une carte Arduino Uno un module RF 434Mhz et un module Bluetooth...

Photo Emetteur-Recepteur

bonjour
reponse "à chaud" 8)
conflit de canards libraries (registres) entre les libs virtualwire et softwareserial
pour test/levée de doute qu'est ce qui t'empeche de coller le HC06 sur le serial "hard" (arduino pin 0/1) en evacuant le softserial ?

je vais essayer ce que tu m'as dit... je branche donc le module bluetooth en tx et rx correspondant a 01 et 02... et te tient au courant... :slight_smile:

Amt3ch:
je vais essayer ce que tu m'as dit... je branche donc le module bluetooth en tx et rx correspondant a 01 et 02... et te tient au courant... :slight_smile:

si c'est un arduino basique
c'est RX=0 TX=1
pas 01 et 02

oui oops 0 et 1... viens d'uploader (televerser)... doit faire 2 fils en volant pour test... d'ici 15 min serais fixé... sur mon sort :slight_smile:

Bon :frowning: viens de faire le même essai qu'avant, seulement le Bluetooth ça marche entre 0 et 1 (sans la library softwareserial) mais des que je rajoute le RF 434 Mhz le bluetooth ne marche plus, du moins les commande que j'envoie du telephone sous android, le module s'etant connecté (led clignotante puis fixe). Une autre solution peut etre ?

Amt3ch:
Bon :frowning: viens de faire le même essai qu'avant, seulement le Bluetooth ça marche entre 0 et 1 (sans la library softwareserial) mais des que je rajoute le RF 434 Mhz le bluetooth ne marche plus, du moins les commande que j'envoie du telephone sous android, le module s'etant connecté (led clignotante puis fixe). Une autre solution peut etre ?

Je viens de voir que tu utilise aussi Irremote
ça plante aussi si tu supprime cette fonctionnalité pour test ?

J'ai testé avec et sans 'IRremote' c'est idem... Avec l'application android je peux allumer 3 Leds les unes après les autres et les éteindre et en même temps commander ma TV (juste pour le moment allumage et extinction), çà marche ensemble... Dés que je rajoute la partie de code pour le RF 434Mhz, il n'y a plus que le RF 434Mhz qui marche et me commande mes relais... snif snif je ne comprends pas pourquoi... suis autodidacte je me débrouille mais la je bloque... besoin d'aide...

Amt3ch:
J'ai testé avec et sans 'IRremote' c'est idem... Avec l'application android je peux allumer 3 Leds les unes après les autres et les éteindre et en même temps commander ma TV (juste pour le moment allumage et extinction), çà marche ensemble... Dés que je rajoute la partie de code pour le RF 434Mhz, il n'y a plus que le RF 434Mhz qui marche et me commande mes relais... snif snif je ne comprends pas pourquoi... suis autodidacte je me débrouille mais la je bloque... besoin d'aide...

probleme d'alim/conso ?
quand tu expose que des lors que tu rajoute le 434 et que "ça foire"
le foirage ce traduit comment ? :grin:
en sortie de ton module BT bien appairé les infos arrivent toujours ?
avec un test à l'oscillo ou derivation RX vers un moniteur externe , ça donne quoi ?

Artouste:
probleme d'alim/conso ?
quand tu expose que des lors que tu rajoute le 434 et que "ça foire"
le foirage ce traduit comment ? :grin:
en sortie de ton module BT bien appairé les infos arrivent toujours ?
avec un test à l'oscillo ou derivation RX vers un moniteur externe , ça donne quoi ?

Je ne pense pas que cela vienne de l'alimentation (5V 2A)...
Je ne possède pas d'oscilloscope... oops :frowning:

Lorsque j’enlève la partie de code pour le RF 434Mhz, ça fonctionne a merveille, c'est a dire je peux allumer/éteindre 3 Leds présente sur la Carte Émettrice et également commander ma TV par la Led IR grâce à l'application maison sous android de mon téléphone...
Des lors que je rajoute la partie de code pour le RF 434Mhz, on dirait que le RF 434Mhz devient prioritaire, mes 4 boutons présente sur la Carte Émettrice commande ma carte Récepteur avec des Relais...
Mes 3 Leds et la Led IR ne reçoivent plus les infos de mon téléphone apparemment...

une derivation RX vers un moniteur externe

Qu'est ce que tu veux dire par la ?

Regarde mes 2 cartes si ca peux t'aider :slight_smile:

Carte Emetrice - Carte Receptrice

....

Amt3ch:
...
Lorsque j’enlève la partie de code pour le RF 434Mhz, ça fonctionne a merveille, c'est a dire je peux allumer/éteindre 3 Leds présente sur la Carte Émettrice et également commander ma TV par la Led IR grâce à l'application maison sous android de mon téléphone...
Des lors que je rajoute la partie de code pour le RF 434Mhz, on dirait que le RF 434Mhz devient prioritaire, mes 4 boutons présente sur la Carte Émettrice commande ma carte Récepteur avec des Relais...
Mes 3 Leds et la Led IR ne reçoivent plus les infos de mon téléphone apparemment...

Amt3ch:
Qu'est ce que tu veux dire par la ?

Pour etre tres franc , il faudrait reproduire ton montage et verifier ce qui arrive (ou pas)
A part une occupation "exorbitante" du MCU toujours à l'ecoute du recepteur RF (c'est hyper bruité et il faut retrouver en permanence ses petits), à ce stade je n'ai pas/plus d'idée 8)
pour la derivation rx , c'est juste faire un piquage (par exemple avec un adaptateur TTl TTL/USB ) et voir ce qui arrive dans un
terminal serie (donc sans s'occuper de l'arduino)

Artouste:
Pour etre tres franc , il faudrait reproduire ton montage et verifier ce qui arrive (ou pas)
A part une occupation "exorbitante" du MCU toujours à l'ecoute du recepteur RF (c'est hyper bruité et il faut retrouver en permanence ses petits), à ce stade je n'ai pas/plus d'idée 8)
pour la derivation rx , c'est juste faire un piquage (par exemple avec un adaptateur TTl/USB ) et voir ce qui arrive dans un
terminal serie (donc sans s'occuper de l'arduino)

J'ai un module CP2102 qui me sert a programmer un Arduino Pro Mini ATmega 328 5V...
ref.: Module CP2102 est-ce ça un TTl/USB ?

Et j'utilise le moniteur série du logiciel de programmation de l'arduino ?

Désolé suis autodidacte et j’essaie de me débrouiller seul hihhiiiihi pour un projet perso qui me tient a cœur...

Amt3ch:
J'ai un module CP2102 qui me sert a programmer un Arduino Pro Mini ATmega 328 5V...
ref.: Module CP2102 est-ce ça un TTl/USB ?

Et j'utilise le moniteur série du logiciel de programmation de l'arduino ?

Désolé suis autodidacte et j’essaie de me débrouiller seul hihhiiiihi pour un projet perso qui me tient a cœur...

oui pour le module (ça commence bien) 8) (lire TTL pas TTI , désolé je corrige 8) )
non pour l'utilisation du moniteur de l'IDE (trop limité)

si windows
un truc sympa parmi d'autres

Merci je testerais ça ce soir :slight_smile:

J'ai utilisé un autre programme qui s'appelle 'Termite 3.1' de www.compuphase.com

Voici ce que j'ai fait... le montage puis ce que j'ai eu...

Avec le Bluetooth je reçois bien ce que j'envoie de mon application Android, les bonnes variables... :wink:

mais des que je mets la partie de code pour le RF 434Mhz j'ai une série de [00] en série qui
arrête pas de défiler...

Une idée ?

Up... Une idée ? ... :slight_smile:

Amt3ch:
Up... Une idée ? ... :slight_smile:

:smiley:
tu n'a pas d'oscillo ?
pour la manip precedente OK et plus OK le pin RX de ton HC06 etait toujours connecté à ta platine ?
refais la manip sans que le PIN RX soit connecté à ta platine (juste connecté à l'adaptateur TTL/USB)
ça permettra de lever certains doutes

J'ai choppé la notice de la librairie 'VirtualWire' VirtualWire.pdf... d’après ce que j'ai compris, apparemment vu que j'ai pris les pin 10 et 11 pour le Bluetooth c'est pas bon... arf...

Extrait:

The code consists of an ISR interrupt handler. Most of the work is done in the interrupt
handler for both transmit and receive, but some is done from the user level. Expensive
functions like CRC computations are always done in the user level.
Caution
: VirtualWire takes over Arduino Timer1, and this will affect the PWM capabil-
ities of the digital pins 9 and 10

en FIGURE 4. la pin 11 et assigné au data du récepteur

vu que j'ai soudé le Bluetooth HC-06 sur mon circuit imprimé faut que je le dé-soude et essaie sur d'autres I/O :slight_smile: et que je refasse des essais... arf ferais ça ce week-end... hihihihihii