目录
一、前言
项目成品图片:
哔哩哔哩视频链接:
STM32智能药盒|医疗箱
(资料分享见文末)
二、项目简介
1.功能详解
基于STM32的智能药盒
功能如下:
- 基于STM32F103C8T6单片机主控
- 监测功能:环境温湿度、药品余量、人体吃药状态
- 缺药报警:药物重量为零时蜂鸣器报警提醒缺药
- 时间显示:可以设置和显示当前的实时时间
- 定时提醒:可以设置5个定时时间提醒吃药,每个时间可自由控制开关
- 语音播报:定时吃药时间到扬声器播报语音提醒吃药
- APP控制:连接蓝牙APP接收环境信息并可设置定时时间与开关
2.主要器件
- STM32F103C8T6单片机
- OLED 屏幕
- DHT11温湿度传感器
- 光电红外传感器
- HX711称重模块
- JR6001语音模块
- BT04A蓝牙模块
- 有源蜂鸣器
三、原理图设计
四、PCB硬件设计
PCB图
五、程序设计
#include "sys.h"
//#include "usart3.h"
SENSOR SensorData;//传感器结构体定义
THRESHOLD Threshold;//阈值结构体定义
SYSTEM System;//系统标志位结构体定义
void Public(void);
void Threshold_Init(THRESHOLD *Threshold);
int main(void)
{
delay_init();//延时函数初始化
MyRTC_Init();
MyRTC_SetTime();
NVIC_Config(); //中断优先级配置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Usart3_Init(9600);
USART2_Config();
u3_printf("AF:30");
delay_ms(1000);
u3_printf("A7:00001");
My_USART1();
DHT11_Init();
Beep_Init();//蜂鸣器初始化
DO_Init();
LED_GPIO_Config();//LED灯初始化
oled_Init();//oled初始化
KEY_Init();//按键初始化
Threshold_Init(&Threshold);//传感器阈值及执行器件开关变量初始化
//
oled_ShowCHinese(16 * 1, 2 * 0, 0);
oled_ShowCHinese(16 * 2, 2 * 0, 1);
oled_ShowCHinese(16 * 3, 2 * 0, 2);
oled_ShowCHinese(16 * 4, 2 * 0, 3);
oled_ShowCHinese(16 * 5, 2 * 0, 4);
oled_ShowCHinese(16 * 6, 2 * 0, 5);
Init_HX711pin();
Get_Maopi();
delay_ms(1000);
delay_ms(1000);
// Get_Maopi();
oled_Clear();
// TIM2_Init(2000-1,7200-1);
// oled_ShowString(0,2,"Connecting...",16);
/*******************************************/
while (1) {
KeyScan();//按键扫描
Get_Weight();
SensorData.Sensor1 = Weight_Shiwu; //获取药品重量
SensorData.Sensor4 = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6);
Get_dht11();//获取温湿度数据
Mode_Decide();//模式判定 (按键1选择模式)
Public();
delay_ms(50);
}
}
//向MQTT服务器发布消息
void Public(void)
{
u1_printf("A:%d#,B:%d#,C:%d#,D:%d#,E:%d#,F:%d#,G:%d#,H:%d#,I:%d#,J:%d#,K:%d#,L:%d#,M:%d#,N:%d#",
SensorData.Sensor1,
SensorData.Sensor2,
SensorData.Sensor3,
WhatTime,
Hour1,
Min1,
Hour2,
Min2,
Hour3,
Min3,
Hour4,
Min4,
Hour5,
Min5 );
}
void Threshold_Init(THRESHOLD *Threshold)
{
}
六、实验效果
七、资料内容