📌 Setup and Requirements
Measuring the average power consumption of a radio device, such as a Meshtastic ESP32 node, requires appropriate equipment ⚙️ and basic power measurement knowledge 📏.
🔌 Power Meter
To measure power usage accurately, you need a reliable power meter. This could be a bench power supply ⚡ with voltage and current readings, a USB power meter 💻, or similar tools. The key is being able to read volts, amps, or watts over time ⏱️. Continuous tracking is essential—not just instant readings. Ensure your meter is sensitive enough to detect low current draw, as some Meshtastic nodes consume as little as 0.005A at 5V 🔋. The most important feature is the ability to record amp-hours or watt-hours 📊, which typical multimeters cannot do.
❓ What Are We Measuring?
Power is measured in watts ⚡. To calculate how much power your ESP32 device consumes, multiply volts by amps. For example, 5V × 50mA = 250mW (or 0.25W). This represents instantaneous power consumption ⏲️, but Meshtastic nodes operate in varying states—mostly receiving 📡, occasionally transmitting 📤, which uses significantly more power. Therefore, measuring only receive mode is insufficient 🚫. What’s needed is the average power consumption over time ⏳, expressed in watt-hours. For instance, if a node consumes 250mW for one hour, over 24 hours it uses 6Wh 🔋.
📡 Duty Cycle
Meshtastic radios consume less power when receiving 📥, and much more when transmitting 📤. The duty cycle defines the percentage of time the ESP32 node is transmitting. This could be 5%, 10%, or 25%, depending on your use case. Instead of relying on datasheet values 📑, perform a real-time power test over at least one hour ⏱️. Longer tests (2–6 hours) yield more accurate results ✅ under realistic Meshtastic network conditions.
🧪 Test Conditions
Testing is straightforward but requires understanding how Meshtastic nodes behave in a mesh network 🌐.
📶 Background Network Activity
Meshtastic ESP32 nodes regularly send network beacons 🔔 in the background. These are not user messages but signals indicating node presence 📍 and GPS location 🛰️. Other nodes acknowledge these beacons 👍. This baseline traffic involves both receiving and transmitting, contributing to overall power consumption 🔋. While some transmissions can be reduced, they must be accounted for in your power usage analysis 📊.
🛠️ Simulated Testing
To simulate message traffic, adjust how often the Meshtastic node broadcasts GPS location updates 📡. Default intervals are 2 minutes ⏲️ for GPS-enabled nodes and 15 minutes for fixed-position nodes. Shortening this interval increases transmission frequency 🔄 and power usage ⚡. You can adjust this via the Meshtastic mobile app 📱 or CLI 💻 to simulate realistic traffic during testing.
📍 Fixed Position Broadcast Interval
Solar-powered base stations ☀️ often lack GPS modules to save power. In Meshtastic, you can manually set a node’s fixed coordinates 📌. These nodes broadcast their location every 15 minutes by default ⏲️. To simulate more frequent messaging, reduce the interval to 3 minutes (16 messages/hour) or 1 minute (56 messages/hour) 🔄.
📝 Example Test Condition With Node Settings
- Three Meshtastic nodes in the network 🌐
- One node broadcasting location every 60 seconds ⏱️ (disable smart location)
- Test node paired to a phone via Bluetooth 📱
- Test node set with a fixed GPS position 📍
- Test node broadcasting location every 60 seconds ⏱️ (disable smart location)
Start the test at a round time ⏰ (e.g., on the hour), reset prior readings on your power meter 🔄, and record the start and stop times along with the total power consumed 📊.
📈 Results
Your power meter should report total power used in watt-hours ⚡. Divide this value by the test duration in hours ⏱️ to get the average power consumption 📊 in watt-hours or milliwatt-hours. Keep this result for the next step—calculating solar panel size ☀️ for your Meshtastic ESP32 node 📡.
If your meter reports amp-hours 🔋, convert to watt-hours by multiplying by the test voltage. For example, if over a 3-hour test at 5.1V the meter shows 142mAh, then total energy used is:
5.1V × 142mAh = 724.2mWh ⚡
Divide by 3 hours to get 241.4mW average consumption 📊. Save this figure for further calculations related to Meshtastic battery sizing 🔋.
📊 Detailed Power Consumption and Battery Life Comparison for Meshtastic Devices
Here is a focused comparison between the nRF52840 🔧 and ESP32 💻 in terms of power consumption and expected battery life 🔋 using a 1000mAh 3.7V Li-ion battery for Meshtastic applications:
| Parameter 📐 | nRF52840 🔧 | ESP32 💻 |
|---|---|---|
| CPU Clock Speed ⏱️ | 64 MHz | Up to 240 MHz |
| Active Mode Current ⚡ | ~5.3 mA (CPU active) | 80–260 mA (Wi-Fi transmission peak) |
| Deep Sleep Mode Current 😴 | As low as 0.4 µA | 10–150 µA (deep sleep mode) |
| Bluetooth Low Energy (BLE) Tx 📡 | ~4.6 mA | ~30 mA |
| Wi-Fi Active Current 🌐 | None (no Wi-Fi module) | 80–260 mA |
Using these typical current draws, we can estimate Meshtastic battery life 🔋 as follows:
| Scenario 📊 | Estimated Current (mA) ⚡ | Estimated Runtime with 1000mAh Battery (hours) ⏱️ |
|---|---|---|
| nRF52840 Normal Operation 🔧 | 5 mA | 200 hours (approx. 8.3 days) |
| nRF52840 Deep Sleep 😴 | 0.0004 mA (0.4 µA) | 2,500,000 hours (theoretical limit) |
| ESP32 Wi-Fi Active 🌐 | 150 mA | 6.7 hours |
| ESP32 Deep Sleep 😴 | 0.1 mA (100 µA) | 10,000 hours (approx. 416 days) |
