Compare commits

...

2 Commits

2 changed files with 31 additions and 7 deletions

View File

@ -1,7 +1,16 @@
# Readme
# ESP32-based Environmental Sensor
Author: Jannik Beyerstedt
**license:** GNU GPL v3
A simple temperature and humidity sensor node using an ESP32 and a Si7021 sensor element running of a 18650 LiIon battery cell.
The sensor outputs the data to an influxDB instance, which must be reachable via HTTP.
To save energy, we use a lower CPU frequency.
But this requires compiling the core framework again with the changed settings (see below).
This repository contains the code running on the ESP32, as well as the PCB and case design.
## Dependencies
Prepare toolchain (macOS):
@ -43,7 +52,8 @@ git clone --recursive https://github.com/espressif/esp-idf.git
```
## Checkout this project and configure arduino-es32 with esp-idf:
## Checkout this project and configure arduino-esp32 with esp-idf:
```
TODO!!
@ -71,3 +81,17 @@ make all
make flash
```
You would probably have to adapt the `UPLOAD_PORT` in the `Makefile` or set it via an environment variable.
## Battery Life
The hardware was designed with two options to drop the battery voltage to a level, which can be fed to the ESP32: A voltage regulator or a simple diode.
A test with increased data rate (for a shorter test duration) showed, that the voltage regulator leads to a slight battery life benefit.
Using a measurement interval of 30 seconds and a WiFi connection interval of 3 minutes, the 2500mAh LiIon (3.7V) battery lasted 30 days with the diode and 36 days using the voltage regulator.
The selected voltage regulator has a quite low drop-out voltage and more importantly a low leaking current during the deep-sleep phases, which have a very low current needed by the ESP32.
In comparison a diode has no leaking current at all, but a more or less fixed voltage drop.
The benefit of the voltage regulator is, that the battery voltage range can be exploited further than what can be done with the diode.
The lowest operational battery level was 3.2 V using the diode and 2.8 V using the voltage regulator.

View File

@ -31,11 +31,11 @@
#define BOARD 4 /* IMPORTANT: select one of the BOARD_* types */
#endif
#define DB_HOSTNAME "ursaminor.fra80"
#define DB_HOSTNAME "influx-iot.fra80"
#define DB_PASSWD "c2Vuc29yczpTZW5zb3JzLXcuaW5mbHV4QGhvbWU" // BasicAuth String
#if BOARD == BOARD_ESP32
#define BATT_FULL 3800 // 4.3V Battery
#define BATT_FULL 3700 // 4.2V Battery
#define BATT_CUTOFF 2500 // 2.8V Battery
#else
#error "unsupported board chosen"
@ -68,9 +68,9 @@ String serviceUri = "/write?db=test";
#endif
/* GLOBAL VARIABLES */
const uint16_t wlanConnectCheckInterval = 250; // milli seconds: poll wifi.state after wifi.begin()
const uint16_t wlanConnectTimeout = 15000; // milli seconds
RTC_DATA_ATTR uint8_t wlanConnectFailCnt = 0;
const uint16_t wlanConnectCheckInterval = 250; // milli seconds: poll wifi.state after wifi.begin()
const uint16_t wlanConnectTimeout = 15000; // milli seconds
RTC_DATA_ATTR uint8_t wlanConnectFailCnt = 0;
Si7021 si7021 = Si7021();
float temp = 0.0;