Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Compteur kWh Sigfox fiable avec Arduino MKR Fox 1200

Composants et fournitures

ComposantQuantité
Arduino MKR Fox 1200 (intègre Sigfox)1
Plaque d'essai sans soudure1
Fils de liaison1
Capteur réflexe CNY701
Résistance 221 Ω1
Résistance 10 kΩ1
Résistance 100 Ω1
Potentiomètre rotatif1
Bouton poussoir 12 mm (SparkFun)1
LED générique1

Applications et services en ligne

À propos de ce projet

1) En résumé

Ce tutoriel vous guide pour connecter votre vieux compteur électrique à induction à Internet. Il s'agit du type de compteur le plus ancien encore utilisé : un disque rotatif avec une bande noire sur fond réfléchissant. Chaque passage de la marque noire correspond à un tour complet. Sur ce modèle, 120 tours = 1 kWh.

2) Microcontrôleur, réseau IoT et autres éléments

Nous utilisons l'Arduino MKRFOX1200 qui intègre la connectivité Sigfox (réseau LPWAN en bande ISM 868 MHz). Sigfox permet d'envoyer jusqu'à 140 messages par jour (payload 12 octets). Les messages sont stockés dans le cloud Sigfox et peuvent être redirigés via des callbacks.

ThingSpeak : plateforme IoT pour affichage convivial des données. Dans ce projet, c'est la destination du callback Sigfox ; les graphiques s'actualisent dès la réception des données.

Le compteur concerné est celui à disque rotatif avec marque noire (photo fournie).

3) Mise en œuvre pratique

  1. Câblage : Connectez tous les composants selon le schéma de câblage. Alimentez via USB (power bank ou port PC).
  2. Code : Téléversez le code fourni (fichier Sigfox kWh electric energy power meter.ino).
  3. ThingSpeak : Créez un compte sur thingspeak.com. Créez le canal n°1 (nom, description, Field 1 = Consumption). Créez le canal n°2 basé sur le n°1 mais avec un nom différent. Dans « Matlab Analysis » du canal n°2, collez le code suivant (remplacez les IDs et clés API) :
    readChannelID = ID_CANAL_1;
    readAPIKey = 'CLE_API_LECTURE_CANAL_1';
    writeChannelID = ID_CANAL_2;
    writeAPIKey = 'CLE_API_ECRITURE_CANAL_2';
    data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');
    analyzedData = data;
    analyzedData.('Consumption') = (data.('Consumption') + VOTRE_CONSO_ACTUELLE_EN_WH)/1000;
    thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey);
    
  4. Callback Sigfox : Dans le backend Sigfox (backend.sigfox.com), section Callbacks, créez un callback :
    • TYPE : DATA UPLINK
    • CHANNEL : URL
    • CUSTOM PAYLOAD CONFIG : status::uint:32:little-endian
    • URL PATTERN : https://api.thingspeak.com/update?api_key=CLE_API_ECRITURE_CANAL_1&field1={customData#status}
    • HTTP METHOD : GET

4) Installation du dispositif et logique

Fixez le capteur CNY70 sur la vitre du compteur, centré sur le disque rotatif (ruban double face). Appuyez deux fois sur le bouton du dispositif pour entrer en mode calibration : la LED doit s'allumer sur la partie réfléchissante et s'éteindre sur la marque noire. Après calibration réussie, appuyez une troisième fois. Le dispositif commence alors à compter la consommation et l'envoie toutes les 30 minutes via Sigfox. La précision est de 25 Wh (soit 3 tours du disque).

5) Résultat final

Vous visualiserez votre consommation électrique en temps réel sur un graphique ThingSpeak.

Code (Sigfox kWh electric energy power meter – Arduino)

#include <SigFox.h>
int DIODE = 13;
int BTN = 12;
int BTN_state = 0, BTN_prev = 0, BTN_NR_OF_PRESS = 0;
int CALC = 0;
unsigned long i = 0;
uint32_t CONSUMPTION = 0;
boolean SHINE = false, KARDAN = false;

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;

  // Mode calibration (3 appuis)
  if (BTN_NR_OF_PRESS % 3 == 0) {
    if (senzor > 300 && senzor < 950) digitalWrite(DIODE, HIGH);
    else digitalWrite(DIODE, LOW);
  }

  // Comptage tours (détection transition réfléchissant -> noir)
  if (senzor < 1020 && SHINE == false) SHINE = true;
  if (senzor > 1020 && SHINE == true && BTN_NR_OF_PRESS == 4) {
    CALC++; SHINE = false;
  }
  if (CALC % 3 == 0 && CALC != 0 && KARDAN == false) {
    KARDAN = true; CONSUMPTION += 25; // +25 Wh par 3 tours
  }
  if (CALC % 3 != 0) KARDAN = false;

  // Envoi toutes les 30 min (4 appuis = mode normal)
  if (BTN_NR_OF_PRESS % 4 == 0) {
    digitalWrite(DIODE, LOW);
    if (SHINE == false) {
      for (millis(); (millis() - i) > 1800000; ) {
        i = millis();
        SigFox.debug();
        SigFox.beginPacket();
        SigFox.write(CONSUMPTION);
        SigFox.endPacket();
      }
    }
  }
}

Schéma de câblage

Schéma de connexion du MKRFOX1200 avec CNY70, résistances, bouton, LED (image fournie).

Processus de fabrication

  1. Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
  2. Horloge à Mots Italienne avec Arduino Nano, NeoPixel, LCD et RTC
  3. Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques
  4. Moniteur de température Bluetooth avec Arduino Nano
  5. Multimètre capacimètre auto-étendant DIY (10 pF – 10 µF) – Construction Arduino facile
  6. Serrure à gestes sans contact : Accès sécurisé avec APDS-9960 et Arduino
  7. Kit Compagnon Arduino Nano – Composants et Outils Essentiels pour l'Électronique DIY
  8. Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
  9. Test Précis de Temps de Réaction avec Arduino UNO