基于STM32的智能药盒,主控使用STM32F103
一、任务书1.1设计(研究)目标:该药盒可避免其忘记服药、服药拖延、反复服药等状况,让患者准确无误的做到遵守医嘱按时服药。
提醒患者服药
监督患者是否已经取药
记录下吃药时间
警提醒
1.2设计(研究)内容:以STM32单片机为主控芯片,
外部扩展指纹识别传感器识别家人的身份,然后控制舵机转盘分配相应的药物,从而达到“一对多服务”的目的;
条形码识别模块将不同药物的条形码录入到系统中,从而达到精准管理药物的目的(此功能可去掉);
语音模块负责语音引导用户操作,显示模块负责显示时间、温度、服药参数等信息,按键模块负责实现各个参数的设定,从而达到人机交互的目的;
存储模块负责存储成员的服药参数和药物信息,采用支持掉电不丢失数据的EEPROM芯片来存储信息,为了提高存储效率和方便管理信息,又采用数据分区存储技术。
二、框架思路三、硬件及代码ESP826601s
OLED
按键
蜂鸣器(板子自带)
继电器模块
其他器件参考第二部分框图
volatileu8t=0;volatileu8i=0;volatileu8key;volatileu16led0pwmval=499;volatileu16adcx0;volatileu16adcx1;voidmain(){if(()){charmessage='';message=();if(message=='t'){if(!isTaskTake){isTaskTake=true;("*************\n*开始取药过程*\n*************");//xTaskCreate(taskTakePills,"taskTakePills",20000,//pillsParameters,1,NULL);takePills(3,1);}else{("已经有一个取药任务了");}}if(message=='i'){//开盖if(!isTaskTake){isTaskTake=true;taskOpenBox(NULL);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='j'){//关盖if(!isTaskTake){isTaskTake=true;taskCloseBox(NULL);digitalWrite(PIN_ENABLE,HIGH);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='m'){//关盖if(!isTaskTake){isTaskTake=true;digitalWrite(PIN_ENABLE,LOW);takePillsTest();digitalWrite(PIN_ENABLE,HIGH);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='g'){//左旋if(!isTaskTake){isTaskTake=true;digitalWrite(PIN_ENABLE,LOW);taskRotate(LEFT);boxdisplacement--;digitalWrite(PIN_ENABLE,HIGH);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='h'){//右旋if(!isTaskTake){isTaskTake=true;digitalWrite(PIN_ENABLE,LOW);taskRotate(RIGHT);boxdisplacement++;digitalWrite(PIN_ENABLE,HIGH);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='k'){if(!isTaskTake){isTaskTake=true;("开始推出药盒");digitalWrite(PIN_ENABLE,LOW);taskPushBoxOut(NULL);delay(1000);("开始推入药盒");taskPullBoxIn(NULL);digitalWrite(PIN_ENABLE,HIGH);isTaskTake=false;}else{("已经有一个取药任务了");}}if(message=='3'){taskPillsOut(NULL);}if(message=='a'){//开气泵openPump();}if(message=='b'){//关气泵closePump();}}}..具体代码可以进群免费领取:扫码进群领资料
四、相关功能介绍服药录入及药物分配单元
药物录入及分配单元由条形码识别传感器和舵机转盘组成。条形码传感器负责将药物条形码录入系统,并且为每种药物设定一个独立的ID。舵机转盘的结构如图3所示,不同层的转盘之间独立旋转,同层转盘放同种药物,药物通过隔板分开,舵机旋转一次则分配1粒药物,最后药物都落入盛药杯,等待服药成员取出。
智能加热单元
智能加热单元由温度传感器、加热器和水箱组成。药盒在服药前1小时打开加热器,进入加热阶段,单片机GPIOC(13)引脚控制继电器打开加热器加热水箱里的水,待水温达到100°C时进入保温阶段,将温度维持在40~45°C。当所有的成员完成了本次服药后,则停止智能加热单元工作。
数据存储单元
数据存储单元采用AT24C04的EEPROM芯片,储存空间是4KB,512字节,与单片机IIC通信接口相连,用来保存服药信息、药物信息、药物库存、管理员密码和标志位等数据。