楊靜


摘要
運用Arduino和AppInventor2開發(fā)空氣溫濕度檢測系統(tǒng),將傳統(tǒng)交互設(shè)計教學中的界面與硬件相聯(lián)系,能夠更好的理解交互設(shè)計與如何增強用戶體驗。該系統(tǒng)主要由溫濕度傳感器、Arduino UNO開發(fā)板、藍牙通信模塊、手機App等構(gòu)成,具有結(jié)構(gòu)簡單、成本低廉、綜合能力要求較高的特點,適合作為項目教學案例應用于交互設(shè)計專業(yè)和創(chuàng)客教育中。
【關(guān)鍵詞】Arduino App Inventor2 溫濕度藍牙通信 交互設(shè)計
智能家居作為物聯(lián)技術(shù)在居住環(huán)境中的綜合體現(xiàn),現(xiàn)今己被越來越多的中國消費者所接受。環(huán)境監(jiān)測作為其中的一項重要組成部分,通常會通過各種傳感器對空氣溫度、濕度、燃氣濃度、火焰探測等項目進行監(jiān)測。其中空氣溫濕度的智能檢測常作為附加功能應用于空調(diào)、加濕器、除濕器等家電,需要啟動體量較大的家電才能實現(xiàn)檢測,成本較高;而傳統(tǒng)的簡易物理溫濕度測量儀不具備手機實時顯示的功能,便捷性較低。本文設(shè)計提出的基于Arduino和APP Inventor2的空氣溫濕度檢測系統(tǒng),具有通過手機APP遠程控制并實時顯示空氣溫濕度訊息的功能,具備系統(tǒng)結(jié)構(gòu)簡易、硬件連接簡單、軟件制作便捷、APP軟件界面用戶體驗順暢、成本較低的優(yōu)點,十分適合作為項目教學案例應用于交互設(shè)計專業(yè)和創(chuàng)客教育中的編程教育中。
1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)由檢測對象、溫濕度傳感器、Arduino開發(fā)板、無線通信模塊、手機川,P等部分構(gòu)成。檢測對象為空氣溫濕度信息;傳感器把在空氣中獲取的溫濕度信息轉(zhuǎn)變?yōu)殡娦盘栞敵鲋罙rduino開發(fā)板;開發(fā)板首先將接收到的空氣溫濕度信息進行數(shù)據(jù)處理,通過比特與數(shù)值的換算公式,輸出可直接讀取的溫濕度數(shù)字和符號信息,例如“32℃78%”;然后開發(fā)板通過無線通信模塊與控制手機相連接,手機APP接收并顯示開發(fā)板輸出的溫濕度信息。
2 Arduino的硬件連接與編程
本文設(shè)計中使用的電路硬件有ArduinoUNO板、DHT11溫濕度傳感器以及HC-06無線藍牙通信模塊。Arduino是一個集合開發(fā)板硬件、Arduino IDE程序開發(fā)環(huán)境、Arduino編程語言,三個部分的開源工作平臺,擁有適合編程零基礎(chǔ)的學生學習的編程語言和強大的控制器,因其跨平臺、開源性、易學性、靈活性、可擴展、硬件成本低等特點,活躍于國內(nèi)外的交互設(shè)計教育中。Arduino UNO是Arduino硬件家族中最為適宜初學者使用的開發(fā)板,主要由處理器、電源接口、擴展插槽,三大部分組成。DHT11溫濕度傳感器是一款可輸出數(shù)字信號的溫濕度復合傳感器,穩(wěn)定性較強,它的濕度精度為+-5%RH,量程為20%-90%,溫度精度為+-2℃,量程為0℃-50℃。由于本文設(shè)計中使用的APP hiventor2平臺支持的無線通信連接方式僅支持藍牙,所以選擇HC-06作為通信硬件。HC-06藍牙模塊是一個從機模式無線藍牙數(shù)據(jù)傳輸器件,具有低耗能、低成本、傳輸速率高等優(yōu)點,通電后可自動進入AT模式,快速閃爍紅色小燈,有藍牙設(shè)備接入時紅燈一直亮,本設(shè)計中用于接收和傳遞來自Arduino和手機APP的指令。
DHT11溫濕度傳感器與Arduino UNO的接線方式為:VCC接Arduino的5V;GND接Arduino的GND;NC為不連接空腳;DATA接Arduino的數(shù)字I/O腳位2。
HC-06藍牙模塊與Arduino UNO的接線方式為:VCC接Arduino的5V;GND接Arduino的GND;TXD發(fā)送端接Afduino的數(shù)字I/O腳位0(RN);RXD接收端接Arduino的數(shù)字I/O腳位1(TX)。
本設(shè)計中有關(guān)于Arduino的編程使用Arduino IDE進行開發(fā),用于程序驗證、上傳、調(diào)試和下載的操作,可在電腦端的串口監(jiān)視器中讀取實時采集到的空氣溫濕度數(shù)值。程序主要由定義變量及接口名稱、設(shè)置通信波特率、定義串口指令、獲取數(shù)據(jù)、校對數(shù)據(jù)、處理數(shù)據(jù)、空氣溫濕度數(shù)據(jù)顯示等部分構(gòu)成,在串口監(jiān)視器中輸入“A”時開始檢測溫濕度,輸入“B”時停止檢測,每隔1秒向串口監(jiān)視器發(fā)送一次溫濕度數(shù)據(jù),程序代碼如下所示:
#include
#define pin 2
int temp;//溫度
int hurni;//濕度
int tol;//校對碼
int j;
unsigned int loopCnt;
int chr[40]={0};//創(chuàng)建數(shù)字數(shù)組存儲數(shù)據(jù)
unsigned long time;
char flag_on=0;
void setupo(){Serial.begin(9600);//設(shè)置波特率為9600}
void loop()
{
while(Scrial.available()>0){
char c=Serial.read();
if(c=='A'){flag_on=1;//設(shè)置開}
else if(c=='B'){flag_on=0://設(shè)置關(guān)}
}
if(flag_on)//設(shè)置溫濕度檢測{
bgn:
delay(2000);
pinMode(pin,OUTPUT);//設(shè)置2號接口為輸出模式
digitalWrite(pin,LOW);//輸出低電平
delay(20);
digitalWrite(pin,HIGH);//輸出高電平
delayMicroseconds(40);
digitalWrite(pin,LOW);
piliMode(pin,INPUT);//設(shè)置2號接口為輸入模式
//高電平響應信號
loopCnt=10000;
while(digitaiRead(pin)!=HIGH){
if(loopCnt--==0){
//若不返回高電平,輸出提示從新開始
Scrial.println("HIGH");
goto bgn;
}
}
//低電平響應信號
loopCnt-30000;
while(digitalRead(pin)!=LOW){
if(loopCnt--==0){
//若不返回低電平,輸出提示從新開始
Serial.println("LOW");
goto bgn;
}
}
for(int i=0;i<40;i++){
while(digitaiRead(pin)==LOW){}
time=micros();
while(digitaiRead(pin)==HIGH){}
if(micros()-time>50){chr[i]=1;}
else{chr[i]=0;}
}
//將濕度的8位bit轉(zhuǎn)換為數(shù)值
humi=chr[0]*128+chr[1]*64+chr[2]*32+chr[3]*16+chr[4]*8+chr[5]*4+chr[6]*2+chr[7];
//將溫度的9位的bit轉(zhuǎn)換為數(shù)值
temp=chr[16]*128+chr[17]*64+chr[18]*32+chr[19]*16+chr[20]*8+chr[2]]*4+chr[22]*2+chr[23];
//將校對碼的8位的bit轉(zhuǎn)換為數(shù)值
tol=chr[32]*128+chr[33]*64+chr[34]*32+chr[35]*16+chr[36]*8+chr[37]*4+chr[38]*2+chr[39];
//輸出溫度和濕度
Serial.print(temp);
Serial.print("°C");
Serial.print(humi);
Serial.print("%");
delay(1000);
}
}
3 手機APP軟件設(shè)計
本文設(shè)計中采用APP Inventor2作為制作手機APP軟件的平臺。APP Inventor2是一個最初由谷歌公司發(fā)布,后移交給MIT進行維護的圖形可視化安卓手機應用制作平臺,廣泛應用于非計算機專業(yè)的手機應用制作中與樂高機器人創(chuàng)客活動中。該平臺的軟件設(shè)計工作區(qū)由組件設(shè)計和邏輯設(shè)計兩大部分組成,用戶可通過拖拽模塊進行積木式的拼接實現(xiàn)設(shè)計與編程,還可使用平臺附帶的AI伴侶或安卓模擬器進行實時調(diào)試,極大程度上的降低了學生的學習成本,提高了編程工作者的工作效率。據(jù)研究公司Gartner于2018年2月分享的數(shù)據(jù)表明,2017年全球銷售的智能手機中Android占據(jù)了86%的份額,本文設(shè)計中僅設(shè)計安卓應用符合手機應用市場趨勢。
手機App客戶端功能包括選擇藍牙設(shè)備、連接/斷開藍牙、開啟\關(guān)閉空氣溫度和濕度檢測、顯示溫濕度的數(shù)值4個功能模塊。在組件設(shè)計部分中,需要使用組件面板中的按鈕、列表選擇框、標簽、對話框、圖像、水平布局、垂直布局、藍牙客戶端、計時器8種組件,組件列表與實際手機App初始化界面如圖1所示,“開關(guān)關(guān)”組件屬性為不顯示,右側(cè)初始化界面中的自適應手機界面效果可通過調(diào)整組件列表中水平與垂直布局的組件屬性實現(xiàn)。
邏輯設(shè)計主要分為5個部分軟件初始化、藍牙設(shè)備的選擇、藍牙設(shè)備的連接、設(shè)置按鍵、數(shù)值信息接收。(圖2一圖5)為增強用戶體驗,在整個用戶操作過程中增加了多個狀態(tài)與提示的消息彈出框的設(shè)計,并設(shè)置界面中的按鈕按照操作步驟的順序啟用,啟用狀態(tài)下文字呈現(xiàn)黑色。按鈕填充色為深灰色,禁用狀態(tài)下文字與按鈕呈淺灰色,使界面視覺為界面操作順序進行正確的引導。
(1)軟件初始化。彈出一個消息框顯示“歡迎使用!”,界面中僅“選擇設(shè)備”列表選擇框可被點擊,其他按鍵皆不可用,溫濕度數(shù)值無顯示。
(2)藍牙設(shè)備的選擇。點擊“選擇設(shè)備”列表選擇框,選擇藍牙設(shè)備,彈出“請確認手機己和對方配對!”的消息框,“連接”按鈕啟用。在實際手機應用中操作時,首先需要完成手機藍牙與HC-06藍牙之間的配對,待配對成功后,方可利用平臺的藍牙客戶端組件進行藍牙設(shè)備的選擇。
(3)藍牙設(shè)備的連接。當“連接”按鈕被點擊時,如果藍牙為非連接狀態(tài),消息框提示“藍牙連接成功”,“連接”按鈕文本變?yōu)椤皵嚅_連接”,啟用兩個開關(guān)按鈕,關(guān)閉按鈕不顯示;如果藍牙為連接狀態(tài),消息框提示“藍牙己斷開”,“連接”按鈕文本變?yōu)椤罢堖B接”,禁用兩個開關(guān)按鈕和計時器。
(4)設(shè)置按鍵。點擊“開關(guān)開”,調(diào)用藍牙客戶端組件發(fā)送文本"A",啟用計時器,“開關(guān)開”隱藏,“開關(guān)關(guān)”顯示,Arduino端開始檢測空氣溫濕度;點擊“開關(guān)關(guān)”,調(diào)用藍牙客戶端組件發(fā)送文本“B”,關(guān)閉計時器,“開關(guān)關(guān)”隱藏,“開關(guān)關(guān)”顯示,Arduino端中止檢測溫濕度。
(5)數(shù)值信息接收。啟用計時器時,每100毫秒調(diào)用藍牙客戶端組件接收Arduino端發(fā)送的溫濕度數(shù)值,在“溫濕度數(shù)值”標簽處進行顯示。
4 結(jié)語
運用Arduino和APP Inventor2開發(fā)空氣溫濕度檢測系統(tǒng),將傳統(tǒng)交互設(shè)計教學中的界面與硬件相聯(lián)系,能夠幫助學生更好的理解交互設(shè)計與如何增強用戶體驗,提升學生綜合思考問題的能力。實際教學中可依據(jù)該項目引導學生進行溫濕度條件提示、溫度或濕度的單一應用、與其它電路器件組合等方向的編程與界面的設(shè)計探究。
參考文獻
[1]王登宏,歷佳男,賀雪輝等,基于Arduino的手機同步顯示溫濕度檢測系統(tǒng)的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2016,29(07):43-49.
[2]張展瑋,唐細永,葉展鵬,申耀武.基于Arduino控制的移動平臺設(shè)計[J].無線互聯(lián)科技,2017(02):48-49+57.
[3]劉彥,王倩,王可.Arduino單片機在產(chǎn)品交互原型設(shè)計課程中的實驗教學實踐[J].藝術(shù)科技,2016(12):1-3.