This project has been sponsored by PCBWay!
You can order this project from PCBWay at a $5 discount by using my referal link
- Detailed user configuration (accessible by connecting to the ESP's hotspot and going to http://192.168.4.1)
- Advanced build configuration with verbose support (
platformio.ini
) - OTA updates through a secure hotspot
- Cellular connectivity
- Automatically update the ESP's clock
- MQTT connection
- SD card support through an FTP server (set your connection mode to
Active (PORT)
) - Dynamic CPU frequency scaling
- Report battery status (percentage, voltage, USB charging, solar charging & discharging)
- Report network details
- Report location status (latitude, longitude, speed, altitude, visible satellites, accuracy) with cellular fallback
- Report the uptime of the ESP in seconds
- Report your car's temperature, humidity and air pressure using a BME280 sensor
- Report the light level inside your car using a TSL2561 sensor
- Detect motion inside your car's cabin using a PIR sensor
- Report the CPU temperature and frequency
- Report the free RAM amount
- Report the ESP32's hall sensor value
- Recover from GPS failures automatically
- Recover from cellular failures automatically
- Reboot the ESP32 & Modem remotely over MQTT
- IDE of choise with PlatformIO (VSCode is recommended)
- USB <-> Serial driver (
macOS
|Linux
|Windows
) - MQTT Broker
- Home Assistant server (optional. An example config can be found here)
- LilyGO® TTGO T-SIM7600E-L1C ESP32 (Other ESP32 TTGO models could also work)
- A Nano SIM Card with an active internet plan
- Cellular antenna
- GPS antenna
- 18650B battery
- BME280 sensor (optional)
- TSL2561 sensor (optional)
- PIR sensor (like the AM312) thats pulled low by default (optional)
- Micro SD Card formatted as FAT32 (optional)
- I2C1 - GPIO 21 & 22
- I2C2 - GPIO 21 & 22
- GPIO - GPIO 19 & 23
- With the hardware listed above & low power mode, I've been able to get 20 hours of battery life
More pictures can be found here
APN
- The APN URL of your cellular providerUsername
- The APN username of your cellular providerPassword
- The APN password of your cellular providerSIM PIN
- The PIN of your SIM card (leave blank if you don't have one)
Timezone
- The UTC offset of your timezone (in seconds, e.g. UTC+2 = 7200)Daylight Saving Time
- Enable or disable daylight saving time (will add 1 hour to the UTC offset)
SSID
- The SSID of the WiFi AP that the ESP will createPassword
- The password of the WiFi AP that the ESP will createDisable when on battery or stationary
- Will disable the AP when running on battery or when stationary for about ~15 minutes
Address
- The IP address / domain name of your MQTT brokerPort
- The port of your MQTT brokerClient name
- The name you want to give to the ESP on your MQTT brokerUsername
- The username of your MQTT brokerPassword
- The password of your MQTT broker
GNSS Mode
- Constellations the modem should use (0 = GPS + GLONASS, 1 = GPS + BEIDOU, 2 = GPS + GALILEO, 3 = GPS + QZSS)DPO
- Direct Platform Orientation (0 = Disable, 1 = Enable)
Enable
- Enable or disable all the sensors
Enable
- Enable or disable the BME280 sensorI2C Address
- The I2C address of the BME280 sensor (0x76 or 0x77)MQTT Temp
- The MQTT topic to publish the temperature toMQTT Pressure
- The MQTT topic to publish the pressure toMQTT Humidity
- The MQTT topic to publish the humidity to
Enable
- Enable or disable the TSL2561 sensorI2C Address
- The I2C address of the TSL2561 sensor (0x29, 0x39 or 0x49)Gain
- The gain of the TSL2561 sensor (auto, 1x or 16x)MQTT
- The MQTT topic to publish the light level to
Enable
- Enable or disable the PIR sensorGPIO
- The GPIO pin the PIR sensor is connected toMQTT
- The MQTT topic to publish the motion status to
Enable
- Enable or disable reporting the CPU temperature sensor valueMQTT
- The MQTT topic to publish the CPU temperature to
Enable
- Enable or disable reporting the CPU frequency valueMQTT
- The MQTT topic to publish the CPU frequency to
Enable
- Enable or disable reporting the free RAM valueMQTT
- The MQTT topic to publish the free RAM value to
Enable
- Enable or disable reporting the hall sensor valueMQTT
- The MQTT topic to publish the hall sensor value to
Info
- The MQTT topic to publish the modem info toCCID
- The MQTT topic to publish the modem CCID toIMSI
- The MQTT topic to publish the modem IMSI toOperator
- The MQTT topic to publish the modem operator toSignal Quality
- The MQTT topic to publish the modem signal quality toPublic IP
- The MQTT topic to publish the modem public IP to
Percentage
- The MQTT topic to publish the battery percentage toVoltage
- The MQTT topic to publish the battery voltage toStatus
- The MQTT topic to publish the battery charging status to (charging, USB charging or discharging)
Type
- The MQTT topic to publish the location type to (GPS or cellular)Latitude
- The MQTT topic to publish the location latitude toLongitude
- The MQTT topic to publish the location longitude toSpeed
- The MQTT topic to publish the location speed toAltitude
- The MQTT topic to publish the location altitude toAccuracy
- The MQTT topic to publish the location accuracy to
Enable
- Enable or disable the FTP serverUsername
- The username of the FTP serverPassword
- The password of the FTP server
Uptime
- The MQTT topic to publish the uptime toVersion
- The MQTT topic to publish the version number to
Dynamic Frequency
- Lower the CPU frequency to 160MHz when running on batteryLow Power mode on battery
- Lower the CPU frequency to 80MHz (instead of 160MHz) and turn GPS off when running on battery (only works if Dynamic Frequency is enabled)
DEBUG
- Enable or disable debug messages
UART_BAUD
- The baud rate of the serial port & modemMODEM_TX
- The TX pin of the modemMODEM_RX
- The RX pin of the modemMODEM_PWRKEY
- The PWRKEY pin of the modemMODEM_DTR
- The DTR pin of the modemMODEM_RI
- The RI pin of the modemMODEM_FLIGHT
- The flight mode pin of the modemMODEM_STATUS
- The status pin of the modem
LED_PIN
- The pin of the status LED
USB_INDICATOR
- Detect if the board is being powered by USBSOLAR_INDICATOR
- Detect if the board is being powered by solar
TINY_GSM_MODEM_<MODEL>
- The model of the modem (only SIM7600 has been tested)
- Xinyuan-LilyGO - Basic T-SIM7600X implementation
- Random Nerd Tutorials - Base webserver code
- vshymanskyy - TinyGSM & StreamDebugger libraries
- knolleary - PubSubClient library
- adafruit - Unified Sensor, BME280 & TSL2561 libraries
- ayushsharma82 - ElegantOTA library
- mathieucarbou - AsyncTCP & ESPAsyncWebServer libraries
- bblanchon - ArduinoJson library
- peterus - ESP-FTP-Server library