Bouw een Betrouwbare Sigfox kWh Meter met Arduino MKR Fox 1200
Onderdelen en benodigdheden
- Arduino MKR Fox 1200 – 1×
- Breadboard – 1×
- Draadjes – 1×
- CNY70 reflectiesensor – 1×
- Weerstand 221 Ω – 1×
- Weerstand 10 kΩ – 1×
- Weerstand 100 Ω – 1×
- Draaipotentiometer – 1×
- Drukknop 12 mm – 1×
- LED (algemeen) – 1×
Apps en online diensten
- Arduino IDE
- Sigfox Backend
- ThingSpeak API
Over dit project
1) In een notendop
Deze tutorial koppelt een oude inductieve stroommeter (met draaiende schijf met zwarte streep) aan het internet. Elke 120 omwentelingen = 1 kWh. De CNY70 detecteert de zwarte streep.
2) Microcontroller, IoT-netwerk & meer
Arduino MKRFOX1200 met ingebouwde Sigfox (LPWAN, 868 MHz, 140 berichten/dag, 12 bytes payload). Berichten komen in de Sigfox-cloud; via callbacks stuur je ze naar bv. ThingSpeak.
ThingSpeak: IoT-platform voor grafieken. Callback-doel voor Sigfox-berichten.

3) Praktische stappen
- Aansluiten: Volg het schema. Voeding via USB powerbank of laptop.
- Code: Upload de bijgeleverde sketch.
- ThingSpeak kanalen: Maak kanaal 1 (veld: Consumption). Kanaal 2 = analyse op kanaal 1 met MATLAB-code om Wh om te rekenen naar kWh en op te tellen bij stand.
- Sigfox Callback: Type DATA UPLINK, Channel URL, Custom Payload
status::uint:32:little-endian, URL Pattern:https://api.thingspeak.com/update?api_key=WRITE_API_KEY_KANAAL1&field1={customData#status}, HTTP GET.
4) Installatie & logica
Plak CNY70 op het glas van de meter, gecentreerd op de schijf. Dubbelklik op de knop → kalibratie: LED aan bij reflecterend deel, uit bij zwarte streep. Nogmaals knop → actief. Elke 30 minuten wordt verbruik (precisie 25 Wh = 3 omwentelingen) via Sigfox verstuurd.

5) Resultaat
In ThingSpeak zie je een mooi grafiek van je elektriciteitsverbruik.

Code
#include <SigFox.h>
int DIODE = 13, BTN = 12;
uint32_t CONSUMPTION = 0;
boolean SHINE = false, KARDAN = false;
unsigned long i = 0;
int CALC = 0, BTN_NR_OF_PRESS = 0, BTN_state = 0, BTN_prev = 0;
void setup() {
pinMode(DIODE, OUTPUT); pinMode(BTN, INPUT);
Serial.begin(9600);
if (!SigFox.begin()) Serial.println("Sigfox module unavailable.");
}
void loop() {
int senzor = analogRead(A3);
BTN_state = digitalRead(BTN);
if (BTN_state != BTN_prev) {
if (BTN_state == HIGH) BTN_NR_OF_PRESS++;
}
BTN_prev = BTN_state;
if (BTN_NR_OF_PRESS % 3 == 0) { // kalibratie modus
digitalWrite(DIODE, (senzor > 300 && senzor < 950) ? HIGH : LOW);
}
if (senzor < 1020 && !SHINE) SHINE = true;
if (senzor > 1020 && SHINE && BTN_NR_OF_PRESS == 4) {
CALC++; SHINE = false;
}
if (CALC % 3 == 0 && CALC != 0 && !KARDAN) {
KARDAN = true; CONSUMPTION += 25; // 25 Wh per 3 pulsen
}
if (CALC % 3 != 0) KARDAN = false;
if (BTN_NR_OF_PRESS % 4 == 0) { // actieve modus
digitalWrite(DIODE, LOW);
if (!SHINE) {
for (millis(); (millis() - i) > 1800000; ) { // elke 30 min
i = millis();
SigFox.debug();
SigFox.beginPacket();
SigFox.write(CONSUMPTION);
SigFox.endPacket();
}
}
}
}
Schema

Productieproces
- Slimme Plantenalarmer – DIY Sensor voor Optimale Hydratatie
- Bouw een Italiaanse Woordklok met Arduino Nano, NeoPixel, LCD en RTC
- Bespaar Arduino-pins: Sluit een 4x3-toetsenblok aan met slechts 3 verbindingen
- Bluetooth Temperatuurmeter met Arduino Nano
- DIY Autoranging Condensatiemeter (10 pF–10 µF) – Simpele Arduino Bouw
- Contactloos Gebaarslot: Veilige toegang met APDS-9960 en Arduino
- Arduino Nano Companion Kit – Essentiële Componenten & Hulpmiddelen voor DIY Electronica
- USB MIDI Adapter Kit voor Arduino Micro / Leonardo – Complete Onderdelenlijst
- Geïsoleerde analoge ingangsschakeling voor Arduino bouwen
- RGB 32-band audio-spectrumvisualisator – Arduino LED-matrixproject
- Precisie Reactietijd Test met Arduino UNO