称重防超重+GPS防丢+指纹开锁+自动跟随式电机驱动,一篇讲完选型接线到APP联调
- STM32智能行李箱控制系统:称重防超重、GPS防丢、指纹开锁、超声波防撞、蓝牙WiFi双模远程控制------从选型到联调全流程
STM32智能行李箱控制系统:称重防超重、GPS防丢、指纹开锁、超声波防撞、蓝牙WiFi双模远程控制------从选型到联调全流程
一、痛点开场:你的行李箱还只是个"箱子"吗?
机场值机排队才发现超重、转盘上箱子被拿错、暗处找不到自己的行李、托运过程中箱子被磕碰......这些旅行糟心事,本质都是行李箱没有感知能力 。这篇要做的智能行李箱控制系统,就是把一个普通箱子武装起来:能称重报警、能测湿度防潮、光线暗自动亮灯、超声波防碰撞、GPS 实时定位防丢、指纹解锁防盗、蓝牙+WiFi 双模远程控制。
系统以 STM32F103C8T6 为核心,全套模块都是淘宝能买到的常见型号,跟着本文从器件选型、硬件接线、软件流程到 APP 联调一次走通。
二、功能拆解:行李箱要管哪些事
| 功能 | 实现方式 | 解决什么痛点 |
|---|---|---|
| 重量监测 | 压力传感器 + HX711 24位ADC | 接近/超过限重及时报警,机场值机不尴尬 |
| 湿度监测 | 湿度传感器实时采集 | 箱内受潮发霉预警 |
| 光照感应 | 光敏电阻检测 | 环境光不足自动点亮 LED,黑暗中一眼找到箱子 |
| 超声波测距 | HC-SR04 | 与障碍物距离小于安全阈值触发蜂鸣器,防碰撞 |
| GPS 定位 | ATGM336H 模块 | 机场/车站实时定位,防丢失防误拿 |
| 指纹开锁 | AS608 指纹模块 + 继电器模拟锁 | 只有授权指纹能开锁,防盗 |
| 数据展示 | OLED12864 | 实时显示重量/湿度/光照/距离/经纬度 |
| 参数设定 | 按键 | 灵活设置各阈值,适应不同场景 |
| 蓝牙通信 | JDY-31 | APP 近距离控制与数据查看 |
| WiFi 通信 | ESP8266-01S | 位置数据上云,远程持续追踪 |
| 运动控制 | L298N + 直流电机 | APP 遥控前进/后退/左右转 |
三、器件选型:每组双方案,为什么选它
论文对每个模块都做了双方案对比,浓缩成一张选型表:
| 模块 | 选定型号 | 落选方案 | 选定理由 |
|---|---|---|---|
| 主控 | STM32F103C8T6 | NXP LPC1768 | Cortex-M3 @72MHz 够用、低功耗适合电池供电、生态资料最全 |
| 光敏 | GL5528 光敏电阻模块 | TSL2561 | 成本敏感场景性价比高、接口简单,精度够阈值控制用 |
| GPS | ATGM336H | NEO-6M | 高灵敏度、冷启动快、功耗低,弱信号表现稳定且便宜 |
| 称重 | HX711 模块 | FSR402 力敏电阻 | 24位分辨率、噪声抑制好、DT/SCK 两线接口,精度与成本平衡 |
| 指纹 | AS608 | FPM10A | 最多存 1500 模板、UART 接口好集成、资料齐全性价比高 |
| 湿度 | YL-69(论文选型) | AM2120 | 便宜够用;工程实现建议换 DHT11 更贴合箱内空气湿度场景(见避坑) |
| 测距 | HC-SR04 | Grove Ultrasonic Ranger | 2cm~400cm 覆盖防撞需求、四线接口、教程海量 |
| 显示 | OLED12864 | ST7735 TFT | 高对比广视角、自发光低功耗,适合电池供电设备 |
| 蓝牙 | JDY-31 | NRF24L01 | 蓝牙4.0、1Mbps、10~20m,手机直连免网关,功耗低 |
| 电机驱动 | L298N | DRV8825 | 双通道全桥、12V 供电直驱两路电机,经典方案资料多 |
| WiFi | ESP8266-01S | nRF905 | 可直接联网上云、生态成熟;nRF905 只能点对点无法上网 |
成本参考(淘宝常见价,非论文数据):主控 10 元级、GL5528 2 元、ATGM336H 25 元、HX711+传感器 10 元、AS608 25 元、DHT11 3 元、HC-SR04 3 元、OLED 8 元、JDY-31 8 元、L298N 6 元、ESP8266-01S 8 元------核心电子件 150 元内可拿下。
四、硬件接线与引脚分配(以论文附录代码注释为准)
核心接线表(引脚来自论文主程序代码注释,最可靠):
| 模块 | 引脚 | 接 STM32 |
|---|---|---|
| HX711 称重 | DT / SCK | PA0 / PA1 |
| GPS ATGM336H | TX/RX | USART3(PB11 附近) |
| 光敏 GL5528 | AO | ADC1 输入(PB1) |
| 蜂鸣器 | 控制脚 | PB9(三极管驱动,低电平响) |
| LED | 控制脚 | PA11(自动照明灯) |
| HC-SR04 | Trig / Echo | 定时器2 输入捕获(PC13/PC14) |
| 按键组 | 4 个独立按键 | PB12 / PB13 / PB14 / PB15 |
| DHT11(湿度实测) | DATA | PC15(单总线) |
| 继电器(模拟锁) | IN | PA4 |
| L298N | IN1~IN4 / ENA ENB | GPIO + PWM |
| OLED | SDA / SCL | I2C 总线 |
| JDY-31 蓝牙 | TXD/RXD | USART1(9600) |
| ESP8266-01S | TXD/RXD | USART2(115200,3.3V 独立供电) |
L298N 电机运动控制真值表(论文原文逻辑,写驱动直接抄):
| 动作 | IN1 | IN2 | IN3 | IN4 |
|---|---|---|---|---|
| 前进 | 1 | 0 | 1 | 0 |
| 后退 | 0 | 1 | 0 | 1 |
| 左转 | 1 | 0 | 0 | 1 |
| 右转 | 0 | 1 | 1 | 0 |
| 停止 | 0 | 0 | 0 | 0 |
原理:L298N 双通道,IN1/IN2 控制左电机、IN3/IN4 控制右电机。左转 = 左电机正转 + 右电机反转,实现原地转向。
五、软件设计:八大子程序怎么实现
开发环境 Keil MDK + ST-Link。主程序初始化顺序:中断分组 → 延时 → 定时器 → USART1(9600) → 按键 → HX711 → 去皮 → LED → GPS(USART3) → ADC(光敏) → 超声定时器 → 继电器 → 蜂鸣器 → DHT11 → OLED → ESP8266/MQTT 初始化,然后进入 OLED_Display_Cotrol() 主循环。
5.1 称重:HX711 24 位读取 + 去皮校准
初始化:SCK 推挽输出、DOUT 浮空输入
读取24位:DOUT 拉高 → SCK 拉低 → 循环翻转 SCK 逐位读
数据处理:结果异或 0x800000 还原符号位
去皮:上电 Get_Maopi() 记空秤值
净重 = 当前值 - 皮重;净重 > 0 时 ÷ 校准系数 = 实际重量
关键点:HX711 必须先读一次空秤去皮,否则每次称重都带一个固定偏置;校准系数需要拿标准砝码标定一次。
5.2 GPS:NMEA 解析 + Haversine 距离
ATGM336H 输出标准 NMEA 语句,论文用了串口中断收包:中断里校验包头、收到完整包标记就绪,主程序解析经纬度字段。坐标换算距离用 Haversine 公式(球面距离),解析失败进错误处理循环并打印错误信息。
5.3 指纹识别:添加 / 删除 / 验证三段流程
论文把 AS608 流程写得非常工程化,添加指纹要按两次(两次采集生成模板再入库,防止一次误按录入残缺指纹):
添加流程:提示按手指 → 采集图像生成特征1 → 成功
→ 再次按手指 → 生成特征2 → 成功
→ 合成模板并入库 → 打印指纹 ID
验证流程:按手指 → 采集特征 → 比对 → 成功打印 ID(Unlocked)
→ 失败提示(Unlocking failure)+ 触发报警
→ 重试上限 15 次,超时提示
指纹模块串口波特率 57600,主串口 115200,注意区分。
5.4 超声波测距:定时器测 Echo 高电平时间
Trig 拉高 10µs 触发发射
Echo 变高开始计时,回到低电平停止
距离(cm) = 高电平时间(µs) × 0.034 / 2
用定时器输入捕获测脉宽比 delay 轮询精确得多,距离低于阈值就触发蜂鸣器防撞报警。
5.5 湿度与光敏:ADC 多次采样取平均
两路模拟量统一套路:初始化 ADC → 软件触发转换 → 等 EOC → 连采多次取平均(间隔延时),再按"电压 = ADC×参考/4096"换算成湿度百分比 / 光强值。平均值滤波对这种缓变环境量非常有效。
5.6 OLED 显示:SSD1306 标准初始化序列
配置 I2C → 发送初始化命令(关显示 0xAE → 内存寻址模式 0x20/0x10 → 对比度/扫描方向/显示时钟 → 开显示 0xAF)→ 定位坐标 → 填充字符/汉字/位图。显示界面分多页,按键切换:湿度页 / 重量页 / 光照页 / 距离页 / GPS 经纬度页 / 阈值设置页。
5.7 蓝牙 JDY-31:USART1 透传命令
JDY-31 就是串口蓝牙透传:单片机 USART1(9600) 收发,APP 连上蓝牙后双向传字符串。协议自行约定 :上行发 DATA:xx,xx,... 上报状态,下行收 LOCK(开锁)/LIGHT_ON(开灯)/FWD/BACK/LEFT/RIGHT(运动控制)等指令,收到后转成对应动作。
5.8 WiFi ESP8266 + MQTT:位置上云
初始化:复位引脚拉低 500ms → 等待 "ready"
AT+CWMODE=1 → STA 模式
AT+CWJAP="SSID","密码" → 连 WiFi,等 "OK"
AT+CIPMUX=0 → 单连接
AT+CIPSTART="TCP",服务器IP,端口 → 等 "CONNECT"
AT+CIPSEND → 进入透传
连接 MQTT 服务器后走心跳保活,定期 send_data() 上报 GPS 位置,断线自动重连,供 APP 端远程查看箱子位置。
六、APP 联调:热点 + 蓝牙 + 后台一次配通
论文调试记录里给了完整联调参数,照抄可复现:
- 手机开热点:名称 yxrq9999,密码 yxrq666888,ESP8266 连上该热点;
- 打开 APP 连蓝牙:设备名 JDY-31,点击连接;
- 登录后台:管理员 admin / 密码 123456;
- 主界面实时显示湿度、光强、重量、经纬度;调阈值后 APP 数据同步更新;
- 点"开锁/开灯"按钮远程控制;点"前进/后退/左转/右转"行李箱电机立即执行对应动作。
七、调试要点与结论
论文从硬件、软件、系统三层调试:先逐模块验电验证(传感器读数、通信模块收发),再用 Keil 断点 + Watch 窗口盯寄存器,最后整体联调按键阈值设置、指纹添加/删除/开锁、阈值自动报警(光强低于阈值自动开灯 + 报警;距离低于阈值蜂鸣器;重量/湿度超限报警)。系统各项功能均验证通过,稳定性满足设计要求。
八、避坑清单(做实物前必看)
- 湿度传感器选型打架 :论文选型章写 YL-69(土壤湿度探头),但主程序实际用 DHT11 测箱内空气湿度(PC15)------做实物建议用 DHT11,YL-69 的金属探针测空气意义不大;
- PA4 引脚冲突 :论文硬件章说 PA4 是 ESP8266 复位脚,代码注释却是继电器
Relay_init() //PA4------以代码为准,ESP8266 复位另找一个空闲 GPIO; - L298N 供电 :电机电源 12V 与逻辑 5V 建议分开,且共地,否则电机一转主控就复位;
- GPS 天线:ATGM336H 一定要外接有源天线并放在箱子外侧/顶部,塞在金属框架里定位会漂到怀疑人生;
- AS608 指纹采集:手指湿润/有油污识别率骤降,录模板时建议每个手指录 2~3 次不同角度。
九、总结
这套智能行李箱 = STM32F103C8T6 + 称重(HX711) + 湿度(DHT11) + 光敏(GL5528) + 超声波(HC-SR04) + GPS(ATGM336H) + 指纹(AS608) + OLED + 蓝牙(JDY-31) + WiFi(ESP8266) + 电机驱动(L298N),一个典型的"传感器 + 执行器 + 双模通信"嵌入式综合体。
它的价值在于把**安全(指纹/防丢/防撞)与便利(称重/照明/遥控)**合到一个箱子里,而每一个子模块单独拎出来,又都是可以复用的驱动例程------称重+蓝牙可以变成智能药盒,GPS+WiFi 可以变成老人防走失定位器。先跑通"传感器→OLED→阈值报警"闭环,再叠加通信和运动控制,你就能拥有一个能跑能叫能定位的行李箱。
六、资料内容完整工程资料(原理图、PCB、代码、元件清单)

七、资料获取方式
