(Current) Voolumõõtja näidiskood

Voolumõõtja peab olema ühendatud anduri mooduliga. Voolumõõtjal on 3,5 mm pistik, mis tuleb ühendada anduri vasakpoolsesesse (A) pesasse. Kontrolleri ja anduri moodulid peavad olema omavahel ühendatud. Voolu sensor peab olema 30A.

Vajaminevad teegid:

lib_deps = ITTIoT, EmonLib

Näidiskood demonstreerib vahelduvvoolu väärtuse kuvamist vaheldusvoolu teemasse “curr”. Kui mõõtmistulemused puuduvad, kuvatakse väärtuseks NaN.

#include <Arduino.h>
#include <ittiot.h>
#include "EmonLib.h"
#include <Ticker.h>
 
#define WIFI_NAME "name"
#define WIFI_PASSWORD "password"
 
// Pin definition for the current sensor
#define ADC_PIN A0
 
// create a objects
EnergyMonitor emon1;
Ticker adcTicker;
 
bool adcFlag;
uint16_t adcSampleCount;
 
void setAdcFlag()
{
    // If time, the set adcFlag.
    adcFlag = true;
}
 
// Function started after the connection to the server is established.
void iot_connected()
{
    Serial.println("MQTT connected callback");
    iot.log("IoT current example!");
}
 
void setup()
{
    // setting up serial connection parameter
    Serial.begin(115200);
    Serial.println("Booting");
 
    //iot.setConfig("wname", WIFI_NAME);
    //iot.setConfig("wpass", WIFI_PASSWORD);
 
    // print json config to serial
    iot.printConfig();
    // Initialize IoT library
    iot.setup();
 
    // Current: input pin, calibration (how big current can it read).
    emon1.current(ADC_PIN, 30);
    adcSampleCount = 1500;
 
    // Start function setAdcFlag 0.5 second interval
    adcTicker.attach(0.5, setAdcFlag);
}
 
void loop()
{
  // IoT behind the plan work, it should be periodically called
  iot.handle();
 
  // If adcFlag is set, then send information to server
  if(adcFlag)
  {
      adcFlag = false;
      double val = emon1.calcIrms(adcSampleCount);
      String msg = String(val);
      // publishing measured current value to a MQTT broker
      iot.publishMsg("curr", msg.c_str());
      // sending measured current value to a computer
      Serial.println(msg);
  }
}