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

基于STM32单片机智能手表GSM短信上报GPS定位防丢器设计

1 基于STM32单片机智能手表GSM短信上报GPS定位防丢器设计

本系统是一款以STM32单片机为核心的智能手表类设备,集成了GPS定位、GSM短信通信、LCD1602液晶显示、LED灯手电筒功能、按键交互及电源管理等多个模块,能够实现定位、防丢失提醒以及远程短信上报。其核心目标是为用户提供便捷、安全的随身防护方案,在老人、儿童以及重要物品的看护方面具有广泛的应用价值。


2 系统功能介绍

该设计的主要功能如下:

  1. 液晶显示:通过LCD1602液晶屏实时显示时钟、日期和GPS模块提供的经纬度信息,用户可通过按键在两类信息之间进行切换。
  2. GPS定位:通过GPS模块获取当前位置的经纬度坐标,结合网络浏览器即可查询到精确地理位置。
  3. 液晶清晰度调节:通过电位器调节LCD1602的对比度,以适应不同光照环境。
  4. 手电筒功能:利用LED灯实现手电筒功能,按下按键后点亮,再次按下即可关闭。
  5. 短信上报:通过第三个按键实现短信发送功能,将实时经纬度信息上报至指定手机号码。
  6. 短信指令获取:绑定的手机号码可以主动发送“GET”指令到设备,设备会自动回复当前经纬度信息。
  7. 短信状态指示:短信发送和接收过程中有独立的LED灯进行状态提示。

该系统不仅能作为个人防丢器使用,还能为老人或儿童提供紧急情况下的位置信息上报,增强安全保障。


3 系统电路设计

系统的电路设计分为以下几个模块,每个模块各自独立,又通过STM32单片机进行统一管理与协调。

3.1 STM32单片机最小系统电路

STM32单片机作为整个系统的控制核心,负责采集GPS数据、控制LCD1602显示、管理按键输入、驱动LED手电筒以及与GSM模块进行串口通信。

  • 主控芯片:STM32F103C8T6
  • 主要外设接口:USART串口通信(GPS、GSM)、GPIO接口(按键、LED)、ADC(电位器读取对比度)
  • 电源部分:采用3.3V稳压电源模块,保证单片机及外设稳定运行。

3.2 LCD1602液晶显示电路

LCD1602用于显示日期时间和经纬度信息。由于LCD1602为并行接口,通过数据线与STM32连接。系统通过一个按键实现两类显示信息的切换。

  • 显示内容:第一屏为时钟+日期;第二屏为GPS经纬度坐标。
  • 对比度调节:通过电位器调节Vo引脚电压,实现液晶对比度的调节。

3.3 GPS模块电路

GPS模块用于获取实时经纬度信息,常用型号为NEO-6M。

  • 通信接口:通过USART串口与STM32通信。
  • 输出数据:标准NMEA0183协议字符串(包括经纬度、时间、卫星数等信息)。
  • 电源电压:3.3V供电,避免与单片机电平不兼容。

3.4 GSM模块电路

GSM模块用于短信的发送和接收,常用模块为SIM900A或A6。

  • 功能:短信发送(上报经纬度)、短信接收(处理GET指令)。
  • 通信接口:与STM32通过USART串口连接,使用AT指令完成短信控制。
  • 指示电路:通过外接LED灯实时显示模块工作状态和短信收发状态。

3.5 按键电路

系统设有三个独立按键:

  1. 信息切换键:在LCD显示的时间日期和经纬度信息之间切换。
  2. 手电筒控制键:控制LED手电筒的开关,每次按下进行状态翻转。
  3. 短信发送键:手动触发短信发送功能,将当前位置信息上报到指定手机。

按键电路采用下拉电阻方式,按键按下时为低电平输入,便于STM32检测。

3.6 LED电路

LED部分包含两类:

  1. 手电筒LED:高亮白光LED,通过限流电阻与GPIO控制。
  2. 指示灯LED:用于显示短信发送、接收和初始化等状态。

3.7 电源电路

系统电源采用锂电池+稳压电路方案。

  • 锂电池:为系统提供便携供电。
  • 稳压模块:输出3.3V供电给STM32、GPS和部分外围电路,输出4V左右电压给GSM模块。
  • 充电电路:可选用TP4056模块,实现USB充电功能。

4 程序设计

本系统程序以STM32为核心,通过C语言编写,主要包含LCD显示、GPS数据解析、GSM短信处理、按键扫描、LED控制等模块。

4.1 LCD1602显示程序设计

LCD1602通过8位并行总线与STM32通信,显示内容包括时钟日期和GPS经纬度。

void LCD_ShowTime(char *time, char *date) {LCD_SetCursor(0,0);LCD_WriteString(time);LCD_SetCursor(1,0);LCD_WriteString(date);
}void LCD_ShowGPS(char *latitude, char *longitude) {LCD_SetCursor(0,0);LCD_WriteString("Lat:");LCD_WriteString(latitude);LCD_SetCursor(1,0);LCD_WriteString("Lon:");LCD_WriteString(longitude);
}

4.2 GPS数据解析程序设计

GPS模块输出的NMEA格式数据需要通过字符串解析获取经纬度信息。

void GPS_ParseData(char *nmea) {char *lat, *lon;if (strstr(nmea, "$GPGGA")) {lat = strtok(nmea, ",");for(int i=0;i<2;i++) lat = strtok(NULL, ",");lon = strtok(NULL, ",");strcpy(latitude, lat);strcpy(longitude, lon);}
}

4.3 GSM短信程序设计

GSM模块通过AT指令实现短信发送与接收。

void GSM_SendMessage(char *number, char *message) {USART_SendString("AT+CMGF=1\r");  delay_ms(100);USART_SendString("AT+CMGS=\"");USART_SendString(number);USART_SendString("\"\r");delay_ms(100);USART_SendString(message);USART_SendChar(0x1A); // Ctrl+Z结束
}

4.4 按键扫描程序设计

按键扫描采用轮询方式,按下后执行相应功能。

void Key_Scan() {if(KEY1_Pressed) {displayMode = !displayMode; // 切换显示内容}if(KEY2_Pressed) {LED_Toggle(); // 手电筒开关}if(KEY3_Pressed) {GSM_SendMessage("138XXXXXXXX", gpsData); // 短信上报}
}

4.5 LED控制程序设计

LED控制采用GPIO翻转方式。

void LED_Toggle() {if(LED_Status) {GPIO_ResetBits(GPIOB, GPIO_Pin_0);LED_Status = 0;} else {GPIO_SetBits(GPIOB, GPIO_Pin_0);LED_Status = 1;}
}

4.6 短信接收与指令处理程序设计

当设备接收到短信时,解析其内容,若为“GET”,则自动回复当前GPS坐标。

void GSM_ReceiveMessage(char *msg) {if(strstr(msg, "GET")) {GSM_SendMessage("138XXXXXXXX", gpsData);}
}

5 总结

本系统以STM32单片机为核心,结合GPS与GSM模块,实现了位置信息的采集、显示与短信上报功能,具有定位防丢、短信报警等实用功能。系统在电路设计上结构清晰,模块划分明确;在程序设计上实现了对各功能模块的有效管理和协调。通过该智能手表的实现,可以为用户提供可靠的位置信息安全保障,在儿童看护、老人防走失及物品防丢失等场景中具有实际应用价值。


文章转载自:

http://5pKM76wH.mhfbf.cn
http://EtLijWlA.mhfbf.cn
http://4cEAWG4U.mhfbf.cn
http://vvSqUMti.mhfbf.cn
http://bmpeGmB7.mhfbf.cn
http://GagQyTQr.mhfbf.cn
http://xO784ClJ.mhfbf.cn
http://ujNX6zwH.mhfbf.cn
http://Uu3QOblE.mhfbf.cn
http://cDbbXIM7.mhfbf.cn
http://XmJhJwnT.mhfbf.cn
http://iFImXf1L.mhfbf.cn
http://4lG0n2fp.mhfbf.cn
http://MFXL10h2.mhfbf.cn
http://WsosMx4q.mhfbf.cn
http://QpLtRl7D.mhfbf.cn
http://nL12966Y.mhfbf.cn
http://XF8REwAu.mhfbf.cn
http://tBmzws4T.mhfbf.cn
http://W9RxSbF1.mhfbf.cn
http://4RpnpCTp.mhfbf.cn
http://M2ms7AAS.mhfbf.cn
http://Gnps2vGU.mhfbf.cn
http://W2LaV774.mhfbf.cn
http://nyKkvBVb.mhfbf.cn
http://H3UtVlYI.mhfbf.cn
http://j8BEoC8U.mhfbf.cn
http://6kwdTTSC.mhfbf.cn
http://WAwZUVdE.mhfbf.cn
http://OfjdYcsP.mhfbf.cn
http://www.dtcms.com/a/383484.html

相关文章:

  • 力扣658.找到K个最接近的元素
  • LeetCode 面试经典 150_哈希表_赎金信(39_383_C++_简单)
  • LeetCode热题100--114. 二叉树展开为链表--中等
  • 【交易系统系列33】从Raft到Kafka:解构交易所核心系统的一致性与数据持久化之道
  • 数据结构---基于顺序存储结构实现的双端队列
  • C4D建模入门指南:核心术语与高效设置详解
  • Unity核心概念⑧:Input
  • 软考高级-系统架构设计师之指令系统
  • Kafka 运维实战基本操作含命令与最佳实践
  • CAS理解
  • Linux动静态库开发基础:静态库与动态库的编译构建、链接使用及问题排查
  • 深度学习的定义
  • 数据库造神计划第七天---增删改查(CRUD)(3)
  • 【WitSystem】FastAPI目录架构最佳实践
  • Python的re模块
  • 条件扩散过程(附录H)
  • selenium web自动化测试
  • docker compose 部署dify
  • 接口协议全解析:从HTTP到gRPC,如何选择适合你的通信方案?
  • 单例模式重新学习
  • 【系列文章】Linux中的并发与竞争[04]-信号量
  • Linux入门(二)
  • Transformer 面试题及详细答案120道(41-50)-- 训练与优化
  • UDP-Server(3)chat聊天室
  • 【不背八股】12.十大排序算法
  • 华清远见25072班网络编程学习day5
  • 【CMake】List
  • Linux系统中查找某个动态库例如.so文件是哪个软件安装的
  • c++ unqiue指针
  • ​Go语言实战案例 — 工具开发篇:编写一个进程监控工具​