Stap 2: Software
Aan de Arduino-kant, de software is verdeeld in verschillende bestanden en ze zijn allemaal in dezelfde map, zodat u niet hoeft te importeren van een bibliotheek in de Arduino IDE. Ook is er een tussenliggende I2C-module die probeert te bieden een meer standaard en I2C API dan de Arduino een abstract.
De bibliotheek is overgezet van de oudere project, en het is nog steeds nogal C dan C++. Het biedt alleen functies, zonder lessen, maar dit is prima, zolang u niet twee BME280 (met verschillende adressen) sensoren op de dezelfde MCU doen interface (en u zal meest waarschijnlijk niet). Het voordeel van deze bibliotheek, naar mijn mening is dat het geoptimaliseerd voor hogere snelheid en een lager verbruik van de resource. Een van de verbeteringen is dat de I2C-verkeer wordt geminimaliseerd, en dit moet een verschil (in implementaties zonder DMA maken) zoals I2C een van de langzaamste interfaces is.
De app gewoon initialiseert de sensor voert een sensor lezen elke 10ms en stuurt de gegevens op de seriële interface in dit formaat: temperatuur, ruimte, druk, ruimte, vochtigheid, nieuwe lijn.
Op de PC kant hebben we een GUI gemaakt in Processing v3 dat wordt geopend een seriële poort voor het ontvangen van de gegevens van de Arduino en initialiseert een callback-functie die splitst de data stream te uittreksel van de individuele parameters en duwt hen intro een buffer. In de lus draw() ik alleen de gegevens uitzetten en vernieuwen van de laatste ontvangen waarde (de blauwe labels). De app werkt, hoewel soms niet starten vanwege onbehandeld uitzonderingen in de code en uiteindelijk om andere redenen. Als er problemen optreden, kunt u proberen de GUI te starten terwijl de reset-knop van de Arduino en het vrijgeven nadat de GUI is gestart. Hopelijk zal ik dit in de toekomst bevestigen.
Kunt u de code voor de Arduino-app en voor de GUI hier vinden: https://github.com/cosminp12/BME280-plotting-GUI