Crisis? What Crisis?

Een nieuwe, betere, modernere Slimme Meter uitlezer

268 keer bekeken / views

Met een energiecrisis die iedereen raakt wordt het “in de gaten houden” van je energie verbruik steeds belangrijker. Daarom is het, na bijna vier jaar, de hoogste tijd om een nieuwe DSMR-logger te ontwikkelen.

Globaal zal deze hetzelfde doen en kunnen als de vorige versie (Rev. 4) maar hij zal dit beter en betrouwbaarder doen. Ook zullen bepaalde functionaliteiten niet meer aanwezig zijn. Zo komt het voeden van informatie aan mindergas.nl te vervallen. Het is gewoon geen kerntaak van de DSMR-logger (en als je het toch belangrijk vindt, dan kun je deze functionalie eenvoudig met een Wemos D1 bordje programmeren waarbij je, via een API call, de gegevens uit de DSMR-logger kunt halen en door de esp8266 laten doorsturen naar mindergas.nl. Dat kan met een Wemos D1 bordje zonder extra hardware).

Een grote verandering is de mogelijkheid om een shield op de DSMR-logger te prikken waarmee je eigen hardware kunt toevoegen (bijvoorbeeld een ModBus uitbreiding).

Op veler verzoek krijgt deze DSMR-logger ook een “Slave P1” poort waar je een andere uitlezer op aan kunt sluiten.

In de loop van de tijd zal ik deze post aanpassen en uitbreiden als het project vordert. Op dit moment is het alleen nog een idee.

Het blokdiagram (klik voor een grotere versie)

Waarom een ESP32 met PSRAM

Ik heb recent dit project en dit project met de ESP32 Wrover module gemaakt en ben erg onder de indruk van de ESP32 met PSRAM (SPI-RAM geheugen). Het grote voordeel van PSRAM is dat je deze kunt gebruiken om programma variabelen in op te slaan. Normaal nemen deze ruimte van het beschikbare geheugen in waardoor je op enig moment “vast loopt” omdat er simpelweg niet genoeg van is! De ESP32-WROVER modules komen met 4MB PSRAM of zelfs meer (al is er een beperking waardoor op dit moment niet meer dan 4MB PSRAM kan worden gebruikt). In 4MB geheugen kun je echter heel wat gegevens kwijt!!

Makers die zelf de DSMRlogger firmware compileren en flashen en dan inloggen met telnet hebben vast wel gezien dat alle log-regels vooraf gegaan worden door gegevens over de Heap. Dat is zinvolle informatie als je de MCU maximaal gebruikt. Want als de heap volloopt crashed de MCU en dan wil je inzicht hebben in waar (welke functie) en wanneer dat gebeurt.


Met de beschikbaarheid van PSRAM geheugen kun je eenvoudig alle groot verbruikers (bijvoorbeeld de telegrammen, de JSON strings en de setting gegevens) in het PSRAM geheugen opbergen waardoor er meer ruimte voor de heap overblijft!

Input P1 Level-Shifter

Voor de invoer van de data uit de Slimme Meter gebruik ik het beproefde schema dat al mijn DSMR-loggers gebruiken (never change a winning team!). Deze maakt gebruik van een NPN transistor (Q101) die het binnenkomende signaal van de Slimme Meter inverteert (“Laag” wordt “Hoog” en vice versa) en het signaal wordt geshift naar 3v3.

Zoals je kunt zien in de tabel wordt het signaal netjes geïnverteerd en [ESP_RX2] schakelt tussen GND en 3v3.

3v3 Power Regulator

Voor het omzetten van de 5volt uit de Power Jack of de Slimme Meter wordt ook een beproefde schakeling gebruikt. In principe voldoet iedere LDO die ongeveer 500mA kan regelen. Ik heb voor de TC1262-33 gekozen omdat ik daar een voorraad van heb.

FTDI Programming Port

Om de ESP32 te kunnen programmeren kies ik (weer) weer voor een standaard FTDI poort en niet voor een USB poort met CH340C chip. Uiteraard maakt zo’n USB aansluiting het leven wel een stuk makkelijker als je firmware moet flashen, maar laten we wel zijn: dat doe je een paar keer gedurende het leven van de DSMR-logger. De extra kosten en complexiteit maken het voor mij onzinnig om dit aan het ontwerp toe te voegen. In tegenstelling tot de DSMR-logger Rev. 4 heb ik wel extra componenten opgenomen waarmee het flashen niet meer afhankelijk is van het, in de juiste volgorde indrukken en weer los laten, van de [Flash] en [Reset] switches.

Watchdog

De watchdog is ontworpen rond een ATtiny85. Ik heb hier al eerder een post over geschreven maar wil voor de DSMRloggerESP32 een iets andere versie maken. Dit is vooral ingegeven door mijn recente ontdekking van NeoPixels! Het voordeel van een NeoPixel is dat ze goedkoper zijn dan bijvoorbeeld twee SMD ledjes maar wel alle kleuren van de regenboog kunnen weergeven én dat ze daar maar één data lijn voor nodig hebben. Ik wil dat de watchdog, afhankelijk van de staat waarin hij verkeert, de NeoPixel als volgt laat branden:

  • Langzaam pulserend groen als alles OK is (er komen regelmatig hartslagen binnen);
  • Langzaam pulserend rood als er een bepaalde tijd geen hartslag is ontvangen;
  • Sneller pulserend rood als het kritisch wordt (té lang geen hartslag ontvangen);
  • Rood en daarna wit om aan te geven dat de watchdog de master MCU reset.

De firmware voor de Watchdog kun je hier vinden.

Secondary P1 poort

Veel gebruikers en makers van de DSMR-logger hebben om een secondary (“Slave” mag vandaag de dag niet meer!) P1 poort gevraagd. Ik heb eerder een post geschreven over een Slimme Meter Poort Extender om aan deze behoefte te voldoen. Maar zo’n extra kastje geeft ook weer extra kabeltjes in de meterkast. Duidelijk dat de nieuwe DSMR-logger een Secondary P1 poort moet hebben! Al langer speel ik met het idee om een Secondary P1 poort elektronisch en galvanisch gelijk te maken aan de P1 poort van de Slimme Meter zélf!
Ik kom op deze oplossing:

De data van de P1 poort van de Slimme Meter komt binnen op de basis van Q102. Dit is een beproeft model want alle, door mij ontwikkelde, DSMR-loggers doen dat zo.

Q102 inverteert het signaal (hoog wordt laag en vice versa). Dit geïnverteerde signaal (wat eigenlijk het “goede” signaal is) gaat naar pin2 van U102. Een “hoog” signaal laat de led van de optocoupler branden waardoor de (open collector) transistor van de optocoupler gaat geleiden en [Tx_SLAVE] naar GND getrokken wordt (en dus “laag” wordt). Een “laag” signaal op pin2 doet de led “doven” waardoor de transistor van de optocoupler hoog-ohmig wordt en [Tx_SECUNDARY] naar de spanning van een aangesloten apparaat getrokken wordt (en dus “hoog” wordt). Door de manier waarop Q102 en U102 “samen werken” volgt [Tx_SECUNDARY] exact de status van [Tx_SM].

Prototype

Klik op het plaatje voor een animatie

Voor het prototype is de Watchdog aangesloten op een ander type NeoPixel dan die ik in het uiteindelijke ontwerp ga gebruiken. Bij dit type zijn Rood en Groen omgewisseld. De Tweede NeoPixel komt niet in het uiteindelijke ontwerp maar laat nu zien wanneer er een hartslag binnen komt. De Rode led links-onder wordt in het uiteindelijke ontwerp ook vervangen door een NeoPixel. In de animatie van het prototype gaat deze even “aan” als er een telegram binnenkomt.

Het complete schema

Na het bouwen en testen van het prototype denk ik dat ik het schema behoorlijk op een rijtje heb.

Ontwerp Printplaat

De volgende stap is het ontwerpen van een printplaat (PCB). Gelukkig levert KiCad alle tools om dit voor elkaar te krijgen.

Vervolgens de Gerber files naar PCBWay gestuurd en na tien dagen de PCB’s ontvangen. Ze zien er weer goed uit dus snel één bordje stucken en testen.

Hou deze post in de gaten!

This entry was posted in ESP32, ESP8266, Firmware, Hardware, KiCAD and tagged , , , , , , , , , , . Bookmark the permalink.

4 Responses to Crisis? What Crisis?

  1. Johan Wolbink says:

    Hoi Willem,
    Mooi dat je deze nieuwe uitdaging weer aangaat. Wordt dit project ook weer rond de ESP32 opgezet of zit je ook nog aan andere mogelijkheden te denken. Ga je dit helemaal zelf doen of heb je mensen om je heen die je helpen en ondersteunen ? Veel succes met voorbereiden.
    Gr. Johan.

    • Willem Aandewiel says:

      Hoi Johan,

      De behoefte is eigenlijk ontstaan omdat DSMR-loggers soms niet meer bereikbaar zijn maar nog wel netjes loggen (daarvoor kun je nu al de DSMR-logger één maal per dag, automatisch, laten re-booten) en héél soms gewoonweg “hangen”. Dan worden dus ook de verbruiksgegevens niet meer opgeslagen! Als je dan na een paar dagen wil kijken wat je zonnepanelen de afgelopen dagen hebben gedaan zit je met een grafiek met uitschieters.
      De nieuwe DSMR-logger heeft een hardwarematige Watchdog. De ESP32 stuurt om de paar seconden een hartslag naar de Watchdog. Ontvangt deze een bepaalde tijd géén hartslag dan mag je aannemen dat de ESP32 “ergens” hangt en dan zal de Watchdog de ESP32 resetten.

      Vooralsnog doe ik alles zelf in splendid isolation maar als je wilt helpen dan ben je van harte welkom.

      • Johan says:

        Hoi Willem, Ik zie dat je al heel wat stappen hebt gemaakt, voor mij is het nog even meekijken naar dit nieuwe project. Ik zou je graag willen helpen maar mijn kennis ligt een aantal stappen lager dan die van jou dus zou ik niet weten waarmee ik je op dit moment kan helpen. Ben nu nog met de vorige versie aan het solderen. De Hub ligt klaar nu nog de Logger.

        Blijf je volgen.

Leave a Reply

Your email address will not be published.

The maximum upload file size: 4 MB. You can upload: image, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here

This site uses Akismet to reduce spam. Learn how your comment data is processed.