基于STM32的智能售卖机监测系统设计语音购买 环境监测 GPS定位 APP远程管理一、系统功能总览二、核心模块选型对比2.1 主控芯片STM32F103C8T6 vs LPC17682.2 温湿度传感器DHT11 vs SHT402.3 烟雾传感器MQ-2 vs MH-Z192.4 定位模块ATGM336H vs NEO-6M2.5 投币检测红外对管 vs E3Z-D81 光电开关2.6 语音识别模块LU-ASR01 vs SRS-3002.7 显示模块OLED12864 vs ST7735 TFT2.8 无线通信模块ESP8266 vs nRF905三、系统接线总表四、系统软件设计4.1 主程序流程4.2 语音购买流程4.3 按键购买流程4.4 环境检测流程4.5 GPS 定位流程4.6 无线通信流程五、系统实现与测试5.1 按键购买功能调试5.2 语音购买功能调试5.3 数据采集功能调试5.4 无线通信功能调试六、总结基于STM32的智能售卖机监测系统设计语音购买 环境监测 GPS定位 APP远程管理无人售卖机铺得越来越广但补货靠巡检、故障靠用户投诉、安全无人盯的传统运营方式已经跟不上了。本文带来一套基于 STM32F103C8T6 的智能售卖机监测系统支持说出来就买的语音购买和传统按键购买两种方式红外对管模拟投币支付舵机自动弹出商品机身内 DHT11 与 MQ-2 实时盯守温湿度和烟雾浓度超标即刻蜂鸣报警ATGM336H 提供设备定位ESP8266 把销售情况、商品库存、环境参数与位置信息统统传到手机 APP运营者足不出户掌握每台机器的状态。一、系统功能总览功能模块具体说明语音购买喊买东西进入语音模式说出商品名即可播报价格并进入支付按键购买按键切换商品选项OLED 显示四种商品名称与价格模拟支付红外对管检测投币动作完成支付后舵机弹出对应商品库存管理OLED 实时显示各商品库存库存不足自动提醒温湿度监测DHT11 采集机内温湿度超阈值蜂鸣器报警烟雾监测MQ-2 检测烟雾浓度超标触发报警防范火情GPS 定位ATGM336H 上报设备经纬度便于资产管理无线上云ESP8266 以 MQTT 协议上传数据APP 远程查看并设定阈值系统预设四种商品薯片、辣条、面包、火腿肠。二、核心模块选型对比2.1 主控芯片STM32F103C8T6 vs LPC1768对比项方案一STM32F103C8T6方案二LPC1768内核Cortex-M3 72MHzCortex-M3 120MHzFlash/RAM64KB / 20KB512KB / 64KBGPIO 数量37 个够用70 个本系统用不上低功耗特性支持睡眠/停止/待机模式同样支持价格约 10 元约 35 元选择方案一STM32F103C8T6。系统所需串口、ADC、PWM 数量适中C8T6 性能稳定、外设接口齐全低功耗模式还适合售卖机这类长期无人值守设备加上开发资料最全性价比远胜对手。2.2 温湿度传感器DHT11 vs SHT40对比项方案一DHT11方案二SHT40测量范围0~50℃ / 20~80%RH-40~125℃ / 0~100%RH精度温度±2℃、湿度±5%RH温度±0.3℃、湿度±2%RH接口单总线集成极简I2C价格约 5 元约 15 元选择方案一DHT11。机内环境监测只需判断是否超过报警阈值DHT11 的精度完全胜任单总线读取方式直观快速原型开发首选。2.3 烟雾传感器MQ-2 vs MH-Z19对比项方案一MQ-2方案二MH-Z19原理MOS 金属氧化物半导体NDIR 非分散红外检测对象烟雾、甲烷、LPG 多种气体以 CO₂/CO 为主输出方式AO 模拟量接 ADC串口输出多气体适应强一表多能相对单一价格约 8 元约 60 元选择方案一MQ-2。售卖机火情隐患以烟雾和可燃气体为主MQ-2 一颗覆盖多种气体应用案例成熟、成本仅零头预算有限的监测项目首选。2.4 定位模块ATGM336H vs NEO-6M对比项方案一ATGM336H方案二NEO-6M卫星系统GPS 及多星系统GPS GLONASS弱信号表现灵敏度高稳定定位定位更新更频繁冷启动速度短开机即定位同样较快功耗低适合长期在线略高价格约 15 元约 25 元选择方案一ATGM336H。售卖机是固定点位设备对动态定位更新率要求不高ATGM336H 静态定位稳定、功耗低、成本低正合需求。2.5 投币检测红外对管 vs E3Z-D81 光电开关对比项方案一红外对管方案二E3Z-D81集成度发射接收一体免对准分体长距离型检测距离近距离投币检测足够最远 1 米抗干扰可应对灰尘油雾抗环境光更强价格约 3 元约 40 元选择方案一红外对管。投币口检测距离只有几厘米红外对管一体式结构安装简单、适应不同币面反射率性能足够且成本极低。2.6 语音识别模块LU-ASR01 vs SRS-300对比项方案一LU-ASR01方案二SRS-300识别准确率高达 95%约 85%自定义指令最多 100 条仅 5 种固定指令工作电压3.3V~5V3V~5V适用场景复杂交互简单命令、电池供电选择方案一LU-ASR01。系统需要识别买东西加四种商品名共多条指令SRS-300 的 5 条固定指令不够用LU-ASR01 的高识别率与百条指令库才能支撑流畅的语音购物体验。2.7 显示模块OLED12864 vs ST7735 TFT对比项方案一OLED12864方案二ST7735 TFT分辨率128×64 单色128×128 彩色视角/对比度自发光全视角高对比亮度高但需背光功耗暗场功耗极低背光常开功耗高价格约 12 元约 20 元选择方案一OLED12864。售卖界面只需文字与数字信息OLED 高对比度保证任何角度清晰可读低功耗特性契合长期运行场景。2.8 无线通信模块ESP8266 vs nRF905对比项方案一ESP8266方案二nRF905联网方式WiFi 直连互联网433MHz 私有协议上云能力TCP/MQTT 即插即用无法直接联网传输速率最高 72Mbps低速价格约 10 元约 15 元选择方案一ESP8266-01S。数据必须经云平台转发至手机 APPESP8266 内置 WiFi 可直接入网上云社区资源丰富是物联网上传链路的最优解。三、系统接线总表模块引脚连接 STM32 引脚备注DHT11DATAPA0单总线3.3V 供电红外对管OUTPA1数字输出低电平表示检测到投币5V 供电MQ-2AOPA4模拟输出接 ADC15V 供电DO 悬空ESP8266TXD/RXDPA3/PA2USART2115200MQTT 上传ESP8266RSTPA8复位控制CH_PD 接 3.3VATGM336HTX/RXPA10/PA9USART19600ANT 外接有源天线LU-ASR01TXDPB11USART3_RX识别结果经串口上报LU-ASR01RXDPB10USART3_TX3.3V~5V 宽压供电OLED12864SCL/SDAPB6/PB7I2C 接口SSD1306 驱动舵机×4PWMPA6/PA7/PB0/PB1TIM3 四路 PWM50Hz 0.5~2.5ms 脉宽蜂鸣器I/OPB5三极管驱动按键 K1~K4一端PB12/PB13/PB14/PB15按下接地含阈值设定与商品选择接线说明四路舵机共用 TIM3 的四个 PWM 通道分别对应薯片、辣条、面包、火腿肠四个货道红外对管与 MQ-2 均为 5V 模块数字/模拟信号与 STM32 引脚直连模拟量按 5V/4096 换算。四、系统软件设计4.1 主程序流程系统上电后依次初始化传感器引脚、串口与通信方式OLED 开屏显示商品列表ESP8266 完成入网与 MQTT 连接。主循环中持续检测温湿度、烟雾、GPS、按键、语音指令、红外投币与商品库存数据实时刷新至 OLED 并上传 APP。温度或烟雾超过阈值立即驱动蜂鸣器报警检测到购买按键或语音唤醒指令则进入对应购买流程。主程序骨架如下int main(void) { System_Init(); // GPIO/ADC/USART1~3/I2C/TIM3 初始化 OLED_Init(); OLED_ShowGoodsList(); // 显示四种商品名称与价格 DHT11_Init(); GPS_Init(); // USART1 9600 ESP8266_Rst(); ESP8266_MQTT_Connect(); // 入网 TCP MQTT while (1) { DHT11_Read_Data(temp, humi); smoke_ppm MQ2_Get_PPM(); // ADC 均值采样换算浓度 GPS_Parse(lat, lon); // NMEA 解析定位 if (temp TEMP_TH || smoke_ppm SMOKE_TH) BEEP_ON(); // 环境超标报警 else BEEP_OFF(); if (Voice_WakeUp(买东西)) // 语音唤醒 Voice_Buy_Flow(); if (Key_Scan() KEY_BUY) // 按键购买 Key_Buy_Flow(); OLED_ShowEnv_Stock(temp, humi, smoke_ppm, stock); // 环境与库存 ESP8266_MQTT_Publish(temp, humi, smoke_ppm, stock, lat, lon); // 上传 APP APP_Cmd_Handle(); // APP 阈值设定指令 delay_ms(500); } }4.2 语音购买流程LU-ASR01 上电持续监听麦克风采集声音 → 前置放大与 ADC 转换 → 去噪增强 → MFCC 系数提取特征向量 → 与 SPI FLASH 内置指令库匹配。识别成功后经串口发送指令帧STM32 在 USART3 中断中接收至USART_RX_BUF并解析控制标志位。用户喊出买东西进入语音购买模式随后说出商品名称如薯片系统语音播报价格并进入支付状态完成投币后对应货道舵机动作弹出商品、库存减一。4.3 按键购买流程按键模式下用户通过商品选择键在薯片、辣条、面包、火腿肠之间切换OLED 同步高亮当前商品与价格确认购买后进入支付模式红外对管检测到投币动作引脚被拉低即判定支付完成STM32 输出对应 PWM 脉宽驱动舵机旋转弹出商品。按键扫描软件消抖保证操作稳定响应。4.4 环境检测流程DHT11 按单总线时序读取主机拉低 1ms 发起 → 释放等待 80µs 低 80µs 高响应 → 接收 40 位数据温湿度整数小数 校验和→ 校验通过后提取数值。MQ-2 走 ADC 链路使能 ADC1 时钟 → 配置模拟输入与采样时间 → 软件启动转换并等待 EOC 标志 → 多次采样取均值 → 按 5V/4096 换算电压 → 折算烟雾浓度 PPM。两路数据与阈值比较超标即触发蜂鸣报警。4.5 GPS 定位流程ATGM336H 以 9600 波特率经 USART1 持续输出 NMEA 语句中断服务程序按数据包头接收完整数据包后置位标志主程序解析出经纬度字段并利用 Haversine 公式计算两点间球面距离用于位移判断定位数据随 MQTT 报文一并上传APP 端即可在地图上查看设备位置。4.6 无线通信流程ESP8266 配置序列RST 拉低 500ms 复位 → 缓冲区检出 “ready” →ATCWMODE1STA 模式 →ATCWJAP入网等待 “OK” →ATCIPMUX0单连接 →ATCIPMODE1透传 →ATCIPSTART连接 TCP 服务器等待 “CONNECT” → 获取 IP 后建立 MQTT 会话。此后销售记录、环境参数与定位数据按 MQTT 协议发布APP 端订阅接收并可下发温湿度与烟雾阈值修改指令。五、系统实现与测试硬件焊接完成后逐模块单独调试再进行系统联调。5.1 按键购买功能调试逐一测试各按键能否正确切换商品选项并刷新 OLED 显示选定商品进入支付模式后红外传感器检测到投币信号即解锁对应舵机完成出货。重点验证按键消抖逻辑确保每次操作稳定响应不出现连击误触发。5.2 语音购买功能调试确认 LU-ASR01 与 STM32 串口通信正常后在不同距离与噪声环境下测试买东西唤醒与商品名识别的准确率并调整麦克风位置与模块灵敏度优化效果。识别成功后系统立即播报价格并进入支付状态反复测试验证语音与按键两条购买路径互不冲突。5.3 数据采集功能调试测试项测试方法结果温湿度显示读取 DHT11 输出并与标准温度计对比显示一致通过烟雾报警设定阈值后引入烟雾源超标蜂鸣器报警通过GPS 定位串口监控 NMEA 解析结果经纬度准确更新稳定库存提醒连续购买至库存归零OLED 弹出补货提醒通过5.4 无线通信功能调试ESP8266 成功连接 WiFi 与远程服务器后STM32 上传的销售记录、环境数据、库存与位置信息在 APP 端实时刷新APP 下发的阈值设定指令在下一上报周期生效。调试中重点观察网络延迟、丢包与断线重连机制多轮测试数据传输及时稳定。六、总结本文完成了一套基于 STM32F103C8T6 的智能售卖机监测系统以语音识别与按键双通道购买流程提升用户体验红外对管模拟支付、舵机自动出货打通交易闭环DHT11、MQ-2、ATGM336H 三者构成环境与位置监测矩阵异常状态即时报警ESP8266 经 MQTT 协议将全量数据送上云端运营者通过 APP 即可完成远程监控与阈值管理。系统把卖货与管机合二为一模块选型兼顾性能与成本对无人零售设备的智能化改造具有直接的参考价值。后续接入在线支付与销量大数据分析即可从教学原型迈向真正的商业化运营方案。七、资料内容完整工程资料原理图、PCB、代码、元件清单八、资料获取方式