Many thanks to readers in here for the comments – I can’t believe how keen people are to help. Ok, so you may recall that some time ago I bought an ESP-201 board and the baseboard to with it – the whole lot was about a tenner on Ebay, a marvellous opportunity to play with the ESP8266 while accessing all the pins AND on a 0.1” pin centre basis – easy for prototyping.

ESP201Well, it didn’t work out that way, the whole package came with zero documentation and frankly the sensitivity of the aerial was ATTROCIOUS or so it seemed. I’ve had feedback from a couple of you and so this morning I decided to go take a look with my new microscope (another Ebay special).

So what did I find? Well, sure enough – look at the board on the right – the centre part is the little ESP201 board itself. See the aerial – see the little link on the right? See the or SMT resistor to the left of it? Does that look like there’s a track going from the chip to the aerial?

No, you’re right – it DOESN’T – the damned thing is connected to the external aerial!!!

ESP-201Just to exaggerate the point here’s another photo in which (click to zoom the image) you can clearly see that the 0r resistor is designed to offer a choice, horizontally it connects to the internal aerial, vertically (default) it connects to the external aerial – why on EARTH would anyone do that?

I’d given up on this board on the basis (again in the absence of any documentation) that it was just a really bad design. Wouldn’t a link have worked??

I don’t know how many of you have tackled surface mount but let me tell you – if your hands shake – forget it.  If they don’t, you need a nice set of tweezers with a 45 degree end on them. If you apply the iron to one side, the chances are both sides of the 0r resistor soldering will melt and you can lift the part off cleanly, Ensure your iron is hot – and as clean as possible.

ESP-201[6]Anyway, thanks to a nice set of snips and a fine soldering iron… a few moments later… I FREELY admit, moving that resistor was neither the finest hour for me or my cheap Chinese tweezers and as I didn’t have any isopropyl handy it’s a little messy – but ultimately it’s a 2 minute job to change the link over. Actually a blob of solder would have done because a 0r resistor is pretty much just a wire.

Did it make any difference? No – not at all – the unit after blowing the chip powered up and would not connect to the router. With some repositioning, it would – which clearly indicates a sensitivity issue.

ESP-12Frustrated with that I took my sparkly new ESP-7-8-12 baseboard (which has 2 resistors and nothing else, soldered on an ESP-12, wired it (0.1” centres) to my ESP-01 adaptor (the board shown on the left already has a pull-up for CH_PD and a pull-down for GPIO15), blew the chip, turned it on – no problem at all.

I’m beginning to think that life is too short to spend much more time on those EP201 board especially considering the cost of the ESP12s, the fact that they are shielded and that adaptors are so cheap… Next stop – making sense of the A/D so I can use it as a battery voltage indicator.


24 thoughts on “ESP201

    1. I DO like this – especially the dual reset/program button – having just updated a project maybe 100 times in one day I am SO SICK of putting links on and off the board…

      The only catch is – they’re out of stock – so you have to go on a waiting list.

      1. Darn it, If I learn enough about these to actually do something with them, I’ll regret not buying more of those.

    1. Thanks for that. I’m now using the modules with the leads broken out (ESP12 etc) – there seems little point in using the ESP-01 as the others are just as cheap. What I referred to as GPIO-16 is I believe the one that needs shorting to RESET. I’ve not tried it yet but it’s on my list of things to do… for example for taking a temperature reading every hour or whatever and shutting down the rest of the time – yes, seems like a very sensible thing to do.. Soldering that wire on the ESP-01 is likely to be stretching many people’s soldering skills – it CAN be done but it’s not trivial.

      1. Agreed. The -01 is good for tinkering if you don’t need much I/O, but I have moved on to the -12 for other stuff. Trouble is, theres so much to do and so little time! (And, in this case, so little published data!)

    2. In esp-battery-logger user_main.c the author makes a call to readvdd33. I have not come across this before. Not much information about it, but, it seems as though it may be something like a internal voltmeter for vdd pin.

      Interesting! Might save me having to design my own battery voltage monitor. Time to do some testing.

      1. Well of course there is the ADC – and that goes flat out at 1.024 volts or thereabouts – funny it doesn’t go from 0-1023 but from 0-1024 – I can only assume 1024 means overload…. so with a divider you could make that anything you want – but yes having that internal call could be good – but will it be supported (as it’s not documented) in 9.2.6 SDK?

        1. I see that there is a call to readvdd33 in the NodeMcu Lua offering.

    3. Looking at the code in esp-battery-logger user_main.c

      As usual it is uncommented code, so I am having difficulty comprehending what is going on!

      However I see the author is using the system call ‘system_deep_sleep_set_option(4);’. Now that is INTERESTING.

      Looking in the Espressif_IoT_SDK_Programming_Guide_v0.9.5.pdf I see that it says that a call to this function will set what to do when the chip next wakes from Deep_Sleep.

      Option 4 disables the RF on wake-up, hence only the smallest current is used. Very useful to read sensor (e.g. water level) where a MQTT message send is only needed infrequently, thus preserving battery life.

  1. Peter

    Have you tested the 0ohm resistor now that you have moved it? The heat may have made it go open circuit.

    On my 201 I replaced the resistor with a wire link. Very fiddly!!!!

    1. Erm, good point.. Hang on…. yup in both cases the connection is intact. Worth investigating however.

  2. So you can actually read the internal VCC of the ESP chips with what appears to be an undocumented API call.

    I wrote about it on my blog I just started my battery/deep sleep test with an ESP03 last night and have it reporting VCC every 5 mins along with Temp and humidity. The api is something like readvdd33() and it seems pretty accurate.

    1. Oooooohhhh. Erm, I just went through the 0.9.5 SDK instruction list and I’m not seeing it in there but then if it’s not documented it would not be? Any way to narrow this down?

      1. Yeh it’s not listed in the 0.9.5 sdk docs and the function doesnt even seem to appear in any header files. But it’s there and it works. My code looks like this

        uint32_t battv = readvdd33();
        os_sprintf(pubTopic, “%s%s%s”, sysCfg.base_path, sysCfg.device_id,”/vcc/last”);
        data_len = os_sprintf(pubData, “%d”, battv);
        MQTT_Publish(client, pubTopic, pubData , data_len, 2, 0);

        Actual post is here

        I believe the function has changed in the new beta 0.9.6 sdk, once I get it working I will update the post with the new function.

          1. Yup the nodemcu source is where I found the readvdd33() function. It seems to work pretty reliably. I have been using it for awhile now. I believe the function has been renamed in the 0.9.6 SDK to system_get_vdd33() but I haven’t verified this yet. Only saw a comment on the esp8266 forums to suggest it.

            1. It’s dying on me in C! Kills the board… I think I may be on the edge with the watchdog somewhere but I can’t find a C “watchdog refresh” command…

  3. I bought the same module and found out it had very low signal intensity as you said. In my case the pigtail antenna was the problem. The core wire was sticking out of the shield around it by a few mm only. Physics says that for a lambda/4 antenna at 2.4 Ghz the central wire needs to be about 31 mm longer than the shield. I just removed enough of the shield/mesh to match this difference in length. I left the tubular insulating layer around the central wire to prevent any shortage.
    With that change the signal strength as shown with AT+CWLAP went up from about -70 to about -35 dB. This is a similar to the ESP8266-01 I have as well.
    Hope this helps!

      1. I yould not find a way to post a pick in your blog. Please excuse me for sending an ebay link, but is has a picture of how the antenna is supposed to look. Notice that roughly the last 1/5 of the length of the antenna is much thinner than the rest. As I said mine wasn’t like that. I used insulation stripping pliers, removed the last part of the plastic around the cable and pulled the mesh back to expose exactly 31 mm of the inner wire. That’s all.

  4. That Breakout PCB looks great.
    Please tell me where can I get one?

    Many Thanks

      1. Yes, like you, not too keen on the 201’s much prefer the 12’s.
        ADC? far easier than I thought it was going to be ……

        char bufferadc[30]=” present reading is “;
        uint16 adc = system_adc_read();
        adc = adc/10;
        ets_sprintf( machine_is, “%d”, adc );
        char ADC_title[25];
        memset(ADC_title, 0, sizeof(ADC_title));
        strcat (ADC_title,topic_id);
        strcat (ADC_title,bufferadc);
        strcat (ADC_title,machine_is);

        if (strcmp(topicBuf,topic_id)==0)
        MQTT_Publish(client, “/echo”, ADC_title, strlen(ADC_title), 0, 0);

        memset(ADC_title, 0, sizeof(ADC_title));
        memset(bufferadc, 0, sizeof(bufferadc));

        Just been playing with node-red on windows …. good fun.
        Interrupt on a port triggering a publish then node-red sending an email and via twilio node, getting a pretty sharpish text when the publish contains certain character formats.

Comments are closed.