diff --git a/airrohr-firmware/Contributing.md b/airrohr-firmware/Contributing.md index f21421a8..aaf57e29 100644 --- a/airrohr-firmware/Contributing.md +++ b/airrohr-firmware/Contributing.md @@ -74,6 +74,7 @@ Additional Libraries needed for building: * [LiquidCrystal I2C](https://github.com/marcoschwartz/LiquidCrystal_I2C) (1.1.2) * [EspSoftwareSerial](https://github.com/plerup/espsoftwareserial)(6.3.0) * [TinyGPS++](http://arduiniana.org/libraries/tinygpsplus/) (1.0.2) (GNU Lesser Public License >=2.1) +* [Adafruit INA219](https://github.com/adafruit/Adafruit_INA219) (1.1.1) (BSD) ## Source Layout @@ -114,6 +115,7 @@ consistency accross and within the particular translation. | BME280 | BMX280 | const | `airrohr-firmware.ino` | 0x77 (default) or 0x76 | | BM085: | Adafruit_BMP085 | BMP085_I2CADDR 0x77 | `Adafruit_BM085.h` | 0x77 | | BM180: | Adafruit_BMP085 | BMP085_I2CADDR 0x77 | `Adafruit_BM085.h` | 0x77 | +| INA219 | Adafruit_INA219 | ina219_i2c_addresses[] | `Adafruit_INA219.h` | 0x40 (default), 0x41, 0x44, 0x45 | Do not forget to update the table above when you are implementing a new I2C device. diff --git a/airrohr-firmware/airrohr-cfg.h b/airrohr-firmware/airrohr-cfg.h index 74806dad..a5d37641 100644 --- a/airrohr-firmware/airrohr-cfg.h +++ b/airrohr-firmware/airrohr-cfg.h @@ -96,6 +96,10 @@ enum ConfigShapeId { Config_pwd_influx, Config_measurement_name_influx, Config_ssl_influx, + Config_enable_battery_monitor, + Config_battery_u_min, + Config_battery_u_max, + Config_ina219_calibration, }; static constexpr char CFG_KEY_CURRENT_LANG[] PROGMEM = "current_lang"; static constexpr char CFG_KEY_WLANSSID[] PROGMEM = "wlanssid"; @@ -168,6 +172,10 @@ static constexpr char CFG_KEY_USER_INFLUX[] PROGMEM = "user_influx"; static constexpr char CFG_KEY_PWD_INFLUX[] PROGMEM = "pwd_influx"; static constexpr char CFG_KEY_MEASUREMENT_NAME_INFLUX[] PROGMEM = "measurement_name_influx"; static constexpr char CFG_KEY_SSL_INFLUX[] PROGMEM = "ssl_influx"; +static constexpr char CFG_KEY_ENABLE_BATTERY_MONITOR[] PROGMEM = "enable_battery_monitor"; +static constexpr char CFG_KEY_BATTERY_U_MIN[] PROGMEM = "battery_u_min"; +static constexpr char CFG_KEY_BATTERY_U_MAX[] PROGMEM = "battery_u_max"; +static constexpr char CFG_KEY_INA219_CALIBRATION[] PROGMEM = "ina219_calibration"; static constexpr ConfigShapeEntry configShape[] PROGMEM = { { Config_Type_String, sizeof(cfg::current_lang)-1, CFG_KEY_CURRENT_LANG, cfg::current_lang }, { Config_Type_String, sizeof(cfg::wlanssid)-1, CFG_KEY_WLANSSID, cfg::wlanssid }, @@ -240,4 +248,8 @@ static constexpr ConfigShapeEntry configShape[] PROGMEM = { { Config_Type_Password, sizeof(cfg::pwd_influx)-1, CFG_KEY_PWD_INFLUX, cfg::pwd_influx }, { Config_Type_String, sizeof(cfg::measurement_name_influx)-1, CFG_KEY_MEASUREMENT_NAME_INFLUX, cfg::measurement_name_influx }, { Config_Type_Bool, 0, CFG_KEY_SSL_INFLUX, &cfg::ssl_influx }, + { Config_Type_Bool, 0, CFG_KEY_ENABLE_BATTERY_MONITOR, &cfg::enable_battery_monitor }, + { Config_Type_UInt, 0, CFG_KEY_BATTERY_U_MIN, &cfg::battery_u_min }, + { Config_Type_UInt, 0, CFG_KEY_BATTERY_U_MAX, &cfg::battery_u_max }, + { Config_Type_UInt, 0, CFG_KEY_INA219_CALIBRATION, &cfg::ina219_calibration }, }; diff --git a/airrohr-firmware/airrohr-cfg.h.py b/airrohr-firmware/airrohr-cfg.h.py index e68e3b2b..2282aade 100755 --- a/airrohr-firmware/airrohr-cfg.h.py +++ b/airrohr-firmware/airrohr-cfg.h.py @@ -72,6 +72,10 @@ Password pwd_influx String measurement_name_influx Bool ssl_influx +Bool enable_battery_monitor +UInt battery_u_min +UInt battery_u_max +UInt ina219_calibration """ with open("airrohr-cfg.h", "w") as h: diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index 755adfb2..5ac5d6cb 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -49,8 +49,8 @@ ************************************************************************ * * latest build - * RAM: [==== ] 41.8% (used 34220 bytes from 81920 bytes) - * Flash: [======= ] 67.1% (used 701191 bytes from 1044464 bytes) + * RAM: [==== ] 41.8% (used 34276 bytes from 81920 bytes) + * Flash: [======= ] 67.8% (used 708175 bytes from 1044464 bytes) * ************************************************************************/ @@ -113,6 +113,7 @@ String SOFTWARE_VERSION(SOFTWARE_VERSION_STR); #include "./bmx280_i2c.h" #include "./sps30_i2c.h" #include "./dnms_i2c.h" +#include #include "./intl.h" @@ -205,6 +206,12 @@ namespace cfg bool display_wifi_info = DISPLAY_WIFI_INFO; bool display_device_info = DISPLAY_DEVICE_INFO; + // battery monitor measurement settings + bool enable_battery_monitor = ENABLE_BATTERY_MONITOR; + unsigned battery_u_max = BATTERY_U_MAX; + unsigned battery_u_min = BATTERY_U_MIN; + unsigned ina219_calibration = INA219_CALIBRATION; + // API settings bool ssl_madavi = SSL_MADAVI; bool ssl_dusti = SSL_SENSORCOMMUNITY; @@ -259,6 +266,7 @@ bool scd30_init_failed = false; bool dnms_init_failed = false; bool gps_init_failed = false; bool airrohr_selftest_failed = false; +bool ina219_init_failed = false; #if defined(ESP8266) ESP8266WebServer server(80); @@ -382,6 +390,8 @@ unsigned long act_milli; unsigned long last_micro = 0; unsigned long min_micro = 1000000000; unsigned long max_micro = 0; +unsigned long battery_start_time; +unsigned long battery_monitor_period; bool is_SDS_running = true; enum @@ -619,6 +629,16 @@ String last_data_string; int last_signal_strength; int last_disconnect_reason; +uint32_t battery_val_count = 0; +uint32_t battery_voltage_sum = 0; +uint32_t battery_voltage_mV = 0; +uint32_t battery_status = 0; +uint32_t current_draw_sum = 0; +uint32_t current_draw_mA = 0; +uint32_t power_consumption_sum = 0; +uint32_t power_consumption_mW = 0; +bool ina219_is_in_power_save = true; + String esp_chipid; String esp_mac_id; String last_value_SDS_version; @@ -661,6 +681,12 @@ IPAddress addr_static_subnet; IPAddress addr_static_gateway; IPAddress addr_static_dns; +/***************************************************************** + * INA219 declaration * + *****************************************************************/ +const uint8_t ina219_i2c_addresses[] = {0x40, 0x41, 0x44, 0x45}; // 0x40 is the default address +Adafruit_INA219 ina219; + #define msSince(timestamp_before) (act_milli - (timestamp_before)) const char data_first_part[] PROGMEM = "{\"software_version\": \"" SOFTWARE_VERSION_STR "\", \"sensordatavalues\":["; @@ -1269,7 +1295,17 @@ static bool writeConfig() break; }; } - + + /* NOTE: I suggest to keep this here for future use when new settings needs to be added */ + // debug_outln_verbose(F("ConfigShape element count: "), String(sizeof(configShape) / sizeof(configShape[0]))); + // debug_outln_verbose(F("Json memory usage: "), String(json.memoryUsage())); + // debug_outln_verbose(F("Json capacity: "), String(json.capacity())); + // debug_outln_verbose(F("Configuration contents (config.json):")); + // if(cfg::debug > DEBUG_MED_INFO) + // { + // serializeJson(json, Debug); + // } + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" @@ -1403,6 +1439,52 @@ static void end_html_page(String &page_content) server.sendContent_P(WEB_PAGE_FOOTER); } +static void add_form_select( + String &page_content, + const ConfigShapeId cfgid, + const __FlashStringHelper *names[], + uint32_t *values, + const __FlashStringHelper *label, + uint32_t val_size) +{ + RESERVE_STRING(s, XLARGE_STR); + ConfigShapeEntry c; + memcpy_P(&c, &configShape[cfgid], sizeof(ConfigShapeEntry)); + + String tmp; + s = F("" + "{i}: " + "" + "" + "" + ""); + s.concat(tmp); + + page_content += s; +} + static void add_form_input(String &page_content, const ConfigShapeId cfgid, const __FlashStringHelper *info, const int length) { RESERVE_STRING(s, MED_STR); @@ -1717,6 +1799,10 @@ static void webserver_config_send_body_get(String &page_content) page_content += FPSTR(TABLE_TAG_CLOSE_BR); server.sendContent(page_content); + // page_content = emptyString; + + + page_content = FPSTR(WEB_BR_LF_B); page_content += F(INTL_FIRMWARE); page_content += FPSTR(WEB_B_BR); @@ -1740,6 +1826,34 @@ static void webserver_config_send_body_get(String &page_content) page_content += FPSTR(BR_TAG); add_form_checkbox(Config_powersave, FPSTR(INTL_POWERSAVE)); + add_form_checkbox(Config_enable_battery_monitor, FPSTR(INTL_ENABLE_BATTERY_MONITOR)); + page_content += F(""); + unsigned ina219_values[3] = {1, 2, 3}; + const __FlashStringHelper *ina219_info[3] = {FPSTR(INTL_INA219_CAL_32V_2A), FPSTR(INTL_INA219_CAL_32V_1A), FPSTR(INTL_INA219_CAL_16V_400MA)}; + add_form_select(page_content, Config_ina219_calibration, ina219_info, ina219_values, FPSTR(INTL_INA219_SELECT_CALIBRATION), 3); + add_form_input(page_content, Config_battery_u_min, FPSTR(INTL_BATTERY_U_MIN), 5); + add_form_input(page_content, Config_battery_u_max, FPSTR(INTL_BATTERY_U_MAX), 5); + page_content += FPSTR(TABLE_TAG_CLOSE_BR); + + page_content += F(""); + + server.sendContent(page_content); + + page_content = FPSTR(BR_TAG); page_content += FPSTR(TABLE_TAG_OPEN); add_form_input(page_content, Config_debug, FPSTR(INTL_DEBUG_LEVEL), 1); add_form_input(page_content, Config_sending_intervall_ms, FPSTR(INTL_MEASUREMENT_INTERVAL), 5); @@ -2334,6 +2448,26 @@ static void webserver_status() page_content += FPSTR(EMPTY_ROW); add_table_row_from_value(page_content, FPSTR(SENSORS_SDS011), last_value_SDS_version); } + if (cfg::enable_battery_monitor){ + String battery_state_str = ina219_init_failed + ? "- V | - %" + : String(battery_voltage_mV / 1000.0) + "V | " + String(battery_status) + "%"; + add_table_row_from_value(page_content, FPSTR(INTL_BATTERY_STATE), battery_state_str); + + String current_draw_str = ina219_init_failed + ? "- mA" + : current_draw_mA >= 1000 + ? String(static_cast(current_draw_mA) / 1000.0) + "A" + : String(current_draw_mA) + "mA"; + add_table_row_from_value(page_content, FPSTR(INTL_CURRENT_DRAW), current_draw_str); + + String power_consumption_str = ina219_init_failed + ? "- mW" + : power_consumption_mW >= 1000 + ? String(static_cast(power_consumption_mW) / 1000.0) + "W" + : String(power_consumption_mW) + "mW"; + add_table_row_from_value(page_content, FPSTR(INTL_POWER_CONSUMPTION), power_consumption_str); + } if (cfg::npm_read) { page_content += FPSTR(EMPTY_ROW); @@ -4510,6 +4644,91 @@ static void fetchSensorSPS30(String &s) debug_outln_verbose(FPSTR(DBG_TXT_END_READING), FPSTR(SENSORS_SPS30)); } +/***************************************************************** + read Battery state + *****************************************************************/ +static void readBatteryState() { + battery_val_count++; + + if(battery_val_count > 3) { + if(!ina219_is_in_power_save) + { + ina219_is_in_power_save = true; + debug_outln_verbose(F("INA219 is going to sleep...")); + ina219.powerSave(ina219_is_in_power_save); + debug_outln_info(FPSTR(DBG_TXT_SEP)); + } + + battery_voltage_sum = 0; + current_draw_sum = 0; + power_consumption_sum = 0; + if(msSince(battery_monitor_period) <= READINGTIME_ADC_MS) + return; + + battery_monitor_period = act_milli; + battery_val_count = 0; + + return; + } + + ina219_is_in_power_save = false; + ina219.powerSave(ina219_is_in_power_save); + /* NOTE: According the TI's INA219 documentation: "Full recovery from Power-Down requires 40 μs." + * Still, let's be more generous here. + */ + delayMicroseconds(200); + debug_outln_verbose(F("INA219 is awake.")); + + debug_outln_verbose(FPSTR(DBG_TXT_START_READING), FPSTR(SENSORS_INA219)); + debug_outln_verbose(F("Reading #"), String(battery_val_count)); + + float voltage = ina219.getBusVoltage_V(); + battery_voltage_sum += static_cast(voltage * 1000); + battery_voltage_mV = battery_voltage_sum / battery_val_count; + + uint32_t current_draw = static_cast(ina219.getCurrent_mA()); + current_draw_sum += current_draw; + current_draw_mA = current_draw_sum / battery_val_count; + + uint32_t power_consumption = static_cast(ina219.getPower_mW()); + power_consumption_sum += power_consumption; + power_consumption_mW = power_consumption_sum / battery_val_count; + debug_outln_verbose(F("Battery voltge (mV): "), String(battery_voltage_mV)); + + // NOTE: This will fix issues with the map() function when the value of the 'battery_analog_value' is outside of the predefined range by any circumstances. + uint32_t battery_voltage_trimmed = (battery_voltage_mV < cfg::battery_u_min) + ? cfg::battery_u_min + : (battery_voltage_mV > cfg::battery_u_max) + ? cfg::battery_u_max + : battery_voltage_mV; + + battery_status = map(battery_voltage_trimmed, cfg::battery_u_min, cfg::battery_u_max, 0, 100); + + debug_outln_verbose(F("Battery status (%): "), String(battery_status)); + debug_outln_verbose(F("Current draw (mA): "), String(current_draw_mA)); + debug_outln_verbose(F("Power consumption (mW): "), String(power_consumption_mW)); + + debug_outln_verbose(FPSTR(DBG_TXT_END_READING), FPSTR(SENSORS_INA219)); + + battery_monitor_period = act_milli; +} + +/***************************************************************** + send Battery status + *****************************************************************/ +static void sendBatteryStatus(String& s) { + float battery_voltage_data = battery_voltage_mV / 1000.0; + add_Value2Json(s, F("battery_voltage_V"), String(battery_voltage_data)); + add_Value2Json(s, F("battery_status"), String(battery_status)); + add_Value2Json(s, F("current_draw_mA"), String(current_draw_mA)); + add_Value2Json(s, F("power_consumption_mW"), String(power_consumption_mW)); + debug_outln_info(F("Battery (V): "), String(battery_voltage_data)); + debug_outln_info(F("Battery (%): "), String(battery_status)); + debug_outln_info(F("Current (mA): "), String(current_draw_mA)); + debug_outln_info(F("Power (mW): "), String(power_consumption_mW)); + debug_outln_info(FPSTR(DBG_TXT_SEP)); +} + /***************************************************************** * read DNMS values * *****************************************************************/ @@ -5412,6 +5631,30 @@ static bool initBMX280(char addr) } } +/***************************************************************** + * Init INA219 * + *****************************************************************/ +static bool initINA219() +{ + int n = sizeof(ina219_i2c_addresses) / sizeof(ina219_i2c_addresses[0]); + bool result = false; + for(int i = 0; i < n; i++) + { + ina219 = Adafruit_INA219(ina219_i2c_addresses[i]); + debug_out(String(F("Trying INA219 sensor on ")) + String(ina219_i2c_addresses[i], HEX), DEBUG_MIN_INFO); + if(!ina219.begin()) + { + debug_outln_info(FPSTR(DBG_TXT_NOT_FOUND)); + } else { + debug_outln_info(FPSTR(DBG_TXT_FOUND)); + result = true; + break; + } + } + + return result; +} + /***************************************************************** * Init SPS30 PM Sensor * *****************************************************************/ @@ -5681,7 +5924,6 @@ static void powerOnTestSensors() { oneWire.begin(ONEWIRE_PIN); ds18b20.begin(); // Start DS18B20 - debug_outln_info(F("Read DS18B20...")); } if (cfg::dnms_read) @@ -5689,6 +5931,35 @@ static void powerOnTestSensors() debug_outln_info(F("Read DNMS...")); initDNMS(); } + + if (cfg::enable_battery_monitor) + { + debug_outln_info(F("Read INA219...")); + if(!initINA219()) + { + debug_outln_error(F("Check INA219 wiring")); + ina219_init_failed = true; + } else { + switch(cfg::ina219_calibration) + { + case 2: + ina219.setCalibration_32V_1A(); + debug_outln_verbose(F("INA219 callibration's set to 32V, 1A")); + break; + case 3: + ina219.setCalibration_16V_400mA(); + debug_outln_verbose(F("INA219 callibration's set to 16V, 400mA")); + break; + case 1: + default: + ina219.setCalibration_32V_2A(); + debug_outln_verbose(F("INA219 callibration's set to 32V, 2A")); + break; + } + + ina219.powerSave(true); + } + } } static void logEnabledAPIs() @@ -5857,6 +6128,7 @@ void setup(void) esp_mac_id.replace(":", ""); esp_mac_id.toLowerCase(); #endif + pinMode(A0, INPUT); #if defined(ESP32) uint64_t chipid_num; chipid_num = ESP.getEfuseMac(); @@ -5965,6 +6237,7 @@ else if (cfg::ips_read) { starttime_SDS = starttime; } + battery_start_time = starttime; } /***************************************************************** @@ -5975,6 +6248,7 @@ void loop(void) unsigned long sleep = SLEEPTIME_MS; String result_PPD, result_SDS, result_PMS, result_HPM, result_NPM, result_IPS; String result_GPS, result_DNMS, result_SCD30; + String result_BAT; unsigned sum_send_time = 0; @@ -6042,8 +6316,16 @@ void loop(void) } } - if (cfg::ppd_read) + if(cfg::enable_battery_monitor && !ina219_init_failed && !send_now) { + if (msSince(battery_start_time) > SAMPLETIME_BAT_MS) + { + battery_start_time = act_milli; + readBatteryState(); + } + } + + if (cfg::ppd_read) { fetchSensorPPD(result_PPD); } @@ -6233,14 +6515,19 @@ void loop(void) sum_send_time += sendSensorCommunity(result_GPS, GPS_API_PIN, F("GPS"), "GPS_"); result = emptyString; } + add_Value2Json(data, F("samples"), String(sample_count)); add_Value2Json(data, F("min_micro"), String(min_micro)); add_Value2Json(data, F("max_micro"), String(max_micro)); add_Value2Json(data, F("interval"), String(cfg::sending_intervall_ms)); add_Value2Json(data, F("signal"), String(last_signal_strength)); - if ((unsigned)(data.lastIndexOf(',') + 1) == data.length()) - { + if(cfg::enable_battery_monitor){ + sendBatteryStatus(result_BAT); + data += result_BAT; + } + + if ((unsigned)(data.lastIndexOf(',') + 1) == data.length()) { data.remove(data.length() - 1); } data += "]}"; diff --git a/airrohr-firmware/defines.h b/airrohr-firmware/defines.h index 2d132192..890c834e 100644 --- a/airrohr-firmware/defines.h +++ b/airrohr-firmware/defines.h @@ -63,6 +63,8 @@ constexpr const unsigned long SCD30_UPDATE_INTERVAL_MS = 30000; // time be constexpr const unsigned long ONE_DAY_IN_MS = 24 * 60 * 60 * 1000; constexpr const unsigned long PAUSE_BETWEEN_UPDATE_ATTEMPTS_MS = ONE_DAY_IN_MS; // check for firmware updates once a day constexpr const unsigned long DURATION_BEFORE_FORCED_RESTART_MS = ONE_DAY_IN_MS * 28; // force a reboot every ~4 weeks +constexpr const unsigned long READINGTIME_ADC_MS = 10000; +constexpr const unsigned long SAMPLETIME_BAT_MS = 1000; // Definition GPIOs for Zero based Arduino Feather M0 LoRaWAN #if defined(ARDUINO_SAMD_ZERO) && defined(SERIAL_PORT_USBVIRTUAL) diff --git a/airrohr-firmware/ext_def.h b/airrohr-firmware/ext_def.h index d6dc182f..8cfdfb06 100644 --- a/airrohr-firmware/ext_def.h +++ b/airrohr-firmware/ext_def.h @@ -133,6 +133,9 @@ static const char MEASUREMENT_NAME_INFLUX[] PROGMEM = "feinstaub"; // PPD42NS, the cheaper version of the particle sensor #define PPD_PIN_PM1 GPS_SERIAL_TX #define PPD_PIN_PM2 GPS_SERIAL_RX + +#define ADC_PIN A0 +#define ADC_RANGE_MAX 1023 #endif @@ -171,6 +174,9 @@ static const char MEASUREMENT_NAME_INFLUX[] PROGMEM = "feinstaub"; //#define RFM69_CS D0 //#define RFM69_RST D2 //#define RFM69_INT D4 + +#define ADC_PIN 36 +#define ADC_RANGE_MAX 4095 #endif // === pin assignments for lolin_d32_pro board =================================== @@ -332,5 +338,15 @@ static const char MEASUREMENT_NAME_INFLUX[] PROGMEM = "feinstaub"; // Show device info on displays #define DISPLAY_DEVICE_INFO 1 +// Using INA219 based Volt & Current metter board +#define ENABLE_BATTERY_MONITOR 0 + +// Battery preset fully charged and discharged states voltages +#define BATTERY_U_MAX 4200 +#define BATTERY_U_MIN 2800 + +// INA219 default calibration range of 32V, 2A +#define INA219_CALIBRATION 1 + // Set debug level for serial output? #define DEBUG 3 diff --git a/airrohr-firmware/html-content.h b/airrohr-firmware/html-content.h index 1130cc08..1cf47869 100644 --- a/airrohr-firmware/html-content.h +++ b/airrohr-firmware/html-content.h @@ -24,6 +24,8 @@ const char DBG_TXT_CONNECTING_TO[] PROGMEM = "Connecting to "; const char DBG_TXT_FOUND[] PROGMEM = " ... found"; const char DBG_TXT_NOT_FOUND[] PROGMEM = " ... not found"; const char DBG_TXT_SEP[] PROGMEM = "----"; +const char DBG_TXT_VOLTAGE[] PROGMEM = "Voltage (V): "; +const char DBG_TXT_CAPACITY[] PROGMEM = "Capacity (%): "; const char SENSORS_SDS011[] PROGMEM = "SDS011"; const char SENSORS_PPD42NS[] PROGMEM = "PPD42NS"; @@ -41,6 +43,7 @@ const char SENSORS_BMP180[] PROGMEM = "BMP180"; const char SENSORS_BME280[] PROGMEM = "BME280"; const char SENSORS_BMP280[] PROGMEM = "BMP280"; const char SENSORS_DNMS[] PROGMEM = "DNMS"; +const char SENSORS_INA219[] PROGMEM = "INA219"; const char WEB_PAGE_HEADER[] PROGMEM = "\ \ diff --git a/airrohr-firmware/intl_bg.h b/airrohr-firmware/intl_bg.h index 37482487..d2cf8caa 100644 --- a/airrohr-firmware/intl_bg.h +++ b/airrohr-firmware/intl_bg.h @@ -129,6 +129,16 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Качество на сигнала #define INTL_SENSOR "Сензор" #define INTL_PARAMETER "Параметър" #define INTL_VALUE "Стойност" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активиране на монитора на батерията (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Състояние на батерията"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Консумация на ток"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Консумация на енергия"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "U min на батерията (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "U max на батерията (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Изберете калибриране"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; //const char LUFTDATEN_INFO_LOGO_SVG[] PROGMEM = ""; diff --git a/airrohr-firmware/intl_br.h b/airrohr-firmware/intl_br.h index 1075e3b1..39fecc56 100644 --- a/airrohr-firmware/intl_br.h +++ b/airrohr-firmware/intl_br.h @@ -128,5 +128,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualidade do Sinal"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parâmetro" #define INTL_VALUE "Valor" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Аtivar monitor de bateria (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Status da bateria"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Consumo de corrente"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consumo de energia"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Bateria U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Bateria U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Selecione a calibração"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_cn.h b/airrohr-firmware/intl_cn.h index 726e8b4f..dfc71264 100644 --- a/airrohr-firmware/intl_cn.h +++ b/airrohr-firmware/intl_cn.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "信号质量"; #define INTL_SENSOR "传感器" #define INTL_PARAMETER "参数" #define INTL_VALUE "价值" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "启用电池监控器 (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "电池状态"; +const char INTL_CURRENT_DRAW[] PROGMEM = "电流消耗"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "功耗"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "电池 U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "电池 U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "选择校准"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_cz.h b/airrohr-firmware/intl_cz.h index 4be92b57..a2ebcf28 100644 --- a/airrohr-firmware/intl_cz.h +++ b/airrohr-firmware/intl_cz.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Kvalita signálu"; #define INTL_SENSOR "Senzor" #define INTL_PARAMETER "Parametr" #define INTL_VALUE "Hodnota" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Povolit sledování baterie (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Stav baterie"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Odběr proudu"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Spotřeba energie"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Baterie U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Baterie U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Vyberte kalibraci"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_de.h b/airrohr-firmware/intl_de.h index c056c2a0..d6ba5752 100644 --- a/airrohr-firmware/intl_de.h +++ b/airrohr-firmware/intl_de.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualität"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Wert" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Batteriemonitor aktivieren (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Batteriestatus"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Stromaufnahme"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Stromverbrauch"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batterie U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batterie U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Kalibrierung auswählen"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_dk.h b/airrohr-firmware/intl_dk.h index dbe1477b..794fc6d1 100644 --- a/airrohr-firmware/intl_dk.h +++ b/airrohr-firmware/intl_dk.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Kvalitet"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Værdi" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Aktivér batteriskærm (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Batteristatus"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Strømtræk"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Strømforbrug"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batteri U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batteri U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Vælg kalibrering"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ee.h b/airrohr-firmware/intl_ee.h index 847c4f86..cc142831 100644 --- a/airrohr-firmware/intl_ee.h +++ b/airrohr-firmware/intl_ee.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "signaali kvaliteet"; #define INTL_SENSOR "Andur" #define INTL_PARAMETER "Parameeter" #define INTL_VALUE "Väärtus" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Luba aku monitor (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Aku olek"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Voolutarve"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Energiatarve"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Aku U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Aku U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Valige kalibreerimine"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_en.h b/airrohr-firmware/intl_en.h index 995ab884..c4e40801 100644 --- a/airrohr-firmware/intl_en.h +++ b/airrohr-firmware/intl_en.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "signal quality"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Value" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Enable battery monitor (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Battery status"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Current draw"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Power consumption"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Battery U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Battery U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Select calibration"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_es.h b/airrohr-firmware/intl_es.h index 14cd72a9..34791888 100644 --- a/airrohr-firmware/intl_es.h +++ b/airrohr-firmware/intl_es.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Calidad de Señal"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parámetro" #define INTL_VALUE "Valor" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Habilitar monitor de batería (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Estado de la batería"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Consumo de corriente"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consumo de energía"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batería U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batería U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Seleccionar calibración"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_fi.h b/airrohr-firmware/intl_fi.h index 8494a037..86e32f1c 100644 --- a/airrohr-firmware/intl_fi.h +++ b/airrohr-firmware/intl_fi.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "signaalin laatu"; #define INTL_SENSOR "Anturi" #define INTL_PARAMETER "Parametri" #define INTL_VALUE "Arvo" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Ota akkumonitori käyttöön (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Akun tila"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Virranotto"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Virrankulutus"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Akku U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Akku U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Valitse kalibrointi"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_fr.h b/airrohr-firmware/intl_fr.h index cd58e5f2..ce05458d 100644 --- a/airrohr-firmware/intl_fr.h +++ b/airrohr-firmware/intl_fr.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualité du signal"; #define INTL_SENSOR "Capteur" #define INTL_PARAMETER "Paramètres" #define INTL_VALUE "Valeur" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Activer le moniteur de batterie (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "État de la batterie"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Consommation de courant"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consommation d'énergie"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batterie U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batterie U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Sélectionner l'étalonnage"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_gr.h b/airrohr-firmware/intl_gr.h index d247948f..cf00df75 100644 --- a/airrohr-firmware/intl_gr.h +++ b/airrohr-firmware/intl_gr.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "ποιότητα σήματος"; #define INTL_SENSOR "Αισθητήρας" #define INTL_PARAMETER "Παράμετρος" #define INTL_VALUE "Αξία" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Ενεργοποίηση οθόνης μπαταρίας (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Κατάσταση μπαταρίας"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Τραβήξτε ρεύμα"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Κατανάλωση ρεύματος"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Μπαταρία U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Μπαταρία U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Επιλέξτε βαθμονόμηση"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_hu.h b/airrohr-firmware/intl_hu.h index d80b10bc..df133bc1 100644 --- a/airrohr-firmware/intl_hu.h +++ b/airrohr-firmware/intl_hu.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Jelminőség"; #define INTL_SENSOR "Szenzor" #define INTL_PARAMETER "Paraméter" #define INTL_VALUE "Érték" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Engedélyezze az akkumulátorfigyelőt (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Az akkumulátor állapota"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Áramfelvétel"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Energiafogyasztás"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Akkumulátor U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Akkumulátor U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Válassza ki a kalibrálást"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_it.h b/airrohr-firmware/intl_it.h index 1b6c36ce..851659bf 100644 --- a/airrohr-firmware/intl_it.h +++ b/airrohr-firmware/intl_it.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualità del segnale"; #define INTL_SENSOR "Sensore" #define INTL_PARAMETER "Parametro" #define INTL_VALUE "Valore" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Abilita il monitoraggio della batteria (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Stato della batteria"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Assorbimento di corrente"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consumo energetico"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batteria U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batteria U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Seleziona la calibrazione"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_jp.h b/airrohr-firmware/intl_jp.h index 3004949a..ff740a0c 100644 --- a/airrohr-firmware/intl_jp.h +++ b/airrohr-firmware/intl_jp.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "信号品質"; #define INTL_SENSOR "センサー" #define INTL_PARAMETER "パラメータ" #define INTL_VALUE "価値" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "バッテリーモニターを有効にする (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "バッテリーの状態"; +const char INTL_CURRENT_DRAW[] PROGMEM = "消費電流"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "消費電力"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "電池 U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "電池 U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "キャリブレーションを選択"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lt.h b/airrohr-firmware/intl_lt.h index a1db50fe..ad1654e0 100644 --- a/airrohr-firmware/intl_lt.h +++ b/airrohr-firmware/intl_lt.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "signalo kokybė"; #define INTL_SENSOR "Jutiklis" #define INTL_PARAMETER "Parametras" #define INTL_VALUE "Vertė" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Įgalinti akumuliatoriaus monitorių (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Baterijos būsena"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Srovės trauka"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Energijos suvartojimas"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Baterija U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Baterija U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Pasirinkite kalibravimą"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lu.h b/airrohr-firmware/intl_lu.h index 24601d09..0c569ede 100644 --- a/airrohr-firmware/intl_lu.h +++ b/airrohr-firmware/intl_lu.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualitéit"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Wäert" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Aktivéiert Batterie Monitor (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Batterie Status"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Aktuell Zeechnen"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Stroumverbrauch"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batterie U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batterie U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Wielt Kalibratioun"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lv.h b/airrohr-firmware/intl_lv.h index 905df511..6a2b2427 100644 --- a/airrohr-firmware/intl_lv.h +++ b/airrohr-firmware/intl_lv.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "signāla kvalitāte"; #define INTL_SENSOR "Sensors" #define INTL_PARAMETER "Parametrs" #define INTL_VALUE "Vērtība" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Iespējot akumulatora monitoru (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Akumulatora statuss"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Strāvas patēriņš"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Enerģijas patēriņš"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Akumulators U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Akumulators U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Izvēlieties kalibrēšanu"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_nl.h b/airrohr-firmware/intl_nl.h index e47cb4d6..9ed8dce6 100644 --- a/airrohr-firmware/intl_nl.h +++ b/airrohr-firmware/intl_nl.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Signaalkwaliteit"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Waarde" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Schakel de batterijmonitor in (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Batterijstatus"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Stroomafname"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Stroomverbruik"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "batterij U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "batterij U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Selecteer kalibratie"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_pl.h b/airrohr-firmware/intl_pl.h index c854a649..b634b731 100644 --- a/airrohr-firmware/intl_pl.h +++ b/airrohr-firmware/intl_pl.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Jakość sygnału"; #define INTL_SENSOR "Czujnik" #define INTL_PARAMETER "Parametr" #define INTL_VALUE "Wartość" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Włącz monitor baterii (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Stan baterii"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Pobór prądu"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Pobór mocy"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Bateria U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Bateria U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Wybierz kalibrację"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_pt.h b/airrohr-firmware/intl_pt.h index 33128a63..1e22e922 100644 --- a/airrohr-firmware/intl_pt.h +++ b/airrohr-firmware/intl_pt.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Qualidade do Sinal"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parâmetro" #define INTL_VALUE "Valor" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Habilitar monitor de bateria"; +const char INTL_BATTERY_STATE[] PROGMEM = "Estado da bateria"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Consumo atual"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consumo de energia"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Bateria U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Bateria U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Selecione a calibração"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ro.h b/airrohr-firmware/intl_ro.h index 8c2235d1..10f74c0f 100644 --- a/airrohr-firmware/intl_ro.h +++ b/airrohr-firmware/intl_ro.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "calitatea semnalului"; #define INTL_SENSOR "Senzor" #define INTL_PARAMETER "Parametru" #define INTL_VALUE "Valoare" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Iespējot akumulatora monitoru (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Starea bateriei"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Consumul de curent"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Consum de putere"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Akumulators U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Akumulators U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Selectați calibrarea"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_rs.h b/airrohr-firmware/intl_rs.h index 7b7b1c22..e7898b31 100644 --- a/airrohr-firmware/intl_rs.h +++ b/airrohr-firmware/intl_rs.h @@ -129,5 +129,16 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "kvalitet signala"; #define INTL_SENSOR "Senzor" #define INTL_PARAMETER "Parametar" #define INTL_VALUE "Vrednost" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активирајте монитор батерије (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Статус батерије"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Повлачење струје"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Потрошња енергије"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "U min на батерије (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "U max на батерије (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Изаберите калибрацију"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; + #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ru.h b/airrohr-firmware/intl_ru.h index a284641f..6001325c 100644 --- a/airrohr-firmware/intl_ru.h +++ b/airrohr-firmware/intl_ru.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Качество"; #define INTL_SENSOR "Датчик" #define INTL_PARAMETER "Параметр" #define INTL_VALUE "Значение" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активируйте монитор батареи (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Состояние батареи"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Потребляемый ток"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Потребляемая мощность"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "U min на батареи (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "U max на батареи (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Выберите калибровку"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_se.h b/airrohr-firmware/intl_se.h index b179d8c2..bc9508e2 100644 --- a/airrohr-firmware/intl_se.h +++ b/airrohr-firmware/intl_se.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Kvalitet"; #define INTL_SENSOR "Sensor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Värde" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Aktivera batteriövervakare (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Batteristatus"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Strömdrag"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Energiförbrukning"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batteri U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batteri U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Välj kalibrering"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_si.h b/airrohr-firmware/intl_si.h index f488f0e0..25e96619 100644 --- a/airrohr-firmware/intl_si.h +++ b/airrohr-firmware/intl_si.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "kakovost signala"; #define INTL_SENSOR "Senzor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Vrednost" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Omogoči nadzor baterije (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Stanje baterije"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Poraba toka"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Poraba energije"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Baterija U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Baterija U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Izberite kalibracijo"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_sk.h b/airrohr-firmware/intl_sk.h index 2430a3af..3315ad67 100644 --- a/airrohr-firmware/intl_sk.h +++ b/airrohr-firmware/intl_sk.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "kvalita signálu"; #define INTL_SENSOR "Senzor" #define INTL_PARAMETER "Parameter" #define INTL_VALUE "Hodnota" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Povoliť sledovanie batérie (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Stav batérie"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Odber prúdu"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Spotreba energie"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Batéria U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Batéria U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Vyberte kalibráciu"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_template.h b/airrohr-firmware/intl_template.h index c35a13d4..6477acb5 100644 --- a/airrohr-firmware/intl_template.h +++ b/airrohr-firmware/intl_template.h @@ -129,5 +129,16 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = ""; #define INTL_SENSOR "" #define INTL_PARAMETER "" #define INTL_VALUE "" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = " (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = ""; +const char INTL_CURRENT_DRAW[] PROGMEM = ""; +const char INTL_POWER_CONSUMPTION[] PROGMEM = ""; +const char INTL_BATTERY_U_MIN[] PROGMEM = " U min (mV)"; +const char INTL_BATTERY_U_MAX[] PROGMEM = " U max (mV)"; +const char INTL_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divider U max (mV)"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = ""; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_tr.h b/airrohr-firmware/intl_tr.h index da2fefa3..3ba6a3c8 100644 --- a/airrohr-firmware/intl_tr.h +++ b/airrohr-firmware/intl_tr.h @@ -129,5 +129,16 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "sinyal kalitesi"; #define INTL_SENSOR "algılayıcı(Sensör)" #define INTL_PARAMETER "Parametre" #define INTL_VALUE "değer" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Pil monitörünü etkinleştir (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Pil durumu"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Akım çekişi"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Güç tüketimi"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "Pil U min (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "Pil U max (mV):"; +const char INTL_ADC_DIVIDER_U_MAX[] PROGMEM = "ADD bölücü U max (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Kalibrasyonu seçin"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ua.h b/airrohr-firmware/intl_ua.h index ebe048b3..076723f1 100644 --- a/airrohr-firmware/intl_ua.h +++ b/airrohr-firmware/intl_ua.h @@ -129,5 +129,15 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "якість сигналу"; #define INTL_SENSOR "Сенсор" #define INTL_PARAMETER "Параметр" #define INTL_VALUE "Значення" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активуйте монітор батареї (INA219)"; +const char INTL_BATTERY_STATE[] PROGMEM = "Стан батареї"; +const char INTL_CURRENT_DRAW[] PROGMEM = "Споживання струму"; +const char INTL_POWER_CONSUMPTION[] PROGMEM = "Споживана потужність"; +const char INTL_BATTERY_U_MIN[] PROGMEM = "U min на батареї (mV):"; +const char INTL_BATTERY_U_MAX[] PROGMEM = "U max на батареї (mV):"; +const char INTL_INA219_SELECT_CALIBRATION[] PROGMEM = "Виберіть калібрування"; +const char INTL_INA219_CAL_32V_2A[] PROGMEM = "32V, 2A"; +const char INTL_INA219_CAL_32V_1A[] PROGMEM = "32V, 1A"; +const char INTL_INA219_CAL_16V_400MA[] PROGMEM = "16V, 400mA"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/platformio.ini b/airrohr-firmware/platformio.ini index e347d116..29fb170e 100644 --- a/airrohr-firmware/platformio.ini +++ b/airrohr-firmware/platformio.ini @@ -55,6 +55,7 @@ lib_deps_external = bblanchon/ArduinoJson@6.18.3 ThingPulse/ESP8266 and ESP32 OLED driver for SSD1306 displays @ ^4.3.0 mikalhart/TinyGPSPlus@1.0.2 + adafruit/Adafruit INA219@^1.1.1 ; system libraries from platform -> no version number lib_deps_esp8266_platform =