一.系统概述
1. 组网通信:药舱和手环通过组网通信,实现用户心率健康信息的传输。异常心率时,系统触发语音提醒用户寻求帮助。
2. 药舱端设计:集成GPS定位和无线通信功能,实时获取药舱位置信息,并将心率和位置数据发送至小程序端供查看。
3. 实时监测与提醒:监测药舱是否闭合,超过一分钟未闭合时触发电子音警报,同时发送短信提醒家人,确保第一时间得到响应。
二.电路设计
电路图采用Altium Designer进行设计:
1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心;
2. 使用Zigbee组网通信模块进行组网通信,模块与单片机之间需要通过UART串口进行连接;
3. 通过pulse sensor心率传感器进行心率检测,输出的数字需要接单片机的GPIO脚;
4. 使用JR6001进行语音播报,并通过UART串口与单片机进行连接;
5. 通过GPS定位模块ATGM336H进行位置检测,并通过UART串口与单片机进行连接;
6. 通过光电开关进行人体检测,模块的数据输出脚与单片机的GPIO口直接连接;
7. 通过DS1302实现时钟定时,并通过SDA、SCK、DAT三个引脚与单片机进行连接;
8. 使用GSM通信模块SIM800C将发送短信到手机,GSM模块与单片机通过UART串口进行通信;
9. 通过ESP8266-01S将检测到数据上传到上位机,通过UART串口与单片机进行通信。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "math.h"
#include "key.h"
#include "OLED_I2C.h"
#include "Beep_Led_Relay.h"
#include "Control_Report_To_Police.h"
/************************************************
版权:小常硬件
公众号:微信搜索“小常硬件“在公众号免费下载相关资料
************************************************/
int main(void)
{
u32 bonud = 9600;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
Beep_init();
Beep=1;//蜂鸣器初始化 系统上电后先让蜂鸣器停止叫
TIM4_Init(300,7200);
OLED_Init(); //OLED初始化
E18_D80_Init(); //PB15
DS1302_GPIO_Init_Write_Time(); //PA0 CLK PA1 DATA PA4 RST
JR6001_Uart1_init(&bonud); //PA9 语音
Zigbee_Uart3_Init(); //PB10 PB11
GPS_Uart1_Init(); // PA10
OLED_CLS(); //OLED清屏
OLED_ShowCN(32,2,0); //小常硬件
OLED_ShowCN(32+16,2,1);
OLED_ShowCN(32+32,2,2);
OLED_ShowCN(32+32+16,2,3);
delay_ms(500);
OLED_CLS();
ALi_ESP8266_GPIO_Init(); //PA2 PA3
MQTT_Buff_Init();
AliIoT_Parameter_Init();
OLED_ShowCN(0,0,4); //心率
OLED_ShowCN(0+16,0,5);
OLED_ShowCN(0,2,6); //经度
OLED_ShowCN(0+16,2,7);
OLED_ShowCN(0,4,8); //纬度
OLED_ShowCN(0+16,4,9);
OLED_ShowCN(0,6,10); //是否闭合
OLED_ShowCN(0+16,6,11);
OLED_ShowCN(0+32,6,12);
OLED_ShowCN(0+48,6,13);
while(1)
{
OLED_Display_Cotrol(); //显示控制函数
}
}