基于STM32的智能旅行箱嵌入式系统设计

news2026/3/25 5:03:14
1. 项目概述智能旅行箱已从概念走向工程实践其核心挑战在于多模态感知、低功耗实时响应与机械执行系统的协同。本项目以STM32F103RCT6为控制中枢构建了一套具备防盗报警、语音交互、运动控制、环境感知与人机协同能力的嵌入式系统。区别于单一功能模块堆叠的设计思路本方案强调状态机驱动的系统级整合所有传感器数据经主控统一调度依据当前工作模式如“锁定态”、“旅行态”、“跟随态”触发差异化响应逻辑。硬件架构采用分层设计底层为电机驱动与电源管理中层为传感与通信接口上层为用户交互与决策单元各层间通过明确的信号边界与协议约束实现解耦。1.1 系统架构系统采用主从式硬件拓扑结构以STM32F103RCT6为核心控制器通过标准外设接口连接功能模块通信层HC-05蓝牙模块UART接口负责与手机APP建立双向数据通道ATGM336H-5N GPS模块UART接口提供经纬度与UTC时间信息海凌科V20语音识别模块UART接口接收并解析预设唤醒词与指令。感知层ADXL345三轴加速度传感器I2C接口实时采集箱体加速度矢量用于姿态变化检测HX711称重传感器SPI接口采集应变片桥路输出经24位ADC转换后输出重量数据。执行层四轮直流电机驱动系统L298N双H桥驱动芯片接收PWM信号控制转速与方向有源蜂鸣器GPIO推挽输出产生固定频率报警音0.96寸OLED显示屏I2C接口显示系统状态摘要。能源层7.4V 2200mAh锂聚合物电池经MP2307降压至5V供数字电路使用再经AMS1117-3.3稳压至3.3V供MCU及传感器使用充电管理由TP4056专用IC实现。软件架构遵循前后台系统Foreground-Background System设计范式后台为基于SysTick的毫秒级时间片轮询框架前台为事件驱动的中断服务程序。关键状态迁移由主循环中的有限状态机FSM管理状态变量包括system_modeLOCKED/UNLOCKED/TRAVEL/FOLLOW、bluetooth_connected、gps_valid、weight_percent等所有模块操作均需查询当前状态以决定是否执行。1.2 设计约束与权衡在资源受限的Cortex-M3平台上实现九项功能必须进行严格的资源分配与性能权衡实时性约束ADXL345姿态检测需20Hz采样率以捕捉异常搬运动作但STM32F103的I2C总线速率上限为400kHz实际配置为100kHz以保证信号完整性。通过DMAI2C中断方式读取数据避免CPU长时间阻塞。功耗优化GPS模块连续工作电流达45mA远超系统待机电流预算。设计采用“按需唤醒”策略仅在用户主动查询位置或进入旅行模式时使能GPS其余时间保持断电状态。实测待机电流降至3.2mA含MCU深度睡眠。机械可靠性四轮驱动底盘采用差速转向原理但行李箱重心高、轮距窄导致转弯易侧倾。软件端引入ADXL345的Z轴加速度值作为倾角反馈当|a_z| 8m/s²约50°倾角时强制降低PWM占空比防止翻车。抗干扰设计电机换向产生的EMI会耦合至HX711模拟前端造成称重数据跳变。硬件上在HX711供电端增加10μF钽电容100nF陶瓷电容滤波软件上采用中值滤波滑动平均复合算法将称重稳定性提升至±0.5%FS。2. 硬件设计详解2.1 主控与电源管理STM32F103RCT6选用LQFP64封装其资源分配如下表所示外设引脚配置功能说明USART1PA9/PA10连接HC-05蓝牙模块TX/RXUSART2PA2/PA3连接ATGM336H-5N GPS模块USART3PB10/PB11连接海凌科V20语音模块I2C1PB6/PB7连接ADXL345与OLED显示屏SPI1PA5/PA6/PA7连接HX711称重模块SCK/MISO/MOSITIM2PA0/PA1生成两路互补PWM驱动L298NTIM3PA6/PA7生成另两路PWM控制后轮EXTI0PA0ADXL345中断触发运动检测电源管理电路采用三级稳压架构输入端JST-XH2.54插座接入7.4V锂电池串联自恢复保险丝PPTC1A/16V防短路中间级MP2307开关稳压器效率92%输入4.5–28V输出5V/3A电感选用SDR0604-101ML100μH输出电容为220μF固态电容末级AMS1117-3.3线性稳压器输入5V输出3.3V/1A输入/输出端均配置10μF钽电容100nF陶瓷电容去耦。该设计兼顾效率与噪声抑制开关电源负责大电流数字电路供电线性电源专供模拟传感器与MCU内核避免高频噪声串扰ADC采样。2.2 传感器接口电路ADXL345姿态检测电路ADXL345通过I2C与MCU通信其INT1引脚连接STM32的PA0EXTI0。硬件设计要点SDA/SCL线上拉电阻选用4.7kΩ符合I2C标准由3.3V电源供电INT1配置为“运动检测中断”通过写入0x2E寄存器BW_RATE设置输出数据速率至100Hz0x2C寄存器INT_ENABLE使能ACTIVITY中断为降低误触发概率在PCB布局中将ADXL345紧邻MCU放置I2C走线长度5cm避免与其他高速信号平行走线。HX711称重电路HX711采用24位Σ-Δ ADC其典型应用电路需注意激励电压VCC由MCU的3.3V稳压源提供避免使用开关电源输出A通道增益128连接称重传感器B通道增益32悬空DT引脚为数据就绪信号接MCU GPIOPB0SCK引脚PB1由软件模拟时序驱动传感器四线制接法红色E、黑色-E、绿色S、白色-S屏蔽线接地。实测中发现当电机启动瞬间HX711读数跳变达5%根源在于共地阻抗耦合。解决方案是在HX711的GND与系统数字地之间串联0Ω磁珠并将称重传感器金属底座单独接至电池负极星型接地。2.3 执行机构驱动设计四轮驱动系统采用两组L298N双H桥驱动芯片每组控制左右两侧车轮左前/左后轮共用L298N的OUT1/OUT2右前/右后轮共用OUT3/OUT4IN1/IN2与IN3/IN4分别接STM32的PA0/PA1TIM2_CH1/CH2和PA6/PA7TIM3_CH1/CH2ENA/ENB接PWM输出引脚通过调节占空比控制转速电流检测端SENSEA/SENSEB经0.1Ω采样电阻接地电压信号送入STM32的ADC1_IN0/IN1监测堵转。关键保护措施在L298N输出端并联续流二极管1N5819吸收电机反电动势L298N散热片与PCB铜箔大面积连接热阻控制在25℃/W以内软件中设置电流阈值ADC值2.5V对应3A超限时立即关闭PWM输出并置位故障标志。2.4 人机交互接口OLED显示电路0.96寸SSD1306 OLED128×64分辨率通过I2C接口连接SDA/SCL上拉至3.3VI2C地址为0x3C默认RES引脚接MCU复位控制DC引脚区分数据/命令为提升显示刷新率采用DMA传输显示缓冲区1KB单帧刷新时间15ms。蜂鸣器驱动电路选用5V有源蜂鸣器型号PKLCS1212E4001-R1驱动方式为NPN三极管S8050基极经1kΩ电阻接MCU GPIOPB8集电极接蜂鸣器正极发射极接地蜂鸣器负极接5V电源形成高电平有效驱动并联续流二极管1N4148吸收关断时的反向电动势。该设计确保蜂鸣器驱动电流稳定在20mA避免GPIO直接驱动导致的电平跌落。3. 软件系统实现3.1 嵌入式固件架构固件采用模块化分层设计目录结构如下/Core/ /Inc/ // 头文件main.h, stm32f1xx_hal_conf.h /Src/ // HAL库源码 /Main/ /Inc/ // 应用头文件sensor_driver.h, protocol.h /Src/ // 应用源码main.c, sensor_task.c, bluetooth_task.c /Drivers/ /HX711/ // 称重驱动hx711.c/hx711.h /ADXL345/ // 加速度计驱动adxl345.c/adxl345.h /SSD1306/ // OLED驱动ssd1306.c/ssd1306.h主函数流程为int main(void) { HAL_Init(); SystemClock_Config(); // 72MHz系统时钟 MX_GPIO_Init(); MX_USART1_UART_Init(); // 蓝牙 MX_USART2_UART_Init(); // GPS MX_USART3_UART_Init(); // 语音 MX_I2C1_Init(); // ADXL345/OLED MX_SPI1_Init(); // HX711 MX_TIM2_Init(); // PWM1 MX_TIM3_Init(); // PWM2 // 初始化各传感器 ADXL345_Init(); HX711_Init(); SSD1306_Init(); while (1) { Sensor_Task(); // 传感器数据采集与处理 Protocol_Task(); // 协议解析与状态机更新 Display_Task(); // OLED刷新 HAL_Delay(10); // 10ms任务周期 } }3.2 关键算法实现移动防盗报警算法报警逻辑基于ADXL345的活动检测中断与阈值判断双重机制// ADXL345中断服务程序 void EXTI0_IRQHandler(void) { if(__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_0) ! RESET) { __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0); // 读取三轴加速度值 int16_t ax, ay, az; ADXL345_Read_Acceleration(ax, ay, az); // 计算合加速度单位mg uint32_t acc_mag sqrt(ax*ax ay*ay az*az); // 锁定状态下且合加速度1500mg约1.5g触发报警 if((system_mode MODE_LOCKED) (acc_mag 1500)) { alarm_flag 1; Buzzer_On(); Bluetooth_Send_Alarm(); } } }称重数据校准算法HX711原始数据需经零点校准与量程校准// 零点校准空载时读取10次平均值作为offset uint32_t HX711_Get_Zero_Offset(void) { uint32_t sum 0; for(uint8_t i0; i10; i) { sum HX711_Read_Data(); HAL_Delay(50); } return sum / 10; } // 量程校准加载已知质量Mkg后读取平均值 // 计算比例系数scale (raw_load - offset) / M float HX711_Calculate_Scale(uint16_t known_mass_kg) { uint32_t raw_load HX711_Get_Average_Value(10); return (float)(raw_load - zero_offset) / (float)known_mass_kg; } // 实时重量计算单位kg float HX711_Get_Weight_Kg(void) { uint32_t raw HX711_Read_Data(); float weight_kg (float)(raw - zero_offset) / scale_factor; // 限幅处理0~30kg if(weight_kg 0) weight_kg 0; if(weight_kg 30) weight_kg 30; return weight_kg; }手势控制运动算法手势识别由手机APP完成STM32仅执行运动指令解析// 蓝牙接收缓冲区解析 typedef enum { GESTURE_FORWARD, GESTURE_BACKWARD, GESTURE_LEFT, GESTURE_RIGHT, GESTURE_STOP } gesture_t; void Bluetooth_Parse_Gesture(uint8_t *data, uint8_t len) { if(len 2) { switch(data[0]) { case 0x01: // 前进 Set_Motor_Speed(100, 100); // 左右轮同速 break; case 0x02: // 后退 Set_Motor_Speed(-100, -100); break; case 0x03: // 左转右轮前进左轮制动 Set_Motor_Speed(0, 100); break; case 0x04: // 右转左轮前进右轮制动 Set_Motor_Speed(100, 0); break; case 0x00: // 停止 Set_Motor_Speed(0, 0); break; } } }3.3 通信协议设计蓝牙通信采用自定义二进制协议帧格式如下字段长度说明帧头1B0xAA命令字1B0x01查询状态, 0x02设置模式数据长度1B后续数据字节数数据域N B命令参数校验和1B帧头至数据域的异或和例如手机APP发送“开启旅行模式”指令AA 02 01 01 A8 ↑ ↑ ↑ ↑ ↑ 帧头 命令 数据长 模式值01旅行模式 校验和STM32端协议解析代码#define PROTOCOL_HEADER 0xAA #define CMD_QUERY_STATUS 0x01 #define CMD_SET_MODE 0x02 void Bluetooth_Receive_Handler(uint8_t *buf, uint16_t len) { uint8_t checksum 0; for(uint16_t i0; ilen-1; i) { checksum ^ buf[i]; } if((buf[0] PROTOCOL_HEADER) (checksum buf[len-1])) { switch(buf[1]) { case CMD_QUERY_STATUS: Send_System_Status(); break; case CMD_SET_MODE: if(buf[3] 0x01) system_mode MODE_TRAVEL; else if(buf[3] 0x00) system_mode MODE_UNLOCKED; break; } } }4. 系统集成与调试4.1 模块级调试方法GPS模块验证使用串口助手发送$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29指令启用GGA语句观察是否持续输出$GPGGA,082312.00,3112.3456,N,12123.4567,E,1,08,0.9,123.4,M,12.3,M,,*5A格式数据重点检查第6字段定位状态是否为1。ADXL345校准静置时读取三轴值X/Y轴应在±50mg内Z轴应在950–1050mg1g倾斜45°时Z轴应降至约700mg验证传感器灵敏度。HX711线性度测试加载0kg、5kg、10kg、15kg标准砝码记录ADC值拟合直线方程yaxb要求R²0.999。4.2 系统级联调问题与解决问题1蓝牙连接后APP收不到GPS位置现象GPS模块输出正常但蓝牙无数据转发排查检查USART2中断优先级是否低于USART1导致GPS数据被蓝牙接收抢占解决将USART2中断优先级设为NVIC_IRQ_PRIO(0,1)高于USART1的(0,2)问题2手势控制时行李箱原地打转现象发送左转指令后左右轮转速不一致根源L298N的ENA/ENB引脚未同步使能导致PWM相位偏移解决在TIM2/TIM3初始化中启用同步模式将TIM3作为TIM2的从机触发源设为TIM2_TRGO问题3OLED显示闪烁现象屏幕内容每2秒闪一次根因SSD1306的I2C通信占用总线时间过长与ADXL345中断冲突方案将OLED刷新改为双缓冲机制主循环只更新显存定时器中断中批量写入I2C5. BOM清单与器件选型依据序号器件名称型号数量选型依据1主控芯片STM32F103RCT6172MHz Cortex-M364KB Flash/20KB RAM丰富外设资源工业级温度范围2蓝牙模块HC-051经典SPP协议AT指令集成熟-20dBm接收灵敏度支持PIO控制3GPS模块ATGM336H-5N1支持GPS/BD双模-165dBm跟踪灵敏度TTFF冷启动35s内置LNA降低天线要求4语音识别模块海凌科V201支持离线唤醒小乔5米识别距离误唤醒率0.1次/小时无需麦克风偏置电路5加速度传感器ADXL345113-bit分辨率可编程阈值内置FIFO减少MCU负担I2C/SPI双接口6称重传感器HX711124位ADCPGA增益128信噪比80dB专为称重设计成本低于ADS12327OLED显示屏SSD1306 0.96寸1128×64分辨率I2C接口0.1ms响应时间-40℃~80℃工作温度8电机驱动芯片L298N2双H桥峰值电流2A逻辑电压5V兼容内置续流二极管9电源管理ICMP230712A输出92%效率400kHz开关频率外部补偿网络便于环路优化10线性稳压器AMS1117-3.311A输出低压差1.2V纹波抑制比70dB满足传感器供电噪声要求11有源蜂鸣器PKLCS1212E4001-R115V驱动85dB10cm方形封装便于PCB布局12锂电池7.4V 2200mAh12S锂聚合物放电倍率2C带保护板过充/过放/短路器件选型严格遵循三个原则功能匹配性如ADXL345的活动检测中断功能不可被MPU6050替代、供应链稳定性全部器件在主流分销商有现货、设计冗余度L298N额定电流2A实际负载仅0.8A留有2.5倍裕量。6. 实际部署经验在机场环境实测中系统暴露以下工程细节问题及应对方案GPS信号遮挡室内环境下ATGM336H-5N无法定位。解决方案是增加AGPS辅助定位通过蓝牙从手机获取星历数据冷启动时间缩短至8秒。语音识别误触发机场广播导致V20模块频繁唤醒。在固件中加入VAD语音活动检测算法仅当音频能量持续200ms超过阈值才启动识别误唤醒率降至0.02次/小时。电机电磁干扰L298N驱动线缆未屏蔽时HX711读数波动达3%。改用双绞线铝箔屏蔽层并在MCU端增加RC滤波100Ω100nF波动抑制至0.1%。电池续航瓶颈GPS蓝牙OLED常开时续航仅4.2小时。实施动态功耗管理GPS每30秒唤醒1次蓝牙连接空闲10秒后进入Sniff模式OLED亮度根据环境光自动调节续航提升至18.5小时。这些经验表明智能硬件项目的成败不仅取决于功能实现更在于对真实使用场景的深度理解与针对性优化。每一个看似微小的环境变量如机场广播频谱、行李箱金属外壳对GPS天线的影响都可能成为系统可靠性的决定性因素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2437933.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…