当前位置: 首页 > news >正文

基于STM32单片机智能手表GSM短信上报GPS定位温湿度检测记步设计

1 系统功能介绍

本设计是基于 STM32 单片机 的多功能智能手表系统,融合了 GSM 短信上报、GPS 定位、温湿度检测、计步器功能 等多种实用特性,并结合 LCD1602 液晶显示、LED 手电筒及按键控制,实现了一个功能丰富、交互性强的可穿戴设备。系统不仅可以实时显示时间与日期,还能获取经纬度信息并通过 GSM 短信发送至指定手机,实现远程位置查询。除此之外,手表还具备温湿度检测、步数统计以及 LED 手电筒等生活化功能。

主要功能如下:

  1. LCD1602 显示功能

    • 显示当前时钟、日期信息
    • 可切换显示 GPS 获取的经纬度信息
    • 显示温湿度数据及步数统计
    • 通过电位器调节对比度,保证不同光照条件下的可读性
  2. GPS 定位功能

    • 通过 GPS 模块获取当前经纬度信息
    • 可将数据通过短信上报至手机
    • 经纬度可在浏览器地图上直接查看位置
  3. GSM 短信通讯功能

    • 通过按键发送经纬度短信至预设手机号码
    • 支持手机主动发送 GET 指令查询位置信息,系统自动回复经纬度
    • 短信处理过程有 LED 指示灯提示状态
  4. LED 手电筒功能

    • 独立按键控制 LED 开关
    • 方便夜间使用
  5. 温湿度检测

    • 使用 DHT11 模块检测环境温湿度
    • 数据实时显示在 LCD1602
  6. 计步器功能

    • 使用 ADXL345 三轴加速度传感器进行步数统计
    • 实时显示累计步数

2 系统电路设计

系统硬件采用模块化结构,主要由 单片机核心控制电路、LCD1602 显示模块、GPS 模块、GSM 模块、按键模块、LED 灯模块、ADXL345 计步模块、DHT11 温湿度模块及电源电路 构成。

2.1 单片机核心电路

  • 核心芯片:STM32F103C8T6,ARM Cortex-M3 内核,主频 72MHz,内置丰富的外设接口(USART、I2C、SPI、GPIO、ADC 等)。
  • 晶振电路:外接 8MHz 晶振 + 20pF 电容,保证系统稳定运行。
  • 复位电路:采用上电复位电路及独立复位按键,保证系统在异常状态下可恢复正常。

2.2 LCD1602 液晶显示模块

  • 功能:用于显示时间、日期、经纬度、温湿度和步数。
  • 接口方式:4 位并行模式,节省 I/O 口资源。
  • 对比度调节:通过电位器调整显示清晰度。

2.3 GPS 定位模块

  • 功能:通过卫星获取当前经纬度信息。
  • 接口:串口 UART 与 STM32 通讯,波特率可配置(常用 9600bps)。
  • 数据格式:标准 NMEA-0183 协议,STM32 程序解析 $GPRMC$GPGGA 数据。

2.4 GSM 短信通讯模块

  • 功能:发送与接收短信,实现位置上报与查询。
  • 接口:UART 串口与 STM32 通讯,AT 指令控制。
  • 状态指示:发送、接收过程通过 LED 指示灯显示。

2.5 按键控制模块

系统设计三枚功能按键:

  1. 显示切换键:切换 LCD 显示内容(时间/经纬度/温湿度/步数)。
  2. 手电筒控制键:按下开灯,再次按下关灯。
  3. 短信发送键:按下发送经纬度短信至预设号码。

按键均采用下拉电阻接地方式,软件实现去抖动处理。

2.6 LED 手电筒模块

  • 功能:作为夜间照明使用。
  • 驱动方式:通过 MOSFET 或三极管驱动大功率白光 LED,由单片机 I/O 控制。

2.7 ADXL345 计步器模块

  • 功能:检测佩戴者运动步数。
  • 接口:I2C 总线与 STM32 通讯。
  • 原理:采集三轴加速度数据,算法判断步伐次数。

2.8 DHT11 温湿度模块

  • 功能:测量环境温度与湿度。
  • 接口:单总线协议,与 STM32 单片机通过 GPIO 端口进行数据传输。

2.9 电源电路

  • 功能:提供 3.3V 和 5V 电压供给不同模块。

  • 设计方案

    • 锂电池供电 + 充电管理模块
    • 5V 电源供给 LCD1602、部分传感器
    • 3.3V LDO 稳压供给 STM32、ADXL345、GPS 模块

3 程序设计

软件设计分为 主程序、显示管理、GPS 数据解析、GSM 短信处理、按键扫描、LED 控制、温湿度检测、计步算法 等模块,采用 事件驱动 + 循环查询 的方式实现。

3.1 主程序框架

  • 初始化所有外设(LCD、USART、I2C、GPIO、定时器等)
  • 循环执行按键检测、显示更新、GPS 定位、短信处理、温湿度采集、步数统计等任务
int main(void) {System_Init();while(1) {Key_Scan();Display_Update();GPS_Process();GSM_Process();TempHumi_Update();StepCounter_Update();}
}

3.2 显示管理模块

功能

  • 根据按键切换显示内容
  • 支持时间/日期、经纬度、温湿度、步数等多种信息显示
void Display_Update(void) {switch(display_mode) {case MODE_TIME:LCD_ShowString(0,0,"TIME:");LCD_ShowTime(current_time);break;case MODE_GPS:LCD_ShowString(0,0,"LAT:");LCD_ShowFloat(latitude);LCD_ShowString(1,0,"LON:");LCD_ShowFloat(longitude);break;case MODE_TEMP:LCD_ShowString(0,0,"TEMP:");LCD_ShowNum(temp);LCD_ShowString(1,0,"HUMI:");LCD_ShowNum(humi);break;case MODE_STEP:LCD_ShowString(0,0,"STEPS:");LCD_ShowNum(step_count);break;}
}

3.3 GPS 数据解析模块

功能

  • 从 GPS 模块接收 NMEA 数据
  • 解析 $GPRMC 获取经纬度信息
void GPS_Process(void) {if(GPS_Data_Ready) {Parse_GPRMC(gps_buffer, &latitude, &longitude);GPS_Data_Ready = 0;}
}

3.4 GSM 短信处理模块

功能

  • 发送经纬度短信至预设手机
  • 接收短信内容,若为 “GET” 则回复位置
void GSM_Process(void) {if(send_sms_flag) {LED_Status(1);GSM_SendLocation(latitude, longitude, phone_number);LED_Status(0);send_sms_flag = 0;}if(GSM_NewSMS()) {char msg[20];GSM_ReadSMS(msg);if(strcmp(msg, "GET") == 0) {GSM_SendLocation(latitude, longitude, sender_number);}}
}

3.5 按键扫描模块

功能

  • 检测按键状态
  • 实现去抖动
  • 控制模式切换、LED 开关、短信发送
void Key_Scan(void) {if(Key1_Pressed()) {display_mode++;if(display_mode > MODE_STEP) display_mode = MODE_TIME;}if(Key2_Pressed()) {led_state = !led_state;LED_Control(led_state);}if(Key3_Pressed()) {send_sms_flag = 1;}
}

3.6 温湿度检测模块

void TempHumi_Update(void) {if(DHT11_Read(&temp, &humi) == SUCCESS) {// 数据更新成功}
}

3.7 计步算法模块

void StepCounter_Update(void) {float ax, ay, az;ADXL345_Read(&ax, &ay, &az);if(Detect_Step(ax, ay, az)) {step_count++;}
}

4 总结与特点

  1. 功能集成度高:集成时间显示、GPS 定位、GSM 短信、温湿度检测、计步功能,适合多场景应用。
  2. 交互设计合理:按键控制简洁直观,LCD1602 显示信息丰富且可切换。
  3. 远程交互能力:可被动接收短信查询位置,实现物联网式位置追踪。
  4. 低功耗与可扩展性:通过优化软件可降低功耗,并可扩展如蓝牙、WiFi 等通信方式。
  5. 适合可穿戴应用:便携性高,生活实用功能丰富,具有较高应用价值。
http://www.dtcms.com/a/330863.html

相关文章:

  • OS设备UDID查看方法
  • Mybatis学习笔记(一)
  • 「iOS」————设计架构
  • 在语音通信业务量下降时候该怎么做
  • PHP现代化全栈开发:微服务架构与云原生实践
  • 基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
  • 一台联想 ThinkCentre M7100z一体机开机黑屏无显示维修记录
  • 优化 SQL 查询:选出每个分组最大值的行并插入 10W 条测试数据
  • 云计算-Docker Compose 实战:从OwnCloud、WordPress、SkyWalking、Redis ,Rabbitmq等服务配置实例轻松搞定
  • 【代码随想录day 20】 力扣 108.将有序数组转换为二叉搜索树
  • 老生常谈之引用计数:《More Effective C++》条款29
  • 炎热的夏天
  • SQL181 第二快/慢用时之差大于试卷时长一半的试卷
  • 掌握MATLAB三维可视化:从基础到实战技巧
  • Redis 从入门到生产:数据结构、持久化、集群、工程实践与避坑(含 Node.js/Python 示例)
  • jenkins在windows配置sshpass
  • 构建Node.js单可执行应用(SEA)的方法
  • 【前端工具】使用 Node.js 脚本实现项目打包后自动压缩
  • Go语言defer机制详解与应用
  • 机器学习介绍
  • 预训练模型在机器翻译中的应用:迁移学习的优势详解
  • 华为实验WLAN 基础配置随练
  • dkms安装nvidia驱动和多内核支持
  • 【motion】GIF 转mp4及ubuntu的VLC播放
  • 数据结构初阶(14)排序算法—交换排序(冒泡)(动图演示)
  • 基于SpringBoot+Vue的房屋匹配系统(WebSocket实时通讯、协同过滤算法、地图API、Echarts图形化分析)
  • iOS App TestFlight 上架全流程案例,从 0 到 1 完成内测分发
  • C#通过TCP_IP与PLC通信
  • vue部署正式环境上传nginx后遇到的问题
  • 分享10个ai生成ppt网站(附ai生成ppt入口)