3.3 V range on the A0 analog input of Wemos D1 mini
3.3 V range on the A0 analog input of Wemos D1 mini
The A0 input of the Wemos D1 mini is connected to the ADC input of the ESP-12 through a 3.2/1 voltage divider, consisting of a 220k and 100k resistor. I verified that by checking my two devices I have on hand. That results in an analog voltage range of about 3.3V at input A0, at an impedance of roughly 300k, assuming that the input impedance of the ESP module is high (>> 1MOhm).
Whether this is good or bad, depends on your application. I did not see this on the huzzah feather, and the schematics of Node-MCU do not show that either.
Whether this is good or bad, depends on your application. I did not see this on the huzzah feather, and the schematics of Node-MCU do not show that either.
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
The ADC input range is 0.1.0 Volt. Was your post just a statement for the presence on the Wemos, or did i miss the question?
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
Yes, Sir, because there were discussions around that aspect in other posts, and Paul suggested to post this.
And, as said, it's related to Wemos D1 mini only!
And, as said, it's related to Wemos D1 mini only!
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
Thank you Robert, very interesting.
I don't know if I may use your thread to post some more information about WeMos D1 mini and pose some questions. If not I can change topic and move to a more specific one.
I measured the PIN Voltages just after a POWER UP and I found some interesting results. I measured with no software installed i.e. after a flash erase and after a fresh installation of 1.8.6 of micropython. I couldn't find these information in the electric schema or in other forums but it wasn't a big deal to test myself. These are the measured voltages (with respect to GND on WeMos):
Now, some curious guy like (@kfricke) could ask the purpose of it and where is the question
Actually one of my problem is finding the optimal connection of various "peripherals" to the WeMos, like the Dallas temperature sensor DS18x20 or a Relay Switch or a PIR sensor and even a Piezo Buzzer that works with 3 - 24V. My schema is actually the following:
The problem arise because just after a power-on I don't want that the Relay or the Piezo buzzer receives any voltage and current (otherwise they change state) just as if they were unpowered. Imagine your IoT electric switch (with WeMos) when powered-up will turn the light on before the software put it low or a the IoT temperature sensor will start with a small beep from the buzzer. Absolutely unacceptable, right?
The basic question is why almost all Dx PIN start with some voltage instead of zero.
I can explain the:
D3 - GPIO0 -> 10k pull up resistor -> 3V3
D4 - GPIO2 -> 10k pull up resistor -> 3V3
D8 - GPIO15 -> 10k pull down resistor -> GND
But the others? Are they pull up via sw? Cannot they start low?
It comes out that I can use only the D1 and maybe D2 or D3 for relay or piezo and I cannot use anything else when it comes to control output that needs to start with zero voltage. (Why D2 has this small voltage instead of zero???)
What do you think?
PS: During testing I broke one of my beloved WeMos with a short, so be careful
PPS: sorry, few editing during submission.
I don't know if I may use your thread to post some more information about WeMos D1 mini and pose some questions. If not I can change topic and move to a more specific one.
I measured the PIN Voltages just after a POWER UP and I found some interesting results. I measured with no software installed i.e. after a flash erase and after a fresh installation of 1.8.6 of micropython. I couldn't find these information in the electric schema or in other forums but it wasn't a big deal to test myself. These are the measured voltages (with respect to GND on WeMos):
Code: Select all
Erased | With 1.8.6
Tx = 3.14 | same
Rx = 3.14 | same
D1 = 0.00 | same
D2 = 0.01 | same
D3 = 0.45 | 3.12
D4 = 3.14 | same
G = 0.00 | same
5V = 4.40 | same
===== Other Side ===
Rst= 3.13 | same
A0 = 0.00 | same
D0 = 3.15 | same
D5 = 3.15 | same
D6 = 3.15 | same
D7 = 3.15 | same
D8 = 3.15 | same
3V3= 3.15 | same
Actually one of my problem is finding the optimal connection of various "peripherals" to the WeMos, like the Dallas temperature sensor DS18x20 or a Relay Switch or a PIR sensor and even a Piezo Buzzer that works with 3 - 24V. My schema is actually the following:
Code: Select all
# Standard Setup For WeMos Circuits // Breadboard
Temperature Sensor on D3 (which is GPIO0) // It is pull-up
Relay Sensor on D8 (which is GPIO15) // Starts LOW
PIR Sensor on D2 (which is GPIO4) //
PiezoBuzzer on D1 (which is GPIO5)
The basic question is why almost all Dx PIN start with some voltage instead of zero.
I can explain the:
D3 - GPIO0 -> 10k pull up resistor -> 3V3
D4 - GPIO2 -> 10k pull up resistor -> 3V3
D8 - GPIO15 -> 10k pull down resistor -> GND
But the others? Are they pull up via sw? Cannot they start low?
It comes out that I can use only the D1 and maybe D2 or D3 for relay or piezo and I cannot use anything else when it comes to control output that needs to start with zero voltage. (Why D2 has this small voltage instead of zero???)
What do you think?
PS: During testing I broke one of my beloved WeMos with a short, so be careful
PPS: sorry, few editing during submission.
Re: Start-up port levels of Wemos D1 mini
Hello @ernitron. I do not know whether this is the right post to discuss your question, but let's go on.
I repeated your measurement with one of my devices here. You did your test with the typical high impedance volt meter, which explains why you see tome low voltages on D1 and D2. These are just inputs with are not pulled up or down.
Since I noticed small variations of the readings between the high level ports, I repeated the test with a load resistor of 10k. With that, it turned out, that D5 and D6 seem to be initialized as inputs with internal pull-up of about 40k. With a 10k load, the voltage reading was about 0.7 V. So these should not drive a Piezo, until the port is switch to output. But beware, that each GPIO must not drive more than 12 mA. Using a load resistor of 3.3k will result in a current of 1 mA, and a voltage of 0,27V at start-up. If that's the only load, you may even chose a lower value.
But that is not 'clean'.
The better choice for possibly low impedance loads like a relay or piezo is to use a driver (unless the drivers are already included). Then you can invert the polarity of the signal by using inverters and can deal happily with high levels at boot.
I repeated your measurement with one of my devices here. You did your test with the typical high impedance volt meter, which explains why you see tome low voltages on D1 and D2. These are just inputs with are not pulled up or down.
Since I noticed small variations of the readings between the high level ports, I repeated the test with a load resistor of 10k. With that, it turned out, that D5 and D6 seem to be initialized as inputs with internal pull-up of about 40k. With a 10k load, the voltage reading was about 0.7 V. So these should not drive a Piezo, until the port is switch to output. But beware, that each GPIO must not drive more than 12 mA. Using a load resistor of 3.3k will result in a current of 1 mA, and a voltage of 0,27V at start-up. If that's the only load, you may even chose a lower value.
But that is not 'clean'.
The better choice for possibly low impedance loads like a relay or piezo is to use a driver (unless the drivers are already included). Then you can invert the polarity of the signal by using inverters and can deal happily with high levels at boot.
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
Robert thank you very much (also to host me in your thread but maybe I can move the whole thing if it gets too fat here
However I am a bit puzzled. I use a piezo buzzer (this one from https://wholesaler.alibaba.com/product- ... 83581.html I use exactly the SFM-27-W) As you can see it has max 12ma so it should not harm the device, I guess.
Besides, I use D1 (GPIO5) which is IO and works just fine. It is the ONLY IO I can use as all the others before initialized OUT and put low, have voltage and make a buzz. Try to believe
I added also 4.7KOhm resistor and the result with D5 and D6 is a buzz at startup. Low but is there and I cannot stand it
However I am a bit puzzled. I use a piezo buzzer (this one from https://wholesaler.alibaba.com/product- ... 83581.html I use exactly the SFM-27-W) As you can see it has max 12ma so it should not harm the device, I guess.
Besides, I use D1 (GPIO5) which is IO and works just fine. It is the ONLY IO I can use as all the others before initialized OUT and put low, have voltage and make a buzz. Try to believe
I added also 4.7KOhm resistor and the result with D5 and D6 is a buzz at startup. Low but is there and I cannot stand it
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
Most of the pins, (except for, gpio0, gpio1, gpio2, gpio3 and gpio15) will start in INPUT mode, that is, high-impedance mode that makes almost no current flow, and therefore should not trigger any devices. The reason your voltmeter is still showing some current on them is that it has very high impedance itself, and is very sensitive even to low currents.
Now, you have already discovered the pull-up and pull-down resistors on the gpio0, gpio2 and gpio15 -- they are there on most development boards to make sure the esp8266 module boots into the correct boot mode (it depends on the voltages found on those pins at boot). You may also find that the case is a little bit more complex with gpio0, because it is often connected with a small circuit, connected to the USB port, which switches it for flashing.
Finally, the gpio1, gpio2 and gpio3 are used for UART at boot -- so they will either get pulled up, or will change state quite fast (which your voltmeter will average and show as some lower voltage). There is nothing you can do about it, short of adding some circuits to cut off the pins during boot, and only connect them to your devices after the board has booted and your program is running.
Of course, when you are using a bare module, you have more control about where you put resistors and what you pull up or down -- but you still have to somehow make sure that your module boots into the right mode.
Now, you have already discovered the pull-up and pull-down resistors on the gpio0, gpio2 and gpio15 -- they are there on most development boards to make sure the esp8266 module boots into the correct boot mode (it depends on the voltages found on those pins at boot). You may also find that the case is a little bit more complex with gpio0, because it is often connected with a small circuit, connected to the USB port, which switches it for flashing.
Finally, the gpio1, gpio2 and gpio3 are used for UART at boot -- so they will either get pulled up, or will change state quite fast (which your voltmeter will average and show as some lower voltage). There is nothing you can do about it, short of adding some circuits to cut off the pins during boot, and only connect them to your devices after the board has booted and your program is running.
Of course, when you are using a bare module, you have more control about where you put resistors and what you pull up or down -- but you still have to somehow make sure that your module boots into the right mode.
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
Hello @ernitron
Did you put the 4.7k Resistor in series or parallel to the piezo? You should put it parallel, to reduce the inital voltage at the output to about 0.4V. And obviously you should then configure that port to output & low. But still it's better to use a driver, transistor or open collector gate.I added also 4.7KOhm resistor and the result with D5 and D6 is a buzz at startup.
Re: 3.3 V range on the A0 analog input of Wemos D1 mini
In parallel! Yes! It's right... You were right!! Solved, no more buzz! Thanks!!!Roberthh wrote:Hello @ernitron
Did you put the 4.7k Resistor in series or parallel to the piezo? You should put it parallel, to reduce the inital voltage at the output to about 0.4V. And obviously you should then configure that port to output & low. But still it's better to use a driver, transistor or open collector gate.I added also 4.7KOhm resistor and the result with D5 and D6 is a buzz at startup.
(what a poor engineer I am