1 系统功能介绍
本设计为 基于 STM32 单片机的智能手表系统,其功能涵盖了定位、短信上报、温湿度检测与运动记步等多项实用功能,充分体现了嵌入式技术与智能穿戴设备的结合。系统以 STM32F103 系列单片机为核心,集成了 GPS 定位模块、GSM 短信模块、DHT11 温湿度传感器、ADXL345 三轴加速度计(用于计步)、LCD1602 液晶显示屏及 LED 灯等功能电路。通过模块化设计和程序控制,系统能够实现数据的采集、处理、显示和通信,构建一个完整的智能手表应用框架。
系统的主要功能如下:
- LCD1602 显示:能够显示实时时钟和日期,同时支持经纬度数据的显示。通过按键切换,可以在时钟与经纬度信息之间切换。
- GPS 定位:通过 GPS 模块获取当前经纬度信息,用户可以利用经纬度坐标在地图或浏览器上查看具体位置。
- LCD 清晰度调节:通过电位器调节 LCD 对比度,保证在不同光照条件下均能清晰显示。
- 手电筒功能:通过按键控制 LED 灯,实现手电筒开关,满足用户应急照明需求。
- 短信上报功能:通过第三个按键触发,将经纬度信息打包成短信发送至指定手机号码,方便远程位置上报。
- 短信远程获取功能:当用户向手表绑定的手机号发送 “GET” 指令时,手表会主动回复当前经纬度信息。
- 指示灯提示:在短信发送或接收过程中,指示灯闪烁提示系统工作状态。
- 温湿度检测:通过 DHT11 传感器实时监测环境温度与湿度,并显示在屏幕上。
- 运动计步功能:利用 ADXL345 三轴加速度传感器获取运动数据,经过算法处理后显示步数。
该系统的功能覆盖了智能穿戴设备的核心需求,兼具生活便利性、健康监测与信息通信能力,具有较强的实用价值和教学研究意义。
2 系统电路设计
2.1 STM32 最小系统电路
STM32F103 单片机作为主控制核心,提供强大的运算与接口能力。
- 时钟电路:使用 8MHz 外部晶振,结合内部 PLL 倍频至 72MHz,为整个系统提供高效时钟。
- 复位电路:采用按键和电容电阻组成的复位电路,确保系统上电时能够正常初始化。
- 电源电路:由 3.3V 稳压芯片提供稳定电压,STM32 内部和各传感器模块均工作在 3.3V 电压下。
2.2 LCD1602 显示电路
1602 液晶主要用于显示时钟、日期、温湿度和经纬度数据。
- 接口方式:采用 8 位并行或 4 位并行方式与 STM32 相连,常用端口为 GPIO 输出。
- 电位器调节:通过电位器调节 LCD 对比度,保证在强光或弱光下均能清晰显示。
- 功能拓展:按键可切换 LCD 显示内容,在“时钟+日期”和“经纬度+温湿度+步数”之间切换。
2.3 GPS 定位模块电路
GPS 模块采用 UART 串口与 STM32 通信,定期输出 NMEA 格式的数据字符串。
- 数据格式:通过解析
$GPRMC
或$GPGGA
信息获取经纬度。 - 供电:3.3V 电源供电,配合退耦电容稳定信号。
- 天线要求:需要外接有源天线,确保定位灵敏度和精度。
2.4 GSM 短信模块电路
GSM 模块主要用于收发短信,模块与 STM32 通过 UART 串口通信。
- 发送短信:通过 AT 指令控制模块,将经纬度信息打包发送至指定号码。
- 接收短信:当接收到短信时,STM32 解析短信内容,若检测到 “GET” 指令,则回复经纬度数据。
- 指示灯:在短信收发过程中点亮或闪烁,用于提示用户操作状态。
2.5 DHT11 温湿度传感器电路
DHT11 采用单总线与 STM32 相连,周期性输出温湿度数据。
- 接口方式:单线数字信号输入。
- 应用:通过温湿度检测,用户可以了解周围环境情况,并在 LCD 上显示。
2.6 ADXL345 加速度传感器电路
ADXL345 通过 I²C 总线与 STM32 相连,用于检测三轴加速度。
- 计步原理:通过对加速度波形的检测,判断用户是否发生步行动作,累加步数。
- 供电电压:3.3V,符合 STM32 系统电压。
2.7 LED 灯电路
用于实现手电筒功能与短信状态指示:
- 手电筒:通过独立按键控制 LED 开关。
- 短信状态灯:在短信发送或接收时点亮/闪烁,用于提示系统当前状态。
2.8 按键电路
系统共用 3 个按键:
- 显示切换按键:在 LCD 上切换显示时钟信息与经纬度信息。
- 手电筒按键:控制 LED 灯开关。
- 短信发送按键:触发 GSM 模块发送经纬度短信。
按键采用下拉电阻电路设计,避免悬空引起误触发。
2.9 电源电路
手表整体电路采用锂电池供电,电源管理电路包括:
- 3.7V 锂电池 + 充电管理模块;
- LDO 稳压芯片输出 3.3V,供单片机与外设使用;
- 退耦电容保证模块运行稳定。
3 程序设计
系统程序采用模块化设计,分别针对 LCD1602、GPS、GSM、DHT11、ADXL345 和按键进行驱动编写,并通过主循环调用,实现智能手表的综合功能。
3.1 主程序框架
#include "stm32f10x.h"
#include "lcd1602.h"
#include "gps.h"
#include "gsm.h"
#include "dht11.h"
#include "adxl345.h"
#include "delay.h"
#include "usart.h"
int main(void)
{
char gps_info[50];
char sms_text[100];
int steps = 0;
float temperature, humidity;
LCD1602_Init();
GPS_Init();
GSM_Init();
DHT11_Init();
ADXL345_Init();
LED_Init();
Key_Init();
while(1)
{
// 显示时钟与日期
LCD1602_ShowTime();
// 按键切换显示经纬度
if(Key_SwitchPressed())
{
GPS_GetLocation(gps_info);
LCD1602_ShowString(1,0,gps_info);
}
// 获取温湿度数据
DHT11_Read(&temperature,&humidity);
LCD1602_ShowFloat(0,0,temperature);
LCD1602_ShowFloat(1,0,humidity);
// 计步功能
steps = ADXL345_GetSteps();
LCD1602_ShowNum(1,8,steps,4);
// 短信发送按键
if(Key_SMSPressed())
{
sprintf(sms_text,"GPS:%s",gps_info);
GSM_SendSMS("1234567890",sms_text);
LED_Flash(); // 指示灯提示
}
// 短信接收处理
if(GSM_CheckSMS("GET"))
{
GSM_SendSMS("1234567890",gps_info);
}
// 手电筒按键
if(Key_LightPressed())
{
LED_Toggle();
}
}
}
3.2 GPS 数据解析程序
void GPS_GetLocation(char *info)
{
char buffer[100];
USART_Receive(buffer);
// 假设接收到的 NMEA 格式为 $GPRMC
sscanf(buffer,"$GPRMC,%*f,A,%f,N,%f,E",&latitude,&longitude);
sprintf(info,"Lat:%.4f Lon:%.4f",latitude,longitude);
}
3.3 GSM 短信发送与接收
void GSM_SendSMS(char *number, char *text)
{
USART_SendString("AT+CMGF=1\r\n"); // 设置短信文本模式
Delay_ms(100);
USART_SendString("AT+CMGS=\"");
USART_SendString(number);
USART_SendString("\"\r\n");
Delay_ms(100);
USART_SendString(text);
USART_SendData(0x1A); // 发送结束符
}
3.4 DHT11 温湿度读取
uint8_t DHT11_Read(float *temperature, float *humidity)
{
uint8_t data[5];
if(DHT11_ReadData(data) == SUCCESS)
{
*humidity = data[0];
*temperature = data[2];
return SUCCESS;
}
return ERROR;
}
3.5 ADXL345 计步程序
int ADXL345_GetSteps(void)
{
int x,y,z;
int step_count = 0;
ADXL345_ReadXYZ(&x,&y,&z);
if(abs(x) > THRESHOLD || abs(y) > THRESHOLD || abs(z) > THRESHOLD)
{
step_count++;
}
return step_count;
}
4 总结
本文介绍了一个 基于 STM32 单片机的智能手表设计,其主要功能包括 GPS 定位、GSM 短信上报、温湿度检测、运动计步、LCD 显示和手电筒功能。通过 STM32F103 单片机作为核心控制器,各功能模块实现了有机结合,形成了完整的智能穿戴应用系统。
- 在硬件设计方面,系统涵盖了 LCD 显示、GPS、GSM、DHT11、ADXL345、LED、按键与电源管理等核心电路。
- 在软件设计方面,通过模块化编程方法,实现了对 GPS 数据解析、短信收发、温湿度检测、步数计算和按键交互等功能的驱动与控制。
- 系统支持自动与人工触发短信上报位置,兼顾了被动查询和主动汇报,实用性强。
该设计不仅可应用于智能穿戴产品的开发与实验,还能为物联网设备、移动监控和智能定位系统提供参考,具有广泛的推广价值和应用前景。