Realtime Ladeparameter und Zustand aus der Ferne

Serienmäßig ist dir der Renault ZOE zu langweilig? Hier geht es um besser, schneller, weiter, schöner

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon UliZE40 » Di 22. Aug 2017, 22:30

Den Zigarettenanzünder wollte ich freihalten um daran "normale" Verbrauchen wie USB-Lader fürs Smartphone etc. betreiben zu können. Dafür ist das R-Link ja leider zu schwach. Jedenfalls will das iPhone daran nicht.
Notfalls werde ich natürlich dort vom USB-Lader eine Buchse belegen.

Aber wie gesagt war ja die Idee diseses Freds dass das Teil auch bei abgeschaltetem Fahrzeug (möglichst stromsparend) läuft um per GSM zu kommunizieren. Zumindest während des Ladens müsste es laufen. Definiert abschalten lassen über den CAN-Bus währe auch kein Problem. Notfalls sogar vollständig via Relais. Nur wäre es halt auch nett es wieder bei Bedarf von selbst aufwachen zu lassen ohne manuelle Tastenbetätigung.

Code: https://github.com/premultiply/ZOEdisplay/blob/master/main.ino
Da lässt sich noch sehr viel verschönern, kürzen und optimieren. Mir war erstmal die prinzipielle Funktion, die Daten und deren korrekte Darstellung wichtig. Ideen und Pull-Requests sind natürlich willkommen.

Hardware:
Arduino Uno https://www.reichelt.de/?ARTICLE=119045
CAN-BUS Shield V1.2 https://www.seeedstudio.com/CAN-BUS-Shield-V1.2-p-2256.html
Arduino LCD KeyPad Shield (SKU: DFR0009) https://www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)
ODB-Kabel https://www.reichelt.de/KFZ-Zubehoer/AVG-OBD2-RS232/3/index.html?ARTICLE=75389
UliZE40
 
Beiträge: 729
Registriert: Mi 16. Nov 2016, 21:14

Anzeige

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon Berndte » Mi 23. Aug 2017, 04:15

Hier mal die Helligkeitssteuerung mittels LDR.
Simple und effektiv... irgendwo habe ich auch noch ein Video davon hier liegen... mal suchen.
Code: Alles auswählen
/*                _______         _______
         GND ----|__10k__|---o---|__LDR__|---- +5V (Arduino)
                             |
                             |
                             o---------------- AnalogInput
*/

int eingang = A1;
int ausgang = 10;
int sensorWert;
int lcdBacklight = 255;


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);


void setup()
{
Serial.begin(9600);
pinMode (ausgang, OUTPUT);
analogWrite(ausgang, lcdBacklight);

// LCD Display 4x20 Zeichen
lcd.begin(20, 4);
lcd.setCursor(0,0); lcd.print("Display READY"); delay (1000); lcd.clear(); delay (500);


}

void loop(){
 
  sensorWert =analogRead(eingang);

  if (sensorWert > 800) {
    lcdBacklight = 255;
  }
  else{
    lcdBacklight = map (sensorWert, 0, 800, 5, 255);
    analogWrite(ausgang, lcdBacklight);
  }

 
  lcd.setCursor(0,0); lcd.print("Helligkeit  : "); if(sensorWert<10) lcd.print(" "); if(sensorWert<100) lcd.print(" "); if(sensorWert<1000) lcd.print(" "); lcd.print(sensorWert);
  lcd.setCursor(0,1); lcd.print("lcdBacklight:  "); if(lcdBacklight<10) lcd.print(" "); if(lcdBacklight<100) lcd.print(" "); lcd.print(lcdBacklight);
}
Sep 2014: Renault Zoe
Nov 2014: Eigene 43kW Ladesäule
Okt 2015: 2x 43kW und 1x 14kW am Arbeitsplatz
Dez 2015: Kangoo Maxi und Verkauf des letzten Verbrenners -> jetzt 100% elektrisch!
Mär 2016: Reservierung Tesla Modell = mit Nummer 11 in Hamburg
Benutzeravatar
Berndte
 
Beiträge: 5743
Registriert: Sa 30. Aug 2014, 19:46
Wohnort: Oyten (bei Bremen)

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon UliZE40 » Mi 23. Aug 2017, 14:16

Ich hab noch paar Screens mehr eingefügt, kleine Bugs gefixt und etwas aufgeräumt. Jetzt fällt mir langsam nix mehr ein. :roll:
UliZE40
 
Beiträge: 729
Registriert: Mi 16. Nov 2016, 21:14

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon erich » Mi 1. Nov 2017, 16:39

Nach langer Zeit bin ich mal wieder zum Basteln gekommen.
Das mit dem 12V Akku leer saugen war bisher so eine Sache, zu der ich auch noch nicht so die perfekte Lösung hatte.

Als ich nun das tolle Tool von Uli mal ausprobiert habe und es echt toll läuft hatte ich einen Geistesblitz.

Weg vom Arduino und hin zum ESP32, denn er hat WLAN an Bord!

ESP32 (Die gibt es inzwischen auch günstiger, aber ich hatte das noch rum liegen)
https://www.ebay.de/itm/HIMALAYA-ESP32-Dev-Board-V1-1-WiFi-Bluetooth-with-CP2102-USB-to-Serial-CP06072/272544725911

Somit habe ich versucht ein günstiges CAN-Modul mit dem ESP32 zum reden zu bringen.
https://www.ebay.de/itm/3x-MCP2515-CAN-Bus-V2-0B-Module-TJA1050-Receiver-SPI-Module-for-Arduino-51-TE534/381699929665 (3 Stück für ca 8€)

Nach ein wenig hin und her um die passenden Pins zu finden hatte ich die CAN-Nachrichten in einem Beispiel-CAN-Recieve-Sketch in der Seriellen Konsole.
Bild

Als nächstes habe ich noch ein paar Zeilen für WLAN und BLYNK hinzu gefügt und zum testen die CAN-ID auf einen virtuellen Blynk-Pin geschrieben.

Die ID habe ich mir als "proof" in der BlynkApp mit einer Gauge anzeigen lassen.
Und siehe da, mit jeder gelesenen ID änderte sich die Anzeige im Handy.
https://farm5.staticflickr.com/4480/37380278504_6457f2ce02_z.jpg

Das schöne an dem ESP32 ist, dass er auch noch einen AkkuAnschluss für eine Lipo-Zelle hat.
Wenn der ESP32 am Strom hängt, dann wird der Akku geladen. Und wenn die Zündung aus ist, dann wird er vom Akku weiter versorgt. Wenn die Akkugröße für 12 Stunden reicht, dann passt das locker für alle Ladevorgänge.

Somit ist dann nur noch das Problem mit dem WLAN unterwegs. Das plane ich entweder mit einem alten Handy im "personal hotspot" Modus oder mit einem kleinen Hotspot-Router.
[url]https://www.amazon.de/Huawei-E5330Bs-2-Mobile-Hotspot-Router-Weiß/dp/B00INXBW3U[/url]
Der hat auch einen Akku drin und müsste auch nur die 12 Stunden durchhalten.

Hier der Test-Scatch mit dem ESP32 dem CanBus-Modul und Blynk:
Code: Alles auswählen
#include <Arduino.h>

/*
Can-Bus Interface mit ESP32

Int = (wird nicht gebraucht)
SCK = IO 18
SI  = IO 23
SO  = IO 19
CS  = IO 5
GND = GND
VCC = 5V
*/

#include <SPI.h>
#include "mcp_can.h"
const int SPI_CS_PIN = 5;
const int LED        = 2;
boolean ledON        = 1;
MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "BLYNK_ID";
char ssid[] = "WLAN_ID";
char pass[] = "WLAN_PASS";

void setup()
{
    Serial.begin(115200);
    pinMode(LED,OUTPUT);

    Blynk.begin(auth, ssid, pass);

    while (CAN_OK != CAN.begin(CAN_500KBPS))              // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println("Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
}


void loop()
{
    Blynk.run();

    unsigned char len = 0;
    unsigned char buf[8];

    if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
    {
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        unsigned char canId = CAN.getCanId();

        Serial.println("-----------------------------");
        Serial.println("get data from ID: ");
        Serial.println(canId);

        Blynk.virtualWrite(10, canId); // hier die ID an Blynk Pin Virtual10 senden

        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print(buf[i]);
            Serial.print("\t");
            if(ledON && i==0)
            {

                digitalWrite(LED, buf[i]);
                ledON = 0;
                delay(500);
            }
            else if((!(ledON)) && i==4)
            {

                digitalWrite(LED, buf[i]);
                ledON = 1;
            }
        }
        Serial.println();
    }
}


Zu Hause im WLAN geht es tadellos. Somit sollte es unterwegs an einem Hotspot auch gehen.

Ich muss mich nun mal in das Filter-setzen einlesen und dann die paar Blynk-Zeilen versuchen mit ein zu bauen.
Das lokale LCD braucht man dann nicht mehr. Denn in der BlynkApp hat man ja alle Werte.
Evtl Ulis Script abspecken, denn da ist ja alles schon schön drin! ;-)

Evtl muss man noch das senden etwas bremsen. Es muss ja nicht der komplette Stream übertragen werden.
Alle Minuten einen Datensatz reicht sicher auch, um das laden des Akkus verfolgen zu können.
Oder alle 5 Minuten mit Wlan-zwischendrin-ausschalten zum Strom sparen.

...Erich

P.S. EDIT
Hab bei dem GSM Sim800l Modul nun noch was gefunden, dass man das Teil schlafen schicken kann.
Werde damit auch noch rumprobieren. Damit könnte ich dann das externe GSM Gateway umgehen und das Wlan könnte ich mir auch sparen. Dann brauche ich den ESP32 "nur" noch wegen der Rechenpower und Geschwindigkeit. Was aber alleine schon ein Vorteil dem Arduino gegenüber ist.
Arduino = 16mHz https://en.wikipedia.org/wiki/Arduino
Esp32 = 160/240mHz dualcore https://en.wikipedia.org/wiki/ESP32

Ein GPS soll ja auch noch mit rein zum Tracking und zum Parkplatzfinden.
Sendeintervalle wären dann in Etwa so angedacht...
Wenn die Zündung an ist ~ alle 20 Sek.
Wenn die Zündung aus ist aber geladen wird ~ alle 2:30 Minuten
Wenn die Zündung aus ist und nicht geladen wird ~ alle 15 Minuten
Jeweils ein Datensatz mit Kilometerstand, GPS-Koordinaten, SOC, realSOC, Reichweite, aktuelle Ladeleistung, (eco Werte, SOH) oder was sonst noch interessant sein könnte...
Primär soll er am Zündungs geschalteten 12V hängen und den Rest von seinem Akku bestreiten.
Hat die 12V Bordsteckdose beim Laden strom oder ist sie aus? Muss ich echt mal nachschauen beim nächsten laden.
Zuletzt geändert von erich am Mi 1. Nov 2017, 21:20, insgesamt 1-mal geändert.
// Smart-ED mit Kaufakku aber ohne 22kW Lader. & Renault Zoe
erich
 
Beiträge: 72
Registriert: Fr 20. Mai 2016, 14:37
Wohnort: Nürnberg, Franken

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon TobsCA! » Mi 1. Nov 2017, 21:17

für die Stromversorgung könnte man auch eine Powerbank mit Pass Through benutzen.
Z.b. eine Zendure A8
Bringt auch den Luxus das man sein Handy angeschlossen im Auto lassen kann damit es weiter geladen wird.
Und für den Urlaub nimmt man das Teil dann mit und hat Powerbank und Verteiler ( 4x USB, 1 davon Quickcharge).

Mfg
Twizy Sport Black 06/15 - 03/17 20961km
Q210 Zen in Perlmutt seit 03/17 aktuell 67 000km, 12 000 von mir
SXT Light Eco seit 05/17
Benutzeravatar
TobsCA!
 
Beiträge: 423
Registriert: Do 25. Jun 2015, 20:22
Wohnort: Leonberg

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon UliZE40 » Mi 1. Nov 2017, 23:16

Eine stabile Stromversorgung (ohne Hardwareumbauten am Fahrzeug) bekommt man nur über den USB-Anschluss vom R-Link hin. Die 12V-Dose wird häufiger und schneller abgeschaltet. Der R-Link-USB bleibt beim laden dauerhaft an und wird sonst erst ca. 10 Minuten nach verlassen des Fahrzeugs abgeschaltet. Wenn man auf die Meldungen im Tiefschlaf verzichten kann braucht man somit auch keinen zusätzlichen Akku. Ich frage mich auch wozu das gut sein sollte, da sich das Fahrzeug weder bewegt noch sich an den Zuständen etwas ändert. Ausserdem wird auch auch der CAN-Bus vermutlich in diesem Zustand vollständig ausser Betrieb sein oder es werden sich zumindest nur ganz wenige Steuergeräte darauf tummeln.
Ansonsten: 12V-Dauerstrom gibt es direkt am ODB-Stecker. Mit einer kleinen Batteriewächterschaltung kann man somit auch den ohnehin vorhandenen Fahrzeugakku nutzen.
UliZE40
 
Beiträge: 729
Registriert: Mi 16. Nov 2016, 21:14

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon item » Mo 18. Dez 2017, 10:56

Habt ihr angedacht das ganze auch anderen technisch nicht ganz so geschickten Zoe Besitzern anzubieten?
Meine Begehrlichkeit wäre geweckt :-)
Mercedes BEV (seit 03/2016 - 64.000km) und Zoe Q90 (seit 12/2017)
item
 
Beiträge: 69
Registriert: Fr 13. Nov 2015, 09:48

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon UliZE40 » Mo 25. Dez 2017, 10:43

Das Teil kannst du dir aus Arduino-Standardbauteilen selbst zusammenzimmern und die Software von mir draufladen.

Kleines Update:
Ich hab mal begonnen vor ein paar Tagen einen internen Energiezähler mit integriertem Kostenrechner zu implementieren.
So kann man an der Ladesäule sofort sehen wie teuer es (ungefähr) wird. Den kWh-Preis kann man direkt am Display einstellen. Funktioniert schon recht gut.

IMG_2810.JPG
Bildschirmansicht zur Energiemessung beim ZOE-Laden

Oben links steht die Differenz an hinzugewonnener Akkukapazität in kWh (hier 0.0 da nicht am Fahrzeug angeschlossen), oben rechts der Netzbezugsenergiezähler, links unten der editierbare kWh-Preis und unten rechts der daraus errechnete Energiepreis.

Ausserdem gibts inzwischen auch eine Ladestoppuhr (für Zeittarife) und Ladeschlussprognose als Zeitpunktangabe (erspart das Kopfrechnen wan man die ZOE ggf. wieder abholen muss und speichert zudem den tatsächlichen Ladeschlusszeitpunkt), die Aktivität des PTC-Zuheizers wird korrekt angezeigt und ein eigener Innenraumtemperatursensor wurde hinzugefügt (DS18x20, hatte ich noch rumliegen). Ausserdem wurde die Bildschirmseitenreihenfolge auf die Bedürfnisse beim Fahren und Laden angepasst und die Tastenfunktionen erweitert.

Den aktualisierten Quellcode lade ich hoch sobald ich die neuen Funktionen noch etwas mehr testen konnte.
Insbesondere eine möglichst hohe Präzisision des Energiezählers (so gut wie anhand der ZOE-internen Messdaten möglich) ist mir wichtig. Da muss ich ggf. noch ein paar Vergleiche anstellen.

Fröhliche Weihnachten!
UliZE40
 
Beiträge: 729
Registriert: Mi 16. Nov 2016, 21:14

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon UliZE40 » So 31. Dez 2017, 19:36

So. Neue Version fertig.

Changelog:
* Energiezähler (Netzbezug und Akkukapazitätsdifferenz)
* Stoppuhr mit 4 verschiedenen Auto-Triggern (Ladezeit, Netzbezug/Ready, Kabel verbunden, Fahren)
* PTC-Aktivitätsanzeige
* Bildschirmabhängige Tastenfunktionen
* Umsortierte Bildschirmansichten
* EEPROM Backup+Restore der wichtigsten Benutzereinstellungen und Daten (z. B. letzten Ladung, Startansicht, kWh-Preis, ...)
* Integriertes PID Diagnosetool mit Multi- und Single-Byte in Hex- und Binär-Darstellung, Freeze-Funktion und Intervalltimer
* Code entrümpelt, aufgeräumt und optimiert
* Hardware-Option: Separater Innenraum-Temperatursensor (DS18x20 via OneWire-Bus)


Download & Co. wie gewohnt von https://github.com/premultiply/ZOEdisplay

Frohes Neues! :D
UliZE40
 
Beiträge: 729
Registriert: Mi 16. Nov 2016, 21:14

Re: Realtime Ladeparameter und Zustand aus der Ferne

Beitragvon wipo » Di 23. Jan 2018, 01:28

Tolles Projekt, UliZE40 ! :hurra:

Habe schon fast alle Teile beisammen um deinen Arduino Stack nachzubauen :-)
Die Verbindung von Pin10 und D3 am LCD-Shield ist auf den Fotos gut zu sehen, aber welche Leiterbahnen hast du dann unterbrochen? Meintest du die Trennung der Steckverbindung von Pin10 des LCD's zum D10 des Arduinos, sodass der verlötete Bypass von Pin10 -> D3 kein Verbindung auf D10 hat (vom CAN-Bus-Shield genutzt)?

Hat schon jemand um ein SIM900 GPRS-Shield erweitern können?
https://de.aliexpress.com/item/Free-shi ... 50132.html

Von erich gefällt mir die Blynk Anbindung sehr gut. Pefekt wäre für mich eine Mischung aus lokaler fixer Anzeige im Fahrzeug und eine Fernabfragemöglichkeit über GPRS-Shield und Blynk-App. Im 2.Schritt wäre dann ein steuerndes Eingreifen über ODB für Fernklimatisierung, Batterievortemperierung oder aufgeweckt lassen um das Boardnetz ohne Belastung der 12V Batterie betreiben zu können, ein Traum!
PV 20kWp + WR 17kW solaredge + 6,4kWh Li-Ion SMA SI 4.4M + Renault ZOE Intens Q210(41kWh) von 07/2013 mit LBC/LBC2: 0580, EVC: 0204
Tesla Model ≡ Bestätigte Reservierung seit 31.03.2016 - 09:06 Uhr
wipo
 
Beiträge: 88
Registriert: So 5. Jul 2015, 10:20

Anzeige

VorherigeNächste

Zurück zu ZOE - Modifikationen

  • Ähnliche Artikel im Blog

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste