基于51单片机的老人防跌倒报警器体温检测GSM短信上报原理图方案设计

硬件电路的设计

(下方附文件)
系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STC89C52单片机电路+ADXL345加速度传感器电路+按键电路+蜂鸣器报警电路+DS18B20温度传感器电路+LED灯电路+GSM模块电路+电源电路组成。
1、板子竖直放置的时候,蜂鸣器不报警,板子歪倒一定角度,则蜂鸣器鸣叫报警。一段时间约15s未回复正确状态,GSM发送报警信息给手机:Help me!!。
2、如果温度超过38度,蜂鸣器报警,持续温度过高约15s左右,同时短信报警:has a cold
3、设计带有误报警按键,蜂鸣器报警的时候,如果老人认为是误报警,则按键按下,蜂鸣器停止报警,如果持续问题存在还会报警。
4、短信处理过程有指示灯显示。
5、GSM模块是SIM800A,该模块和SIM900A电路程序完全兼容外观外形一模一样。
3.1.2系统总体结构
本系统具体框图如下图所示:
在这里插入图片描述
原理图:

在这里插入图片描述
GSM_SIM800A模块电路设计
GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。简单来讲,GSM模块加上键盘、显示屏和电池,就是一部手机。
SIM800A是SIMCOM公司推出的一款高性能工业级 GSM/GPRS 模块, 该模块具有极高的性价比,在双频的市场中占据极大份额。
GSM_SIM800A模块采用高性能工业级GSM/GPRS模块:SIM800A,工作频段:GSM900/1800MHz。硬件设计在官方设计上加以优化,采用高效开关电源供电,SIM卡采用主流的卡座,质量更坚固。GSM_SIM800A模块在外围硬件的设计上参考了SIM800A 模块的硬件设计指南,对板子的电源、保护和抗干扰上做足了功夫。电源采用开关电源模块供电,电源利用效率高。
模块应用领域:远程监控、远程智能抄表、智能家居和车载设备等远程通讯设备。
SIM800A是一款两频GSM/GPRS模块,为SMT封装。其性能稳定,外观小巧,性价比高,能满足客户的多种需求。SIM800A工作频率为GSM/GPRS 900/1800MHz,可以低功耗实现语音、SMS和数据信息的传输。SIM800A尺寸为24243mm,能适用于各种紧凑型产品设计需求。
一、主要特性
(1)两频900/1800MHz
(2)GPRS multi-slot class 12/10
(3)GPRS mobile station class B
(4)满足GSM 2/2+ 标准
– Class 4 (2W @900MHz)
– Class 1 (1W @1800MHz)
(5)尺寸: 24243mm
(6)重量: 3.1g
(7)通过AT命令控制(GSM 07.07 ,07.05 and SIMCOM 增强AT命令集)
(8)SIM应用工具包
(9)供应电压范围: 3.4 ~ 4.4V
(10)低功耗
(11)操作温度范围: -40℃ ~ 85℃
(12)数据传输GPRS class 12:最大85.6 kbps(下行速率)
(13)CSD达14.4 kbps
(14)140USSD
(15)非透传
二、在短信应用方面有如下特点
(1)点对点MO and MT
(2)短信广播
(3)文本和PDU模式
三、模块接口说明
(1)5V 接5V
(2)GND 接GND
(3)R 串口接收端,与模块通信用的
(4)T 串口发送端,与模块通信用的
四、模块使用说明
(1)开机异常或自动关机
如果发生如下现象:
a、上电后,看到绿灯开始闪烁,很快又灭了,关机了;
b、开机正常后,发送短信进行数据传输时突然就关机了;
以上现象在保证 SIM 卡正常时,一般都是供电不足造成的。
电源请保证以下几点:
a、电压为5V,电压过低,模块会不工作。
b、电流需保证能提供2A的峰值。开机和数据传输过程电流较大,输出电流不够会造成电压跌落,而关机。
c、电源电流纹波不要过大,电压波动大,模块也会关机。
模块接口原理图如下图所示。
在这里插入图片描述

软件

在这里插入图片描述

#include <reg52.h> 
#include <intrins.h>
#include <stdio.h>
#include  <math.h>    //Keil library  
#include"delay.h"
#include"18b20.h"
#include "adxl345.h"

sbit buzzer=P1^4;	  //定义接口
sbit key=P2^2;  
sbit led_gsm=P1^1;

unsigned long times_20ms=0;		  	//定时20ms计时

unsigned char shaidaoFlag=0;	//发送消息标志
unsigned char read_adxl345=0;	//读取标志
unsigned char sdDelaySec=0;		  //摔倒计时

unsigned char readTem=0;	//读取温度
unsigned char hotDelaySec=0;	//温度过高计时
unsigned char hotFlag=0;		  //温度过高标志

unsigned char i;

void Init_Timer0(void);//函数声明
void UART_Init(void);
void uartSendByte(unsigned char dat);
void uartSendStr(unsigned char *s,unsigned char length);

void main (void)
{
	static unsigned char ErrorNum=0;   //adxl345数据判断结果计数
	static unsigned char CheckNum=0;
	float temperature=0.0;
	Init_Timer0();        //定时器0初始化
	UART_Init();

	led_gsm = 0;
	for(i=0;i<20;i++)	 		//短暂延时gsm稳定
	{DelayMs(100);}

	Init_ADXL345();                 	//初+始化ADXL345
	Single_Read_ADXL345(0X00);	//读出的数据为0XE5,表示正确
	uartSendStr("AT+CMGF=1\r\n",11);
	buzzer=1;
	led_gsm =1;
	while(1)         //主循环
	{
		if(readTem==1)		 //定时读取温度标志
		{
			readTem=0;
			temperature=(float)ReadTemperature()*0.0625;   //读取温度

			if(temperature>=38.0)		  //温度过高
			{hotFlag = 1;}//温度过高标志			
			else
			{hotFlag=0;} 		//清除温度过高标志							

			if(hotFlag == 1) hotDelaySec++;//温度过高计时	 1s处理一次
			else hotDelaySec = 0;//否则清零

			if(shaidaoFlag == 1) sdDelaySec++;//温度过高计时  1s处理一次
			else sdDelaySec = 0;//否则清零
													
		}
		if(read_adxl345==1)
		{
			read_adxl345=0;
			ReadData_x();
			CheckNum++;
			if((temp_X<450)||(abs(temp_Y)>750))       //方位值判断 查看正常次数
			{
				ErrorNum++;
			}
			if(CheckNum>=5)	  	//进行5次处理
			{
				if(ErrorNum>1)	  //3次以上正常情况 不进行上报
				{shaidaoFlag =1;}//摔倒标志					
				else
				{shaidaoFlag =0;}//清楚 摔倒标志
				ErrorNum=0;		  //清空滤波计数
				CheckNum=0;		  //清除总计数				
			}
		}

		if((hotFlag == 1)||(shaidaoFlag == 1))//有异常
		{buzzer= 0;}
		else buzzer=1;			   //关闭蜂鸣器		

		if((hotDelaySec>=15)||(sdDelaySec>=15))//15S 上报
		{
			led_gsm=0;

			uartSendStr("AT+CMGF=1\r\n",11);
			for(i=0;i<3;i++)	 		//短暂延时gsm稳定
			{DelayMs(100);}

		    uartSendStr("AT+CSCS=\"GSM\"\r\n",15);
			for(i=0;i<3;i++)	 		//短暂延时gsm稳定
			{DelayMs(100);}

			uartSendStr("AT+CMGS=\"+8618105140357\"\r\n",26); //可以修改电话号码
//			SendStr("AT+CMGS=\"+8615706086115\"\r\n",26); //可以修改电话号码
			for(i=0;i<2;i++)	 		//短暂延时gsm稳定
			{DelayMs(100);}

			if(hotDelaySec>=15)
			{
				uartSendStr("Has a cold!",11);	//可以修改短信内容,11代表短信内容长度,不可以发汉字,如果发汉字的话,需要转化为特定的码
				hotDelaySec=0;	//清除计数
			}
			if(sdDelaySec>=15)
			{
			 	uartSendStr("Help me!!",9);	//可以修改短信内容,9代表短信内容长度
				sdDelaySec = 0;//清除计数
			}
			for(i=0;i<2;i++)	 		//短暂延时gsm稳定
			{DelayMs(100);}
								
			uartSendByte(0x1a);uartSendByte(0x1a);
			for(i=0;i<30;i++)	 		//短暂延时gsm稳定
			{DelayMs(100);}	

			led_gsm=1;
			
		}

		if(key==0)
		{
			hotFlag=0;	   //上报过热标志清零
			shaidaoFlag=0; //摔倒标志 清零
			buzzer=1;			   //关闭蜂鸣器
			
		}
	}
}

.

链接:https://pan.baidu.com/s/1F0WtP7gEZpGa6XQobYnAIA
提取码:vgsc

.

  • 7
    点赞
  • 0
    评论
  • 64
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

a_huan258147

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值