Go Down

Topic: Problème arduino et module Ethernet ENC28J60 (Read 521 times) previous topic - next topic

delhaye

Oct 25, 2013, 04:17 pm Last Edit: Oct 25, 2013, 04:49 pm by delhaye Reason: 1
Bonjour,
Voila enfait j'ai pour projet un genre de multiprise commander par mon portable en utilisant le wifi,
donc PC => WIFI MODEM => ETHERNET => ARDUINO

Donc jusque la tout va bien j'utilise des relais optoculté et tout, tout fonctionne nickel je clique sur un bouton dans un programme qui envoi l'info a l'arduino et allume le relai et si je rappuie il s'éteint, ça marche nickel, je peut le faire des millier de fois tout est ok MAIS dès que je branche n'importe quoi sur un prise, je peut allumer/éteindre le relai 2 ou 3 fois après l'arduino "BUG" il reçoit plus rien ... il faut le reset pour qu'il refonctionne, donc est ce que quelqu'un sait comment résoudre ce problème ?
car la je n'en peu plus, j'ai tout essayé, changer le code (je doit en avoir une dizaine différent), le câblage, l'alimentation, les relais, le modem ...

MERCI d'avance :D

Mon code:
Code: [Select]

#include <EtherCard.h>

// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
// ethernet interface ip address
static byte myip[] = { 192,168,1,5 };
// gateway ip address
static byte gwip[] = { 192,168,1,1 };

byte Ethernet::buffer[500]; // tcp/ip send and receive buffer

// Using a Variable for the Pin, but it is not necessary
const int ledPin2 = 1;
const int ledPin4 = 2;


// Some stuff for responding to the request
char* on = "ON";
char* off = "OFF";
char* statusLabel;
char* buttonLabel;

// Small web page to return so the request is completed
char page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable\r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
 "<head><title>"
   "Arduino 192.168.1.5"
 "</title></head>"
 "<body>"
   "<h3>Arduino 192.168.1.5</h3>"
 "</body>"
"</html>"
;

void setup(){
// Set Pin2 to be an Output
 pinMode(ledPin2, OUTPUT);
// Set Pin4 to be an Output
 pinMode(ledPin4, OUTPUT);

// Scary complex intializing of the EtherCard - I don't understand this stuff (yet0  
 ether.begin(sizeof Ethernet::buffer, mymac);
// Set IP using Static
 ether.staticSetup(myip, gwip);
}

void loop(){
 
 word len = ether.packetReceive();
 word pos = ether.packetLoop(len);

// IF LED2=ON turn it ON
 if(strstr((char *)Ethernet::buffer + pos, "GET /?LED2=ON") != 0) {
     Serial.println("Received ON command");
     digitalWrite(ledPin2, HIGH);
   }

// IF LED2=OFF turn it OFF  
   if(strstr((char *)Ethernet::buffer + pos, "GET /?LED2=OFF") != 0) {
     Serial.println("Received OFF command");
     digitalWrite(ledPin2, LOW);
   }

// IF LED4=ON turn it ON
 if(strstr((char *)Ethernet::buffer + pos, "GET /?LED4=ON") != 0) {
     Serial.println("Received ON command");
     digitalWrite(ledPin4, HIGH);
   }

// IF LED4=OFF turn it OFF  
   if(strstr((char *)Ethernet::buffer + pos, "GET /?LED4=OFF") != 0) {
     Serial.println("Received OFF command");
     digitalWrite(ledPin4, LOW);
   }

//Return a page so the request is completed.

   memcpy_P(ether.tcpOffset(), page, sizeof page);
   ether.httpServerReply(sizeof page - 1);
 
}

B@tto

La prise où est branché quoi ? Le modem et/ou l'arduino ? Déjà essayer différentes combinaisons pour cerner le coupable

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

delhaye

hé bien je branche par exemple une simple lumière ... et si l'arduino est sur le même circuit ou pas, ça ne change rien (Idem pour le modem) et sinon la je vais essayez de le controller par usb voir si c'est l'ethernet qui pose probleme ou l'arduino/relais.

Mais je sais que ce n'est pas facile a comprendre donc voici une image qui sera peut être plus explicite:

delhaye

Bon alors là ... je comprends plus rien, en communication série ça me fait le même coup, donc j'ai essayez de faire une bête lumière branchée sur une prise qui clignote avec un retour dans le moniteur et bien même ça çà bug, le moniteur renvoie directement l'état de la prise quand il n'y a rien brancher dessus, le relais claque, tout est ok mais des que je branche la lumiere le moniteur serie bug et y a plus rien qui bouge (coté communication, la lumière continue a clignoter) j'ai aussi essayez de changer le baud , ça ne change rien :/
je vais revérifié tout le câblage...

B@tto

Regarde du côté de ton alim. Au final si c'est elle qui déconne ça explique tout
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

j'ai connu un cas qui ressemblait à ça.
Un arduino alimenté par un bloc secteur 230v-12v, qui commandait mes volets via des relais 12v. Parfois, le système rebootait pendant la commande des relais: j'avais l'alim qui s'effondrait suffisamment pour que le régulateur embarqué (un 7805) ne sorte plus de 5v.
Problème réglé en utilisant une alim pc (un peu encombrant), puis en remplacant le 7805 par une alim dc-dc et le bloc secteur.

Dans ton code, tu peux ajouter dans le setup une instruction pour t'afficher les causes du reboot (lecture du registre MCUSR):

Code: [Select]


    // read the cause of the reset
    mcusr=MCUSR;
    MCUSR=0;

    Serial.print(F("MCUSR="));
    Serial.println(mcusr,BIN);

    if(bitRead(mcusr,0))
        Serial.println(F("Power-on"));

    if(bitRead(mcusr,1))
        Serial.println(F("External"));

    if(bitRead(mcusr,2))
        Serial.println(F("brow-out"));

    if(bitRead(mcusr,3))
        Serial.println(F("Watchdog"));



Gromain
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

Go Up