I've NodeMCU (ESP12E) board and able to upload the sketch via WiFi (OTA)
How can we achieve the same on Arduino UNO boards.
I've Arduino UNO+Ethernet Shield and Arduino UNO+ESP01 for WiFi connection.
So please tell me how can I upgrade/upload the sketch using OTA ?
Any help greatly appreciated.
As for upload via the ESP8266, there's a technique described here:
I believe you can find other descriptions of similar things but the problem with the one above and all the others I've seen is that they use one of the Arduino pins directly connected to the reset pin to reset the Arduino to start the bootloader. This might work but it's specifically not recommended by Atmel, the manufacturer of the ATmega328P microcontroller used on the Uno, because it may not produce a long enough reset pulse. I see a couple possible solutions:
Add some hardware components to ensure that the reset pin will be held for at least the amount of time specified in the ATmega328P datasheet.
Modify the Uno bootloader so that a watchdog reset will activate the bootloader. This is a bit more work than the first but has the advantage of not requiring a pin on the Uno.
If you want to upload via Ethernet instead of WiFi I recommend the excellent Ariadne bootloader:
It works very well. The bootloader is activated by a watchdog reset so you only need to send a message to the Uno to reset itself via a watchdog reset and then begin the TFTP upload of the sketch immediately.
I have found that ESP-LINK works really nicely for allowing OTA updates for my Uno R3 (actually better than most as it is completely separate - doesn't rely on code in the uC itself). Unfortunately I found using el-client (companion for ESP-LINK) for networking from the uC quite buggy and limited (e.g. no SSL). I thought it worth a mention for those who are going down that path.