ESP-12E with Extra Pins!

ESP-12EHere’s the picture. £2.25 including post – what more could you want! So this is like an ESP-12 – already the best of the bunch – but with more IO – specifically 6 more IO lines… this just keeps on getting better – whatever next, built in Bluetooth??

Well that’s another board design in the bin – thankfully we were just looking towards doing and updated design… may as well fit the extra pins in – you never know when they might come in handy…

Oh, hang on it gets better – 5 off well under £2 each..


51 thoughts on “ESP-12E with Extra Pins!

  1. Larry,

    Yes, those modules should all have the bigger -flash- chip (they all have the same amount, 32K, of RAM, though). Yes, you can use the Arduino-IDE for coding. Adafruit’s tutorials and example code are especially helpful and they’re very good at answering support questions on their forums, so if you’re in the U.S., they’re your go-to supplier.

  2. Hi Peter,

    You seem to know almost all there is to know about the “ESP’s”. I read with interest about your reboots as I may have a similar problem. I have a board that seems to be rebooting after about 3 hours of running. I will keep testing but in the meantime I wondered if you could recommend a particular board with the following specification:

    Small (we have already sourced the cases for the project)
    Reliable (one that doesn’t randomly reboot)
    With header pins (we can’t solder to save our lives)
    Cheap (don’t we all want that?)

    1. I can only say that I base all my work now on the ESP-123 modules – with a cheap Chinese PCB to handle regulator, relay etc… I get zero reboots or indeed any other issues with them. So I’d be looking for some kind of base board to put an ESP-12 on – mind you – you still have to solder them onto the base board.

      1. Thanks for your reply Peter. I guess I need to find out a lot more about the ESP’s as I was hoping there was something off the shelf that I could buy without the need for ANY soldering. I’m wanting to interface to an Arduino Nano. If anyone knows of a reliable, user friendly, module that requires no soldering could they please post details and a link.

        1. Larry,

          It isn’t particularly small, but the Adafruit Huzzah has a very good reputation. Similarly, the NodeMCU Dev Kit seems to have a dedicated following …and you don’t have to flash LUA to the ESP, you could just program in C (or BASIC) instead. If you need something smaller then you’re probably going to have to learn how to solder those fiddly ESP pins in a hurry.

          Whatever you do though, avoid this particular lemon:-


          1. Cheers John. I have seen the 3 products you refer to (2 to consider and 1 to avoid). So we are looking at a price of less than $10.

            Correct me if I’m wrong but these products run at 3.3V, have 4MB memory and can be coded with Arduino IDE? So possibly I could remove the Arduino Nano’s from my project and just use one of the recommended ESP’s.

            My project drives a 433MHz transmitter which operates between 3 and 12V. I use the 5V Nano at present rather than the 3.3V Arduino models to ensure a bigger range for the RF signal. I guess I could try the 3.3V ESP but I might not get the RF range that I require.

            The Nano only has 32KB of memory so will the ESP with 4MB be plenty after the allocation of memory for all the WiFi stuff?

  3. Danny: Deleted your link as it was all in Chinese… and I don’t think it was their site. Want to try again?

      1. Thanks for that, Danny. I had actually struggled with opening that file previously and more or less given up with it (I did manage to look at the graphics files in the package, but without any text to go with them it didn’t help too much). As far as I can tell from the .png files though, unlike the 12E with it’s extra pads, there doesn’t seem to be any distinguishing marks which would enable the vendors (or the end users) to identify which version they have. Did you find anything?

        1. Yeah the word doc took a while to download but it worked eventually. Its all in Chinese but all I was really interested in was the current amount of flash (1mb) plus the new pinout.

          In terms of telling the difference with the older version, the metal shielding can has a slightly different AI logo, the edges of the can are sharper and of course the pads are different.

          Turns out there are THREE variants of the ESP-06. The original variant, a second variant (with new pads) which has a misplaced resistor beneath the can and then the final (?) version (with the resistor removed) which is supposed to be in production for 5 years +.

          If you are unsure, email I got reasonably good support from them (considering everything).

  4. Hi All,
    We are developing a product using an ESP8266-06.

    Frustratingly the latest ESP-06 modules are DIFFERENT to the ones we previously used (and developed the PCB for).

    It seems the new variant has three of the corner pads connected to pins, where previously all four corner pads were connected to ground.

    I have been looking for some kind of information such as diagrams or schematics so I can figure out what has changed, but I cannot find anything.

    Does someone know where I can get this information?


    1. Any ideas anyone? I’ve never used the ESP-06… normally I try to limit myself to ESP-01 and ESP-12 + variants.

      1. I finally found the updated datasheet. Turns out its the ESP-6E (surprise surprise).

        Our supplier in China either didnt make the distinction, or Ai-Thinker have discontinued the old version.

        This is worrying for us, since we cannot afford for AI-Thinker to change the module layout and hardware without giving a decent amount of notice or alternatives.

  5. Hi Pete,
    I am very curious about your experience with the ESP12e. IT is a great board and has lot of potential, but I am having lot of bumps on the road of getting it to work beyond the simple sketches.
    I tried to use it with the DHT11 temperature and humidity sensor, but I did not get any luck. The samples that come with the DHT11 will not even compile on my Arduino IDE.
    Same thing with the I2C sensors.
    Do you have any experience with the DHT and the I2C sensors connected to it?
    Thank you for your answer,

    1. George,

      When you’re using the Arduino-IDE, the only thing you have to watch out for is correctly defining the SCL and SDA pins in the call to Wire.begin() in setup(). Other than that it should just work.

      // I2C GPIO Defines.
      #define I2C_SDA 2
      #define I2C_SCL 14

      void setup() {
      float tempr;
      char buff[RTC_BUFF_SIZE];

      Serial.println(); // past the start-up crap.
      Wire.begin(I2C_SDA, I2C_SCL); // Set the I2C pins to:- 2=SDA, 14=SCL.

      As you can see, I’m using a DS3231 RTC module. It works fine, -BUT- remember that the ESP8266 only has 3v3 tolerant pins. I’m driving the I2C bus through a MOSFET 3v3/5v bi-directional buffer (you can make your own very easily, or use one of the $1 pre-built units from eBay).

      I’m not an Arduino guy, I just happen to find that the Arduino build process (despite the truly awful IDE) works best for me for compiling to fit the ESP8266 memory without having to jump through too many hoops. Anyway, I didn’t have to do anything special to get the I2C code to compile. You might want to let us know what the actual errors you’re seeing are for more specific help.


  6. Hi Pete.

    Hope you are doing well. I am working on a project which has now become one of my most tedious projects as I am stuck at a place where I am unable to find any literature on internet about the issue.

    The project is using ESP12E module as its only intelligent component and the problem statement is that I want to update /modify the sketch (Arduino) running inside it REMOTELY.

    In other words, I want to make a provision with which my esp12e would be able to check a signature(a unique value) with the value stored against the latest sketch (which is available on a URL) . If the signature does not match , the sketch stored inside the module should be able to update /overwrite itself.

    One approach I thought about is that we can check the flag status inside INIT.LUA file that runs in esp12e module and first code section does the job of matching the flag values and if there is a mismatch , the code will be redirected to a section which forces the execution to write a new initnew.lua file and then copy the contents of the new file to the original init.lua file.

    In this way I will be able to change the program stored in esp12e remotely(automatically via internet).

    Please let me know if you have any suggestions to address the issue.

    Thanks and Regards
    Saurabh Srivastava
    New Delhi,

    1. Over to other readers in here – I’m neither using the ESP-Arduino environment (you may recall I reported some bugs and have heard nothing back) nore web updating – perhaps others can help.

  7. This is a cause 4 you mentioned. In this case, I restarted the communication between the esp and the Arduino Due, using Native USB. ESP was flashed with v0.9.5.2 AT Firmware.bin. However, I spent most of my time on ESP as a Web Server instead of send ATT commands to ESP.

    ets Jan 8 2013,rst cause:4, boot mode:(3,6)

    wdt reset
    load 0x40100000, len 816, room 16
    tail 0
    chksum 0x8d
    load 0x3ffe8000, len 788, room 8
    tail 12
    chksum 0xcf
    ho 0 tail 12 room 4
    load 0x3ffe8314, len 288, room 12
    tail 4
    chksum 0xcf
    csum 0xcf

    2nd boot version : 1.2
    SPI Speed : 40MHz
    SPI Mode : QIO
    SPI Flash Size : 4Mbit
    jump to run user1

    Ai-Thinker Technology
    Module is ready.

  8. Occasionally, my web server stuck or stops. I wish there is a way to find out why and what happens. I have a blinking light to tell me that the ESP Web Server is healthy and alive. But when the blinks stop I have no choice but to reset the ESP8266. Any diagnosis tools that you are aware for trouble shooting the issues?

    1. Well that’s one of the things with the ESP8266 – debugging – my own solution – I send out HEAP sizes and other info to the serial line on a regular basis so I can look for changes…. two things that can happen – a leak in which case you slowly run out of heap – or something that makes the watchdog overflow. This week for example I have a clock running – which updates WS2812B leds… every 16ms I have a callback that updates the leds so I can have seconds, minutes and hour displays – but also a light that whizzes through 60 leds in a second dimly – just for effect… because when my boards powerup they send the time to a MQSQL database I know when they last powered up – handy – I discovered the board had reset at least twice in one day. I turned the clock off – no resets… I monitored the heap – nothing – I’m assuming that I’m sailing close to the wind with my updates of the WS2812B chips with interrupts disabled…. so I’ve disabled the 16ms callback and I’m back to 1 callback per second – another couple of days test will be needed to further narrow down where the problem lies… not ideal.

      1. Hmm, and since I stopped the 16ms callbacks – no problems – 20 hours + now without a glitch.

  9. Yes, I don’t understand why the baud rate needs to change between boot time and normal running time. I did captured the boot time messages. Does not make any sense as you said.

    Baud rate changed to 74880

    ets Jan 8 2013,rst cause:2, boot mode:(3,6)

    load 0x40100000, len 28780, room 16
    tail 12
    chksum 0x60
    ho 0 tail 12 room 4
    load 0x3ffe8000, len 1596, room 12
    tail 0
    chksum 0xdb
    load 0x3ffe8640, len 4740, room 8
    tail 12
    chksum 0x3a
    csum 0x3a

    1. Well, Espressif for whatever reason (it’s not the bootloader as I’m using a custom bootloader RBOOT and I’m informed by the designer it isn’t there) decided to use 78k as the output for their powerup debug info which can’t be turned off – I’d never heard of anyone using that speed and sure enough mostly people use either 9600 or 115k on these boards – hence the two baud rates. I must write down a list of those causes – I note you have cause:2 – I just had a reboot cause:4

  10. I ended up connecting the TX (ESP8266) to AT Mega2560 A0 where the Mega side program is reading the output from ESP8266. Since I always Serial.print to Serial monitor, the same output is received on the A0 pin.
    I am not sure if this is the best way but I do see some garbage characters in the line. However, I don’t see garbage on the Serial monitor. The TX signal is branching out from the same TX that connects to the USB Serial TTL.

    1. There is “garbage” at power up from the ESP and apparently no way to avoid it – actually it is serial information at 78Kbaud – useful for debugging, useless for anything else. You might not see it all on the monitor depending on what your monitor does with control characters. As it is at the wrong baud rate it could be anything… I recall before I knew what it was trying to paste it into a blog – it would never get past the first few characters…. I could not understand why – now I do.

  11. Can you show me how you sent the PWM commands to Arduino from the ESP8266?

    1. Check out the PWM command in the LATEST (1.12) SDK from Espressif. To to their forum (and get a free account if you don’t have one) – you can get the SDK there – and in it all the documentation. PWM is covered there. Hope this helps.

  12. On the ESP-01 side, a web server, I called the following sub routine. But I did not see any thing on the Arduino side. The GPIO2 is connected to A0 on my Arduino Mega2560. My Serial monitor does show the String down_to_the_wire as well as “Yes, you tried send down the GPIO2 … where did it go? I have no idea.”

    void call_to_send_string_down_GPIO2(String down_to_the_wire)
    Serial1.begin(115200, SERIAL_8N1);

    Serial.println(down_to_the_wire); // print it onto the com10 port or whichever esp8266-(USB)FTD1232 port is
    Serial1.println(down_to_the_wire); // print it regardless
    Serial.println(“Yes, you tried send down the GPIO2 … where did it go? I have no idea.”);


  13. Well, there is certainly no issue sending serial information to an Arduino from the ESP8266, until I got PWM working properly on the ESP8266 I was sending PWM commands off to an Arduino to do the job for me. I’ve not tried using Serial2 on the ESP8266 but frequently use the second serial port on Atmega1284 chips. When you say you tried Serial1.printf – are we talking about using that command on an Arduino or on the ESP?

  14. I couldn’t find any examples to send text messages down to other connected devices like Arduino so that the messages can be written to a log from Arduino. Can Serial1, or Serial2, etc. be used for that? I tried Serial1.println but couldn’t get anything from Arduino.

  15. I have it set up as an web server. Just wonder what I can do with all other extra pins? CPIO 4, 5,12, 13, 14 and 16?

    1. Well if a webserver is all you want, you could always use the extra pins for status lights…

  16. I ordered some ESP-12 from EBay, and received these 12E’s instead. Looking under the can I see that the flash chip is some odd off brand (I hope 32 Mbit) SPI flash. The markings read MD25032SIG, with a big MD in the top left, but I cannot find anything about them..
    They also have the text “AI-Cloud inside” on them, which someone else’s page said these were fakes, but if these do have 32 Mbit, then I cant see what the fuss is about, cept perhaps lousy flash chips..

    1. Well, as they will work as ESP12s the only way to find out is to try them. The SDK has a call I believe which tells you about the chip – size etc.

  17. Looking at the silkscreen at the opposite side those pins could be an SD card interface.

  18. I bought this one:
    There is surly a better price, like this one:
    But it was very fast, the shipping from uk take the same time (i live in brittany). The normal shipping time for China is around 2,5/3,5 week, for this item it was 1,5 week, so it was great.

    1. I just wish someone would sell it in English so I can understand it 🙂 We’ve ordered half a dozen to play with – but don’t yet have a board mod to handle the extra pins…love to hear from anyone who’s had a chance to play with this new variation.

      1. Yes it’s a problem, i’m thinking about buying the Node Mcu Amica to test it for wait the board, his price is good now; around 9€. If you want to see the link in english here they are : )
        The fast shipping
        The cheap Esp-12(and he also has good price for the arduino in his shop)

  19. Update: Well, I just found an updated layout for the ESP12E on AI-Thinker’s shop page. It looks like the pins are -not- symmetrical about the centre point of the board after all, so if you were planning on using that Eagle library, you might want to hold off for a while (until I get the time to update it).

    One more bit of news is that Koelie2 on the forum has taken off the RF shielding and says the ESP12E has a 32Mb flash chip (a 25032BVSIG).

    1. Yes, now I’ve heard from several places that the ESP12 (perhaps not all of them) have more FLASH than others… but I’m at a loss as to how to use it, as for example the code for online updating (which I’ve never used personally) sits at 79xxxxx and hence would get in the way of anything using more than the top half of memory normally associated with the ESP.. I wish I understood the linker and make files better as we always seem to end up using only a little bit of the first half of available FLASH and then starting our programs half way up – which just seems daft. I’m not out of FLASH but it would be nice to see a large gap between the end of my program and the end of available Flash.

  20. …and despite the nice, shiny, new pin-out diagram, the silkscreen on the bottom of the module still has GPIO04 and GPIO05 transposed. ;-(

  21. Do we know what size flash is on the ESP-12E?

    Speaking of flash, I understand that the extra pins brought out on the -12E are actually the serial interface to the flash, so not normally available as GPIOs.

Comments are closed.