This project is made for learning and testing purpose. And is made mainly for learning of Low Power. The board have different ways to monitor battery level. And control power to different sensors and modules. Is equip with lot of sensors and modules it have almost every type of sensors. Module have this communication capability, WIFI, Bluetooth, LoRaWAN, GPS Receiver.
Be advise this module is under development and most of the connections and modules are not tested. Also i can offer free of charge up to 4 boards (without expensive components) if somebody want to contribute to the project writing some software. To those modules i can offer free of charge package of capacitors and resistors, without expensive sensors and modules like E-Paper, ESP, Mega2560, GPS..... Be advise if you have to assemble this device, you will need very good soldering skills there have IC like Mega2560 which is a TQFP100, also resistors and capacitors are package 0603 and is places vary close to each other.
The device have 2 processors:
The ESP32 is the main processor.
The 2560 is used like a smart port expander.
Power of the Board:
The board have to be powered with single cell LIPO battery with working range of 2.8V-4.2V The board is equipped with reverse polarity protection provided by Q2, over charge/over discharge/ over current protection is provided U15 FS312F-G. The power of the board also depend on U13 TPL5111 which is Long Power Timer. For full information using TPL5111 please read datasheet. The idea of using this IC is provide ultra low power mode. In this mode the TPL5111 provide power to the board and waits DONE signal from ESP32 to cut power of the board, after the power is cutoff starts timer when this timer is elapsed power ON the board and wait again for DONE. After DONE signal is send any the power reach only Q2, U15, U13. other components on the board have no power. From this mode can be exited manually by pressing WAKE switch, in this mode WAKE switch is only working button of the board. However this IC can be eliminated by soldering J4. Also the mode of this IC is controlled by soldering of J1.
Coin Cell Battery:
The device is equipped with small coin cell battery for providing power to the RTC and GPS RTC. This battery provide capability to the GPS module to do hot-start. The coin battery is equipped with charging module which charge battery when device is powered.
Charging: The charging process is controlled by TP4056 single cell LIPO charger the IC provide some signals to 2560 (please read Mega2560 pinout) The charging process not work when device is in ultra low power sleep driven from the TPL5111.
I2C Bus: this bus is hosted by Mega2560 and have connected those sensors:
BMP180 - Atmospheric pressure SI7021 - Humidity Temperature sensor MAX17043G - Fuel Gauge MPU6050 - Gyro J2 is a port dedicated for external I2C devices, this port is standard JST SH 4pin connector.
To use those sensors first you must enable I2C pull-up, Second must power the sensor ON (please read 2560 pinout for more information)
The GPS module communicate with 2560 using UART interface, to use this module you must enable the power by sending EN signal to LDO Regulator. The GPS module have connected small EEPROM IC which is used to store Epemeris and Almanac data, in combination with coin cell battery this provide accurate GPS position for less than 1sec. This will work if you drive the GPS module alive enough to get fresh Epemeris data. the Almanac data is valid for couple of mounts but is not so accurate, Epemeris data is valid for 30min and provide accurate prediction of the GPS constellation status and position of each satellite.
The board have micro USB port for charging and programming the IC CH340 convert USB signals to UART, the UART is connected simultaneously to ESP32 and Mega2560.
Programming: the programming have to be done using integrated USB port the board have schematic which allow to program ESP32 without pressing the prog buton, the Switch5 cut the reset signal for one of the IC to allow programming exact IC. Avoid using Mega2560 Serial0 for any communications this port must be used only for programming 2560. Switch3 is for manual reset the ESP or 2560 which one will be reseted depends on the position of Switch5. (this design is not tested yet)
RTC: This module is based on DS1306 and communicate with ESP32 using SPI interface, to read data from DS1306 you have to send NSS signal to the IC, using this interface you can read and set the time also can program which time to activate RTC INT0 and RTC INT1, those signals suppose to wake ESP and Mega processors in exact time. (please read the ESP and Mega pinouts)
This module provide long range low power communication capability, the module is based on RFM95 and is connected to ESP32 using SPI interface, also have connected additional DIO ports to ESP to provide some signals like RX/TX done...., also have option to reset the module from ESP in case of no respond.
Communication Between ESP32 and Mega2560: The communication between those 2 processors is using UART interface. The method for exchange data between them is not clear and have to be developed by software side. Here is needed to be implemented software signal from 2560 to ESP to report DONE state. the idea is when 2560 done processing some data to send signal to ESP and ESP to cut the power of 2560.
To the ESP32 have connected:
The ESP32 controls and listen those modules:
GPIO36 ESP Wake - dedicated for signal from 2560 to ESP32 the 2560 sends signal to ESP to wake it up in case of some event occurred and is needed form ESP to process some data.
GPIO39 RTC INT1 - signal from RTC DS1306 this signal suppose to wake the ESP in exact time.
GPIO35 DIO0 - Connected to DIO0 on LoRa module
GPIO33 DIO1 - Connected to DIO1 on LoRa module
GPIO32 DIO2 - Connected to DIO2 on LoRa module
GPIO2 DIO5 - Connected to DIO5 on LoRa module
GPIO5 NSS LoRa - is OUT controlling LoRa module NSS signal
GPIO22 RST LoRa - Is OUT which suppose to reset LoRa module if not responding
GPIO34 BUSY - is a signal from E-Paper display
GPIO25 DS - Connected to E-Paper display
GPIO0 RSTD - is OUT which reset the E-Paper Display (this pin is also used when device is been programming)
GPIO12 NSSD - Is OUT which control NSS to the E-Paper display
GPIO26 2560 VCC EN - is a OUT which control FET who give power to Atmega 2560 and all connected to 2560 sensors.
GPIO27 DONE - is a OUT which drive signal to TPL5111 to cut the power for the hole board, from J4 TPL5111 can be switched ON and OFF. This signal have to be send to TPL5111 when the ESP done all tasks and is needed device to go to ultra power saving mode, in this mode the TPL5111 counting long sleep period when the hole board is without power to go out of this mode is needed to be pressed "WAKE" button or have to wait predefined time, the time can be set by changing value of the R26. J1 also control some functions of the TPL5111. for setting this module please read the TPL5111 Datasheet.
GPIO14 Mega2560 Wake - Is OUT which suppose to wake Atmega2560 from sleep mode.
GPIO13 LED - Is OUT to NeoPixel LEDS
GPIO15 NSS SD - Is OUT which control NSS to SD Cart
GPIO4 NSS RTC -is OUT which control NSS to the RTC module DS1306
GPIO16 RX2560 - is a UART communication to Atmega2560
GPIO17 TX2560 - is a UART communication to Atmega2560
GPIO18 SCK - SPI Interface
GPIO19 MISO - SPI Interface
GPIO23 MOSI - SPI Interface
GPIO21 Mega2560 Reset - is OUT which suppose to reset 2560 if not responding
To Atmega2560 have connected those modules:
PE0 - RX for programming 2560
PE1 - TX for Programming 2560
PH0 - TX to ESP32
PH1 - RX to ESP32
PH3 - Buzzer - connected to Buzzer
PH4 - VIBRATION - connected to vibration motor driving transistor.
PH5 - 2.5V EN - enable 2.5V LDO for Gyro
PH7 - G_EN - enable LDO for GPS Module
PB1 - SI POW - enable power to SI7021 Humidity Temperature sensor (sensor is powered directly from mega2560 IO port)
PB2 - BMP POW - enable power to BMP180 Atmospheric pressure sensor (sensor is powered directly from mega2560 IO port)
PB4 - SW1 - IN from Switch 1 the switch can interrupt 2560
PB5 - SW2 - IN from Switch 1 the switch can interrupt 2560
PB6 - RTC INT0 - IN signal from RTC DS1306 this signal suppose to wake the 2560 in exact time.
PB7 - INT MPU - IN from Gyro this signal suppose to interrupt the 2560 when some event is happen PD0 - SCL - I2C Interface
PD1 - SDA - I2C Interface
PD2 - GPS TX - UART interface to GPS Module
PD3 - GPS RX - UART interface to GPS Module
PC0 - Fuel Power - OUT this signal drive FET which power the Fuel Gauge MAX17043G
PC5 - QSTRT - OUT this signal have to reset data of Fuel Gauge MAX17043G (please read datasheet)
PJ0 - Encoder CLK - IN from Rotary Encoder
PJ1 - Encoder SW - IN from Rotary Encoder Switch
PJ3 - BAT Aert - IN from Fuel Gauge MAX17043G this signal can give to 2560 data for some battery state event (i think this can be programmed in MAX17043G, please read datasheet)
PJ4 - Mega2560 Wake - IN from ESP32 this signal suppose to wake 2560 from sleep when is needed from 2560 to provide some data to the ESP32
PJ6 - IN from Rotary Encoder
PA7 - BattV_FET - OUT this signal drive FET which enable voltage divider for battery measurements (when signal is given you have 2us to measure battery level)
PA3 - I2C Power - OUT this signal drive FET which enable pull-up to I2C Interface ( before you use I2C Interface you have to enable this signal)
PA2 - ESP Wake - OUT this signal have to wake ESP32 when is needed to process some data
PA1 - Standby - IN from TP4056 LIPO charger (to use this please read datasheet) (In previous tests i cannot get data from this)
PA0 - Charge - IN from TP4056 LIPO charger (to use this please read datasheet) (In previous tests i cannot get data from this)
PF4 - BattV - AnalogIN from voltage divider which reads the battery level (the divider can be adjusted by changing value of the R11 and R3, also have to be used in combination with BattV_FET)