Can you explain this circuit to me ?

Hello :slight_smile:

I've built this circuit:

This is part of this tutorial about Wireless programming. The good thing is that I've got it to work on the first try :slight_smile:

The only changes I made are:

  • I'm using a Arduino Mega 2560
  • I didn't need to solder that wire because there is a "STATE" pin on my HC-05 board, which is already connected to pin 32.
  • I used a 12K for R2 and 8.2K for R3, because I had no 15K.
  • I added a 5V to 3.3V voltage divider on Arduino's TX.

But I like to understand why things work, and unfortunately, the author didn't give any details about why this circuit, maybe it's so obvious that he didn't feel the need to explain it, but for beginners it's not so obvious...

So I'm asking here if someone could explain the purpose of it, particularly:

  1. I think I understand that the capacitor is needed to hold Arduino's Reset pin LOW for just enough time for the programmer (avrdude) to know that it's time to upload. Is this correct ?

  2. But what is the role of R3 ? Tried without it, still worked.

  3. I understand that R1 is a pull-down, but is it really needed ? Tried without it, still worked.

I will appreciate if you could answer and give details.

Thanks in advance :wink:

The UNO already has a pull-up resistor on the reset pin so neither R3 or R2 are necessary.
The 05 sends a low, the capacitor will pass the low to the UNO which resets it and thus the Arduino boot-loader starts doing it's job to receive the sketch.
This process also happens the same way on the UNO if you use the USB to send a new sketch to it.

LarryD:
The UNO already has a pull-up resistor on the reset pin so neither R3 or R2 are necessary.
The 05 sends a low, the capacitor will pass the low to the UNO which resets it and thus the Arduino boot-loader starts doing it's job to receive the sketch.
This process also happens the same way on the UNO if you use the USB to send a new sketch to it.

Sorry, I forgot to say that I'm using an Arduino Mega 2560. I also tried without R2, but this time it didn't work :P. It's stuck on "avrdude: wiring_open(): asserting DTR/RTS".