加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

STM32老人防跌倒报警GSM短信GPS定位设计(程序+原理图+PCB)

07/04 13:14
3756
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

本设计:
基于STM32老人防跌倒报警GSM短信GPS定位设计(程序+原理图+PCB
编号C0025

下载链接
C0025 完整资料下载链接:https://pan.baidu.com/s/1QR9G8q5qC0Tj4n8T60XGkw?pwd=ysss 提取码:ysss

功能描述:
本系统由基于STM32单片机核心板、ADXL345加速度传感器、GSM、GPS模块、指示灯、按键电率+蜂鸣器报警及电源组成。
1、板子正常情况下是竖直装在口袋里的(adxl345模块在下角竖直立着),一旦倾角传感器检测到平放即摔倒,蜂鸣器报警,且摔倒的时间持续超过15秒短信报警(15秒是为了确定老人已经跌倒且15秒钟都没有自行爬起来,需要报警提醒周围的人帮忙)。如果老人没有跌倒,而是弯腰等等,这属于误报警,则老人可以自己用按键取消键取消警报。
2、触发GSM模块实现短信的发送, 设备将会向人员发送信息,包括所在位置经纬度信息。
3、短信处理及初始化有状态指示灯指示。
注:GSM上电有几秒初始化,系统供电电源至少要支持5V/2A,GPS天线必须放到漏天位置。

原理图:
在这里插入图片描述

PCB:

在这里插入图片描述

源程序:

#include “led.h”
#include “delay.h”
#include “sys.h”
#include “timer.h”
#include “key.h”
#include “usart.h”
#include <string.h>
#include “adxl345.h”

unsigned char BufTab[10]; //wifi数据暂存
unsigned char Count; //串口数据计数
unsigned char UartBusy=0; //盘忙
unsigned char ReadFlag=0;//读取标志
unsigned char sendDataFlag=0;//发送短信标志
unsigned char i ;

unsigned char ReadAdxl345; //定时读取adxl345数据
unsigned char ErrorNum=0; //记录错误次数
unsigned char CheckNum=0; //检测次数
unsigned long ReportLater=0; //上报延时
unsigned long KeyLater=3; //按键延时计数

unsigned long Mid_Du; //经纬度处理 度
unsigned long Mid_Fen; //经纬度处理 分
unsigned long Mid_Vale; //经纬度处理 中间变量

char Lin0_No[16]=“N:000.000000”;//存储纬度
char Lin1_Ea[16]=“E:000.000000”;//存储经度

char Crtl_Z[1]={0x1a}; //发送短信标志

void dealGps(void) ;//gps数据处理

int main(void)
{
delay_init(); //延时函数初始化
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
LED_Init(); //初始化与LED连接的硬件接?
KEY_Init();
uart_init(9600);
uart2_init(9600) ;

 TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms

BUZZER = 1;delay_ms(100);BUZZER = 0;	//初始化
GSM_LED = 0;
 
i=5;
while(i--) delay_ms(100);//延时

Init_ADXL345();
if(Single_Read_ADXL345(0X00)==0xe5)
{
delay_ms(5);
}
else
{
delay_ms(3);
}

UART_SendStr(USART1 ,"AT+CMGF=1rn",11); //设置字符集
i=10;
while(i--) delay_ms(100);//延时

UART_SendStr(USART1 ,"AT+CSCS="GSM"rn",15);//设置文本?
i=10;
while(i--) delay_ms(100);//延时

GSM_LED =1;	//关闭LED指示
while(1)
{  
if(ReadAdxl345== 1)   //定时读取adxl345数据
{
  ReadAdxl345= 0;
  ReadData_x();  						//三轴检测函数
  CheckNum++;
  if((temp_X<550)||(temp_X>10000))        //方位值判断 查看正常次数
  {
    ErrorNum++;
  }
  if(CheckNum>=5)	  	//进行5次处理
  {
    if(KeyLater>=3)	  	//非按键下
    {
      if(ErrorNum>=1)	   //角度出现错误 5次出息1次情况
      {
        BUZZER = 1;	   //打开蜂鸣器
      }
      else
      {					
        BUZZER = 0;		//关闭蜂鸣器
        ReportLater=0;		//上报延时计数
      }					
    }
    ErrorNum=0;		  //清空滤波计数
    CheckNum=0;	
  }
}

if(ReportLater>=15)	//15s
{
  GSM_LED = 0;
		
  UART_SendStr(USART1 ,"AT+CMGF=1rn",11); //设置字符集
  i=3;
  while(i--) delay_ms(100);//延时
		
  UART_SendStr(USART1 ,"AT+CSCS="GSM"rn",15);//设置文本
  i=3;
  while(i--) delay_ms(100);//延时
		
		UART_SendStr(USART1 ,"AT+CMGSM="+8615555183057"rn",26); //测试号//**All notes can be deleted and modified**//

// UART_SendStr(USART1 ,“AT+CMGS=”+8615542546521"rn",26); //测试号
i=2;
while(i–) delay_ms(100);//延时

		UART_SendStr(USART1 ,"help me!",8); //发送经度		

    if(sysmode_GPS==1)		//gps有效
  {
			sysmode_GPS=0;					
			dealGps();	
			UART_SendStr(USART1 ,Lin0_No,12); //发送纬度
			UART_SendStr(USART1 ,Lin1_Ea,12); //发送经度		
		}
		else
		{
				UART_SendStr(USART1 ,"gps linking...",14); //gps无信号			
		}
  delay_ms(200);//延时
		
  UART_SendStr(USART1 ,( char *)Crtl_Z, 1);        //发送
  i=40;
  while(i--) delay_ms(100);//延时
		
  GSM_LED =1;		//led关闭
  ReportLater=0;	//上报标志清空
  KeyLater=0;	//按键清零延时处理
}
	
if(key==0)		 //按键处理
{
  delay_ms(3);  	//按键消抖动
  if(key ==0)		 //按键处理
  {
    ReportLater=0;	  //按键延时上报
    BUZZER = 0;		 //关闭蜂鸣器
    KeyLater=0;		//按键延时处理
  }
}

}

}

void dealGps(void)
{
Mid_Du=(gps_infor_weijing[0]-0x30)*10000000+(gps_infor_weijing[1]-0x30)*1000000; //处理经度扩大10000000

Mid_Fen=(gps_infor_weijing[2]-0x30)*10000000+(gps_infor_weijing[3]-0x30)*1000000+
	(gps_infor_weijing[4]-0x30)*100000+(gps_infor_weijing[5]-0x30)*10000+
		(gps_infor_weijing[6]-0x30)*1000+(gps_infor_weijing[7]-0x30)*100;          
Mid_Fen=Mid_Fen/60;                                                      //分秒换算为小数位
Mid_Vale=Mid_Du+Mid_Fen;         //最终为度格式000.00000000 非度分秒格式
Lin0_No[0]='N';                  
Lin0_No[1]=':';                  
Lin0_No[2]='0';                  
Lin0_No[3]=Mid_Vale/10000000+0x30;                  //转化为字符
Lin0_No[4]=(Mid_Vale/1000000)%10+0x30;
Lin0_No[5]='.';
Lin0_No[6]=(Mid_Vale/100000)%10+0x30;
Lin0_No[7]=(Mid_Vale/10000)%10+0x30;
Lin0_No[8]=(Mid_Vale/1000)%10+0x30;
Lin0_No[9]=(Mid_Vale/100)%10+0x30;
Lin0_No[10]=(Mid_Vale/10)%10+0x30;
Lin0_No[11]=Mid_Vale%10+0x30;

Mid_Du=(gps_infor_weijing[8]-0x30)*100000000+(gps_infor_weijing[9]-0x30)*10000000+(gps_infor_weijing[10]-0x30)*1000000; //处理经度扩大10000000     

Mid_Fen=(gps_infor_weijing[11]-0x30)*10000000+(gps_infor_weijing[12]-0x30)*1000000+
	(gps_infor_weijing[13]-0x30)*100000+(gps_infor_weijing[14]-0x30)*10000+
	(gps_infor_weijing[15]-0x30)*1000+(gps_infor_weijing[16]-0x30)*100; 
Mid_Fen=Mid_Fen/60;                                                //分秒换算为小数位
Mid_Vale=Mid_Du+Mid_Fen;                                          //最终为度格式000.00000000 非度分秒格式
Lin1_Ea[0]='E';                  
Lin1_Ea[1]=':';     
Lin1_Ea[2]=Mid_Vale/100000000+0x30;                           //转化为字符
Lin1_Ea[3]=(Mid_Vale/10000000)%10+0x30;
Lin1_Ea[4]=(Mid_Vale/1000000)%10+0x30;
Lin1_Ea[5]='.';
Lin1_Ea[6]=(Mid_Vale/100000)%10+0x30;
Lin1_Ea[7]=(Mid_Vale/10000)%10+0x30;
Lin1_Ea[8]=(Mid_Vale/1000)%10+0x30;
Lin1_Ea[9]=(Mid_Vale/100)%10+0x30;
Lin1_Ea[10]=(Mid_Vale/10)%10+0x30;
Lin1_Ea[11]=Mid_Vale%10+0x30;

}

在这里插入图片描述

下载方式关注 下方中间的微信公众号,任意回复

  • 设计资料获取联系方式.doc

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATXMEGA192D3-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, 9 X 9 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, MO-220VMMD, MLF-64
$5.62 查看
ATXMEGA16D4-AU 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQFP44, 10 X 10 MM, 1 MM HEIGHT, 0.80 MM PITCH, GREEN, PLASTIC, MS-026ACB, TQFP-44

ECAD模型

下载ECAD模型
$3.06 查看
MCF52258CAG66 1 Freescale Semiconductor MCF522XX 32-bit MCU, ColdFire V2 core, 512KB Flash, 66MHz, QFP 144
$12.68 查看

相关推荐

电子产业图谱