0%

使用arduino远程更新esp8266代码

前言

由于核心板与开发板不同,每一次烧录要进行步骤相当多。为了懒以及更加简化相关步骤,因此尝试使用OTA进行远程升级代码,此部分仅介绍arduino部分,OTA传输也可通过服务器进行

借鉴

  • 太极创客的相关示例操作

    过程

    第一次烧录的时候,需要使用tll或者相关方式去进行烧录,之后的话便可以通过网络来进行上传烧录

    示例代码

    这里以太极创客的示例代码为例
    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    /**********************************************************************
    项目名称/Project : 零基础入门学用物联网
    程序名称/Program name : OTA_Flash_Example
    团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
    作者/Author : CYNO朔
    日期/Date(YYYYMMDD) : 20200713
    程序目的/Purpose :
    本示例程序用于演示ESP8266的OTA功能。通过本程序,我们将启动ESP8266的OTA程序上传功能。
    我们将无需使用连接线将ESP8266与电脑进行连接,而可以使用WiFi对ESP8266上传程序。

    如需了解本程序的详细说明,请参考以下链接:
    http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-tips/esp8266-ota/
    -----------------------------------------------------------------------
    其它说明 / Other Description:
    本程序为太极创客团队制作的免费视频教程《零基础入门学用物联网 》中一部分。该教程系统的
    向您讲述ESP8266的物联网应用相关的软件和硬件知识。以下是该教程目录页:
    http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/
    ***********************************************************************/
    #include <ESP8266WiFi.h>
    #include <ArduinoOTA.h>
    #include <Ticker.h>

    // 闪烁时间间隔(秒)
    const int blinkInterval = 2;

    // 设置wifi接入信息(请根据您的WiFi信息进行修改)
    const char* ssid = "taichimaker";
    const char* password = "12345678";

    Ticker ticker;

    void setup() {
    Serial.begin(9600);
    Serial.println("");
    pinMode(LED_BUILTIN, OUTPUT);

    ticker.attach(blinkInterval, tickerCount); // 设置Ticker对象

    connectWifi();

    // OTA设置并启动
    ArduinoOTA.setHostname("ZHYCarge"); //进行OTA名称的设置
    ArduinoOTA.setPassword("12345678"); //设置密码,上传代码的时候会需要
    ArduinoOTA.begin();

    Serial.println("OTA ready");
    }
    void loop() {
    ArduinoOTA.handle();
    }

    // 在Tinker对象控制下,此函数将会定时执行。
    void tickerCount(){
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    }

    void connectWifi(){
    //开始连接wifi
    WiFi.begin(ssid, password);

    //等待WiFi连接,连接成功打印IP
    while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi Connected!");
    Serial.print("IP address:\t");
    Serial.println(WiFi.localIP());
    }

    将项目编译上传

    与正常烧录一样,将esp8266连接到设备,选择好相关端口并进行烧录,等待上传完成
    image
    上传完成之后,esp8266芯片会自动重启,并指示灯会进行闪烁,我们需要手动将esp8266进行重启
    通过串口监视器,我们发现esp8266已经连接上wifi并且OTA运行正常
    image
    之后我们可以打开端口选择界面,之后我们会发现在串口中多了一个网络串口的位置
    image
    点击它之后尝试更改一些信息,例如将OTA的名称更改为ZHYCarge_esp8266并将密码更改为88888888,之后点击上传代码,然后会弹出需要我们输入开发板的密码来进行代码上传
    image
    之后便会进行代码的上传
    image
    image
    之后,我们会发现相关信息已经进行了更改

其他

优点

  • 可以仅在供电情况下,直接对代码进行上传处理,而不必需要经过相关插拔来实现
  • 简化了上传过程
  • 对于一些无法取下的项目而言,更加有效方便的操作esp8266

    局限性

  • 如果项目代码过长,可能会导致相关程序卡死,造成不必要的影响
  • 升级代码的时候,需要主机和esp8266连接到同一wifi下,否则可能烧录不成功

    其他

  • 由于使用了新的网络串口,因此之前的串口监视器已经失效了,但是我们可以使用putty来登录到开发板中进行查看相关输出
  • 可以考虑将OTA升级编辑成为一个中断,当中断开启时,便进入OTA升级界面
-------------我也是有底线的哦如需更多,欢迎打赏-------------