ESP-12 in practice


So I wired the ESP-12 onto a little board and had my first attempt at programming today. I can clarify the following:

Correction – see where it says “GPIO1 – that should be GPIO2” – some day I’ll keep my originals.

The board needs 3v3, not 5v. The input to the RXD pin should be level-shifted if you’re using a 5v Arduino or similar. As with other boards, the CH_PD pin needs to be permanently tied to VCC – but in addition it seems that GPIO15 needs to be tied to ground – not sure the point of bringing it out!  For programming, GPIO0 should be grounded but when not programming you can use if for general IO.

The board programmed up just fine and seems as sensitive as others. Next stop will be to try out using the remaining pins.

14 thoughts on “ESP-12 in practice

  1. Hi Peter,
    The default function of pin number 13 is the MTDO (JTAG). That’s why we should keep this pin in low state during power-up. Alternatively this pin can be used as a general I/O pin (GPIO15).
    This pin is connected to ground in the ESP-01 board.

    I know that the internal pull-up is enabled during power up. So we need to apply a ‘strong’ low level in order to guarantee the required low level during power-up.
    I don’t have a clue about what could happened if this is not satisfied. Maybe the JTAG interface is kept enabled after power-up…? Just guessing, I never used any JTAG interface.
    Anyway its use is somehow limited because of this.

    Don’t forget that GPIO2 and U0TXD should be kept high during power-up (they have internal pull-ups enabled). This also limits the use of GPIO2, we cannot apply a strong low level to it during start.

    • That’s REALLY useful information – I hope others planning to use the board are looking in./ not that sure how you can use GPIO15 at all if it always has to be pulled low on powerup.

  2. Thank you for the info. It is nice to see that someone else is interested in the ESP-12 form factor.
    I tried one of the boards that I just received, but with no total success. I connected as you indicated (and as others have suggested) but I cannot get the Ready response.
    I just get a lot of garbage being constantly send out on the TX line. I am reading as 115200 baud.

    Any ideas?

    • As I understand it – the initial garbage is from the bootloader over which we have no control – and it’s at 78k baud – don’t ask why. I really think they should have made that optional… but constant – you mean – as in never ending? That sounds wrong.

    • Duly corrected Dan. I really must learn to keep my original Powerpoint drawings… I’ve a photo of the board on my phone fortunately to confirm your correction.

  3. The GPIO4 and GPIO5 should be reversed. Either the silkscreen is incorrect or the Espressif register map is wrong. I believe it is the former.
    Also I saw someone suggesting connect GPIO0 to ground to enter programming mode. This is dangerous. GPIO0 is default to clock output during boot. Shorting it to ground meaning shorting something. A pull-down resistor is required.

    • Interesting, I’ve been shorting the GPIO0 to ground on all boards since day one. What value resistor would you suggest. Also if you are absolutely sure GPIO4 and 5 are the wrong way around I’ll fix the drawing – can you confirm>?

      • Yes Im sure GPIO 4 and 5 are wrong. You may do a simple continuity test and compare with the user manual. About GPIO0, another thought it could be OD output with internal pullup, so short it to ground is ok, just avoid force any current into it.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s