Display: Uses software SPI. No MISO connection needed (write-only). Same pinout as WeatherClock project.
LEDs: Active HIGH (GPIO HIGH = LED ON). If using LEDs with built-in resistors, omit the 330 ohm resistors.
Ping Library: Install ESP32Ping library via Arduino Library Manager.
5V Input: The TP4056 OUT+ provides ~4.2V (fully charged) to ~3.0V (discharged) from the batteries. This connects to the ESP32's 5V pin, which feeds the onboard voltage regulator. Despite the name "5V", the ESP32-S3 accepts 4.0-6.0V on this pin.
3.3V Output: The ESP32's internal LDO regulator converts the 5V input down to 3.3V. This 3.3V rail powers all external components (display, LEDs). Never connect 5V directly to components - they require 3.3V!
Power Switch: Located on the battery NEGATIVE rail between the 18650s and TP4056 B- pin. Placing the switch on the negative rail is safer - it completely isolates the batteries when OFF, preventing any current flow. Turn OFF before connecting USB to charge safely, as this prevents back-feeding the batteries during charging.
Batteries: Two 18650 cells wired in PARALLEL (3.7V nominal, doubled capacity). Connect to TP4056 B+ and B- pins.
Charging: TP4056 charges batteries via USB-C. Red LED = charging, Green LED = full.
Check Interval: Servers are pinged every 30 seconds (configurable in code).
WiFi Reconnect: Automatically reconnects if WiFi connection is lost.
Server List: Edit the servers[] array in code to add your own IP addresses or hostnames.