====== (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.
{{:en:iot:examples:currentpicture1.jpg?200|}}
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
#include
#include "EmonLib.h"
#include
#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);
}
}