Skip to content

Commit 8dbb0f5

Browse files
authored
Merge pull request #1071 from tpp-at-idx/thinknode_m2
Thinknode_M2: better battery reading accuracy and no display on powerup fix
2 parents ff67c78 + a0bf66f commit 8dbb0f5

File tree

2 files changed

+22
-17
lines changed

2 files changed

+22
-17
lines changed

variants/thinknode_m2/ThinknodeM2Board.cpp

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33

44

55
void ThinknodeM2Board::begin() {
6+
pinMode(PIN_VEXT_EN, OUTPUT);
7+
digitalWrite(PIN_VEXT_EN, !PIN_VEXT_EN_ACTIVE); // force power cycle
8+
delay(20); // allow power rail to discharge
9+
digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // turn backlight back on
10+
delay(120); // give display time to bias on cold boot
611
ESP32Board::begin();
7-
pinMode(PIN_VEXT_EN, OUTPUT); // init display
8-
digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // pin needs to be high
9-
delay(10);
10-
digitalWrite(PIN_VEXT_EN, PIN_VEXT_EN_ACTIVE); // need to do this twice. do not know why..
11-
pinMode(PIN_STATUS_LED, OUTPUT); // init power led
12+
pinMode(PIN_STATUS_LED, OUTPUT); // init power led
1213
}
1314

1415
void ThinknodeM2Board::enterDeepSleep(uint32_t secs, int pin_wake_btn) {
@@ -19,14 +20,21 @@ void ThinknodeM2Board::begin() {
1920
enterDeepSleep(0);
2021
}
2122

22-
uint16_t ThinknodeM2Board::getBattMilliVolts() {
23+
uint16_t ThinknodeM2Board::getBattMilliVolts() {
2324
analogReadResolution(12);
24-
delay(10);
25-
float volts = (analogRead(PIN_VBAT_READ) * ADC_MULTIPLIER * AREF_VOLTAGE) / 4096;
26-
analogReadResolution(10);
27-
return volts * 1000;
28-
}
25+
analogSetPinAttenuation(PIN_VBAT_READ, ADC_11db);
26+
27+
uint32_t mv = 0;
28+
for (int i = 0; i < 8; ++i) {
29+
mv += analogReadMilliVolts(PIN_VBAT_READ);
30+
delayMicroseconds(200);
31+
}
32+
mv /= 8;
33+
34+
analogReadResolution(10);
35+
return static_cast<uint16_t>(mv * ADC_MULTIPLIER );
36+
}
2937

3038
const char* ThinknodeM2Board::getManufacturerName() const {
3139
return "Elecrow ThinkNode M2";
32-
}
40+
}

variants/thinknode_m2/variant.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
#define I2C_SCL 15
22
#define I2C_SDA 16
3-
#define PIN_VBAT_READ 17
3+
#define PIN_VBAT_READ 17
44
#define AREF_VOLTAGE (3.0)
5-
#define ADC_MULTIPLIER (1.548F)
5+
#define ADC_MULTIPLIER (1.509F)
66
#define PIN_BUZZER 5
77
#define PIN_VEXT_EN_ACTIVE HIGH
88
#define PIN_VEXT_EN 46
99
#define PIN_USER_BTN 47
1010
#define PIN_LED 6
1111
#define PIN_STATUS_LED 6
1212
#define PIN_PWRBTN 4
13-
14-
15-

0 commit comments

Comments
 (0)