Bonjour
J'ai développé un sketch pour datalogger avec report sur COSM, cela fonctionne correctement.
Je souhaite également garder une copie des mesures sur une carte SD en local avec horodatage.
J'ai inclus la librairie du DS1307 ......pas de pb cela fonctionne.
Mais dès que je veux insérer la librairie SD plus rien cela bloque, aucun message sur le port série.
Quelqu'un a t il un idée?????
Ma config: (Arduino uno + shield ethernet avec SD + Module RTC de soon...)
#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <EmonLib.h>
#include <Cosm.h>
#include <Wire.h>
#include "RTClib.h"
#include <SD.h>
EnergyMonitor ct1, ct2; // Create two instances
// MAC address for your Ethernet shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Initialisation de l'adresse IP locale de mon serveur WEB Arduino que j'ai choisie
byte ip[] = { 192,168,1, 125 };
// Your Cosm key to let you upload data
char cosmKey[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
// Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield)
int sensorPin = 2;
// Define the strings for our datastream IDs
char sensorId1[] = "Courant_H_CH";
char sensorId2[] = "Courant_CH";
char sensorId3[] = "P_total_HP";
char sensorId4[] = "P_total_HC";
char bufferId[] = "Puissance_instantanee";
CosmDatastream datastreams[] = {
CosmDatastream(sensorId1, strlen(sensorId1), DATASTREAM_FLOAT),
CosmDatastream(sensorId2, strlen(sensorId2), DATASTREAM_FLOAT),
CosmDatastream(sensorId3, strlen(sensorId3), DATASTREAM_FLOAT),
CosmDatastream(sensorId4, strlen(sensorId4), DATASTREAM_FLOAT),
CosmDatastream(bufferId, strlen(bufferId), DATASTREAM_FLOAT),
};
// Finally, wrap the datastreams into a feed
CosmFeed feed(xxxxxx, datastreams, 5 /* number of datastreams */);
//Déclaration des variables Emon
double Irms1 =0;
double Irms2 =0;
double IPh1 =0;
double IPh2 =0;
double Php =0; //indice compteur de départ heure pleine
double Phc =0; //indice compteur de départ heure creuse
double Pinst =0;
double reel;
int val; // gestion heure creuse heure pleine
EthernetClient client;
CosmClient cosmclient(client);
RTC_DS1307 RTC;
const int chipSelect = 4;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(10, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(DATE, TIME));
}
DateTime now = RTC.now();
Serial.print("Start Cosm le:...");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" a ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
// Initialisation de la connexion Ethernet
Ethernet.begin(mac, ip);
{
ct1.currentTX(1, 10); // CT channel 1, calibration.pin 0
ct2.currentTX(2, 10); // CT channel 2, calibration.pin 1
}
}
void loop() {
Irms1 = ct1.calcIrms(10000); // Calculate RMS current 1
Irms2 = ct2.calcIrms(10000); // Calculate RMS current 2
IPh1=(Irms110);
IPh2=(Irms210);
Pinst=(((IPh1+IPh2)*230)/1000);
Php=Php+(Pinst/60);
Phc=Phc+(Pinst/60);
//Tansfert des valeurs dans les datastreams
datastreams[0].setFloat(IPh1);
datastreams[1].setFloat(IPh2);
datastreams[2].setFloat(Php);
datastreams[3].setFloat(Phc);
datastreams[4].setFloat(Pinst);
Serial.print("I voie 1: ");
Serial.print(datastreams[0].getFloat());
Serial.println(" A");
Serial.print("I voie 2 : ");
Serial.print(datastreams[1].getFloat());
Serial.println(" A");
Serial.print("Puissance instantanee : ");
Serial.print(datastreams[2].getFloat());
Serial.println(" kW");
Serial.print("Puissance HP : ");
Serial.print(datastreams[3].getFloat());
Serial.println(" kW");
Serial.print("Puissance HC : ");
Serial.print(datastreams[4].getFloat());
Serial.println(" kW");
Serial.println("Transfert vers Cosm");
int ret = cosmclient.put(feed, cosmKey);
Serial.print("cosmclient.put returned ");
Serial.println(ret);
Serial.println();
delay(60000);
}
Berny