# Firmware Compileren en Uploaden

Versie 5 van de DSMR-logger32 hardware maakt gebruik van een ESP32-WROVER processor. Deze processor zit op de printplaat van de DSMR-logger32 gesoldeerd en moet dus, op de printplaat, geflashed worden.

Overtuig je ervan dat alle tabbladen aanwezig zijn!

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2Ftr1F3HeJ4lGua4duRH2a%2FAIDE-AllTabs.png?alt=media&#x26;token=f986e8c8-2b44-47f0-ae25-d81a63547a3e" alt=""><figcaption></figcaption></figure>

Om de firmware naar de **DSMR-logger32** te kunnen flashen moet deze eerst voor deze versie van de DSMR-logger32 geschikt worden gemaakt.

Dit doe je door in de **`DSMRlogger32.ino`** (het eerste tabblad) de **`#define`**'s aan te passen.

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2FY8CHmqzZbatY01YUsXk4%2FDSMR32-Defines.png?alt=media&#x26;token=6e2ab067-d47d-4329-a8f2-224e5d025b3c" alt=""><figcaption></figcaption></figure>

Door de twee slashes (**`//`**) voor de **`#define`** weg te halen maak je een optie actief. Alleen tijdens het testen is het zinvol één of beide opties actief te maken. Voor een "*productie*" versie moeten de **`#defines`** uitgeschakeld blijven.

Vervolgens moeten de `Boards` settings als volgt worden ingesteld:

<table><thead><tr><th width="189">Instelling</th><th>Waarde</th></tr></thead><tbody><tr><td>Board</td><td>"ESP32 WROVER Module"</td></tr><tr><td>Upload Speed</td><td>"230400" of "460800" (use lower speed if needed)</td></tr><tr><td>Flash Frequency</td><td>"40MHz" (sometimes 80MHz is to fast)</td></tr><tr><td>Flash Mode</td><td>"QIO" (sometimes "QIO" is too fast, use "DIO" in stead)</td></tr><tr><td>Partition Scheme</td><td>"Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)"</td></tr><tr><td>Debug Level</td><td>"None"</td></tr><tr><td>Erase Flash</td><td>"Disabled" (First Time only: "Enabled")</td></tr><tr><td>Port</td><td>Bedraad: "Serial Port"</td></tr></tbody></table>

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2FypxDmIo3L70vzDgd3nfG%2FAIDE-Tools-Settings.png?alt=media&#x26;token=97d94d16-3c0e-4fe2-b145-8becc701be4d" alt=""><figcaption></figcaption></figure>

Klik nu op het **`Verify`** icon.

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2FtNeOgmtPK5rXyBY69F8Q%2FAIDE-Verify.png?alt=media&#x26;token=5406dc40-0e6b-45ef-b10a-5eee1f029045" alt=""><figcaption></figcaption></figure>

Onderin de Arduino IDE verschijnen meldingen met betrekking tot de voorgang van het compileren. Als het compileren succesvol is (en er dus geen compilatie fouten zijn opgetreden) zie je de volgende meldingen:

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2FlbxW8LT2Xf8UsGlxEEY3%2FAIDE-VerifyComplete.png?alt=media&#x26;token=dbadaf92-eff4-4d3a-bfcc-dabd35a81da8" alt=""><figcaption></figcaption></figure>

De waarden van "*`Sketch uses`*" en "*`Global variables use`*" kunnen anders zijn dan wat in bovenstaand plaatje staat. Dat is geen reden voor ongerustheid.\
De volgende stap is het daadwerkelijk uploaden (flashen) van de firmware naar de DSMR-logger32.

#### Firmware Bedraad Flashen <a href="#firmware-bedraad-flashen" id="firmware-bedraad-flashen"></a>

{% hint style="danger" %} <mark style="color:red;">Pas op!</mark>\ <mark style="color:red;">Koppel de DSMR-logger32 los van de Slimme Meter vóórdat je de DSMR-logger32 op de programmer aansluit!!</mark>
{% endhint %}

Sluit de FTDI-programmer aan op de `Program`-header van de *DSMR-logger32*

Als de FTDI programmer niet zelf de DSMR-logger32 in flash-mode kan zetten, voer dan de volgende vier handelingen uit:

1. Druk de **`FLASH`** knop in en houd deze ingedrukt
2. Druk op de **`RESET`** knop
3. Laat de **`RESET`** knop los
4. Laat de **`FLASH`** knop los

De *DSMR-logger32* staat nu in Flash-mode en blijft in die mode tot er gegevens vanaf de programmer naar de DSMR-logger32 zijn overgebracht óf tot je nog een keer op de **`RESET`** knop drukt.

Vergeet niet in de Arduino IDE de **`Port`** te selecteren waarop je de FTDI programmer hebt aangesloten en druk op het *Compile and Upload* icoon.

![](https://mrwheel.github.io/DSMRloggerWS/img/CompileAndUploadIcon.png)

#### Firmware *Over The Air* Flashen <a href="#firmware-over-the-air-flashen" id="firmware-over-the-air-flashen"></a>

Bij het *Over The Air* flashen van de firmware of **`data`**-map kan (moet) de DSMR-logger32 gewoon op de Slimme Meter aangesloten blijven.

Alle instellingen voor de DSMRlogger32 firmware blijven gelijk aan de bedrade methode van flashen.

Vervolgens moet je niet op het **`Compile & Upload`**-Icoon ![](https://mrwheel.github.io/DSMRloggerWS/img/NotCompileAndUploadIcon.png)

klikken maar in he&#x74;**\[Sketch]**&#x64;rop-down menu de keuze **`Upload Compiled Binary`** selecteren.

![](https://mrwheel.github.io/DSMRloggerWS/img/ExportCompiledBinary.png)

De firmware wordt nu gecompileerd en in de Arduino Sketch map waar de DSMRlogger32 firmware ook staat neergezet. Het bestand heet **`DSMRlogger32.ino.bin`**.

Als de firmware gecompileerd is klik je op de DSMR-logger32 pagina op het ![](https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2Fgit-blob-b30c58c4e8775be57e4446b5a1e1816547623480%2Ffsmanagericoon.png?alt=media) icoontje.

![](https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2Fgit-blob-2e04a9fc6d79bf56870af63457a8429ebd44ea49%2Fscreenshot-2021-06-09-at-14.03.47.png?alt=media)

In de *FSmanager* klik je op de knop **`[Update Firmware]`**

Er verschijnt nu een scherm waarin je een firmware bestand (de naam eindigt op **`.ino.bin`**) kunt kiezen door op de bovenste knop **`[Choose File]`** te klikken.

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2FIPitTxE2DNcJpV134z6a%2FUPDATE-SERVER.png?alt=media&#x26;token=e4f5a7cb-a9cf-464c-a8d6-bee015ad1514" alt=""><figcaption></figcaption></figure>

Selecteer uit het **`popUp scherm`** dat nu verschijnt het binary file dat je wilt uploaden ..

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2Fq7MFHxDs2r5bCGZUVTsi%2FSELECT_INO.bin.png?alt=media&#x26;token=18550df0-fffe-443c-b091-b25341b23304" alt=""><figcaption></figcaption></figure>

.. klik op **`[Choose]`** (of **`[Open]`**) en daarna op de knop **`[Flash Firmware]`**

{% hint style="danger" %}
Let op!\
De firmware heeft áltijd "**.ino.**" in de naam en eindigt áltijd op "**.bin**"!
{% endhint %}

<figure><img src="https://3348217387-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fi7Hx3agYOAtUjAly9RFz%2Fuploads%2F3d6378cmqbQVSIVL071K%2FUPDATE-SUCCESS.png?alt=media&#x26;token=989a9090-3dc5-4d7a-8c5e-c2853f4e6638" alt=""><figcaption></figcaption></figure>

Na enige tijd krijg je de melding dat de upload is geslaagd en dat de DSMR-logger32 opnieuw opstart.

{% hint style="info" %}
Let op!\
Het komt soms voor dat het scherm niet automatisch ge-refreshed wordt. Refresh de browser.\
\
Als de verbinding met de server vóór die tijd verbroken wordt klik dan op de \[back] knop van de browser waarna de tekst alsnog (weer) verschijnt.&#x20;
{% endhint %}
