Stap 2: Installeer deze Arduino Sketch
Dit Arduino schets (en de meeste van de informatie in dit bericht) is van https://github.com/xxv/tracer maar ze gebruikt een serial baud-rate van 57600, ik moest het dalen tot 9600 om te werken aan mijn Arduino/computer-combinatie.
Ik had enkele problemen met kopiëren en plakken de schets hieronder vanwege niet-ondersteunde tekens, dus als je eventuele fouten met de schets krijg het origineel van de github site.
/*
* Een interface naar de Tracer zonne-regulator. * Communiceren op een manier vergelijkbaar met de weergave van de MT-5 * /
#include
SoftwareSerial myserial (10, 11); RX, TX
uint8_t start [] = {0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xEB, 0x90, 0xEB, 0x90, 0xEB, 0x90}; uint8_t id = 0x16; uint8_t cmd [] = {0xA0, 0x00, 0xB1, 0xA7, 0x7F};
uint8_t buff [128];
void setup {Serial.begin(9600);
myserial.begin(9600); }
zweven to_float (uint8_t * buffer, int offset) {niet-ondertekende korte volledig = buffer [offset + 1] << 8 | buff [offset];
retourneren volledige / 100.0; }
void loop {Serial.println ("het lezen van Tracer');
myserial.write (start, sizeof(start)); myserial.write(id); myserial.write (cmd, sizeof(cmd));
int lezen = 0;
voor (int i = 0; ik < 255; i ++) {als (myserial.available()) {buff [Lees] = myserial.read(); Lees ++;}}
Serial.Print ("Lees"); Serial.Print(Read); Serial.println ("bytes");
for (int i = 0; ik < lezen; i ++) {Serial.print (buff [i], HEX); Serial.Print("");}
Serial.println();
zweven batterij = to_float (buff, 9); zweven pv = to_float (buff, 11); 13-14 gereserveerde float load_current = to_float (buff, 15); zweven over_discharge = to_float (buff, 17); zweven battery_max = to_float (buff, 19); 21 belasting aan/uit / / 22 overbelasting Ja/Nee / / 23 belasting short Ja/Nee / / 24 voorbehouden / / 25 batterij overbelasting / / 26 over kwijting Ja/Nee uint8_t volledige = buff [27]; uint8_t opladen = buff [28]; int8_t battery_temp = buff [29] - 30; zweven charge_current = to_float (buff, 30);
Serial.Print ("Load is"); Serial.println (buff [21]? "aan": "off");
Serial.Print ("belasting:"); Serial.println(load_current);
Serial.Print ("batterijniveau:"); Serial.Print(Battery); Serial.Print("/"); Serial.println(battery_max);
Serial.Print ("batterij volledig:"); Serial.println (volledig? "ja": "nee");
Serial.Print ("accutemperatuur:"); Serial.println(battery_temp);
Serial.Print ("PV spanning:"); Serial.println(PV);
Serial.Print ("opladen:"); Serial.println (opladen? "ja": "nee");
Serial.Print ("gratis stroom:"); Serial.println(charge_current);
delay(1000); }