基于ESP32的开发技术分享帖

基于ESP32的开发技术分享帖 本文为机器人设计与应用综合实训中基于ESP32的开发技术分享帖主要记录实训过程中的ESP32开发要点、问题排查及实践总结表格部分留空供同学们根据自身实训情况填写适配实训报告补充、技术复盘及同学间交流使用。核心方向ESP32芯片基础应用、机器人控制模块开发、传感器数据交互、代码调试与优化贴合实训核心需求兼顾技术细节与实操记录。一、实训基础信息实训项目名称实训时间ESP32开发板型号开发环境实训小组人数ESP32WIFI获取时间3月16日ESP32-S3VSCode ESP-IDF1二、ESP32开发核心知识点梳理本部分记录实训中涉及的ESP32核心技术点包括引脚配置、外设驱动、通信协议等结合机器人设计场景补充细节。知识点类别具体知识点核心原理简述实训应用场景机器人相关备注易错点/重点WIFI连接网络创建WIFI工程ESP32 连上网 → 向网络上的专用时间服务器NTP 服务器问一下现在几点 → 服务器把准确时间发给 ESP32 → ESP32 保存这个时间并自己走秒 → 你就能在屏幕上显示时间 / 日期了。显示实时时间与日期提升机器人交互体验。为机器人提供精准时间基准实现定时任务定时播报、定时巡逻。记录机器人运行日志方便调试与状态追踪。实现多设备协同工作时的统一时间同步。WIFI连接不正确获取天气通过服务器获取天气数据ESP32 连 WIFI → 访问【天气服务器】→ 服务器把当前温度、天气发回来 → ESP32 解析数据 → 存到结构体里 → 屏幕显示。语音播报天气机器人获取天气数据显示实时天气情况三、ESP32机器人开发实操步骤按实训流程记录从环境搭建到机器人功能实现的完整步骤重点填写ESP32相关操作明确每一步的核心操作与目的。步骤序号实操内容ESP32相关操作步骤细节使用工具/代码片段操作结果成功/失败及原因1WIFI连接网络一创建WIFI工程和组件二.编辑文件;三.修改1.1.5CMakeLists.txt 文件和main.c文件VSco成功2获取天气打开心知天气网页编辑文件登录“心知天气” 官网 https://www.seniverse.com/成功3天气数据显示网络时间同步首先是天气图片的获取可以使用“心知天气”提供的天气现象图标也可以自行下载其它图标。VSco成功四、ESP32开发常见问题及解决方案记录实训过程中遇到的ESP32开发相关问题如烧录失败、外设通信异常、代码报错等填写解决方案与总结便于后续复盘和同学参考。问题序号问题描述ESP32相关排查过程解决方案问题总结避免方法1无法连接WiFi查看电脑移动热点查看WiFi设置将移动热点打开修改频段为2.4GhzWiFi连接是获取实时时间的一大关键需检查电脑WiFi的连接情况2无法显示天气情况查看代码是否正确是否取模成功修改代码完成取模天气情况需获取天气数据3无法显示日期是否取模代码是否正确完成取模修改代码日期显示需代码正确五、实训总结与ESP32开发心得项目完成情况ESP32开发重点收获存在的不足后续改进计划网络时间天气数据同步网络时间同步需连接WIFi进行日期天气未完成显示完善显示代码代码附录同步时间代码/** SPDX-FileCopyrightText: 2010-2022 Espressif Systems (Shanghai) CO LTD** SPDX-License-Identifier: CC0-1.0*/#include stdio.h#include inttypes.h#include sdkconfig.h#include freertos/FreeRTOS.h#include freertos/task.h#include esp_chip_info.h#include esp_flash.h#include esp_system.h#include LCD/LCD.h#include Timer.h#include demos/lv_demos.h#include gui_guider.h#include custom.h#include wifi.hlv_ui guider_ui;void app_main(void){bsp_i2c_init();pca9557_init();// bsp_lcd_init();bsp_lvgl_start();setup_ui(guider_ui);custom_init(guider_ui);Wifi_STA_Init();ESP_Network_Init();uint32_t sec timer_sec;while(1){vTaskDelay(10);timer_sec time(NULL);if(sec !timer_sec){sec timer_sec;timeinfo *localtime(timer_sec);char str[50]{0};sprintf(str,%02d:%02d:%02d,timeinfo.tm_hour,timeinfo.tm_min,timeinfo.tm_sec);lvgl_port_lock(-1);lv_label_set_text(guider_ui.screen_label_10, str);lvgl_port_unlock();printf(%s\n,str);}}}