Bonjour,
J'ai aujourd'hui un programme sur arduino UNO qui fonctionne, le but était de mesurer une température et d'envoyer les données dans une table Mysql.
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
//#include <Udp.h>
#include <SPI.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 7 // 1-wire sur borne 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// MAC adresse et paramétres pour le réseau
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x02, 0x98 };
byte ip[] = { 10,0,0,20 };
byte passerelle[] = { 10,0,0,1 };
byte masque[] = { 255,255,255,0 };
byte serverip[] = { 10,0,0,60}; // adresse du serveur ou arduino envoi les données
// Création de l'objet serveur Client xxxx (ip, port)
Client client(serverip, 80);
char c;
int i = 0; // comptage du nbre envoi au serveur
// adresses des capteurs de temperatures DS18S20
DeviceAddress insideThermometer = { 0x10, 0xA3, 0x4C, 0x9C, 0x01, 0x08, 0x00, 0x18 };
//DeviceAddress outsideThermometer = { 0x10, 0xA3, 0x3A, 0x9C, 0x01, 0x08, 0x00, 0xE9 };
//DeviceAddress dogHouseThermometer = { 0x10, 0xD2, 0xAD, 0x71, 0x01, 0x08, 0x00, 0x74 };
void setup()
{
//Serial.begin(9600);
sensors.begin(); // ativation capteurs de température
// résolution pour le capteur 10 bits
sensors.setResolution(insideThermometer, 10);
//sensors.setResolution(outsideThermometer, 10);
//sensors.setResolution(dogHouseThermometer, 10);
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip, passerelle, masque);
delay(2000);
//serveurHTTP.begin(); // init du serveur
delay(5000); // Attente mise en marche serveur
// info sur utilisation de la mémoire
//Serial.println("\n[memCheck]");
//Serial.println(freeRam());
}
void loop()
{
if (client.connect())
{
delay(250000); // 1000 = 1 seconde 600000 -> 10 minutes
//Serial.println("Prise de temperature");
i = i +1;
sensors.requestTemperatures();
float tempC = sensors.getTempC(insideThermometer);
if (tempC == -127.00)
{
//Serial.println("Erreur mesure");
}
else
{
delay(1000);
client.print("GET http://xx.xx.xx.xx/arduino/arduino03.php?TEMP=");
//client.print("=");
client.println(tempC);
}
}
else
{
//Serial.println("CONNEXION NON POSSIBLE");
}
if (client.available())
{
char c = client.read();
//Serial.print(c);
}
delay(1000);
client.stop();
client.flush();
}
// lecture mémoire restante
int freeRam () {
extern int __heap_start, *__brkval;
int v;
return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
}
Il reste un petit problème concernant le temps entre chaque mesure, si je mets delay > 250000 le programme ne fonctionne pas. Est-ce que la fonction delay n'autorise pas de plus grandes valeurs ?