系统功能:
基于STM8的便携式智能药盒控制系统设计的总体方案设计,目前确定的模块主要有:
STM8、蓝牙模块、时钟芯片、时钟和复位电路、压力传感器、声光报警电路、按键模块、系统电源模块构成。
STM8:核心控制器,完成各模块的控制,读取传感器的数据加载到算法上进行处理存储。
蓝牙模块:连接手机或云端平台,完成数据的交互,实现药盒功能个性化控制、用药提醒、
数据共享和远程监控等功能。
时钟芯片:提供定当前时间和定时时间,达到定时提醒的作用。
时钟和复位电路:使电路进入一个能稳定操作的确定状态。
压力传感器:采集用药数据。
声光报警器:提醒患者服药。
按键模块:结束声光提醒,对便携式药盒进行简单控制。
系统电源模块:为整个系统供电。
主要功能模块原理图:
单片机接口:
按键及传感器电路:
蓝牙及蜂鸣器电路:
资料获取地址
系统主要功能模块代码
InitSystem();DelayMs(100);InitOled();InitOledDisp();//测试写DS1302时间// DS1302_WriteTime(&TimeBuffer);
//系统控制
void SystemControl(void){UpdateBleData();GetSystemTime();getHourVal = TimeDisplay.hour;getMinVal = TimeDisplay.minute;getAdcVal = ReadADCValue();//重量超标或定时时间到 if((getAdcVal>setAdcVal)||(getHourVal==setHourVal)){buzzerOn = true;}else{buzzerOn = false;}//蜂鸣器打开并且蜂鸣器报警if((buzzerOn==true)&&(buzzerOpen==true)){BUZZER_ON();}else{BUZZER_OFF();}}
系统显示:
//处理OLED显示内容void SystemDisplay(void){char textBuf[20];uint8_t i = 0;//第一行显示系统状态信息for(i=13; i<19; i++){OledShowCN(16+(i-13)*16, 0, i);}//第二行显示系统时间sprintf(textBuf, "Get %02d:%02d Set:%2d", getHourVal, getMinVal, setHourVal); OledShowString(0, 2, (uint8_t*)textBuf, OLED_FONT_8X16); //第三行显示药物重量sprintf(textBuf, "GW:%4d SW:%4d ", getAdcVal, setAdcVal); OledShowString(0, 4, (uint8_t*)textBuf, OLED_FONT_8X16); //第四行显示系统模式if((buzzerOpen==false)&&(buzzerOn==false)){sprintf(textBuf, "bOpen:F bOn:F "); }else if((buzzerOpen==false)&&(buzzerOn==true)){sprintf(textBuf, "bOpen:F bOn:T "); }else if((buzzerOpen==true)&&(buzzerOn==false)){sprintf(textBuf, "bOpen:T bOn:F "); } else if((buzzerOpen==true)&&(buzzerOn==true)){sprintf(textBuf, "bOpen:T bOn:T "); } OledShowString(0, 6, (uint8_t*)textBuf, OLED_FONT_8X16);}
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。