I bought this "knockoff" Arduino UNO with an integrated ESP 2866 wifi module. But I can't make it work. I've followed this tutorial because it's the same product as I have, but I can't make it work anyway - even blinking with LED doesn't work. Does anyone have experience with this exact (or similar) board with integrated ESP2866? I would be really glad for any help. link to the product. If you need to know anything else, I'll try my best to answer it.

My problem:

The board normally loads into IDE and i can send code to it. But after I do that, I get this:

Executable segment sizes:
IROM   : 228624          - code in flash         (default or ICACHE_FLASH_ATTR) 
IRAM   : 26756   / 32768 - code in IRAM          (ICACHE_RAM_ATTR, ISRs...) 
DATA   : 1248  )         - initialized variables (global, static) in RAM/HEAP 
RODATA : 688   ) / 81920 - constants             (global, static) in RAM/HEAP 
BSS    : 24880 )         - zeroed variables      (global, static) in RAM/HEAP 
Sketch uses 257316 bytes (24%) of program storage space. Maximum is 1044464 bytes.
Global variables use 26816 bytes (32%) of dynamic memory, leaving 55104 bytes for local variables. Maximum is 81920 bytes.
esptool.py v2.8
Serial port COM6
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 2c:f4:32:44:1f:0b
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.7s
Compressed 261472 bytes to 193136...
Wrote 261472 bytes (193136 compressed) at 0x00000000 in 17.0 seconds (effective 122.9 kbit/s)...
Hash of data verified.

Hard resetting via RTS pin...

But the LED doesn't blink.

  • The link to the tutorial is invalid. Please provide a valid link
    – chrisl
    Apr 4, 2021 at 21:38
  • @chrisl Sorry, changed it
    – krystof18
    Apr 4, 2021 at 21:41

2 Answers 2


I don't know why the answer below is accepted, as it clearly doesn't solve the question but also gives false information. In this answer @chrisl assumed that blinking green LED is what was programmed with sketch, but if you will open sketch used in this video and read comments in the source code, then this misconception will become obvious: actually red RX LED is what was programmed.

This board has two independent chips: ATmega328P and ESP8266, and ESP8266 built-in LED is combined with RX LED. So when you are blinking with ESP8266 LED, you are blinking with RX led. And this is what tricked most people answering here, as they were looking on green blinking LED, which is controlled by ATmega328P. Having said that, I also have to admit that I don't have solution for original question and I don't know why it doesn't work for @krystof18, but in video it clearly works.



Don't use LED_BUILTIN, but attach an external LED and a resistor to ESP GPIO pins. Modify the sketch to use correct pin and upload while switches 5,6 and 7 are ON. Then disconnect the board and turn switch 7 OFF. Then you have to power board again and it should work.

Long explanation:

I have a board visually similar to what is on the video tutorial you have posted, but for me the blink example doesn't work, probably because LED is wired to some other PIN, rather than #defined for LED_BUILTIN. But I managed to get it working using this tutorial! Watch from 5:58. (Please note this video is in language I don't understand and have no idea what language it is, but the video itself is so obvious, that you basically don't need to understand what does that guy say).

Basically in this tutorial it is just blink example, but using external LED, instead of built-in. If you look at your board, then you can find 4x3 bar of pins located near 0, 1 and 2 Arduino digital pins. This bar is labelled "ESP pins" and it is what is says: ESP8266 pins. Pin labels are on the back of the board.

So this guy in video just connects GPIO16 and GND pins to a LED with resistor, and then modifies original blink example to use 16 instead of LED_BUILTIN. Then he uploads it to his board with switches 5,6 and 7 ON. Then he plugs-off the board and turns switch 7 OFF, so only switches 5 and 6 are on. Then he plugs board back in and it works!

I tried it and it works for me, hooray!

Also, if anyone can tell me what language this guy speaks in the video tutorial I posted - I am just curious! :)

  • You seem to have more knowledge than me within this topic, so do you know how do i make these two chips comunicate? And in best scenario, even transfer small amount of data?
    – krystof18
    Apr 9, 2021 at 0:49
  • I got this board recently and still trying to understand how to work with it properly. I was able to successfully upload sketch for ATmega328, with proper switch setup, as per table mentioned in response above, but when I change switches to USB->ESP8266 sketch update, then it seems to be uploaded fine, but then just doesn't work :( I will continue my efforts and will let you know if I'll be successful.
    – Andrew
    Apr 9, 2021 at 15:59
  • 1
    Hey, @krystof18, I managed to get it working and edited my original answer! Hope it will work for you too! Please let me know.
    – Andrew
    Apr 11, 2021 at 21:20
  • I know it's been a while, but I had a lot to do and today I finally got time for that and I wanted to thank you so much, it works for me now too. Did you find a way to transfer for example an array (or how is it called in Arduino IDE) to the atmega chip? Thanks much for the second time. BTW the language is Indoneese according to google translator.
    – krystof18
    May 20, 2021 at 17:15

You are obviously currently programming the ESP8266, not the Atmega328p. The board seems to have DIP switches on it. With those you can control, which chip is connected to which. The product description has the following table

Connection  DIP
1   2   3   4   5   6   7
ATmega328<->ESP8266     ON  ON  OFF     OFF     OFF     OFF     OFF
USB <->ATmega328    OFF     OFF     ON  ON  OFF     OFF     OFF
USB<->ESP8266 (Update firmware or sketch)   OFF     OFF     OFF     OFF     ON  ON  ON
USB<->ESP8266 (communication)   OFF     OFF     OFF     OFF     ON  ON  OFF
All independent     OFF     OFF     OFF     OFF

If you want to program the Atmega328p on it, you need set the DIP switches to the combination "USB <-> Atmega328". Currently you most likely have the combination "USB<->ESP8266 (Update firmware or sketch)", which means, that the ESP is connected to the USB chip (and thus to the PC) for programming. For blinking the Arduinos buildin LED you need to program the Atmega328p.

About the blink sketch: In the tutorial video he programs the ESP. But in the blink example he changes the delay time to 5000, which would mean on and off times of 5s. The LED, that he is pointing to, is blinking much faster, though he doesn't address this. I think he actually has the standard blink sketch on the Atmega and only pretends (or just didn't notice) that this happened due tp his programming. As you don't see a blink with the ESP, but with the Atmega, I would guess, that the LED marked with L is connected only to the Atmega (like on a normal Uno) and the ESP doesn't have any LED to blink connected. So everything is actually working as expected, the tutorial was just bad at that point.

  • In the tutorial, he uses contection USB <-> ESP8266 and example that is mentioned for ESP8266, i don’t think I made mistake there, but you can tell better if you watch the tutorial. My switch setup is 1,2,3,4-off 5,6,7-on 8-off
    – krystof18
    Apr 4, 2021 at 21:47
  • What is shown in that tutorial doesn't really add up. He changed the delay in the ESP8266 blink sketch to 5000. That would mean the LED stays on for 5s, then goes off for 5s and repeat. The LED in the video blinks way faster than that. I guess he has the standard blink on the Atmega328p and now tells us, that that is his changes code. Please try the standard blink sketch on the Atmega328p. Then we can test that hypopyhsis
    – chrisl
    Apr 4, 2021 at 22:19
  • Its advertised as UNO, but UNO in IDE doesn’t work, what device should i pick for that?
    – krystof18
    Apr 4, 2021 at 22:28
  • What do you mean with "doesn't work"? Aren't you able to upload to it? Have you changed the DIP switches to "USB <->Atmega328"? Maybe it comes without a bootloader. Then you would need to burn it to the Atmega via ISP (using another Arduino or an ISP programmer). Or maybe it has the old bootloader. Then you need to choose the corresponding option in the menu
    – chrisl
    Apr 4, 2021 at 22:32
  • My bad, sorry it does work, I just switched it wrongly, it's late :D And yes, normal blink works perfectly
    – krystof18
    Apr 4, 2021 at 22:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.