Open source modular biologger with 2.4 GHz connectivity (Bluetooth LE, WiFi, ESP NOW). This repository includes hardware design files of the WildFi tag and WildFi extension boards, embedded software, software architecture, software for the ESP32 CAM gateways, an Android app for remote data download, and decoding software.
- The WildFi tag integrates an ESP32 Pico D4 microcontroller and following additional components:
- 9-axis inertial measurement unit (Bosch BMX160)
- 4-in-1 environment sensor (Bosch BME680)
- Temperature-compensated real time clock (Micro Crystal RV-8803-C7)
- NAND Flash memory (Micron MT29F2G01ABAGDWB-IT:G TR)
- Solar energy harvester (STM SPV1050)
- The WildFi tag has a 16-pin extension port for USB debugging and programming and a 20-pin extension port for attaching additional sensors
- The 20-pin extension port gives access to following communication and control interfaces:
- 1 x I2C (shared bus with Bosch BMX160, Bosch BME680 and Micro Crystal RV-8803-C7)
- 1 x SPI (shared bus with Micron MT29F2G01ABAGDWB-IT:G TR)
- 1 x I2S
- 1 x UART
- 3 x GPIOs
- 2 x power control lines (allowing for independent powering of sensors and memory modules)
- Onboard connector type: JST SM02B-SURS-TF(LF)(SN)
- Compatible wire connector (AWG #32, max. 500 mA, 150 mm): JST 02SUR-02SUR-32W150
- During radio calibration the ESP32 requires a very short (< 1 ms) current peak of up to 500 mA
- It is recommended to use a lithium-polymer battery (LiPo) with at least 70 mAh capacity
- Smaller batteries might be used when radio transmission is deactivated
- Other battery types might be used as well (e.g., 18650)
- Input voltage range of the WildFi tag: 3.3 - 5.0 V
- Onboard connector type: JST SM02B-SURS-TF(LF)(SN)
- Compatible wire connector (AWG #32, max. 500 mA, 150 mm): JST 02SUR-02SUR-32W150
- Supported solar cells: all types (polycrystalline, monocrystalline, triple-junction, photodiodes) with an open-circuit voltage between 0.55 and 4 V
- The solar harvesting circuit is activated by closing the solder jumper on the backside of the WildFi tag:
- See sub folder Hardware
- Schematics (.sch) and boards (.brd) are designed in Autodesk Eagle 9.5.2
- PCBs were produced and assembled by PCBWay (production-ready Gerber files and PCBWay settings in Hardware/GerberProductionFiles)
- Hardware/WildFiTagREV6-Extension-Dummy.brd and Hardware/WildFiTagREV6-Extension-Dummy.sch can be used for designing new extension boards (we recommend using Hardware/GerberProductionFiles/CONFIGURATION/PCBWay_2_layer.cam when generating new Gerber files in Eagle)
- Visual Studio Code (>= 1.54.3) with PlatformIO (Core >= 5.1.1, Home >= 3.3.4)
- After installing the IDE: the pre-configured PlatformIO project can be opened from: Software/WildFiFirmware
- The sub folder firmware includes productive software for tag operation
- The sub folders testREVX include test software
- All firmware versions use the modular WildFi software architecture that can be found in: Software/WildFiSoftwareArchitecture
- The PlatformIO project is configured via Software/WildFiFirmware/platformio.ini (the parameter src_dir selects the application that shall be compiled)
- After compilation three binary files are generated
- bootloader.bin: the bootloader firmware
- partitions.bin: includes the flash partition table for the ESP32
- firmware.bin: includes the actual WildFi firmware
- When using PlatformIO to compile: The files are automatically generated in Software/WildFiFirmware/.pio/build/pico32
- Alternative IDE: Eclipse (eclipse-cpp-2020-09-R-win32-x86_64) and idf-eclipse plugin (tutorial: https://github.com/espressif/idf-eclipse-plugin/blob/master/README.md), project stub with complete software architecture integration for Eclipse is located in Software/WildFiSoftwareArchitecture
- To flash software on the ESP32, the WildFi tag needs to be attached to the USB breakout board (red arrows indicate the programming board settings when no external battery is connected to the WildFi tag) und the USB connector to a computer (flashing is done via the UART bridge integrated on the USB breakout board):
- Software can be flashed via PlatformIO directly (PlatformIO automatically executes the following command: C:\Users\[username]\.platformio\packages\tool-esptoolpy\esptool.py --chip esp32 --port "COM99" --baud 460800 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x10000 .pio\build\pico32\firmware.bin)
- Or by using FlashDownloadTool/esptool/esptool.py directly (see above for flashing command)
- Python needs to be installed (latest version)
- Or by using FlashDownloadTool/flash_download_tool_3.9.6.exe with following settings:
Choose ChipType: ESP32 unless otherwise defined

- The ESP32 software is based on esp-idf-v4.1, see LICENSE file in Software/esp-idf-customized
- The repository can be cloned from git: git clone -b v4.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.1
- We implemented a slight modification of the ESP-IDF to make use of the full RTC RAM (see https://github.com/espressif/esp-idf/commit/ef10c2576ff14afa033ef22105406399abc570af)
- The custom esp-idf can be found under Software/esp-idf-customized
- When using PlatformIO: copy content from Software/esp-idf-customized to C:\Users\[username]\.platformio\packages\framework-espidf
- First tag boot: flash voltage is set to 1.8V by MTDI pin (due to attached flash memory module), leading to a flash error while booting and let the ESP32 perform a RTCWDT_RTC_RESET (no side effects)
- To fix: write flash voltage permanently to 3.3V (ignoring GPIO12 = MTDI pin): FlashDownloadTool/esptool/espefuse.py --port COM99 set_flash_voltage 3.3V (python espefuse.py -p COM99 set_flash_voltage 3.3V), sdkconfig settings: Serial flasher config: DIO and 40 MHz
- Python scripts require Python to be installed
- Get esptool via Windows command line: pip install esptool
- Based on: https://github.com/AIS-Bonn/attitude_estimator
- See license file in folder Software/WildFiSoftwareArchitecture/components/PlatformAttitudeEstimator/





