Arduino Mega avec shield Ethernet

Portrait de jc

Bonjour,

Je me lance avec mes petits problèmes.

J'ai un arduino mega qui contrôle les télécommandes de mes volets. Je contrôle celui-ci par le Bluetooth grâce à une application Android maison. Ça fonctionne relativement bien.

Pour une personne qui peut utiliser un téléphone c'est génial, mais comme moi je ne peux pas je me suis décidé à passer par Internet pour pouvoir le contrôler plus facilement (par la suite via domoticz entre autres).

Et quand je fais installer le shield Ethernet, la commence les problèmes. J'ai des relais non utilisés et non déclarés dans le code de base (Sans toucher au préalable le code pour faire reconnaître la nouvelle carte) qui s'allument… et surtout impossible de les couper.(Sachant qu'ils sont éteints sans le shield)

Et par la suite quand je fais abstraction de Ça et je commence à créer le serveur Web avec les différentes bibliothèques etc. à chaque fois que j'upload le code, cela met en route un ou 2 relais différents pour rien Et s'éteint par la suite

Merci beaucoup aux personnes qui me répondront.

Portrait de jc

Merci pour la réponse,

avec ce code,Ça fonctionne assez correctement avec le Bluetooth et l'application Android. Quand je mets le Shield Ethernet le relais sur la sortie 52 reste allumé.

/*****************************************************************/
/*  Contrôle des Volets de la maison en Bluetooth et/ou Internet */
/*****************************************************************/

#include <SoftwareSerial.h>

//réception/émission Bluetooth
#define SEND_BT_TX    1
#define RECEIVE_BT_RX 0

int pinVolets[30] = {
49, 50, 51, //g 
22, 23, 24, //a
25, 26, 27, //b
28, 29, 30, //c
31, 32, 33, //d
34, 35, 36, //e
37, 45, 44, //f
43, 42, 41, //1
40, 39, 38, //2
46, 47, 48  //3
};

boolean voletsAction[37][30] = {
1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,//GénéraleF
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,//GénéraleO
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,1,1,//GénéralCO
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,0,//généraleCF
1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,0,//généralFS1P
1,1,0,1,1,1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,//VérandaFS2P
1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,//vérandaFS1P
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,//volet1_O
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,//volet1_S
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,//volet1_F
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,//volet2_O
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,//volet2_S
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,//volet2_F
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,//volet3_O
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,//volet3_S
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,//volet3_F
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1
};

char* msg[] = {
  "CLOSE_ALL", //Tout fermer
  "OPEN_ALL", // tout ouvrir
  "OPEN_ALL", // tout ouvrir la chambre
  "CLOSE_ALL", // fermée la chambre
  "CLOSE_ALL", // tout fermer sans la porte
  "CLOSE", // tout véranda sans les deux portes
  "CLOSE",//Toute la véranda sans la porte principale
  "OPEN_1",
  "STOP_1",
  "CLOSE_1",
  "OPEN_2",
  "STOP_2",
  "CLOSE_2",
  "OPEN_3",
  "STOP_3",
  "CLOSE_3",
  "OPEN_G",
  "STOP_G",
  "CLOSE_G",
  "OPEN_A",
  "STOP_A",
  "CLOSE_A",
  "OPEN_B",
  "STOP_B",
  "CLOSE_B",
  "OPEN_C",
  "STOP_C",
  "CLOSE_C",
  "OPEN_D",
  "STOP_D",
  "CLOSE_D",
  "OPEN_E",
  "STOP_E",
  "CLOSE_E",
  "OPEN_F",
  "STOP_F",
  "CLOSE_F"
};

String receiveMsgBt;
boolean serie, bluetooth;

SoftwareSerial HC06(RECEIVE_BT_RX, SEND_BT_TX);

void setup()
{
  Serial.begin(9600);
  HC06.begin(9600);

  for(int p = 0; p < 30; p++)
  {
    pinMode(pinVolets[p], OUTPUT);
    digitalWrite(pinVolets[p], HIGH);   
  }
}

void loop()
{
  receptionMsg();

  if(receiveMsgBt.length() > 0) {
    actionVolets();
    reinitialisation();
  }
}

void receptionMsg()
{
  if(Serial.available() || HC06.available())
  {
    if(Serial.available()) {
      serie = true;
    }
    else if(HC06.available()) {
      bluetooth = true;
    }

    if(serie) {
      while(Serial.available()) {
        delay(3);
        char c = Serial.read();
        receiveMsgBt += c;
      }
    }
    else if(bluetooth) {
      while(HC06.available()) {
        delay(3);
        char d = HC06.read();
        receiveMsgBt += d;
      }
    }
  }
}

void actionVolets()
{
  for(int i = 0; i < 37; i++)
  {
    if(receiveMsgBt == msg[i])
    {
      for(int a = 0; a < 30; a++)
      {
        boolean etat = voletsAction[i][a];
        digitalWrite(pinVolets[a], etat);
        delay(5);
        if(etat == 0)
        {
          delay(2000);
          digitalWrite(pinVolets[a], HIGH);
        }
      }
    }
  } 
}

void reinitialisation()
{
  receiveMsgBt = "";
  serie        = false;
  bluetooth    = false;
}

Portrait de jc

C'est ça le souci,Je m'étais penché sur ce sujet mais pas assez à ce que je vois. Je pensais que c'était les mêmes utilisées pour le Uno

C'est pas trop grave en tout cas pour le relais en 52 car j'en avais 2 en plus je le ferai débrancher. Et j'ai aussi la PIN, 50 et 51 ça doit être la Même chose.

Je vais faire modifier tout ça.

En tout cas, je vous remercie beaucoup pour l'aide même si ça vous a paru dérisoire Le problème.Ça va me permettre d'avancer plus rapidement. Merci encore

Portrait de jc

Bonjour brossden

En faite,

La lettre G = la télécommande générale pour une véranda
les lettres de A à F = chaque volet individuel de cette véranda
les chiffres de 1 à 3 = 3 autres volets dans une pièce à côté

Chaque télécommande est reliée à 3 relais (ouverture, stop, fermeture) qui agit évidemment sur la télécommande correspondante.
Donc sur la première ligne = fermeture du général de la véranda + fermeture de chaque volet de la 2e pièce individuellement.
Et la 2e ligne l'inverse.

Pour ta seconde réponse,

Sur la logique je comprends mais sur la pratique beaucoup moins…

J'étais parti sur 30 bits car j'ai 30 relais après pour faciliter s'il faut modifier le nombre de bits ce n'est pas trop grave

si je veux fermer certains volets et laisser d'autres ouverts pour la véranda surtout car par exemple pour fermer toute la véranda j'utilise le général (G) et j'ordonne l'ouverture à nouveau de la porte comment ça se passe ?

je comprends vite mais il faut m'expliquer longtemps.

J'espère que j'ai pu être clair.
Merci bien

Portrait de jc

Bonjour,

Merci beaucoup pour ton investissement car je pense qu'il y avait du boulot à revoir. Et en plus, je vois une méthode différente.

Pour la télécommande G elle sert pour le général de la véranda. À l'origine c'était pour me faciliter la vie et de réduire un petit peu le code à l'époque (si je te montre le tout premier tu prendrai vraiment peur même s'il était fonctionnel).

Comme ça je déclarais seulement une télécommande pour fermer toute la véranda et comme ça ça m'évitais de déclarer les 6 autres télécommandes…

En tout cas, avec ton premier code, j'ai pris mon temps, je l'ai décortiqué et je pense avoir tout compris comment ça fonctionnait.

Avec le 2e, je viens de m'y mettre je commence à le comprendre

Tu me parlais aussi les 2 secondes, dans mon code je suis obligé de faire attendre le programme pour que chaque relais s'éteignent un par un car je ne sais pas pourquoi quand j'enclenche les 3 relais de télécommande à la fois, aucune télécommande ne fonctionne. Même en appuyant sur les 3 à la fois manuellement ça ne marche pas… donc je suis obligé de faire un par un.

Pour le Bluetooth aussi je suis tout à fait d'accord avec toi, le problème c'est sa courte portée mais bien pratique quand Internet plante régulièrement ou pas de réseau en général.
C'est pour cette raison que j'ai mis la carte Ethernet, j'ai déjà commencé mais à ma manière donc fonctionnelle mais pas terrible. Je l'admets.
Ça m'a quand même permis de faire des essais du contrôle des volets en vocal (super pratique pour moi) et ça marche à 95 %.