Добавляем новый модуль Ina219

This commit is contained in:
2022-11-13 21:32:30 +05:00
parent dda99a53bb
commit 466fad0525
2 changed files with 235 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
/******************************************************************
Used Adafruit INA219 Current Sensor
Support for INA219
https://github.com/adafruit/Adafruit_INA219
adapted for version 4dev @Serghei63
******************************************************************/
#include "Global.h"
#include "classes/IoTItem.h"
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
// shuntvoltage = ina219.getShuntVoltage_mV(); // Получение напряжение на шунте
// busvoltage = ina219.getBusVoltage_V(); // Получение значение напряжения V
// current_mA = ina219.getCurrent_mA(); // Получение значение тока в мА
// power_mW = ina219.getPower_mW(); // Получение значение мощности
// loadvoltage = busvoltage + (shuntvoltage / 1000); // Расчет напряжение на нагрузки
class Ina219loadvoltage : public IoTItem {
public:
Ina219loadvoltage(String parameters) : IoTItem(parameters) {
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
}
void doByInterval() {
loadvoltage = busvoltage + (shuntvoltage / 1000);
value.valD = loadvoltage;
regEvent(value.valD, "Ina219loadvoltage");
}
~Ina219loadvoltage(){};
};
class Ina219busvoltage : public IoTItem {
public:
Ina219busvoltage(String parameters) : IoTItem(parameters) {
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
}
void doByInterval() {
busvoltage = ina219.getBusVoltage_V();
value.valD = busvoltage;
regEvent(value.valD, "Ina219busvoltage");
}
~Ina219busvoltage(){};
};
class Ina219curr : public IoTItem {
public:
Ina219curr(String parameters) : IoTItem(parameters) {
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
}
void doByInterval() {
current_mA = ina219.getCurrent_mA();
value.valD = current_mA;
regEvent(value.valD, "Ina219curr");
}
~Ina219curr(){};
};
class Ina219shuntvoltage : public IoTItem {
public:
Ina219shuntvoltage(String parameters) : IoTItem(parameters) {
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
}
void doByInterval() {
shuntvoltage = ina219.getShuntVoltage_mV();
value.valD = shuntvoltage;
regEvent(value.valD, "Ina219shuntvoltage");
}
~Ina219shuntvoltage(){};
};
class Power_mW : public IoTItem {
public:
Power_mW(String parameters) : IoTItem(parameters) {
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
}
void doByInterval() {
power_mW = ina219.getPower_mW();
value.valD = power_mW;
regEvent(value.valD, "Ina219power"); // TODO: найти способ понимания ошибки получения данных
}
~Power_mW(){};
};
void* getAPI_Ina219(String subtype, String param) {
if (subtype == F("Ina219curr")) {
ina219.begin();
return new Ina219curr(param);
} else if (subtype == F("Ina219shuntvoltage")) {
ina219.begin();
return new Ina219shuntvoltage(param);
} else if (subtype == F("power_mW")) {
ina219.begin();
return new Power_mW(param);
} else if (subtype == F("Ina219busvoltage")) {
ina219.begin();
return new Ina219busvoltage(param);
} else if (subtype == F("Ina219loadvoltage")) {
ina219.begin();
return new Ina219loadvoltage(param);
} else {
return nullptr;
}
}

View File

@@ -0,0 +1,99 @@
{
"menuSection": "Сенсоры",
"configItem": [{
"global": 0,
"name": "INA219 Tок",
"type": "Reading",
"subtype": "Ina219curr",
"id": "Ina219current",
"widget": "anydatamAmp",
"page": "INA 219",
"descr": "219 Датчик тока",
"int": 10
},
{
"global": 0,
"name": "INA219 Напряжение",
"type": "Reading",
"subtype": "Ina219busvoltage",
"id": "Ina219busvoltage",
"widget": "anydataVlt",
"page": "INA 219",
"descr": "219 Датчик напряжения",
"int": 10
},
{
"global": 0,
"name": "INA219 Мощность",
"type": "Reading",
"subtype": "power_mW",
"id": "Ina219power",
"widget": "anydatamWtt",
"page": "INA 219",
"descr": "219 Мощность",
"int": 10
},
{
"global": 0,
"name": "INA219 Напряжение нагрузки",
"type": "Reading",
"subtype": "Ina219loadvoltage",
"id": "Ina219loadvoltage",
"widget": "anydataVlt",
"page": "INA 219",
"descr": "219 Напряжение нагрузки",
"int": 10
},
{
"global": 0,
"name": "INA219 Шунт",
"type": "Reading",
"subtype": "Ina219shuntvoltage",
"id": "Ina219shuntvoltage",
"widget": "anydatamVlt",
"page": "INA 219",
"descr": "219 Напряжение шунта",
"int": 10
}],
"about": {
"authorName": "Serghei Crasnicov",
"authorContact": "https://t.me/Serghei63",
"authorGit": "https://github.com/Serghei63",
"specialThanks": "Дмитрий , Serg",
"moduleName": "Ina219",
"moduleVersion": "1.0",
"usedRam": {
"esp32_4mb": 15,
"esp8266_4mb": 15
},
"subTypes": [
"Ina219curr",
"Ina219busvoltage",
"power_mW",
"Ina219loadvoltage",
"Ina219shuntvoltage"
],
"title": "Милливатметр постоянного тока",
"moduleDesc": "Измеряет постоянный ток до 3.2 ампера, напряжение до 26 вольт и мощность на нагрузке",
"propInfo": {
"int": "Количество секунд между опросами датчика."
}
},
"defActive": false,
"usedLibs": {
"esp32_4mb": [
"https://github.com/adafruit/Adafruit_INA219.git"
],
"esp8266_4mb": [
"https://github.com/adafruit/Adafruit_INA219.git"
]
}
}