ESP8266的OTA升级有两种方式,一种是利用ArduinoOTA库,另一种是通过ESP8266HTTPUpdateServer库。
ArduinoOTA库
使用ArduinoOTA库可以在Arduino IDE内直接进行远程更新。优势的代码简洁,操作方便。
1 2 3 4 5 6 7 8 9 10 #include <ArduinoOTA.h> ArduinoOTA.setHostname ("ESP8266" ); ArduinoOTA.setPassword ("12345678" ); ArduinoOTA.begin (); ArduinoOTA.handle ();
在IDE中选择:工具->端口->网络端口
ESP8266HTTPUpdateServer库
该方法较为麻烦,通过服务器和网页进行上传。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266HTTPUpdateServer.h> ESP8266WebServer httpServer (80 ) ; ESP8266HTTPUpdateServer httpUpdater; httpUpdater.setup (&httpServer); httpServer.begin (); Serial.print ("HTTPUpdateServer ready! Open http://" ); Serial.print (WiFi.localIP ()); Serial.println ("/update in your browser" ); httpServer.handleClient ();
ESP8266会通过串口打印OTA更新的地址
访问该网站,随后可以看到下述内容
然后选择对应的文件,Firmware是更新程序,FileSystem是更新文件。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 #include <ESP8266WiFi.h> #include <ArduinoOTA.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266HTTPUpdateServer.h> const char *ssid = "ssid" ;const char *password = "password" ;ESP8266WebServer httpServer (80 ) ;ESP8266HTTPUpdateServer httpUpdater; int l=0 ,t=0 ;void setup (void ) { pinMode (LED_BUILTIN, OUTPUT); Serial.begin (115200 ); Serial.println (); Serial.println ("web OAT:blick v1.0" ); WiFi.mode (WIFI_STA); WiFi.begin (ssid, password); Serial.print ("Connecting..." ); while (WiFi.status () != WL_CONNECTED) { Serial.print ("." ); delay (300 ); } Serial.println (); httpUpdater.setup (&httpServer); httpServer.begin (); Serial.print ("HTTPUpdateServer ready! Open http://" ); Serial.print (WiFi.localIP ()); Serial.println ("/update in your browser" ); ArduinoOTA.begin (); } void loop (void ) { int now = millis (); if (now - l >2000 ) { l=now; if (t==0 ) digitalWrite (LED_BUILTIN,HIGH),t=1 ; else digitalWrite (LED_BUILTIN,LOW),t=0 ; } httpServer.handleClient (); ArduinoOTA.handle (); }