#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
#include <Ticker.h>


/******需要修改的地方****************/

#define wifi_name       "GT-2G"     //WIFI名称,区分大小写,不要写错
#define wifi_password   "gt#@10000"   //WIFI密码
 
String upUrl = "http://192.168.0.138:6501/file/test.bin";

/**********************************/

Ticker wdtTicker;

void hardwareWatchdog() {
  ESP.wdtFeed(); // 喂狗
}

/**
 * 主函数
 */
void setup() {
  ESP.wdtEnable(8000); // 8秒看门狗
  wdtTicker.attach_ms(5000, hardwareWatchdog);
  Serial.begin(9600);                     
  Serial.println("");
  Serial.println("MCU RUN");  // 再输出信息
  WiFi.begin(wifi_name, wifi_password);     //连接wifi
  
  // 增加WiFi连接超时处理
  int wifiRetry = 0;
  while (WiFi.status() != WL_CONNECTED && wifiRetry < 15) {
    delay(500);
    Serial.print(".");
    wifiRetry++;
  }
  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("\nWiFi连接失败");
    ESP.deepSleep(30e6); // 进入深度睡眠30秒后重试
    return;
  }
  
  // 增加版本号校验
  Serial.print("当前版本:");
  Serial.println(ESP.getSketchMD5());
  
  Serial.println("start update,version:1.3");    
  updateBin();                              //开始升级
}

/**
 * 循环函数
 */
void loop() {

}

/**
 * 固件升级函数 
 */
void updateBin(){
  // 增加升级前校验
  ESPhttpUpdate.rebootOnUpdate(false); // 禁用自动重启
  
  // 增加升级失败重试机制
  for(int i=0; i<3; i++){
    WiFiClient UpdateClient;
    t_httpUpdate_return ret = ESPhttpUpdate.update(UpdateClient, upUrl);
    
    switch(ret) {
      case HTTP_UPDATE_FAILED:
        Serial.printf("升级失败原因: %s\n", ESPhttpUpdate.getLastErrorString().c_str());
        delay(5000);
        break;
      case HTTP_UPDATE_NO_UPDATES:
        Serial.println("无可用更新");
        return;
      case HTTP_UPDATE_OK:
        Serial.println("升级成功,即将重启");
        delay(1000);
        ESP.restart();
        return;
    }
  }
}

 

posted @ 2025-02-19 15:21 CHHC 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 检测GPIO高低电平 1. 中断 2. 轮询 gpio.ino // GPIO按键输入 // 监听高电平接线图 // ESP8266 NodeMCU // ┌───────────┐ // │ D1(GPIO5) │──────┤按键一端 // │ │ │ // │ 3V3 │──────┤按键另一 阅读全文
posted @ 2025-02-13 16:47 CHHC 阅读(17) 评论(0) 推荐(0) 编辑
摘要: ESP8266 作为一款流行的低成本 Wi-Fi 模块,不支持 5 GHz 频段的 Wi-Fi 连接。它仅支持在 2.4 GHz 频段的 802.11 b/g/n 协议;ESP32 能够同时支持 2.4 GHz 和 5 GHz 的 Wi-Fi 网络 联网流程:程序启动后,查找本地文件存储的wifi账 阅读全文
posted @ 2025-02-13 16:44 CHHC 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 可以运行一下EXE文件,看到占用内存变小了,单纯只是不同编译模式的情况下少了几百KB,而且文件也少,它还可以单独运行,不依赖任何文件和环境 如果没有勾选,或者是老项目也没有关系,我们右键项目,点击编辑项目文件,手动加入这一行 右键项目,发布 阅读全文
posted @ 2025-02-08 11:21 CHHC 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Mutex: 用于保护临界区,确保同一时间只有一个线程能够访问共享资源;Semaphore: 允许同时有多个线程访问共享资源,但会限制并发访问的数量。 Mutex运行输出 Semaphore运行输出 namespace SyncThreadDemo { internal class Program 阅读全文
posted @ 2025-01-22 09:22 CHHC 阅读(9) 评论(0) 推荐(0) 编辑
摘要: using PaddleOCRSharp; namespace PaddleOCRSharpDemo { internal class Program { static void Main(string[] args) { //中英文模型V3模型 OCRModelConfig config = nu 阅读全文
posted @ 2025-01-20 17:07 CHHC 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 参考文档:https://www.cnblogs.com/mq0036/p/18302572 using MLNET_Image; using static MLNET_Image.MLModel1; namespace MLNET.Image { public partial class Main 阅读全文
posted @ 2025-01-20 15:50 CHHC 阅读(6) 评论(0) 推荐(0) 编辑
摘要: namespace PriorityQueueDemo { public class Task { public string Name { get; set; } } public class TaskPriorityComparer : IComparer<(int, int)> { publi 阅读全文
posted @ 2025-01-20 11:32 CHHC 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 1. 使用防火墙的入站和出站规则 2. 使用火绒工具进行拦截 IP黑名单拦截 阅读全文
posted @ 2025-01-10 11:18 CHHC 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 实现功能 package main import ( "fmt" "log" "opcuaclient/util/plugin/client/opcclient" "os" "os/signal" "syscall" ) func main() { OPCUATest() // 监听操作系统信号,阻 阅读全文
posted @ 2025-01-08 10:16 CHHC 阅读(11) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示