Hallo zusammen,
nach dem einfügen des Thingspeak Teiles in mein Projekt blink jetzt die LED am Pin 13 aber wieso und Daten bekomme ich auch nicht in das Thingspeak geschrieben, hat wer eine Lösung oder Idee?
Die Daten aus dem Solarregler bekomme ich ausgelesen und via RS auch angezeigt.
verwendet wird ein Arduino Mega 2560 und ETH Shield
#include <ThingSpeak.h>
#include <ModbusMaster.h> //Modbus für Traver3210A
#include <Ethernet.h> //Netzwerk
#include <SPI.h> // SPI für Ethernetboard
#define MAX485_DE 17 //freigabe MAX485
#define MAX485_RE_NEG 16 //freigabe MAX485
byte mac[] = {0x00, 0x07, 0x7E, 0x00, 0x00, 0xED};
EthernetClient client;
IPAddress ip(192, 168, 1, 10);
ModbusMaster node; // instantiate ModbusMaster
//Thingspeak einstellungen
unsigned long myChannelNumber = 123456;
const char * myWriteAPIKey = "XXXXXXXXXXX";
void preTransmission()
{
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
}
void postTransmission()
{
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
}
void setup()
{
Ethernet.begin(mac, ip); // initialize Ethernet device
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
// Init in receive mode
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial.begin(9600); // RS232 communication @ 9600 baud
Serial1.begin(115200); // Modbus communication @ 115200 baud
node.begin(1, Serial1); // Modbus slave ID 1
// Callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
delay(5000);
}
bool state = true;
void loop()
{
uint8_t result;
uint16_t data[6];
// Toggle the coil at address 0x0003 (Manual Load Control)
result = node.writeSingleCoil(0x0003, state);
state = !state;
// Read 16 registers starting at 0x3100)
result = node.readInputRegisters(0x3100, 16);
if (result == node.ku8MBSuccess)
{
float U_Solar = (node.getResponseBuffer(0x00) / 100.0f); // Spannung der Solarzellen
float I_Solar = (node.getResponseBuffer(0x01) / 100.0f); //Strom der Solarzellen
float U_Bat = (node.getResponseBuffer(0x04) / 100.0f); //Batteriespannung
float I_Lade = (node.getResponseBuffer(0x05) / 100.0f); //Ladestrom Batterie
float I_Last = (node.getResponseBuffer(0x0D) / 100.0f); // Laststrom Batterie
float LastWatt = (node.getResponseBuffer(0x0E) / 100.0f); // Last Watt
float BatterieTamp = (node.getResponseBuffer(0x10) / 100.0f); // Batterie Temperatur
float BatterieStrom = ((node.getResponseBuffer(0x05) / 100.0f) - (node.getResponseBuffer(0x0D) / 100.0f)); // Ladestrom - Laststrom
Serial.print("Solarspannung: ");
Serial.println (U_Solar );
Serial.print("Solarstrom: ");
Serial.println (I_Solar );
Serial.print("Batteriespannung: ");
Serial.println(U_Bat );
Serial.print("Ladestrom: ");
Serial.println(I_Lade );
Serial.print("Laststrom: ");
Serial.println(I_Last);
Serial.print("Last Watt: ");
Serial.println(LastWatt);
Serial.print("Batterie Temp: ");
Serial.println(BatterieTamp);
Serial.print("Batteriestrom: ");
Serial.println (BatterieStrom);
ThingSpeak.setField(1,U_Bat);
// ThingSpeak.setField(2,BatterieStrom);
//ThingSpeak.setField(3,U_Sollar);
//ThingSpeak.setField(4,I_Lade);
//ThingSpeak.setField(5,I_Last);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); //Daten schreiben
}
delay(1000);
}
Gruß Markus