Немного о том, как прошивать микроконтроллер по сети/wi-fi/воздуху, нужное подчеркнуть.
Способов несколько, самый просто - воспользоваться библиотекой ArduinoOTA входящей в стандартный набор библиотек установленных при добавлении поддержки ESP8266 в Arduino IDE. Дополнительно необходимо доставить Phiton 2.x и перезапустить Arduino IDE
Чтобы Ваша программа поддерживала OTA (Over the Air) Update, подключаем следующие библиотеки
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
ESP8266mDNS.h не обязательна и нужна только для добавления поддержки DNS запросов, если это для Вас необходимо.
В Setup можно использовать следующие функции, обязательно является только begin.
void setPort(uint16_t port);
void setHostname(const char* hostname);
void setPassword(const char* password);
void begin();
Дополнительно можно задать обработчики для разных событий на этапе прошивки
void onStart(OTA_CALLBACK(fn));
void onEnd(OTA_CALLBACK(fn));
void onProgress(OTA_CALLBACK_PROGRESS(fn));
void onError(OTA_CALLBACK_ERROR (fn));
В loop используется только одна функция OTA
handle();
Также, при необходимости, можно получить текущее имя хоста (esp8266)
String getHostname();
Пример идущей с библиотекой
После прошивки контроллера идем в "Инструменты" Arduino IDE и смотрим список доступных портов. Если все сделано правильно, то в списке появится ветка с доступными для прошивки по воздуху контроллерами.
Данный способ хорош тем, что позволяет шиться прямо из-под среды разработки.
Все остальные способы используют HTTP протокол и подразумевают использования браузера или же самостоятельное подключение контроллера к серверу обновления в поисках свежего бинарника. Эти способы также имеются в примерах среды разработки.