Pages: [1]   Go Down
Author Topic: Problème arduino et module Ethernet ENC28J60  (Read 391 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-grin

Mon code:
Code:
#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);
  
}
« Last Edit: October 25, 2013, 09:49:39 am by delhaye » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3596
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3596
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Regarde du côté de ton alim. Au final si c'est elle qui déconne ça explique tout
Logged


Pays de la betise
Offline Offline
Sr. Member
****
Karma: 4
Posts: 418
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

    // 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
Logged

"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

Pages: [1]   Go Up
Jump to: