方志鵬 梁月放
關(guān)鍵詞:STC12C5A16S2;胰島素;藍(lán)牙;溫度控制
中圖分類號:TP31 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2022)36-0078-04
1 概述
由于經(jīng)濟(jì)水平的不斷發(fā)展、生活水平的提高、飲食習(xí)慣的改變、生活作息的不規(guī)律以及缺少一定運(yùn)動量的生活方式等諸多因素,使全球糖尿病發(fā)病率增長趨勢逐年遞增,糖尿病也因此成為世界上第三種嚴(yán)重危害人類身體健康的慢性疾病。根據(jù)研究數(shù)據(jù)表明,全球糖尿病患者已超過5億人,中國糖尿病患者人數(shù)位居全球第二,目前我國的糖尿病發(fā)病率高達(dá)9.6%,成年人糖尿病患病人數(shù)約為1.3億,而青少年患病人數(shù)也在不斷提升[1]。
據(jù)臨床試驗得知,胰島素能夠快速地降低血糖,是能夠有效治療糖尿病的藥物之一,因為胰島素是屬于蛋白質(zhì)類的一種激素,當(dāng)溫度過高時會導(dǎo)致蛋白質(zhì)變性,藥性失效。所以胰島素對存儲的溫度要求極高,一般存儲在2-8℃恒溫環(huán)境下,胰島素的恒溫儲存成為很多糖尿病人出行的一大困難。
本文根據(jù)實際生活需要設(shè)計了一款基于51單片機(jī)實現(xiàn)胰島素的低溫存儲系統(tǒng),利用恒溫片將熱量導(dǎo)出,達(dá)到恒溫的效果,可實時監(jiān)測存儲盒溫度參數(shù),當(dāng)溫度超過設(shè)定閾值,觸發(fā)報警功能。通過無線藍(lán)牙模塊將監(jiān)測的數(shù)據(jù)上傳到手機(jī)App,實現(xiàn)存儲盒和智能終端互聯(lián),方便用戶隨時掌握胰島素存儲的情況,將科技與現(xiàn)代生活相結(jié)合,用科技幫助人們提高生活質(zhì)量。
2 系統(tǒng)整體設(shè)計
系統(tǒng)以51單片機(jī)為核心,采用2000mAh鋰電池對系統(tǒng)各模塊供電,傳感器的使用包括DX-BT04-A 藍(lán)牙傳感器、LCD12864液晶顯示屏傳感器、DS18B20溫度傳感器等。按照各個模塊的功能,胰島素低溫存儲盒系統(tǒng)可以分為五個模塊:電源管理模塊、環(huán)境檢測模塊、人機(jī)交互模塊、控制預(yù)警模塊和數(shù)據(jù)處理模塊。胰島素低溫存儲盒系統(tǒng)整體設(shè)計結(jié)構(gòu)圖如圖1所示。
數(shù)據(jù)處理模塊向環(huán)境檢測模塊發(fā)送檢測系統(tǒng)內(nèi)部溫度指令后,環(huán)境檢測模塊將采集到的系統(tǒng)內(nèi)部溫度數(shù)值進(jìn)行模數(shù)轉(zhuǎn)換后,再將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊接收到轉(zhuǎn)換后的溫度數(shù)據(jù)后,控制預(yù)警模塊顯示相應(yīng)溫度數(shù)值和警報的開關(guān)狀態(tài)。若溫度超過最初設(shè)定的胰島素存儲溫度閾值,系統(tǒng)中控制預(yù)警模塊發(fā)出報警信號,達(dá)到提醒用戶的作用。
用戶可通過人機(jī)交互模塊實時獲取存儲盒狀態(tài),當(dāng)溫度過高時,手機(jī)終端會接收到預(yù)警信號,用戶也
可通過手機(jī)藍(lán)牙軟件向數(shù)據(jù)處理模塊發(fā)送相應(yīng)指令,獲取設(shè)備的溫度信息以及胰島素相關(guān)信息。系統(tǒng)中電源管理模塊分別向環(huán)境檢測模塊、人機(jī)交互模塊、控制預(yù)警模塊和數(shù)據(jù)處理模塊供電。
3 硬件電路設(shè)計
3.1 數(shù)據(jù)處理模塊設(shè)計
本系統(tǒng)使用STC12C5A16S2 作為主控芯片,STC12C5A16S2芯片擁有加強(qiáng)型8051內(nèi)核,內(nèi)置一個時鐘周期,處理數(shù)據(jù)高速準(zhǔn)確。32個通用I/O口,雙串口的設(shè)計,使系統(tǒng)可以外接更多模塊,增加系統(tǒng)的可用性。低功耗的設(shè)計,使系統(tǒng)的續(xù)航能力大大提升。此款單片機(jī)在電子產(chǎn)品的設(shè)計中,應(yīng)用最為廣泛,其功能強(qiáng)大、上手簡單、易操作、體積小、價格低廉等優(yōu)點很適合作為胰島素低溫存儲盒的主控芯片。本系統(tǒng)數(shù)據(jù)處理模塊設(shè)計電路原理圖如圖2所示。
數(shù)據(jù)處理模塊主要任務(wù)是通過I/O口,將各模塊連接起來,同時負(fù)責(zé)為環(huán)境檢測等模塊供電和數(shù)據(jù)傳輸。通過溫度傳感器采集到的數(shù)據(jù)轉(zhuǎn)換后在控制預(yù)警模塊進(jìn)行顯示與預(yù)警。通過人機(jī)交互模塊,使用戶隨時查看設(shè)備相關(guān)信息,完成相應(yīng)功能。
3.2 環(huán)境檢測模塊
環(huán)境檢測模塊的主要由DS18B20溫度傳感器構(gòu)成,該傳感器可將檢測到的溫度數(shù)據(jù)進(jìn)行模數(shù)轉(zhuǎn)換并輸出,可檢測的環(huán)境溫度范圍在-55℃~﹢125℃(-67℉~+257℉),分辨率最高可達(dá)12位,檢測精度控制在±0.5攝氏度以內(nèi)。可以直接將檢測的系統(tǒng)內(nèi)部溫度轉(zhuǎn)化為數(shù)據(jù)處理模塊可接收的數(shù)字信號,不需要為系統(tǒng)設(shè)計數(shù)模轉(zhuǎn)換電路,方便快捷,測量精準(zhǔn)[2]。環(huán)境檢測模塊電路原理圖如圖3所示。
環(huán)境檢測模塊工作方式可分為溫度檢測和數(shù)據(jù)處理兩部分,內(nèi)部進(jìn)行模數(shù)轉(zhuǎn)換,將模擬信號直接轉(zhuǎn)換為數(shù)字信號。采用單總線數(shù)據(jù)通信的通信方式,需要與數(shù)據(jù)處理模塊連接傳輸數(shù)據(jù)時,連接一根杜邦線即可實現(xiàn)雙向通信。將DQ引腳通過杜邦線連接到數(shù)據(jù)處理模塊上的P1_5引腳,VCC,GND連接到對應(yīng)的引腳上,完成數(shù)據(jù)傳輸[3]。
3.3 人機(jī)交互模塊
DX-BT04-A藍(lán)牙模塊被廣泛運(yùn)用于短距離通信領(lǐng)域。該模塊結(jié)構(gòu)簡單,功能眾多,支持UART接口和眾多串口協(xié)議,具有低功耗、接收和發(fā)送數(shù)據(jù)響應(yīng)快、傳輸速度快、穩(wěn)定性好、價格低廉等優(yōu)點,人機(jī)交互模塊實物如圖4所示。
用戶可以通過數(shù)據(jù)處理模塊的RXD和TXD兩個串口連接藍(lán)牙模塊,實現(xiàn)與人機(jī)交互模塊的通信。在使用此模塊之前我們需要進(jìn)行AT指令配置,通過USB轉(zhuǎn)TTL模塊連接電腦,再通過STC-ISP軟件發(fā)送AT指令,獲得藍(lán)牙模塊初始化信息,如發(fā)送AT+BAUD可獲得初始波特率,發(fā)送AT+ PIN可獲得配對碼,發(fā)送AT+VERSION可獲得版本號等信息。此系統(tǒng)使用的DX-BT04-A藍(lán)牙模塊默認(rèn)波特率為9600,即在代碼的初始化中波特率要配置正確,防止與藍(lán)牙模塊通信失敗[4]。
用戶在手機(jī)端應(yīng)用商城下載藍(lán)牙調(diào)試幫手App,也可以使用自己制作的藍(lán)牙App,打開藍(lán)牙,找到對應(yīng)的BT04-A藍(lán)牙模塊設(shè)備名稱進(jìn)行連接,連接成功后即可通過調(diào)試幫手接收數(shù)據(jù),也可通過調(diào)試幫手發(fā)送相應(yīng)指令獲取設(shè)備信息,最終實現(xiàn)手機(jī)與系統(tǒng)之間的通信。
3.4 控制預(yù)警模塊
控制預(yù)警模塊由LCD12864液晶屏模塊和蜂鳴器模塊組成,LCD12864液晶屏是在單片機(jī)開發(fā)中常用的一款液晶顯示屏幕,像素為128×64,常用工作電壓為2.8~5.5v,該型號液晶模塊具有眾多接口且接收顯示數(shù)據(jù)靈活簡單,對于指令的操作方便快捷,功能強(qiáng)大,功耗低等特點,其內(nèi)置的漢字庫和ASCll字符集使它可以簡單且快速地構(gòu)成中英文顯示圖形界面,也可根據(jù)用戶需求顯示圖像界面。本系統(tǒng)顯示的界面如圖5所示[5]。
當(dāng)溫度未超過設(shè)定的胰島素存儲溫度的閾值,屏幕顯示系統(tǒng)檢測到的溫度數(shù)值,警報為關(guān)閉狀態(tài)。若溫度超過設(shè)定的胰島素存儲溫度的閾值,屏幕會顯示警報:開,此時觸發(fā)蜂鳴器報警,發(fā)出“滴滴滴”的警報聲,達(dá)到提醒用戶的功能。
4 軟件系統(tǒng)設(shè)計
本系統(tǒng)是基于KEIL的uVision5的集成開發(fā)環(huán)境對數(shù)據(jù)處理模塊進(jìn)行的軟件系統(tǒng)設(shè)計,采用C語言編寫程序代碼,模塊化程序設(shè)計理念,便于理解與分析。主要包含系統(tǒng)主程序,LCD12864 顯示子程序,DXBT04-A 藍(lán)牙模塊子程序,DS18B20溫度傳感器子程序,蜂鳴器報警模塊子程序等組成[6]。胰島素低溫存儲盒程序設(shè)計流程圖如圖6所示。
4.1 LCD12864 顯示子程序
該模塊程序設(shè)計主要包括LCD12864初始化、寫入數(shù)據(jù)、寫入命令和字符串顯示等,LCD12864由單片機(jī)的P0和P1端口控制,在初始化中包括復(fù)位操作、對比度等操作,在向LCD12864進(jìn)行寫入數(shù)據(jù)或操作命令時,需注意時序再通過調(diào)用中斷程序?qū)崿F(xiàn)顯示功能,若寫入的時序沒有嚴(yán)格按照要求進(jìn)行編寫,則可能會導(dǎo)致液晶屏幕顯示亂碼或不顯示。
LCD12864顯示模塊部分代碼如下:
void dis(uchar x,uchar y,uchar *s) //顯示字符串
{
switch(y) //選擇縱坐標(biāo)
{
case 0:wcode(0x80+x);break; //第一行
case 1:wcode(0x90+x);break; //第二行
case 2:wcode(0x88+x);break; //第三行
case 3:wcode(0x98+x);break; //第四行
default:break;
}
while(*s>0)
{
wdata(*s);
delay(10);
s++;
}
}
4.2 DX-BT04-A 藍(lán)牙模塊子程序
DX-BT04-A藍(lán)牙模塊子程序設(shè)計主要包括藍(lán)牙模塊初始化、串口中斷的調(diào)用和用戶交互等,在藍(lán)牙模塊初始化程序設(shè)計,首先我們要設(shè)置藍(lán)牙模塊波特率初始化配置,DX-BT04-A藍(lán)牙模塊通過串口軟件STC-ISP發(fā)送AT指令A(yù)T+BAUD查詢波特率得知,波特率為9600,配置系統(tǒng)串口工作方式1。初始化配置完成后,在用戶交互的程序設(shè)計中,使用數(shù)組存儲獲取到的數(shù)據(jù),由于單片機(jī)的數(shù)據(jù)存儲在寄存器中,即利用賦值語句獲取到寄存器中的數(shù)據(jù)。使用標(biāo)志位“#”判斷用戶是否結(jié)束操作,最后利用標(biāo)志位flag進(jìn)行分類。
人機(jī)交互模塊部分代碼如下:
__interrupt void URX0_ISR(void) //藍(lán)牙模塊
{
Data = U0DBUF;
if(Data!='#'||RX_COUNT==32-1) //標(biāo)志位
{
RX_BUF[RX_COUNT++]=Data;
}
else{
for(i=0;i<RX_COUNT;f++)
{
RX_DAT[i]=RX_BUF[i];
}
RX_COUNT=0;
RX_OVER=1;
}
URX0IF = 0;
}
4.3 DS18B20溫度傳感器子程序
該模塊程序設(shè)計主要包括初始化即復(fù)位操作、讀取ROM操作指令、對RAM的讀,寫操作、收發(fā)數(shù)據(jù)等,在初始化的過程中檢測信號線是否被拉高或拉低,設(shè)置等待時間,若檢測到信號線被拉高則標(biāo)志著初始化完成,信號線被拉低則需要返回主程序,重新初始化。主控制器的延時至少需要達(dá)到0.48微秒,確保應(yīng)答操作不會出現(xiàn)錯誤。在接收或發(fā)送數(shù)據(jù)時,讀寫操作時間須至少保持0.06毫秒不變,以確保讀寫操作不會出現(xiàn)錯誤[7]。
環(huán)境檢測模塊部分代碼如下:
Void ReadTemperature() //測溫程序
{
uchar a=0;
uchar b=0;
uint t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5;
return(t);
}
5 組裝與調(diào)試
為確保整個系統(tǒng)的正確性與實用性,在硬件電路與軟件系統(tǒng)設(shè)計完成后,我們對整個系統(tǒng)進(jìn)行組裝與調(diào)試,檢查各個模塊連線是否正確,DS18B20溫度傳感器、DX-BT04-A 藍(lán)牙模塊、LCD12864顯示模塊等供電是否正常。確保線路連接正確后,查看LCD12864顯示模塊是否正常顯示溫度信息與警報開關(guān)狀態(tài),對系統(tǒng)進(jìn)行升溫操作,當(dāng)溫度超過設(shè)定的報警范圍,查看蜂鳴器報警模塊是否正常工作。為保證系統(tǒng)的可靠性,利用獨(dú)立溫度檢測設(shè)備對胰島素存儲盒系統(tǒng)內(nèi)部與外部溫度進(jìn)行溫度監(jiān)測,設(shè)備檢測溫度數(shù)據(jù)如表1所示。通過測量的數(shù)據(jù)發(fā)現(xiàn),該系統(tǒng)的恒溫控制系統(tǒng)能將溫度控制在3℃以下,遠(yuǎn)低于系統(tǒng)外部溫度,說明該系統(tǒng)安全可靠,能夠較好地保持溫度恒定,實現(xiàn)了胰島素的低溫存儲。
打開手機(jī)藍(lán)牙,連接藍(lán)牙模塊,在藍(lán)牙調(diào)試助手中查看是否可以接收溫度信息,發(fā)送相應(yīng)指令如溫度,過期信息等后查看是否可以正常接收反饋。最終經(jīng)過測試,系統(tǒng)運(yùn)轉(zhuǎn)正常,數(shù)據(jù)接收準(zhǔn)確無誤,完成整個系統(tǒng)的組裝與調(diào)試。人機(jī)交互模塊調(diào)試界面如圖7 所示,左圖為發(fā)送界面,右圖為接收界面。
6 結(jié)束語
本文設(shè)計了一套基于STC12C5A60S2芯片為主控芯片的51單片機(jī)、DX-BT04-A藍(lán)牙模塊、DS18B20溫度傳感器、LCD12864液晶顯示模塊、蜂鳴器報警模塊和串口通信的胰島素低溫存儲盒系統(tǒng)。藍(lán)牙模塊的應(yīng)用使得胰島素低溫存儲盒系統(tǒng)更加便捷,更加智能,用戶可通過發(fā)送指令隨時獲取設(shè)備相關(guān)信息。實驗結(jié)果表明,胰島素低溫存儲盒系統(tǒng)安全可靠,測溫精確,方便快捷,可模塊化組裝,極大地滿足了糖尿病人的日常生活需求。