基于STM32单片机老人体温心率血氧跌倒定位短信报警

一.硬件及设计功能

       以STM32F103C8T6为中央处理器,GPS模块用采集数据,将数据发送给单片机后,单片机根据定位计算公式得出当前位置的经纬度信息和时间信息。经过LCD显示器处理后得出和时间信息SIM800模块发送短信到设定的手机号上,将检测到的经纬度和心率血氧体温等信息展示在短信上。
原理图如下: 


PCB图如下:


二.设计功能

1.电路供电部分:整个电路基本工作电压为5V;通过SIM800模块,将单片机和手机进行短信通信,手机上可以显示采集到的时间和经纬度信息。
2.STM32单片机作为CPU,进行数据的采样以及分析运算。最后通OLED液晶显示屏显示当前的数据信息。
3.通过GPS接收模块,采集到相应的检测到的卫星信号后,可以计算出卫星轨道参数等数据,最后接收机中的微处理器就可以按照定位解算算法进行定位解算,得出机器所在位置的经度、纬度信息。
4.通过ADXL345判断老人是否跌倒,MAX30102心率血氧传感器采集老人当前的心率和血氧值,通过DS18B20进行温度采集。通过这些传感器模块来判断老人当前生理状况。
5.通过GPS模块获取当前的GPS定位,并通过设备上的OLED显示屏可以得到当前测试地的经纬度及时间的信息。

三.程序

int main(void)
{
  char i, error_num = 0;
  extern const unsigned char BMP1[];
  u8 shanshuo=0,count;
  u8 count2=0,count3=0;
  
  DelayInit();
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  I2C_Configuration(); //IIC初始化
  CheckNewMcu();//检测是否为新的单片机
  OLED_Init(); //OLED初始化
  KEY_Init(); //按键初始化
  GPS_rx_flag = 0;
  Usart1_Init(9600);
  USART3_Init(9600);
  DelayMs(200);
  OLED_CLS();//清屏
  DS18B20_Init();
  OLED_DrawBMP(40,0,88,6,(unsigned char *)BMP1);//测试BMP位图显示
  for(i=0;i<7;i++)OLED_ShowCN(i*16+12,6,i+10,0);//测试显示中文:正在初始化中!
  gsm_init();//gsm初始化
  IIC_init();//IIC初始化
  adxl345_init();//ADXL345初始化
  Init_MAX30102();//MAX30102初始化
  memset(STM32_RX1_BUF, 0, STM32_RX1BUFF_SIZE);//清除缓存
  STM32_Rx1Counter = 0;
  GPS_rx_flag = 1;
 
  while(1)
  {
      SMS_Receive();//短信接收
      KeySettings();
      ShowHomePage();
      if(setn == 0)//不在设置状态下,读取相关数据
      {
          if (rev_stop == 1 && count3++>=5)   //如果接收完一行
          {
              if (GPS_RMC_Parse(STM32_RX3_BUF, &GPS)) //解析GPRMC
              {
                  DisplayLongitudeAndLatitude();    //显示经纬度信息
                  error_num = 0;
                  gps_flag = 0;
                  rev_stop  = 0;
                  GpsInitOkFlag=1;
              }
              else
              {
                  if (error_num++ >= 30) //如果数据无效超过30次
                  {
                      error_num = 30;
                      if(GpsInitOkFlag==1)
                      {
                          GpsInitOkFlag = 0;
                          OLED_ShowStr(40, 4, "           ", 2);
                          OLED_ShowStr(40, 6, "           ", 2);
                      }
                  }
                  gps_flag = 0;
                  rev_stop  = 0;
              }
              count3=0;
          }
          if(GpsInitOkFlag==0&&count++>=5)//无GPS信号,显示搜索信号
          {
              count = 0;
              shanshuo = !shanshuo;
              if(shanshuo==1){for(i=0;i<4;i++)OLED_ShowCN(i*16+48,4,i+17,0);OLED_ShowStr(40, 6, "    ...    ", 2);}
              else           {        OLED_ShowStr(40, 4, "           ", 2);OLED_ShowStr(40, 6, "           ", 2);}
          }
          DisplayTemperature();     //显示温度
          FallDetection();          //跌倒检测
          GetHeartRateSpO2();       //获取心率血氧
          DisplayHeartRateSPO2();   //显示心率血氧
      }
      AlarmAndSendSMS();           //蜂鸣器报警及其发送短信
      if(count2++>2)
      {
          Twinkle=!Twinkle;
          if(FallFlag==1)
          {
              if(FallTime>0)FallTime--; //当时间减到0,说明跌倒时间持续了5秒(这里只是大概5秒)
          }
          count2 = 0;
      }
  }
}
​

资料

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于STM32单片机老人跌倒报警系统,可以通过GSM短信上报来实现老人的紧急呼救和报警功能。该系统主要由三部分组成:传感器模块、单片机控制模块和GSM模块。 传感器模块用于检测老人的体位变化和跌倒情况。常见的传感器包括加速度传感器和姿势传感器,可以实时检测老人的体位和姿势是否发生变化。当传感器检测到老人跌倒时,传感器模块通过数字信号将跌倒信息发送给单片机控制模块。 单片机控制模块负责接收传感器模块发送的跌倒信息,并进行相应的处理。当单片机控制模块接收到跌倒信号后,会立即判断该信号的紧急程度,并启动GSM模块发送一条报警短信给预设的紧急联系人。同时,单片机控制模块还可连接蜂鸣器,触发报警声音,以提醒周围的人注意老人的情况。 GSM模块是该系统的关键部分,负责与移动通信运营商的网络进行通信。它能够通过GSM网络发送短信给预设的紧急联系人,报告老人跌倒情况和所在位置。GSM模块通常还具备定位功能,可以获取老人的位置信息,并在短信中附加上这些信息,以便追踪老人的具体位置。 综上所述,基于STM32单片机老人跌倒报警系统通过与传感器模块、单片机控制模块和GSM模块的协作,能够实时监测老人跌倒情况并及时报警。这一系统具备了定位能力和紧急呼救功能,能够保障老人的安全,并及时采取相应的救援措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值