Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA:

Arduino Library für Jeti EX Eigenbau-Telemetrie 05 Mär 2016 23:43 #67

  • wiff
  • wiffs Avatar
  • Offline
  • Expert Boarder
  • Expert Boarder
  • Wolfgang
  • Beiträge: 83
  • Dank erhalten: 25
Liebe Jeti-Eigenbau-Sensor-Kollegen,
ich habe Onki beim Wort genommen und wieder ein wenig mit Bernd's wirklich genialer Library gearbeitet.
Mein Plan ist es ja, ein Sensorsystem zu bauen, das erfasst, welche Akkus geflogen werden und misst, wie stark sie sich während des Fluges erwärmen (fliege mit 2 Packs).

Die Temperaturmessung funktioniert jetzt - ( 1x DS18B20 für den Motor und 2x TI TMP007 Infrarot für die Akkupacks).

Mit dem Auslesen der NFC Sensoren kämpfe ich noch intensiv :evil:
Zuerst gab es Softwareprobleme mit der PN532 Library, die nur mit einem angeschlossenen Reader umgehen konnte. Dank Bernd's Unterstützung (VIELEN DANK!!!) konnte ich das in den Griff kriegen.
Dann bemerkte ich, dass sich die zwei NFC-Reader gegenseitig HF-mässig stören. Danach fand ich heraus - RTFM - read that FINE manual, dass ein PN532 Chip auch zwei NFC Tags gleichzeitig lesen kann. Als das funktionierte, musst ich feststellen, dass die NFC-Tags, die ich verwende, nicht auf metallischem Untergrund (=Akkupack) funktionieren :ohmy: :blink: :angry:
Jetzt hab' ich Tags für Metalloberflächen bestellt - mal sehen, was das bringt.

Hier die Screenshots der Sensordaten. Man sieht hier auch meine "Zwei-Werte-Ausgabe für arme Leute" - Kapazität als Wert vor dem Komma, Identifikationsnummer des Packs nach dem Komma.






Viele Grüsse,
Wolfgang
Wolfgang
Anhänge:
Folgende Benutzer bedankten sich: Sepp62

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von wiff.

Arduino Library für Jeti EX Eigenbau-Telemetrie 05 Mär 2016 23:46 #68

  • wiff
  • wiffs Avatar
  • Offline
  • Expert Boarder
  • Expert Boarder
  • Wolfgang
  • Beiträge: 83
  • Dank erhalten: 25

Hier noch ein Screenshot
Wolfgang
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von wiff.

Arduino Library für Jeti EX Eigenbau-Telemetrie 07 Mär 2016 07:19 #69

  • onki
  • onkis Avatar
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 2286
  • Dank erhalten: 791
Hallo Wolfgang,

sehr interessant die Umsetzung mit dem RFID-Tag am Akku. Bin damit auch im Job z.T. zu gange und finde den Ansatz längst überfällig.
ELV hat das ja bei Ladegeräten schon vor Jahren probiert, da waren die Kunden aber noch nicht so weit wie auch die Tags, die noch keinen Speicher hatten bzw. noch nicht bezahlbar waren.
Ich finde das die perfekte Lösung, sofern die Ladegeräte auch mal mit den Daten umgehen können und es so eine umfassende Art wireless BID gibt.
Hältst du dich beim Speicheraufbau in etwa an die Struktur der BID-Chips?
Hab hier auch noch so einen 1-Wire Temperatursensor herumliegen vom RasPi. Den könnte ich dann auch noch einsetzen.

Bin am WE mit meinem Projekt nicht viel weiter gekommen wegen eines kleinen Wasserschadens sowie Werkstatt-Aufräumarbeiten.

Gruß
Onki
Gruß aus dem Nordschwarzwald
Rainer aka Onki
www.onki.de
gepostet unter Verwendung von 100% recycelter Elektronen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 07 Mär 2016 11:35 #70

  • wiff
  • wiffs Avatar
  • Offline
  • Expert Boarder
  • Expert Boarder
  • Wolfgang
  • Beiträge: 83
  • Dank erhalten: 25
Hallo Onki,
der wirkliche Gag der NFC-Tag ist, dass man dort Daten lesen und schreiben kann und das ohne Kabel und Batterie!

Ich verwende NDEF, ein genormtes Format, um die Daten auf einem NFC-Tag abzulegen. Dadurch kann man die Informationen theoretisch auch mit anderen NFC-fähigen Geräten auslesen - z.B. mit einem Handy (mit Android geht das - hab's aber noch nicht getestet, weil alle in der Family iPhones haben, bei dem Apple den NFC-Chip kastriert hat).
gototags.com/technology/nfc/ndef/

Das sind übrigens die Tags, die ich bestellt habe:
rapidnfc.com/item/405/on_metal_nfc_tags_...ro_blue_logo_ntag213

Welche Daten man im NDEF Format ablegt, ist frei wählbar. Dem alten chinesischen Sprichwort "gut geklaut ist halb gewonnen" folgend, übernehme ich natürlich gerne die BID-Datenstruktur...
Hast Du das irgendwelche Hinweise auf eine gute Doku ?

Gruss, Wolfgang
Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 07 Mär 2016 13:41 #71

  • onki
  • onkis Avatar
  • Offline
  • Platinum Boarder
  • Platinum Boarder
  • Beiträge: 2286
  • Dank erhalten: 791
Hallo Wolfgang,

ich bin auch NFC Fan und hab auch was bei uns in der Firma diesbezüglich "erfunden".
Mein Traum wäre, wenn die Tags im Stecker selber währen, dann könnte man sich einen Handgriff beim Laden und Nutzen sparen.

Wegen BID hab ich keine Doku, ich hab aber eine kleine Auslesesoftware aus dem RC-Network bei mir am Laufen.
#include <Wire.h>
 
 
    #define BID_ADDRESS (0xA << 3 | 0x0)
 
    int bid_year, bid_month, bid_day;
    int bid_cells, bid_acctyp, bid_cap_h, bid_cap_l, bid_chcurr_h, bid_chcurr_l, bid_dchcurr_h, bid_dchcurr_l;
    int bid_actc_h, bid_actc_l, bid_actdc_h, bid_actdc_l, bid_maxc_h, bid_maxc_l;
    int bid_chcnt_h, bid_chcnt_l;
 
    // EEPROM Routine from http://www.arduino.cc/playground/Code/I2CEEPROM
    // adopted to read EEPROMS with 1 Byte address
    byte i2c_eeprom_read_byte( int deviceaddress, byte eeaddress ) {
      byte rdata = 0xFF;
      Wire.beginTransmission(deviceaddress);
    //  Wire.send((int)(eeaddress >> 8)); // MSB
    //  Wire.send((int)(eeaddress & 0xFF)); // LSB
      Wire.write ((int)(eeaddress));
      Wire.endTransmission();
      Wire.requestFrom(deviceaddress,1);
      if (Wire.available()) rdata = Wire.read();
      return rdata;
    }
 
    void setup() {
      // ...
      Wire.begin();   // start Wire library as I2C-Bus Master
      Serial.begin(9600); //
 
        int i;
        byte bid_data;
 
        Serial.print("BID-Adresse: ");
        Serial.println(BID_ADDRESS, HEX);   
 
      Serial.println("Start EEPROM_READ");
    for (i = 0; i <= 255; i++){
        Serial.print(i, DEC);
        Serial.print(": ");
        bid_data = i2c_eeprom_read_byte( BID_ADDRESS, i );
        Serial.println(bid_data, HEX);
          switch (i) {
        case 2:
          //Actual Chaged Capacity (mAh) High Byte
          bid_actc_h = bid_data;
          break;
        case 3:
          //Actual Chaged Capacity (mAh) Low Byte
          bid_actc_l = bid_data;
          break;
        case 4:
          //Maximum Chaged Capacity (mAh) High Byte
          bid_maxc_h = bid_data;
          break;
        case 5:
          //Maxiimum Chaged Capacity (mAh) Low Byte
          bid_maxc_l = bid_data;
          break;
        case 6:
          //Charging Cycles High Byte
          bid_chcnt_h = bid_data;
          break;
        case 7:
          //Charging Cycles Low Byte
          bid_chcnt_l = bid_data;
          break;
 
        case 64:
          //Year
          bid_year = bid_data;
          break;
        case 65:
          //Month
          bid_month = bid_data;
          break;
        case 66:
          //Day
          bid_day = bid_data;
          break;
        case 67:
          //Accu Type
          bid_acctyp = bid_data;
          break;
        case 68:
          //Cells
          bid_cells = bid_data;
          break;
        case 69:
          //Capacaity(mAh) High Byte
          bid_cap_h = bid_data;
          break;
        case 70:
          //Capacaity(mAh) Low Byte
          bid_cap_l = bid_data;
          break;
        case 71:
          //Charg. Current(mA) High Byte
          bid_chcurr_h = bid_data;
          break;
        case 72:
          //Charg. Current(mA) Low Byte
          bid_chcurr_l = bid_data;
          break;
        case 73:
          //Discharg. Current(mA) High Byte
          bid_dchcurr_h = bid_data;
          break;
        case 74:
          //Discharg. Current(mA) Low Byte
          bid_dchcurr_l = bid_data;
          break;
      }
 
        delay(5);
    }
      Serial.println("End EEPROM_READ");
 
 
    Serial.println("BID Daten:");
    Serial.print("Datum: ");
    Serial.print(bid_day);
    Serial.print(".");
    Serial.print(bid_month);
    Serial.print(".");
    Serial.print(2000 + bid_year);
    Serial.println("");
 
    Serial.print("Akku-Typ: ");
          switch (bid_acctyp) {
            case 0:
              Serial.print("NiCd");
              break;
            case 1:
              Serial.print("NiMH");
              break;
            case 2:
              Serial.print("LiPo");
              break;
            default:
              Serial.print(bid_acctyp);
              Serial.print("?");
              break;
          }
    Serial.println("");
 
    Serial.print("Zellenzahl: ");
    Serial.print(bid_cells);
    Serial.print(" -> ");
          switch (bid_acctyp) {
            case 0:
              Serial.print(1.2 * bid_cells);
              break;
            case 1:
              Serial.print(1.2 * bid_cells);
              break;
            case 2:
              Serial.print(3.7 * bid_cells);
              break;
          }
    Serial.print(" V");
    Serial.println("");
 
    Serial.print("Kapazitaet: ");
    Serial.print(bid_cap_h * 256 + bid_cap_l);
    Serial.print(" mAh");
    Serial.println("");
 
    Serial.print("Ladestrom: ");
    Serial.print(bid_chcurr_h * 256 + bid_chcurr_l);
    Serial.print(" mA");
    Serial.println("");
 
    Serial.print("Entladestrom: ");
    Serial.print(bid_dchcurr_h * 256 + bid_dchcurr_l);
    Serial.print(" mA");
    Serial.println("");
 
 
    Serial.print("akt. Lad.: ");
    Serial.print(bid_actc_h * 256 + bid_actc_l);
    Serial.print(" mAh");
    Serial.println("");
 
    Serial.print("max. Lad.: ");
    Serial.print(bid_maxc_h * 256 + bid_maxc_l);
    Serial.print(" mAh");
    Serial.println("");
 
    Serial.print("Ladezyklen: ");
    Serial.print(bid_chcnt_h * 256 + bid_chcnt_l);
    Serial.println("");
 
      // ...
    }
 
    void loop() {
      // ...
      // ...
    }
 
 

Vielleicht hilft dir das weiter.

Gruß
Onki
Gruß aus dem Nordschwarzwald
Rainer aka Onki
www.onki.de
gepostet unter Verwendung von 100% recycelter Elektronen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Arduino Library für Jeti EX Eigenbau-Telemetrie 07 Mär 2016 20:12 #72

  • wiff
  • wiffs Avatar
  • Offline
  • Expert Boarder
  • Expert Boarder
  • Wolfgang
  • Beiträge: 83
  • Dank erhalten: 25
Hallo Onki,
danke für den Code - das hilft wirklich.
Deine Ideen werden mir allerdings (fast) schlaflose Nächte bereiten :pinch: - hab' soeben das entdeckt:
apollo.open-resource.org/mission:log:201...icharger-data-logger (genau diesen Lader verwende ich)

Damit könnte man z.B. einen Raspi nehmen und ein NCF Board und den Lader anschliessen. Du hättest damit ein in sich geschlossenes System, mit alle relevanten Daten Deiner Akkupacks verwaltet werden können.

Durch den NFC-Reader im Flieger weiss man, welcher Akku geflogen wurde, der Jeti-Sender zeichnet Leistungsentnahme und Temperatur auf, der Raspi, der mit dem Lader verbunden ist, weiss, welcher Akku mit wieviel Wh bzw. Ah geladen wurde!
All diese Info kannst Du auf den NFC Tag des jeweiligen Akkus zurückschreiben.

Gruss, Wolfgang
Wolfgang

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von wiff.
Ladezeit der Seite: 0.296 Sekunden
Powered by Kunena Forum