Bonjour à tous,
J'ai un programme qui fonctionne avec un Arduino Mega, pour des essais je dois utiliser un Arduino Uno.
Le soucis est que quand j'essais de me connecter au réseau, j'ai ce retour en boucle dans le moniteur série et du coup aucune connexion.
Retour moniteur série :
localIP: 192.168.0.47
subnetMask: 255.255.255.0
gatewayIP: 192.168.0.1 localIP: 192.168.0.47
subnetMask: 255.255.255.0
gatewayIP: 192.168.0.1�localIP: 192.168.0.47
subnetMask: 255.255.255.0
j'utilise pour accéder au réseau un module ENC28J60qui est branché comme suit :
_ CS -> 10
_ SI -> 11
_ SO -> 12
_SCK -> 13
J'utilise également un RTC DS3231branché :
_ SDA -> A4
_ SCL -< A5
Et voici le programme que j'ai simplifier pour l'adapter à la mémoire du Uno :
#include <Wire.h>
#include <simpleRTC.h>
#include <SPI.h>
#include <UIPEthernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
//#include <ConnexParams.h>
EthernetClient client;
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;
unsigned long previousMillis2;
char insert_Sql_1[140];
char Var2; // déclaration de la variable Var2 de type char
IPAddress serverAddress(10, 10, 10, 10);
void setup () {
Serial.begin(9600);
Wire.begin(); // Initialisation de la communication I2C
SPI.begin();
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
IPAddress ip(192, 168, 0, 47);
Ethernet.begin(mac,ip);
Serial.print(F("localIP: "));
Serial.println(Ethernet.localIP());
Serial.print(F("subnetMask: "));
Serial.println(Ethernet.subnetMask());
Serial.print(F("gatewayIP: "));
Serial.println(Ethernet.gatewayIP());
Serial.print(F("dnsServerIP: "));
Serial.println(Ethernet.dnsServerIP());
Serial.print("Connecting to SQL... ");
if (conn.connect(serverAddress, 3306, "User_BDD", "MDP_BDD"))
Serial.println(F("OK."));
else
Serial.println(F("FAILED."));
// create MySQL cursor object
cursor = new MySQL_Cursor(&conn);
}
void loop () {
uint8_t annee1,mois1,jour1,heure1,minute1,seconde1;
int vitChaine = 124;
// Test de létat du bouton pour affecter la variable Var2
Var2 = 'A'; //la broche led passe au niveau haut
// Utilisation de millis pour gérer la cadence d'enregistrement
// 10000 = 10 seconde
static uint32_t ref = 0;
if (millis() - ref >= 10000)
{
ref += 10000;
if (true)// Actualisation du module RTC avant recuperation des données
{
// Affectation des variables date et heure avec le module RTC
annee1 = 1;
mois1 = 1;
jour1 = 1;
heure1 = 1;
minute1 = 1;
seconde1 = 1;
envoi(jour1, mois1, annee1, heure1, minute1, seconde1, vitChaine,Var2);
}
}
}
void envoi(int jour1, int mois1, int annee1, int heure1, int minute1, int seconde1, int Var1, char Var2) {
int interv = 0;
for (int i = 0; i < 3; i++) {
unsigned long currentMillis2 = millis();
if (currentMillis2 - previousMillis2 >= interv) {
// save the last time you updated the DHT values
previousMillis2 = currentMillis2;
if (!conn.connected()) {
if (conn.connect(serverAddress, 3306, "User_BDD", "MDP_BDD")) {
Serial.println(F("connection OK."));
} else {
Serial.println(F("connection FAILED."));
interv = 60000;
return;
}
}
}
}
sprintf(insert_Sql_1, "INSERT INTO u984373661_prem_db.chain_peint (jour,mois,annee,heure,minute,seconde,var_1,var_2) VALUES (%d,%d,%d,%d,%d,%d,%d,'%c')", jour1,mois1,annee1,heure1,minute1,seconde1,Var1,Var2);
Serial.println(insert_Sql_1);
cursor->execute(insert_Sql_1);
if (conn.connected()) {
conn.close();
}
}
Je ne comprend pas pourquoi le programme boucle sur les print des IP réseau, j'en conclue, qu'il ne se connecte pas, mais je n'arrive pas à trouver pourquoi, surtout que le programme fonctionnait avec le Méga.
J'ai peut être loupé quelque chose quand j'ai simplifier mon programme, mais je ne vois pas quoi.
Si j'ai oublié quelque chose n'hesitez pas et merci d'avance.