In this tutorial, we’ll show you how to build an Auto Power Off circuit (Latching Power Circuit) on a custom PCB, which is extremely useful to save power in your electronics projects.
An Auto Power Off Circuit or also called Latching Power Circuit allows you to cut off power completely when a microcontroller is not executing any task, which is great to make batteries last longer in your electronics projects.
Watch the Video Tutorial
You can watch the video tutorial or continue reading for the complete project instructions.
Resources
You can find all the resources needed to build this project in the links below (or you can visit the GitHub project):
- Example Sketch (for Arduino IDE)
- Schematic Diagram
- Gerber Files
- EasyEDA project files to edit the PCB
- Click here to download all the files
Auto Power Off PCB
We wrote a guide some time ago about assembling the latching power circuit on a breadboard, but it’s more practical to have it on a dedicated PCB (shown in the following figure) if you plan to use it in multiple projects.
The PCB we’ll build is very versatile and it can be used with an ESP32, ESP32-CAM, ESP8266, Arduino or any other microcontroller.
You can power it with a battery, rechargeable batteries + solar panels, or any voltage source.
It can be turned on by different triggers for example from a pushbutton press, motion detected by a PIR sensor, a magnetic reed switch, or any other digital sensor.
Auto Power Off vs Deep Sleep
This project has nothing to do with deep sleep, because with the auto power off circuit, your microcontroller doesn’t consume power when it’s not executing any task.
In deep sleep mode there is much less power consumption than the active mode. However, there is power consumption because your microcontroller is being powered on (with some of its peripherals shut down). Learn more about deep sleep.
JLCPCB Sponsorship
This project was sponsored by JLCPCB. JLCPCB is one of the most popular PCB brands, with more than 700,000 customers worldwide. It’s specialized in quick PCB prototype and small batch production.
You can order a minimum of 5 PCBs for just $2 + shipping which will vary depending on your country.
If you want to turn your breadboard circuits into real boards, you just need to upload the gerber files to order high quality PCBs for a low price. We’ll show you how to do this later in this tutorial.
How the Auto Power Off PCB Works
Let’s take a quick look on how the auto power off PCB works without going into much detail about the circuitry, because we have a dedicated guide explaining how it works. You can read it here: Latching Power Switch Circuit (Auto Power Off Circuit) for ESP32, ESP8266, Arduino.
Quick reminder: the auto power off circuit cuts off the power completely. So, there’s no power consumption when the microcontroller is not running any task. Whereas in deep sleep mode, there is always some sort of power consumption because your microcontroller is powered on with some of its peripherals shut down.
Here’s how the auto power off PCB works:
You send a HIGH signal to the TRIGGER pin (1). When you send a HIGH signal through this pin, the microcontroller will turn on, but only for a few microseconds (2).
The trigger to get power to your microcontroller can be a pushbutton, a reed switch, a PIR motion sensor, or any other digital sensor.
To keep your microcontroller powered on, you need to send a HIGH signal from one of its GPIOs to the LATCH pin (labeled as IN) (3).
As long as the LATCH PIN is set to HIGH you’ll keep your board powered (4). So, you can execute any task during that time (5). To power this circuit, you can use a battery or any voltage source (battery + solar panels).
Keep in mind that the voltage on the input side, it’s the same on the output side. If you want to power your ESP32 or ESP8266 with a lithium battery (which outputs approximately 4.2V when fully charged), you need a voltage regulator circuit. This subject was already covered in the following tutorials:
When you’re done with that task, you can cut the power by sending a LOW signal to the LATCH PIN (6). Because the Microcontroller is completely powered off, it is not consuming any power (7).
Designing the PCB
To design the circuit and PCB, we used EasyEDA which is a browser based software to design PCBs.
If you want to customize your PCB, you just need to upload the following files:
Or you can simply download the Gerber files that I’ve used and order the final PCBs yourself.
In my opinion, the most important step when creating a PCB is to first ensure your circuit actually works on a breadboard or stripboard before designing the circuit.
Creating the circuit works like in any other circuit software tool, you place some components and you wire them together. When you’re happy with your circuit and pins usage, make sure you assign each component to a footprint.
Having the parts assigned, you can start placing each component and when you’re happy with the layout, make all the connections and route your PCB.
Once you’re done, save your project and generate the Gerber files.
This software allows you to automatically order your PCBs from JLCPCB. Alternatively, you can also follow the next steps to order the exact PCBs we’ve built.
Ordering the PCBs
You can order the PCBs easily, even if you don’t know how to design them (you just need to use our files).
1. Download the Gerber Files – click here to download the Gerber files.
2. Go to JLCPCB.com and click the “QUOTE NOW” button.
3. After a few seconds, you should see a “Success” message at the bottom. You can check the Gerber Viewer Link to see if everything went as expected.
4. You can order 5 PCBs of any color for just $ 2 + shipping (approximately $6 to Portugal). When you’re happy with your order you can click the SAVE TO CART button to complete the purchase.
Parts Required
To build your PCB and follow this tutorial, you need the following parts:
- Microcontroller or Development Board, for example:
- AO3413 SMD Transistor P-Channel MOSFET
- 2x 2N3904 SMD Transistor BJT NPN
- SMD Resistors: 220K Ohm, 2x 100K Ohm, 2x 10K Ohm, 1K Ohm, 330 Ohm, and 220 Ohm (1206 package)
- SMD LED (1206 package)
- 2x SMD Diodes (for example: 1N5819W)
- PIR motion sensor (or reed switch, pushbutton, etc…)
- Power Supply
You can use the preceding links or go directly to MakerAdvisor.com/tools to find all the parts for your projects at the best price!
I’ve ordered the PCB components from LCSC, but you can order them from any other electronics store.
Unboxing the PCBs
In 4 business days, I’ve received the PCBs at my office.
As usual, everything comes very well packaged and the PCBs are really high quality, specially the silkscreen.
Soldering the PCBs
The next step is soldering the components to the PCB. Although these are SMD components I didn’t find them difficult to solder. The resistors used are the 1206 package. I recommend starting by soldering the smallest components and leave the headers to the end.
To solder the PCBs, I’ve used the TS80 soldering iron. The TS80 soldering iron is the TS100 successor. I have a review about the TS100 soldering iron. I didn’t have time yet to write a review about the TS80, but it’s by far the best portable soldering iron I’ve used.
Recommended reading: Best Soldering Irons for Beginners
Assembling the circuit
To test the board, we connected a PIR motion sensor to the trigger pin and applied 3.3V from a power supply. We connected the LATCH pin to GPIO 5 of the ESP32. We also connected the pin marked as LED to GPIO 4 for testing purposes.
You can follow the next schematic diagram:
You can use a similar circuit for other microcontrollers, we’re using an ESP32.
You can use any other trigger like pushbutton, reed switch, or digital sensors with a threshold like smoke sensor, sound sensor, soil moisture sensor, rain sensor, etc…
Uploading the Code
To test the circuit, you can upload a sample code that keeps your board powered on for 10 seconds after a trigger signal.
The following code is compatible with ESP32, ESP8266 and Arduino.
/*********
Author: Rui Santos
Complete project details at https://RandomNerdTutorials.com/power-saving-latching-circuit/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files.
The above copyright notice + link to project page and this permission
notice shall be included in all copies or substantial portions of the Software.
*********/
// Define power latch pin for ESP32 (GPIO 5) / ESP8266 (GPIO 5) / Arduino (Digital 5)
const int powerLatch = 5;
const int led = 4;
void setup() {
// Define pin as an OUTPUT
pinMode(powerLatch, OUTPUT);
pinMode(led, OUTPUT);
// Keeps the circuit on
digitalWrite(powerLatch, HIGH);
// Turn ON an LED connected to GPIO 4
// (after the powerLatch pin is set to LOW, your board powers off and it also turns off this LED automatically)
digitalWrite(led, HIGH);
// ADD YOUR TASK HERE (HTTP REQUEST, MQTT Message, Datalogger, etc)
// Waits for 10 seconds
delay(10000);
// Turns the power latch circuit off
digitalWrite(powerLatch, LOW);
}
void loop() {
}
How the code works
Start by defining the powerLatch pin. We’re using GPIO 5, but you can use any other pin.
const int powerLatch = 5;
For testing purposes we’ll turn on an LED connected to GPIO 4. In this case, it’s the on-board LED of the auto power off PCB.
const int led = 4;
In the setup(), define the powerLatch and led pins as outputs.
pinMode(powerLatch, OUTPUT);
pinMode(led, OUTPUT);
Next, set the powerLatch pin to HIGH. When we set it to HIGH, we ensure that there is power coming to feed the microcontroller.
digitalWrite(powerLatch, HIGH);
Turn ON the LED connected to GPIO 4 (after the powerLatch pin is set to LOW, your board powers off and it also turns off this LED automatically)
digitalWrite(led, HIGH);
Next, for demonstration purposes we keep the LED on for ten seconds.
delay(10000);
After that, we set the powerLatch pin to LOW. When it is set to LOW, the power is cut off, and the microcontroller turns off.
digitalWrite(powerLatch, LOW);
Add the task you want to perform after setting the powerLatch pin to HIGH and before setting it to LOW.
Your task can be making an HTTP request, publish an MQTT Message, datalogging, etc…
Demonstration
Finally let’s test this setup, and see it in action.
When motion is detected, the PIR motion sensor sends a HIGH signal, and there’s power coming to the ESP32 that can be confirmed by the LED remaining lit.
When the ESP32 is on, the whole circuit consumes about 65 mA.
After 10 seconds, the ESP32 turns off. If we measure the power consumption, you can see that the ESP32 is not consuming any power. It’s completely powered off.
This would work exactly the same for an ESP8266, Arduino, STM32 or any other microcontroller.
The PIR motion sensor consumes very little power, about 14 uA. So, even with a small battery it would last years. But if you’re using a pushbutton or a reed switch, these don’t consume any power.
Wrapping Up
[Update] the assembled PCB giveaway ended and the winners are: Ion Gheorghe, Domenico Carvetta, and Jan Pieter Duhen.
We hope you’ve found this project useful and you can modify it for your own needs. To learn more about the latching power circuit or to build the breadboard version, you can read the following tutorial:
How to power the Auto Power Off Circuit PCB:
- Power ESP32/ESP8266 with Solar Panels (includes battery level monitoring)
- ESP8266 Voltage Regulator for LiPo and Li-ion Batteries (ESP32 Compatible)
More projects with PCBs:
Thanks for reading.
Thanks Rui. This is great tutorial. I was searching exactly for this kind of solution. Thanks a Lot.
Thanks for reading! I’m glad it was helpful
Congratulations for being second to second new knowledge, I would like the PCB to use in a LoRa Wan project with ESP32 in large fields where energy does not reach. thanks Rui.
Felicitaciones por estar aportando segundo a segundo conocimientos nuevos, me gustaria la PCB para usar en un proyecto LoRa Wan con ESP32 en campos extensos donde no llega la energia. gracias Rui.
I want to build a vector multiplier with on board ram for training deep neural networks
Why not make the PCB smaller so this could fit with an ESP-01? Those little cheap devices desperately need power saving.
I’ve been reading your articles for some time now. And i have to say they are among the best on ESP8266 and HA matters. I don’t have any future requests for you, as your articles are simply fantastic. Your writing is clear, concise, and very interesting stuff.
I’m still trying to build a simple “dash” button from one of your previous posts.
Thanks!
Hi Nikola.
Thank you so much for your nice words and for following our work.
We always try to put our best in every tutorial.
I hope you can finish that project. It is a very interesting one. And you can add this little circuit to the dash button to save even more power.
Regards,
Sara
Rui it looks like perfect for my job ! I Am buiding my Smart home with alexa and blitz wolf Smart devices. Excellent!
Thanks Domenico! I’m glad it was helpful!
Thanks for the project! I have developed an ESP32-based LiPo charge monitor that publishes individual cell voltages and current output from a commercial charger to an Adadfruit IO Dashboard. This lets me monitor the charging process remotely. However, once the charger stops charging, the monitor becomes a load connected to the battery which gradually discharges the battery. This will let me to completely cut all power to the ESP32 by setting the powerLatch pin to LOW once a low charging current is sensed.
Great tutorial Rui. I have been looking for a good “Power off” circuit for my solar low light circuit, with SuperCap power storage for some time. Now I can see a final design to push to a full working module with an AT-tiny.
Thanks for sharing your designs..
Exactly, I also plan to create in the future this PCB, but adding a microcontroller built-in
Thanks Rui, your project is interesting in my opinion. I was looking for something similar to be able to leave my ESP cam inside my car managed by the existing burglar alarm control unit.
Can I also modify the circuit to adapt it to assembly with discrete components?
Thanks to you, keep it up.
Grazie Rui, il tuo progetto è a mio avviso interessante. Cercavo qualcosa di simile per poter lasciare il mio ESP cam all’interno della mia auto gestito dalla centralina antifurto esistente.
Posso anche modificare il circuito per adattarlo al montaggio con componenti discreti?
Grazie a voi, continuate così.
This would be fantastic!
Thanks Rui,
Another great tutorial!
Thanks! I’m glad you liked it!
Hi Rui, thanks for this solution.
As my Pool-Control-Project is nearly finished
the next project will be some kind of house alarm system.
I was thinking of using ESP8266s with reed switches to signalize
status changes of windows incl. handles.
Different to usual solutions you can buy,
the sensors should be hidden within the window frame.
So far i was struggling with an easy way to change batteries
inside the frames.
With this solution i don‘t mind replacing the batteries once in years.
Thanks again.
Thanks for sharing your project idea Jones!
I am working on E-ink paper with ESP8266 using battery and it wasn’t possible without your articles.
I have almost done using deep sleep but after reading this article wishing to include this in my porject.
My project is a retail signage in which ESP8266 takes data from server application and display to E-ink display and then goes to deep sleep for defined intervals.
As deep sleep consume a little power and reduces battery timing for the tasks keep running which are not required after office hours.
Now I would like to cut off the power as light goes dark and resume when office light turns on.
For my door sensors I fell back to magnetic switches and the trigger is just power on to the esp. I have my oldest one on the back door that is used regularly. Just changed a 9v battery after 6 years. Was an ATtiny with a delayed buzzer. Now a D1 mini.
I see that you are using the latching circuit for the same purpose as my project. What I don’t understand is how to use the magnetic switches (did you mean reed switches?) to trigger the latching circuit; it seems to require a momentary connection (such as supplied
by a push button) not a semi-permanent connection (as a reed switch supplies). I have asked this question on this forum but so far have not received any reply. Perhaps it is simple but it doesn’t seem so to me. Can you explain how you did it please?
Wonderful project just what I’ve been looking for to control my garden lights. When the Light level is low control the micro on and when the light level is rising by day switch the micro off.
Sounds like it’s a great option for that project!
I like it, I am thinking that I may have manyr uses for this, At a remote lake site!!
Exactly, I was seeing so many application that I want to have a small PCB that I can easily add to my projects
Great project and fits perfectly to my sensor-nodes with lora on esp32 I’m working on. I already got a lot of informations and code from your website to realize this project and would be glad to be a winner.
Great project.
My own projects for this are:
1. PIR triggered wifi camera with battery-powered ESP32
My plea: produce a through-hole version–using vertical 1/6-watt or 1/8 watt resistors and T0-92 transistors should allow you to do it without much, if any, re-routing.
Thanks Rui..
This is exactly what i was looking for to power my (internet of things) project. I need the microcontroller to power up only when the user requested it to perform its only function (turning on water valves in a particular sequence). The user can use any method to request the set of valves to open. The chioces are: Ldr switch(for automatic once a day operation), rc switch, push button,motion,bluetooth , and wifi….. I will be studying this more…again..thanks
I’m glad it was helpful! There’s definitely so many applications that you can do, that’s why I think having the PCB is extremely easy to add it to any project
This looks handy for the mailbox notifier that I am building.
In my programs, I use byte (not int) to define pins, along with const.
Exactly Ian, that’s one of the applications I plan to have it running with this board
Hi
Very interesting project.
One question about the process to wake up with a switch, motion sensor or reed switch.
I did a project measuring my pool temperature with solar power and batteries.
Can i add to my project, your project “EXTREME POWER SAVING” but i wonder :
What kind of device can i use to wake up every hour ? Have you an idea ?
Best regards
It depends on what you need to wake it up, you can use any method that fits your needs. You could also use a water level sensor…
Tmp5111 with resistors
Great great tutorials as always 🙂 I propose this project: a humid sensor that triggers to wet a field, it will allow to run an amount of water. Or a trigger that checks the oxygen in a pool with fishes to increase the oxygen, this is very useful for fishing farming.
Thanks for reading and for sharing your project idea!
Thanks Rui,
That’s a neat and great solution for long-term battery-powered projects!
I’m intending to use it in a humane mouse trap – it will trigger a notification when the trapdoor (with magnetic reed switch) is closed.
You’re welcome Doug! Thanks for sharing your project idea!
The best of this pcb, that it is so universal for each uc. Good Idea, great project!
Thanks a lot!
Thanks Michael! Exactly, I have so many applications in mind that I wanted to make them compatible with a wide variety of sensors
Yes. But I expected some capacity in the circuit for giving the uc more time to get to hold the trigger. Especially if you have no debouncing in e.g. a switch. What is the timing? Also with a C you could switch off the processor after some time automatically, as long as the RC-constant is long enough for the program cycle. I think, if i find time, i will change the pcb to have the C as option, which you could mount if you need it.
Just to clarify… You have two options: 1) if the trigger pin is set to HIGH, the ESP will be powered on. 2) If you set the LATCH pin to HIGH, the ESP will remain on. The minimum pulse length to trig pin depends on how fast your microcontroller boots up and sets the LATCH pin to HIGH (which will depend on the firmware and processor). For example with an ESP32 and a very fast button press (without debouncing), it’s enough to activate the circuit. If you’re using an Arduino board, you might need to hold for at least 1 or 2 seconds the pushbutton.
Thanks for share. I relly like to test this project winning some of these boards. I have some sensors that today, they ate very power hungry.
Hi,
I have a bank of leds, powered by 3 x AA batteries. The leds ( to light a pathway) are powered on for about 1 minute only.
The device was in use for over 6 months until I moved house. Since then, I have tested the leds about once per month.
The batteries have not been changed for 3 years and the leds are still bright.
The circuit uses the leds, the batteries, an NPN power transistor, a magnetic Reed switch and a multifunctional trigger/timer from eBay – these cost 99p for 10 !
ebay.co.uk/itm/172128772065
I have also used these in conjunction with a 2 coil latching relay which is set by the multifunctional trigger and then reset by the Arduino when the task is complete.
As the circuit you have described, the device is triggered by 0v on the trigger pin !
I just thought I’d pass this on as an alternative approach.
Yours is a great site, please keep up the great work
Kind regards
Terry
Thanks for your helpful feedback! You can definitely buy similar boards. The goal is to experiment and to learn how to create custom circuits with this feature. I basically plan to create in a future project, an PCB ESP32/ESP8266 PCB with built-in power latch circuit
Great article, I built a remote weather station, but the power drain overnight after a cloudy day is just a little too much for the small solar/battery power source. This project will give me the extra power savings I need without up sizing the solar cell.
Thanks for reading and for sharing your project idea!
Great tutorial again 🙂 I have a project where I need to turn on an ESP32 every 15 min, take readings and publish them online via wifi. Is it possible to use this board with an external real time clock (RTC) sending an interrupt every 15min (and would this be better than using deepsleep in terms of power consumption)? Cheers
Hello, Oli! You can use a cheap Attiny13A in combination with this circuit. The ATtiny can even be put into a deep sleep with a very low consumption of a few uA. It can only sleep 8 seconds, but it counts how often it woke up. This allows you to trigger this circuit after any interval to turn on the ESP. Many greetings Stefan
Great tutorial. I am sure this idea can replace some projects I have made which use a MOSFET to turn on and off peripheral devices which leak current, it kinda turns things on their head, in that now a peripheral can turn on its microcontroller.
Another tool in my low power arsenal. Superb.
Instead of a PIR I’d use a microwave radar, as Andreas Spiess (“the guy with the Swiss accent”) suggests in this video from a while ago : youtube.com/watch?v=9WiJJgIi3W0 – they are much more spider and fly trigger resistant!
Thanks for sharing your project idea Paul, it should definitely work on that application
Hi Rui. Great project. I’m still very early in my learning stages but I’ve been looking for a way to sense when my sump pump either fails or water is coming in too quickly for it to keep up and the water level rises too high within the hole. I am looking for a way to signal me remotely that the water level is high. I often am away from home and a remote signal would allow me to have a neighbour check on my home, etc. This power off module would allow me to also not to have to worry about my sensor running out of power while I am away.
Great job on the site and all the great projects.
Kevin
Hello Kevin! Thanks for sharing your project ideas!
Regards,
Rui
Thank. Usefull idea for some projetcs.
Obrigado. Acredito que vá usar em algumas ideias.
Thanks for reading!
Wow Rui that was incredible, I would like to use it to build a solar powered charger.
It should definitely work! Thanks for posting your project idea.
Nice project
was looking for such a circuit for a room presence detector. the board could switch the controller to send the command to the tv or ac to switch it off.
This is the perfect addition to my wireless thermostat.
I used to put it on sleep, but this is better.
Every 2 minutes, the thermostat is up, measure temperature and adjust heating or cooling.
Now i will save a lot of battery power.
Thanks for project.
Hey Rui !
Great little circuit! How much power does the circuit itself use?
Kevin
Thank you Rui – very timely! I am currently wrestling with power management for my solar-powered propane gas meter data logger. I think you have just provided me with a practical solution.
Here is a summary of things so far: therowdens.org/RNT/solarmeter.htm
I would like to use this zero power circuit to shut down a microcontroller on an observation station on the back side of the moon. Of course I will ned some help from NASA, China or India to get the rest of the project underway.
Hi Rui,
Thanks for the excellent project. I think I use your circuit to replace my 433Mhz door/window sensors with ESP’s on WiFi.
I’m not so used to SMD components, so I’m considering editing the gerber files to fit normal sized components
Sounds good! I wanted the board in a smaller size, so I’ve used SMD components
I could use this for my cat-cam!
I have a “solar powered IoT garden shed”.
It has solar panels, a 12V battery, an ESP8266 with INA260 voltage/current sensor and a BME280 weather sensor. I’d like to hook up my ESP-CAM and infrared light through the circuit, to prevent the battery draining. Only when the cats enter the shed for their nap, the camera should turn on.
Another GREAT project and right on time that I need it. I’m build an ESP32Camera project to take pictures of people entering my office, following again one of your projects https://randomnerdtutorials.com/esp32-cam-pir-motion-detector-photo-capture/ so I needed a way for the battery to last about a week.
Thank you Rui.
Depending on how many times the board is triggered (how many photos you take per day) and the battery capacity, with this method it can definitely last for months.
Thanks Rui,
this project is really brilliant for many of my iot projects 🙂
Maurizio
You’re welcome! I’m glad it was helpful!
Hi Rui, thanks Rui. This board is a good idea. It would fit perfectly in my garden shed. At each door opening I could turn on the light and retrieve the temperature and humidity variables via wifi.
Hi.
That’s a great application. Thanks for sharing and following our projects.
Regards,
Sara 😀
Hi Tigran
You are speaking about Tmp5111 but i try to google it
and i don’t find any thing on it
Can you be me precise please
regards
Hi Rui
I am looking for a tutorial on how to use EasyEDA.
I am trying to learn how to realize a schematic of the PCB
Do you know if there is somewhere that kind of tutorial ?
Thx
Best regards
Hi.
At the moment, we don’t have any tutorial on how to use EasyEDA.
But that’s on our plans. We’ll try to create a getting started tutorial with EasyEDA soon.
Regards,
Sara
I built a magnetic lock using a 555 timer, not too long ago.
I had the problem that it drew too much power while doing nothing.
Id love to retry it with this circuit and see if I can get away without having to take out the batteries Everytime
This is awesome project.
I think I need to make a auto solar project. Which enables more efficient energy to us.
Solar moves according to sunlight
Please make this !
I’m currently using a prototype of your original latching power circuit with an ESP 01 as the microcontroller and a pushbutton to create an “amazon dash” style MQTT button.
GPIO 2 is used for the latching signal, but as GPIO 2 needs to be HIGH at boot of the ESP 01, I have modified the circuit so that it is tied back to the pushbutton. It seems to be working well so far.
My next step was to learn how to design a PCB and start finalising the project so this tutorial is PERFECT timing!
Thank you Rui for another informative tutorial!
Hello! first of all thank you for providing your great circuit. I implemented it on the breadboard in order to run an ESP8266 cyclically in conjunction with an ATtiny13A. It works great. Of course I would like to try the new board in combination with the ATtiny13A 😉 What I noticed with the new circuit: A transistor has been added to the trigger input. Even without this transistor the circuit worked well. What is the purpose of the additional transistor?
What still occupies me: Can you say something about the dimensioning of the individual resistors? E.g. why R5=10kOhm and R6=220 Ohm? (Also R2, R3, R7, R1). I am also concerned with the design of diodes and transistors: Why the 1N5819W and the 2N3904? You can see from the questions that I don’t know much about electrical engineering.
If you are interested I will send you a photo of my breadboard and the fritzing as well as the firmware of the ATtiny.
Many greetings
Stefan
great device.
I want to use it to inform me me when mail is dropped into the letter box – I only want to go out when I know there is something there.
I will have a reed switch on the letter box opening and when the flap is opened for someone to drop in a letter it will wake up my esp8266 and send me an email informing me that there is mail in the mailbox . 🙂
Hi Mario.
That’s a great application.
Thanks for sharing 😀
Regards,
Sara
Hello,
I ordered PCB and bought parts. Every time my MOSFET-P begins to smoke. I don’t understand the situation. I made two tiles and I have the same result. Please help.
Regards,
Bart
Hi Bart.
Which MOSFET are you using? And where did you get it? Can you post a link to the store?
Which voltage are you applying to the circuit?
Regards,
Sara
Używam tego tranzystora: AO3413. Kupiłem go tu: https://www.tme.eu/pl/details/ao3413/tranzystory-z-kanalem-p-smd/alpha-omega-semiconductor/ . I think it’s the same mosfet that the author uses.
What about replacing the mosfet with an SCR? (I got lots
of them!) Slightly different wiring for the gate, and it’ll
take a transistor to quench the gate. Perhaps a 2N7000.
Just wondering.
I use this transistor: AO3413. I bought it here: https://www.tme.eu/pl/details/ao3413/tranzystory-z-kanalem-p-smd/alpha-omega-semiconductor/. I think it’s the same mosfet that the author uses.
Hi Bart.
Yes, it is the same that we use.
Are you sure you’re placing it in the right place? It should be placed next to the Q1 label?
Regards,
Sara
I modified this design a bit because I make PCBs at home. I have to have one-sided tiles. PCBs look like this: https://zapodaj.net/d820a4b05d1c0.jpg.html
The paths and parts are identical.
Yes i’m sure.
Hi, one question please, on EasyEDA , I can’t find the in the VCC net connections.
Do I miss something? I’m trying to make this as @Bart on a single side PCB, if you have it please post it. Prefer on Eagle which is easier I think.
Thank you.
VCC jest na drugiej stornie płytki drukowanej. Moja wersja nie działa i nie wiem, gdzie posiadam błąd.
VCC is on the other side of the circuit board. My version doesn’t work and I don’t know where I got the error.
HI Rui and Sara,
Thank you for another great project just what I am looking for, but I need help with a small change.
I have remote ESP8266s monitoring room temperatures in a remote house, and reporting their readings to ThingSpeak. One thing that I have noticed is that the timing of the readings is drifting. I initially them set them up well spaced apart but some are now converging, this can be because of delays in making the connection to ThingSpeak which in tern delays the next DeepSleep period. What I would like to do is to use a RTC to drive the latching power circuit so that I can be sure the the ESP8266s are awake at the correct time and enhance the battery life at the same time. This requires a change to the circuit, so that the negative signal from the RTC will start the latching process.
When I did my electronics education Thermionic Valves were King, and transistors were what we listened to Radio Luxembourg on!
What I think that needs to be done, is to change Q3 the 2N3904 NPN transistor to a PNP. What I would like help with is deciding which PNP transistor to use and what other circuit changes would be required. I would welcome any assistance that you can give me.
John
You still have to power the sensor either way to set the trigger. Deep sleep uses about 2ua so is that the only savings powering off?
Thanks for sharing a great idea! Built your circuit. Unfortunately it only reduces the voltage to the LED from 3V to 2,5 volts every few seconds. The voltage to the uC is reduced from 3.3V to 2.7V every few seconds. Appreciate any suggestions. The parts and layout are identical to yours.
Thank you.
Figured out the problem. The Samacsys eagle library for the 3413 had the leads incorrect.
What I do with LEDs is not digitalWrite but analogWrite with a value between 12 to 25 and that reduces A LOT the current, and no need for a resistance.
I just wanted to thank you for this circuit, and providing everything in such an easy to use/order manner. I would like to share a bit of ordering humor related to it. When I placed my order for boards I opted to get a solder stencil, thinking a sheet of plastic just larger than the boards with holes would be delivered, boy was I wrong. I received a 28cmx38cm sheet of stainless steel with the solder template dead center. I think it is going to be a bit difficult to get everything aligned this way.
Hi Rui and Sara,
First of all, it’s awesome what you created, I couldn’t find a touch for you on the internet.
I have two questions about the push button.
You show it on your web pages with a motion sensor, but you also show it in the video (6: 12/8: 53) with a blue-headed pushbutton, but sorry you don’t really see how the pushbutton is connected to the trigger and the VCC and GND signals.
I, as I interpret it:
Is one of the pushbutton pins (red wire) connected to the trigger or VCC?
Is the other leg of the pushbutton connected to GND through the 10k resistor? And sorry where is the green wire connected?
Can you show a picture or description of this? I would be very grateful.
And I would have another question that I found a designer switch on the aliexpress site.
I show the link:
aliexpress.com/item/1449851630.html?spm=a2g0o.store_pc_allProduct.8148356.13.391958fe0RZspo
You think this can be incorporated into your systems as a switch.
Of course, it works with 12V, as the aliexpress shows.
Thank you in advance for your help.
Regards
Peter
Hi.
To use a pushbutton as a trigger, wire one pin to VCC.
Wire the other pin to the trigger pin with a 10k pull up resistor.
Regards,
Sara
maybe with pull down, not pull up ?
Hi, great project. I’ve built it and it works flawlessly. However it takes times and I’d prefer to buy them complete – is there an easy way to do that atJLCPCB or elsewhere (aliexpress?)?
Hi.P
Unfortunately, we don’t have these PCBs for sale on stores.
Regards,
Sara
Hi Sara,
Can we upload the gerber file and buy them assembed?
Hi.
Unfortunately, when you get the board, it doesn’t come assembled.
Regards,
Sara
Indeed this tutorial, as usual, is GREAT !!!!
Hi,
Thank you Rui for this great tutorial. One question about the circuit’s maximum current draw. Is it depend on the transistor choice (2N3904)? Please, thank you.
Best,
Salai
I wonder why you use so many different resistor values, e.g. at the bottom of the drawn schematic at the two diodes (10k, 220) and on the left hand side it’s first the R then the diode, and on the right hand side, first the diode then the resistor. Also the resistors against GND are not equal. Does this really matter? Or could I use 100k for all R against GND for example? Thank you!
Is there any “through hole” equivalent for the AO3413 ?
thanks !
Thanks for the excellent tutorial. There is one thing I don’t understand – how to trigger the microcontroller with a reed switch mounted on a door or window (a common way to use them in security alarms etc)? You can get a NO/C/NC double thrown reed switch to turn on the NO when the door is closed OR turn on the NC when the door is opened but these signals are not momentary as in a pushbutton or PIR – the connection remains as long as the door (window) is left closed/open. How would you use a reed switch with the latching circuit in this case?
Looks like this question has been too hard!
I have asked this question on other similar forums but nobody seems to grasp the problem. I detect a certain evasiveness in the replies I do receive which really suggests nobody knows the answer.
Is there a way this circuit could be modified to read the voltage of the input voltage? I’m thinking if I have a battery powering the ESP32 I could monitor the voltage and potentially shut it down or at least display V
Could I please ask once more the question: how do you use a reed switch with this project? I can understand a PIR or momentary push button but a reed switch does not provide such a momentary trigger signal – it is either on or off, maybe for hours or days even. Will this latching circuit still work under these conditions?
@David it is the way I am using the latching PCB in my project also. It is not difficult but should work best with a NO (normally open) reed switch which will close and conduct current when it is triggerred by a magnet.
On the 3 pin header position labelled VCC – TRIG – GND, you need to connect one side of your reed switch to the “VCC” pin and the other side of your reed switch to the “TRIG” pin. You may ignore the GND connection here if you are using a button, a microswitch or a reed switch. Connect the 2 pin header position labelled VCC-GND to your power supply, it may be a battery for example but it’s voltage must match (or at least be within the specified input voltage range for) your microcontroller.
The rest is well described including the Arduino compatible code in Rui’s tutorial.
In operation once your magnet closes the reed switch for long enough, the power is fed to the microcontroller which will then “enable” the “latch” using a digital output pin. When your code has run and it is time to turn off the microcontroller the voltage is removed from the “latch” which disables the P-Channel Mosfet, turning off power to your microcontroller and the whole sytem waits in standby for the next trigger from the magnet etc.
I hope this helps?
There must be something I don’t understand. When the magnet approaches the NO reed switch the circuit closes sending the triggering signal. But when the code has finished running and the latching circuit tries to switch off the power, there would still be a triggering signal (assuming it’s a door that is closed and stays that way for a certain long period of time) so the latching circuit would be triggered again … ad infinitum.
I read this other post https://randomnerdtutorials.com/latching-power-switch-circuit-auto-power-off-circuit-esp32-esp8266-arduino/ and I can’t see why the 2N3904 transistor would ever stop pulling the gate of the NDP6020P mosfet to ground and therefore why the latching circuit would ever stop supply power to the microcontroller. Can someone please explain my error here? Or maybe I am not wrong?
Hi, I also have the same problem while trying to create a low power consumption door state detector using reed switches.
Have you tried this solution electronics.stackexchange.com/questions/519758/improving-edge-detector-with-latching-circuit-for-esp8266
HI,
Just sharing my experience using this latch circuit with an ESP01 module. I ran into a bug which took some time to solve but here is the hint for anybody going this route.
My project used an ESP01 module running very basic code to transmit a short message using ESP-NOW. Being battery powered the whole boot & transmit cycle to the latch release takes milliseconds so is great for long battery life. DO NOT however try to use GPIO0 or GPIO2 as I did for the latch “OUTPUT”, the pins generally reserved for digital IO. These pins see a little over 1volt during the boot process and I found that using either for the latch “OUTPUT” connected to the “IN” terminal of this PCB would cause the ESP01 to “boot-loop”, it would never start or run the seutp() function.
Once your project does not require Serial communication then GPIO3 works perfectly to drive the latching circuit on this PCB.
I hope sharing this will save somebody the couple of evenings I lost to discover the GPIO issue.
Beyond this, it works superbly and does exactly what we want it to do, thanks Rui and Sara!
Just put together a nodemcu (wifi disabled to save 60% of the power it uses) pcb with this on it, along with a pizeo buzzer, CR123A lithium, and reed switch for door open close detection. I expect it will get 1.25 years of battery life. Thanks so much for sharing! I used JLPCB!
Hi and thank you,
I’ve gotten the latch circuit and example sketch to work be wiring up a push-button to power on the latch circuit pcb as described in the tutorial.
But now I’m trying to get a DS3231 from Adafruit to power on/trigger the latching circuit on an timed interval/alarm (every third day), and I’m completely lost.. It looks to me like the DS3231 triggers a low output when the alarm fires, so I don’t understand how to get the DS3231 to turn on the power..
Is this possible to solve or do somehow?
This is the ds3231 I’m trying to use:
https://learn.adafruit.com/adafruit-ds3231-precision-rtc-breakout
Would be forever grateful for any assistance!
Thanks for the tutorial. I’m trying to create a BOM for the PCB but have an issue with the list of resistors. According to the picture, in R6 you mounted a SMD resistor of value 2000 which should be 200 Ohm, but from the parts list the only remaining resistor that I cannot directly map using the SMD digit code ist a 220 Ohm resistor. Is it correct to assume, that one should use a 200 Ohm resistor at R6?
Once finished I’d be happy to send you my BOM to use with jlcpcb as I’m trying to get fully assembled circuits. But I’d also be happy if you’d upload a BOM in this article if you have one at hand.
Thanks.
Hi, can u explain what to do if the push button should be able to switch everything off too (so not just through delay) ??? thank you
suppose the trigger signal stays high; will the MCU be able to switch itself off in this case?
I have a question about the reed switch application. Beginning from an open position, if the reed closes and stays closed then this circuit doesnt work because it’ll constantly be turning the power on. Therefore, in order to use a reed switch with this circuit you have to make sure that the reed switch only turns on momentarily. Is this correct?