diff --git a/airrohr-firmware/airrohr-cfg.h b/airrohr-firmware/airrohr-cfg.h index b72d6383..49aee7e7 100644 --- a/airrohr-firmware/airrohr-cfg.h +++ b/airrohr-firmware/airrohr-cfg.h @@ -93,6 +93,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_adc_divider_u_max, }; static constexpr char CFG_KEY_CURRENT_LANG[] PROGMEM = "current_lang"; static constexpr char CFG_KEY_WLANSSID[] PROGMEM = "wlanssid"; @@ -162,6 +166,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_ADC_DIVIDER_U_MAX[] PROGMEM = "adc_divider_u_max"; 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 }, @@ -231,4 +239,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_ADC_DIVIDER_U_MAX, &cfg::adc_divider_u_max }, }; diff --git a/airrohr-firmware/airrohr-cfg.h.py b/airrohr-firmware/airrohr-cfg.h.py index dcc603cf..e3d2b339 100755 --- a/airrohr-firmware/airrohr-cfg.h.py +++ b/airrohr-firmware/airrohr-cfg.h.py @@ -69,6 +69,10 @@ Password pwd_influx String measurement_name_influx Bool ssl_influx +Bool enable_battery_monitor +UInt battery_u_min +UInt battery_u_max +UInt adc_divider_u_max """ with open("airrohr-cfg.h", "w") as h: diff --git a/airrohr-firmware/airrohr-firmware.ino b/airrohr-firmware/airrohr-firmware.ino index a351885b..8e5a8994 100644 --- a/airrohr-firmware/airrohr-firmware.ino +++ b/airrohr-firmware/airrohr-firmware.ino @@ -201,6 +201,14 @@ namespace cfg { bool display_wifi_info = DISPLAY_WIFI_INFO; bool display_device_info = DISPLAY_DEVICE_INFO; + // ADC settings + unsigned adc_divider_u_max = ADC_DIVIDER_U_MAX; + + // 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; + // API settings bool ssl_madavi = SSL_MADAVI; bool ssl_dusti = SSL_SENSORCOMMUNITY; @@ -362,6 +370,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 { @@ -377,7 +387,6 @@ unsigned long last_update_attempt; int last_update_returncode; int last_sendData_returncode; - float last_value_BMP_T = -128.0; float last_value_BMP_P = -1.0; float last_value_BMX280_T = -128.0; @@ -493,6 +502,11 @@ String last_data_string; int last_signal_strength; int last_disconnect_reason; +uint32_t battery_analog_value = 0; +uint32_t battery_charge = 0; +uint32_t battery_sum = 0; +uint32_t battery_val_count = 0; + String esp_chipid; String esp_mac_id; String last_value_SDS_version; @@ -1161,6 +1175,33 @@ static void webserver_config_send_body_get(String& page_content) { add_form_input(page_content, Config_static_dns, FPSTR(INTL_STATIC_DNS), 15); page_content += FPSTR(BR_TAG); + server.sendContent(page_content); + page_content = emptyString; + + page_content += FPSTR(BR_TAG); + add_form_checkbox(Config_enable_battery_monitor, FPSTR(INTL_ENABLE_BATTERY_MONITOR)); + page_content += F(""); + 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); + add_form_input(page_content, Config_adc_divider_u_max, FPSTR(INTL_ADC_DIVIDER_U_MAX), 5); + page_content += FPSTR(TABLE_TAG_CLOSE_BR); + + page_content += F(""); + server.sendContent(page_content); page_content = FPSTR(WEB_BR_LF_B); page_content += F(INTL_FIRMWARE " "); @@ -1680,6 +1721,11 @@ 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 = F(String(battery_charge) + " % (" + String(battery_analog_value / 1000.0) + "V)"); + String battery_state = String(battery_charge) + " % (" + String(battery_analog_value / 1000.0) + "V)"; + add_table_row_from_value(page_content, FPSTR(INTL_BATTERY_CHARGE), battery_state); + } if (cfg::scd30_read) { if (scd30.getAutoSelfCalibration() == true) add_table_row_from_value(page_content, F("SCD30 Auto Calibration"), "enabled"); @@ -1692,7 +1738,6 @@ static void webserver_status() { add_table_row_from_value(page_content, F("SCD30 temperature offset"), String(settingVal)); } - page_content += FPSTR(EMPTY_ROW); page_content += F(""); String wifiStatus(WiFi_error_count); @@ -3393,6 +3438,55 @@ static void fetchSensorSPS30(String& s) { debug_outln_verbose(FPSTR(DBG_TXT_END_READING), FPSTR(SENSORS_SPS30)); } +/***************************************************************** + read Battery voltage + *****************************************************************/ +static void readBatteryVoltage() { + battery_val_count++; + if(battery_val_count > 3){ + battery_sum = 0; + if(msSince(battery_monitor_period) <= READINGTIME_ADC_MS) + return; + + battery_monitor_period = act_milli; + battery_val_count = 0; + return; + } + + String dbg_reading = "Battery voltage #" + String(battery_val_count); + debug_outln_verbose(FPSTR(DBG_TXT_START_READING), dbg_reading); + battery_sum += analogRead(ADC_PIN); + + float battery_avg_value = battery_sum / static_cast(battery_val_count); + float ratio = cfg::adc_divider_u_max / static_cast(ADC_RANGE_MAX); + battery_analog_value = round(battery_avg_value * ratio); + debug_outln_verbose(F("Battery analog value (mV): "), String(battery_analog_value)); + String bat_min_max = String(cfg::battery_u_min) + " / " + String(cfg::battery_u_max); + + // 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 = (battery_analog_value < (uint32_t)cfg::battery_u_min) ? (uint32_t)cfg::battery_u_min : battery_analog_value; + battery_voltage = (battery_voltage > (uint32_t)cfg::battery_u_max) ? (uint32_t)cfg::battery_u_max : battery_voltage; + + battery_charge = map(battery_voltage, cfg::battery_u_min, cfg::battery_u_max, 0, 100); + + debug_outln_verbose(F("Battery capacity (%): "), String(battery_charge)); + debug_outln_verbose(FPSTR(DBG_TXT_END_READING), F("Battery voltage")); + + battery_monitor_period = act_milli; +} + +/***************************************************************** + send Battery status + *****************************************************************/ +static void sendBatteryStatus(String& s) { + float battery_voltage = battery_analog_value / 1000.0; + add_Value2Json(s, F("Battery_voltage"), String(battery_voltage)); + add_Value2Json(s, F("battery_charge"), String(battery_charge)); + debug_outln_info(F("Battery (V): "), String(battery_voltage)); + debug_outln_info(F("Battery (%): "), String(battery_charge)); + debug_outln_info(FPSTR(DBG_TXT_SEP)); +} + /***************************************************************** read DNMS values *****************************************************************/ @@ -4442,6 +4536,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(); @@ -4488,6 +4583,7 @@ void setup(void) { starttime = millis(); // store the start time last_update_attempt = time_point_device_start_ms = starttime; last_display_millis = starttime_SDS = starttime; + battery_start_time = starttime; } /***************************************************************** @@ -4496,7 +4592,7 @@ void setup(void) { void loop(void) { String result_PPD, result_SDS, result_PMS, result_HPM; String result_GPS, result_DNMS; - + String result_BAT; unsigned sum_send_time = 0; @@ -4551,6 +4647,13 @@ void loop(void) { } } + if(cfg::enable_battery_monitor && !send_now){ + if (msSince(battery_start_time) > SAMPLETIME_BAT_MS){ + battery_start_time = act_milli; + readBatteryVoltage(); + } + } + if (cfg::ppd_read) { fetchSensorPPD(result_PPD); } @@ -4685,12 +4788,18 @@ 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(cfg::enable_battery_monitor){ + sendBatteryStatus(result_BAT); + data += result_BAT; + } + if ((unsigned)(data.lastIndexOf(',') + 1) == data.length()) { data.remove(data.length() - 1); } diff --git a/airrohr-firmware/defines.h b/airrohr-firmware/defines.h index e1ce0978..e6b33aa9 100644 --- a/airrohr-firmware/defines.h +++ b/airrohr-firmware/defines.h @@ -58,6 +58,8 @@ constexpr const unsigned long DISPLAY_UPDATE_INTERVAL_MS = 5000; // 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 e776e4cb..210969e4 100644 --- a/airrohr-firmware/ext_def.h +++ b/airrohr-firmware/ext_def.h @@ -125,6 +125,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 @@ -163,6 +166,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 =================================== @@ -287,7 +293,7 @@ static const char MEASUREMENT_NAME_INFLUX[] PROGMEM = "feinstaub"; #define MHZ19_READ 0 // automatic firmware updates -#define AUTO_UPDATE 1 +#define AUTO_UPDATE 0 // use beta firmware #define USE_BETA 0 @@ -319,5 +325,14 @@ static const char MEASUREMENT_NAME_INFLUX[] PROGMEM = "feinstaub"; // Show device info on displays #define DISPLAY_DEVICE_INFO 1 +#define ENABLE_BATTERY_MONITOR 0 + +// Adc preset maximum input voltage applied to the voltage devider's input +#define ADC_DIVIDER_U_MAX 5120 + +// Battery preset fully charged and discharged states voltages +#define BATTERY_U_MAX 4200 +#define BATTERY_U_MIN 2800 + // Set debug level for serial output? #define DEBUG 3 diff --git a/airrohr-firmware/html-content.h b/airrohr-firmware/html-content.h index bc820f33..3afe0bc8 100644 --- a/airrohr-firmware/html-content.h +++ b/airrohr-firmware/html-content.h @@ -23,6 +23,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"; diff --git a/airrohr-firmware/intl_bg.h b/airrohr-firmware/intl_bg.h index 4cdb7734..9c5cf892 100644 --- a/airrohr-firmware/intl_bg.h +++ b/airrohr-firmware/intl_bg.h @@ -124,6 +124,11 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Качество на сигнала #define INTL_SENSOR "Сензор" #define INTL_PARAMETER "Параметър" #define INTL_VALUE "Стойност" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активиране на монитора на батерията"; +const char INTL_BATTERY_CHARGE[] 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 = "U max при делителя на АЦП (mV):"; //const char LUFTDATEN_INFO_LOGO_SVG[] PROGMEM = ""; diff --git a/airrohr-firmware/intl_cn.h b/airrohr-firmware/intl_cn.h index a0c9a839..3fff5c0d 100644 --- a/airrohr-firmware/intl_cn.h +++ b/airrohr-firmware/intl_cn.h @@ -125,5 +125,11 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "信号质量"; #define INTL_SENSOR "传感器" #define INTL_PARAMETER "参数" #define INTL_VALUE "价值" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "启用电池监控器"; +const char INTL_BATTERY_CHARGE[] 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分频器 U max (mV)"; + #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_cz.h b/airrohr-firmware/intl_cz.h index cdd26d79..a5b0ca99 100644 --- a/airrohr-firmware/intl_cz.h +++ b/airrohr-firmware/intl_cz.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Kvalita signálu"; #define INTL_SENSOR "Modul" #define INTL_PARAMETER "Parametr" #define INTL_VALUE "Hodnota" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Povolit sledování baterie"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Nabíjení baterie"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "Dělič ADP U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_de.h b/airrohr-firmware/intl_de.h index 52860420..7c86501c 100644 --- a/airrohr-firmware/intl_de.h +++ b/airrohr-firmware/intl_de.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Batterieladung"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADW teiler U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_dk.h b/airrohr-firmware/intl_dk.h index b29c9248..c74474a6 100644 --- a/airrohr-firmware/intl_dk.h +++ b/airrohr-firmware/intl_dk.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Batteriopladning"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADK divider U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ee.h b/airrohr-firmware/intl_ee.h index da806af8..57a1ff5b 100644 --- a/airrohr-firmware/intl_ee.h +++ b/airrohr-firmware/intl_ee.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Aku laadimine"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC eraldaja U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_en.h b/airrohr-firmware/intl_en.h index 90899e9b..72706f45 100644 --- a/airrohr-firmware/intl_en.h +++ b/airrohr-firmware/intl_en.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Battery charge"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divider U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_es.h b/airrohr-firmware/intl_es.h index d0fe0f27..dbb14017 100644 --- a/airrohr-firmware/intl_es.h +++ b/airrohr-firmware/intl_es.h @@ -124,5 +124,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Bateria cargada"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "Divisor CAD U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_fi.h b/airrohr-firmware/intl_fi.h index 3efa03b2..ab5f3517 100644 --- a/airrohr-firmware/intl_fi.h +++ b/airrohr-firmware/intl_fi.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Akun varaus"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC-jakaja U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_fr.h b/airrohr-firmware/intl_fr.h index bcb22c2a..f7dae8ab 100644 --- a/airrohr-firmware/intl_fr.h +++ b/airrohr-firmware/intl_fr.h @@ -124,5 +124,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Charge de la batterie"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "Diviseur de CAN U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_gr.h b/airrohr-firmware/intl_gr.h index e064a779..c55d3264 100644 --- a/airrohr-firmware/intl_gr.h +++ b/airrohr-firmware/intl_gr.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "ποιότητα σήματος"; #define INTL_SENSOR "Αισθητήρας" #define INTL_PARAMETER "Παράμετρος" #define INTL_VALUE "Αξία" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Ενεργοποίηση οθόνης μπαταρίας"; +const char INTL_BATTERY_CHARGE[] 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 U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_hu.h b/airrohr-firmware/intl_hu.h index 126a30f8..f5a17bde 100644 --- a/airrohr-firmware/intl_hu.h +++ b/airrohr-firmware/intl_hu.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Akkumulátortöltő"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADA elválasztó U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_it.h b/airrohr-firmware/intl_it.h index f5fdb2de..2c96d97f 100644 --- a/airrohr-firmware/intl_it.h +++ b/airrohr-firmware/intl_it.h @@ -124,5 +124,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Carica batterie"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divisore U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_jp.h b/airrohr-firmware/intl_jp.h index 4399814a..9c522f81 100644 --- a/airrohr-firmware/intl_jp.h +++ b/airrohr-firmware/intl_jp.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "信号品質"; #define INTL_SENSOR "センサー" #define INTL_PARAMETER "パラメータ" #define INTL_VALUE "価値" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "バッテリーモニターを有効にする"; +const char INTL_BATTERY_CHARGE[] 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分周器 U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lt.h b/airrohr-firmware/intl_lt.h index ccb27bac..20a09e7b 100644 --- a/airrohr-firmware/intl_lt.h +++ b/airrohr-firmware/intl_lt.h @@ -125,5 +125,10 @@ 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ų"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Baterijos įkrovimas"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC daliklis U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lu.h b/airrohr-firmware/intl_lu.h index ff4757a9..403a0484 100644 --- a/airrohr-firmware/intl_lu.h +++ b/airrohr-firmware/intl_lu.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Batterieladung"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divider U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_lv.h b/airrohr-firmware/intl_lv.h index 9b72665e..2137a76f 100644 --- a/airrohr-firmware/intl_lv.h +++ b/airrohr-firmware/intl_lv.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Akumulatora uzlāde"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC dalītājs U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_nl.h b/airrohr-firmware/intl_nl.h index 2dd67eb3..70f31103 100644 --- a/airrohr-firmware/intl_nl.h +++ b/airrohr-firmware/intl_nl.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Batterijlading"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADO divider U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_pl.h b/airrohr-firmware/intl_pl.h index 52601e88..42030d98 100644 --- a/airrohr-firmware/intl_pl.h +++ b/airrohr-firmware/intl_pl.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Ładowanie baterii"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ACP dzielnik U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_pt.h b/airrohr-firmware/intl_pt.h index 38a6dc58..0dff7d74 100644 --- a/airrohr-firmware/intl_pt.h +++ b/airrohr-firmware/intl_pt.h @@ -124,5 +124,10 @@ 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_CHARGE[] PROGMEM = "Carga da bateria"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divisor U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ro.h b/airrohr-firmware/intl_ro.h index 4214041b..aa2c409e 100644 --- a/airrohr-firmware/intl_ro.h +++ b/airrohr-firmware/intl_ro.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Akumulatora uzlāde"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC dalītājs U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_rs.h b/airrohr-firmware/intl_rs.h index 2daad10b..8fcbfbd9 100644 --- a/airrohr-firmware/intl_rs.h +++ b/airrohr-firmware/intl_rs.h @@ -125,5 +125,10 @@ 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 = "Активирајте монитор батерије"; +const char INTL_BATTERY_CHARGE[] 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 = "АДП разделник U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ru.h b/airrohr-firmware/intl_ru.h index a89a9129..cbbe256b 100644 --- a/airrohr-firmware/intl_ru.h +++ b/airrohr-firmware/intl_ru.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "Качество"; #define INTL_SENSOR "Датчик" #define INTL_PARAMETER "Параметр" #define INTL_VALUE "Значение" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активируйте монитор батареи"; +const char INTL_BATTERY_CHARGE[] 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 = "U max при делителя на АЦП (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_se.h b/airrohr-firmware/intl_se.h index 573e0dfe..2b6499b7 100644 --- a/airrohr-firmware/intl_se.h +++ b/airrohr-firmware/intl_se.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Batteriladdning"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADО divider U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_si.h b/airrohr-firmware/intl_si.h index 2f1828a4..f34dbb79 100644 --- a/airrohr-firmware/intl_si.h +++ b/airrohr-firmware/intl_si.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Polnjenje baterije"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC delilnik U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_sk.h b/airrohr-firmware/intl_sk.h index 80126168..136810d1 100644 --- a/airrohr-firmware/intl_sk.h +++ b/airrohr-firmware/intl_sk.h @@ -124,5 +124,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Nabitie batérie"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADP rozdeľovač U max (mV):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_template.h b/airrohr-firmware/intl_template.h index 9c0e32a4..9bcc70e3 100644 --- a/airrohr-firmware/intl_template.h +++ b/airrohr-firmware/intl_template.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = ""; #define INTL_SENSOR "" #define INTL_PARAMETER "" #define INTL_VALUE "" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Enable battery monitor"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Battery charge"; +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_ADC_DIVIDER_U_MAX[] PROGMEM = "ADC divider U max (mV)"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_tr.h b/airrohr-firmware/intl_tr.h index 69954597..f2ccbd7d 100644 --- a/airrohr-firmware/intl_tr.h +++ b/airrohr-firmware/intl_tr.h @@ -125,5 +125,10 @@ 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"; +const char INTL_BATTERY_CHARGE[] PROGMEM = "Pil şarjı"; +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):"; #include "./airrohr-logo-common.h" diff --git a/airrohr-firmware/intl_ua.h b/airrohr-firmware/intl_ua.h index eb1703cd..3fbd935b 100644 --- a/airrohr-firmware/intl_ua.h +++ b/airrohr-firmware/intl_ua.h @@ -125,5 +125,10 @@ const char INTL_SIGNAL_QUALITY[] PROGMEM = "якість сигналу"; #define INTL_SENSOR "Сенсор" #define INTL_PARAMETER "Параметр" #define INTL_VALUE "Значення" +const char INTL_ENABLE_BATTERY_MONITOR[] PROGMEM = "Активуйте монітор батареї"; +const char INTL_BATTERY_CHARGE[] 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 = "U max при подільника на АЦП (mV):"; #include "./airrohr-logo-common.h"
" INTL_ERROR "