â Back to Course
Sensor Power Management
ð Sensor Power Management - Turn Off Sensors When Not Reading
ð What You'll Learn:
- ð Many sensors waste power while idle (even in deep sleep)
- ⥠Use a MOSFET or transistor to cut power to sensors
- ð Reduce total power consumption by 80-95%
- ð Wire sensors to GPIO pin for on/off control
ð Sensor Power Consumption
| Sensor | Active | Idle | Worse Case |
|---|---|---|---|
| DHT22 | 1.5mA | 0.1mA | â ïļ OK |
| Soil Moisture (Capacitive) | 5mA | 0mA | â Good |
| BME280 | 0.1mA | 0.1ΞA | â Excellent |
| NPK Sensor (RS485) | 30mA | 30mA | â ïļ ALWAYS ON! |
| Rain Sensor (LED type) | 15mA | 15mA | â ïļ ALWAYS ON! |
ðĄ The Problem:
Some sensors (NPK, rain sensors with LED) consume power constantly, even in deep sleep. A 30mA sensor running 24/7 drains a 2600mAh battery in 3.5 days! Solution: Cut power completely.
ð MOSFET Power Switching Wiring
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
POWER SENSOR WITH GPIO PIN
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
GPIO (ESP32) âââââš 1kÎĐ resistor âââââš MOSFET Gate (IRLZ44N)
3.3V power supply âââââââââââââââââââš MOSFET Source
Sensor VCC âââââââââââââââââââââââââââš MOSFET Drain
Sensor GND âââââââââââââââââââââââââââš GND (shared)
MOSFET options: IRLZ44N, AO3400, 2N7000 (logic-level, 3.3V compatible)
ESP32 GPIO = HIGH (3.3V) â MOSFET ON â Sensor powered
ESP32 GPIO = LOW (0V) â MOSFET OFF â Sensor completely OFF
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
SIMPLER: POWER SENSOR DIRECTLY FROM GPIO
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ïļ Only for low-power sensors (< 20mA)
ESP32 GPIO âââââââââââââââââââââââââââš Sensor VCC
ESP32 GND ââââââââââââââââââââââââââââš Sensor GND
pinMode(GPIO, OUTPUT);
digitalWrite(GPIO, HIGH); // Power ON sensor
delay(100); // Wait for sensor to stabilize
read sensor...
digitalWrite(GPIO, LOW); // Power OFF sensor
ð Complete Power Management Code
#define NPK_POWER 25 // MOSFET control pin
#define NPK_RX 16
#define NPK_TX 17
void setup() {
pinMode(NPK_POWER, OUTPUT);
digitalWrite(NPK_POWER, LOW); // Start with sensor OFF
}
void readNPK() {
// Step 1: Power ON sensor
digitalWrite(NPK_POWER, HIGH);
delay(200); // Wait for sensor to boot (critical!)
// Step 2: Read sensor
int n, p, k;
readNPKValues(n, p, k); // Your reading code here
// Step 3: Power OFF sensor
digitalWrite(NPK_POWER, LOW);
Serial.printf("NPK: %d, %d, %d\n", n, p, k);
}
// Power-saving version for DHT22 (using GPIO power)
#define DHT_POWER 26
DHT dht(27, DHT22); // Data pin on 27
void readDHT() {
digitalWrite(DHT_POWER, HIGH);
delay(2000); // DHT22 needs 2 seconds to stabilize
float t = dht.readTemperature();
float h = dht.readHumidity();
digitalWrite(DHT_POWER, LOW);
Serial.printf("T: %.1f, H: %.1f%%\n", t, h);
}
void loop() {
readNPK(); // Sensor only powered for 0.5 seconds
delay(60000);
}
â ïļ Important Notes:
- Some sensors need 1-2 seconds to warm up before reading
- ESP32 GPIO can supply max 40mA (use MOSFET for higher current)
- Capacitive sensors (<10mA) can be powered directly from GPIO
- NPK sensors (30mA+) MUST use external MOSFET or relay
ð Case Study - Rain Sensor Power Fix:
A rain sensor with LED consumed 15mA continuously (3.6mAh/day). Battery lasted only 2 weeks.
- â Fix: Connected sensor VCC to ESP32 GPIO via MOSFET
- â° Power ON only for 100ms each reading (once per hour)
- ð Result: Battery life increased from 2 weeks to 6+ months
ðŊ Key Takeaways:
- â NPK sensors, LED rain sensors waste power 24/7
- â Use MOSFET or GPIO to power sensors only when reading
- ⥠Low-power sensors (<20mA) can connect directly to GPIO
- â° Always add delay after powering ON (sensor warm-up)
- ð Power management = 10-50x longer battery life
ðĄ Key Takeaways:
- Apply these concepts directly to your farm or project.
- Take notes on important details for the quiz.
- Use the button below to track your progress.
×