Reset 5v arduino from 3v source

I want to use an esp8266 wifi module as a transparent serial bridge for an arduino pro mini. The esp8266 is 3.3v and this arduino is 5v. The code is already taken care of in this esp-link project.

The esp can be used to wirelessly upload new sketches to the arduino, provided that the esp is wired to the reset pin.

My question: Do I need protection for the esp's 3.3v gpio pin that is connected to the arduino's 5v reset pin? If so what should I do?

Enlarged Schematic

My question: Why do you need to reset the Arduino ?

Do I need protection for the esp's 3.3v gpio pin that is connected to the arduino's 5v reset pin?

Yes

UKHeliBob:
My question: Why do you need to reset the Arduino ?

To upload new sketches to the arduino (wirelessly).

Grumpy_Mike:
Yes

What measures would you recommend?

[Edit] Some one told me to just throw a resistor in there. Okay but it's still 5 volts, right? Would this be 'good enough'. Or should I use a transistor? I'm looking for the correct way to do it.

What measures would you recommend?

Use a transistor.
Output of your 3V3 device to a 1K resistor, other end of the resistor to the transistor's base.
Emitter to ground, collector to reset line.

Grumpy_Mike:
Use a transistor.
Output of your 3V3 device to a 1K resistor, other end of the resistor to the transistor's base.
Emitter to ground, collector to reset line.

I happened to have a nps2222a lying around and did exactly as you suggested, worked like a charm. Thank you.

However, afterwards I described our solution here on another board and someone much more knowledgeable than me says it's not necessary: "There's no risk connecting a 3.3V output to a 5V input pin. The reset pull-up is about 50 kΩ, which will generate a weak 30 µA current through the ESD protection diodes of a logic chip running at 3.3V."

What are your thoughts?

I would have used a 3V3 Pro Mini myself :slight_smile:

Alternatively, could the reset be rewired to pull high to 3V3 instead of 5V (hardware-wise, probably easiest to just remove the 10K pullup resistor, or alternatively cut the trace to the resistor, then externally wire a 10K to 3V3 from reset)? I would assume that voltage would be high enough to keep it high until pulled low by the ESP, as a DIO only needs about 1V to read as a logic high on the 328p. Yes this idea means hacking the board a little. Just curious.

a DIO only needs about 1V to read as a logic high on the 328p.

Input needs to be 0.6 x Vcc to be read as a high with Vcc >=2.4V
1.98V with Vcc = 3.3V
3V with Vcc = 5V.

0.9V for the Reset pin, which is different than the regular IO pins.

CrossRoads:
Input needs to be 0.6 x Vcc to be read as a high with Vcc >=2.4V
1.98V with Vcc = 3.3V
3V with Vcc = 5V.

0.9V for the Reset pin, which is different than the regular IO pins.

Ah yes, I forgot about the threshold being tied to Vcc for IOs. The 0.9V was a number I had in my head, must have been thinking of the sensors I've been doing a lot of work with lately. Sounds like my idea would work though, something to file away in the memory for such tricks (though I prefer to just build to 3V3 these days since most sensors/radios use it. I've come to dislike level-shifters.).

theboozler:
I happened to have a nps2222a lying around and did exactly as you suggested, worked like a charm. Thank you.

However, afterwards I described our solution here on another board and someone much more knowledgeable than me says it's not necessary: "There's no risk connecting a 3.3V output to a 5V input pin. The reset pull-up is about 50 kΩ, which will generate a weak 30 µA current through the ESD protection diodes of a logic chip running at 3.3V."

What are your thoughts?

My thoughts are that while he might be more knowledgeable that you he is still not very knowledgeable.
While you can wire a 3V3 output to a 5V input in this case he is wrong about the pull up resistor. On the Uno this pull up resistor is in fact 10K. This means you are feeding 5V through a 10K resistor into your 3V3 device at a rate of 170uA which is over 5 times what your "knowledgeable friend" said.

This is not a good idea at all, using a ESD diode as over voltage protection is some what of a hack and is not to be recommended. Especially when you consider that these devices are not designed for the abuse that the Arduino chip is. This is due to the smaller chip geometry.

I think you should get more knowledgeable friends.

Grumpy_Mike:
My thoughts are that while he might be more knowledgeable that you he is still not very knowledgeable.
While you can wire a 3V3 output to a 5V input in this case he is wrong about the pull up resistor. On the Uno this pull up resistor is in fact 10K. This means you are feeding 5V through a 10K resistor into your 3V3 device at a rate of 170uA which is over 5 times what your "knowledgeable friend" said.

This is not a good idea at all, using a ESD diode as over voltage protection is some what of a hack and is not to be recommended. Especially when you consider that these devices are not designed for the abuse that the Arduino chip is. This is due to the smaller chip geometry.

I think you should get more knowledgeable friends.

Ouch, I see why they call you Grumpy Mike. Anyway, thank you for the pertinent info.

There are two ways to do this.
The right way or the iffy way.

If it was me, I would use the transistor method as wisely stated.

But, it's your decision after all.

LarryD:
There are two ways to do this.
The right way or the iffy way.

If it was me, I would use the transistor method as wisely stated.

But, it's your decision after all.

Agreed - I came here looking for the correct way to do it.

Don't get me wrong, I'm not arguing at all or wanting to take shortcuts. I'm just asking questions.

Questions are good, shortcuts are bad :wink:

Ouch, I see why they call you Grumpy Mike.

No I call me Grumpy Mike, I chose the name, it was not given to me. :wink:

Grumpy_Mike:
No I call me Grumpy Mike, I chose the name, it was not given to me. :wink:

Are you a Timelord or something like that? :stuck_out_tongue:

"Timelord"

We do bow down to him.

*Time Lord, my bad. I'm not used to this show in English (yeah, shame on my, I watch the dubbed version xD )