• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      讓Arduino成為Android的“可穿戴設(shè)備”

      2014-09-26 11:47謝作如
      中國(guó)信息技術(shù)教育 2014年17期
      關(guān)鍵詞:串口控件字節(jié)

      謝作如

      Android手機(jī)雖然已經(jīng)附帶了多種傳感器,如方向、重力、距離、加速度等。并且早在Android2.3(gingerbread)系統(tǒng)中,Google就提供了11種傳感器供應(yīng)用層使用。但是,并非所有Android手機(jī)都把這些傳感器配齊了,如溫度、濕度、氣壓之類的傳感器就不常見。為了使Android手機(jī)能支持更多的應(yīng)用,越來越多的手機(jī)外設(shè)就涌現(xiàn)出來,可穿戴設(shè)備開發(fā)在短時(shí)間內(nèi)就成為了硬件開發(fā)方面的“時(shí)尚”。其實(shí),可穿戴設(shè)備的開發(fā)門檻并不高,通過Arduino,我們也可以初步體驗(yàn)Android的“可穿戴設(shè)備”的開發(fā)。

      可穿戴設(shè)備指直接穿在身上,或是整合到用戶的衣服或配件的一種便攜式設(shè)備。手機(jī)可穿戴設(shè)備將會(huì)給我們的生活、感知帶來很大的轉(zhuǎn)變。但是,可穿戴設(shè)備中的傳感器未必一定是手機(jī)中所沒有的,如最近很流行的智能手環(huán),其核心傳感器就是加速度傳感器和陀螺儀,都是智能手機(jī)標(biāo)配的傳感器。我們選擇了溫度和濕度傳感器,通過Arduino將傳感器數(shù)值發(fā)送給Android手機(jī),以期通過這一項(xiàng)目來體驗(yàn)可穿戴設(shè)備和手機(jī)的信息互動(dòng)。

      ● 項(xiàng)目描述

      本項(xiàng)目設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,讓Arduino能通過藍(lán)牙將各種傳感器(以溫度和濕度傳感器為例)的信息傳輸?shù)紸ndroid手機(jī),并顯示出來。本項(xiàng)目的難度設(shè)計(jì)為中小學(xué)生都能完成,Arduino的程序我們選擇用ArduBlock編寫,而手機(jī)的程序由App Inventor編寫。這個(gè)項(xiàng)目的流程如圖1所示。

      ● 項(xiàng)目分析

      1.協(xié)議設(shè)計(jì)

      與本欄目上期文章《用Android控制Arduino小車》一樣,首先需要為Android和Arduino設(shè)計(jì)通訊協(xié)議。這個(gè)協(xié)議規(guī)定了數(shù)據(jù)的格式以及數(shù)據(jù)代表的意義。針對(duì)ArduBlock教育版和App Inventor的特點(diǎn),我設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,各類數(shù)據(jù)的含義說明如表1。

      因?yàn)锳pp Inventor沒有二進(jìn)制的數(shù)據(jù)處理能力,這個(gè)通訊協(xié)議只能使用字符形式傳送數(shù)值。雖然效率不高,但也通俗易懂。之所以采用6個(gè)字符,是因?yàn)锳rduino的A/d的轉(zhuǎn)換分辨率為10位,即0~1023之間,需要留下4個(gè)字符,第一個(gè)字符是為了標(biāo)識(shí)模擬傳感器的針腳。而第二個(gè)字符永遠(yuǎn)是1,并沒有實(shí)際作用,僅僅是因?yàn)樵贏rduBlock教育版可以使用“10000+傳感器值”的簡(jiǎn)單表達(dá)式來補(bǔ)足傳感器數(shù)值不足4位時(shí)需要補(bǔ)上的“0”。

      另外,ArduBlock教育版的串口打印會(huì)自動(dòng)加上回車(這也是教育版為了簡(jiǎn)化積木模塊而犧牲其更多功能的無奈之舉),回車和換行剛好要占去2個(gè)字節(jié),實(shí)際一次傳輸?shù)氖?個(gè)字符(字節(jié))。

      如果拋開這兩款軟件,我建議可以參照S4A的通訊協(xié)議,效率較高,2個(gè)字節(jié)就能完成一個(gè)傳感器數(shù)據(jù)的傳送。

      2.設(shè)備選擇

      雖然這是一個(gè)測(cè)試的項(xiàng)目,并非開發(fā)真正意義上的可穿戴設(shè)備產(chǎn)品,但我還是物色了一款體積較小的Arduino板子,做出“可穿戴”的感覺來。經(jīng)過比較,DFRobot公司推出的Bluno Nano主控板成了我的選擇。Bluno Nano集成了低功耗的藍(lán)牙4.0芯片,而且只有拇指大小,非常適合用來開發(fā)做可穿戴設(shè)備的原型(如下頁(yè)圖2)。

      除了Bluno Nano主控板外,只有硬幣般大小的Microduino的產(chǎn)品也很適合做可穿戴設(shè)備的原型(如圖3)。

      當(dāng)然,如果僅僅想測(cè)試Arduino和Android的連接,可以找任何一款藍(lán)牙模塊來實(shí)現(xiàn),具體可以參考本欄目的上期文章。至于溫度和濕度傳感器,網(wǎng)上可以選擇的店鋪很多,價(jià)格從幾元到十幾元不等,不再一一說明。

      ● 編程實(shí)現(xiàn)

      1.Arduino程序

      我們使用ArduBlock教育版來寫Arduino的代碼。ArduBlock教育版是一款經(jīng)過優(yōu)化的版本,界面清爽、分類清晰且命名規(guī)范,適合在中小學(xué)的課堂上使用。其串口輸出功能很簡(jiǎn)單,就一個(gè)“串口打印加回車”積木模塊,這一積木模塊和Arduino代碼的對(duì)應(yīng)關(guān)系如表2。

      因?yàn)楸?設(shè)計(jì)的協(xié)議,我編寫了從串口輸出模擬端口A0和A1值的代碼,每隔300毫秒傳輸一次數(shù)據(jù)。其中用“10000+傳感器值”的簡(jiǎn)單表達(dá)式,補(bǔ)足了傳感器數(shù)值不足4位時(shí)需要添加的“0”。這樣加上回車換行,傳輸一個(gè)傳感器的數(shù)值剛好需要8個(gè)字節(jié)(如圖4)。

      轉(zhuǎn)成Arduino代碼后為:

      int _ABVAR_1_A0 = 0 ;

      int _ABVAR_2_A1 = 0 ;

      void setup()

      {

      Serial.begin(9600);

      }

      void loop()

      {

      _ABVAR_1_A0 = ( analogRead(0) + 10000 ) ;

      _ABVAR_2_A1 = ( analogRead(1) + 10000 ) ;

      Serial.print("0");

      Serial.print(_ABVAR_1_A0);

      Serial.println();

      Serial.print("1");

      Serial.print(_ABVAR_2_A1);

      Serial.println();

      delay( 300 );

      }

      注意:如果出現(xiàn)下載失敗的情況,請(qǐng)參照本欄目上期文章進(jìn)行相應(yīng)處理。

      2.App Inventor程序

      Android端App程序的主要功能是接收Arduino發(fā)送的數(shù)據(jù),然后顯示在屏幕上。代碼并不復(fù)雜,除了常見的Label、TextBox、Button外,還需要ListPicker、BluetoothClient這幾個(gè)必要的控件。因?yàn)橐獙?shí)時(shí)接收數(shù)據(jù),我還加上了Clock這一時(shí)間控件。具體界面如圖5所示。

      App中所涉及控件的作用簡(jiǎn)要說明如表3。

      接下來,我們可以開始編寫代碼了,其中給ListPicker1控件寫選擇藍(lán)牙設(shè)備的代碼。需要注意的是,這個(gè)控件僅能顯示手機(jī)已經(jīng)配對(duì)過的藍(lán)牙設(shè)備(如圖6)。

      給Button1控件編寫Click事件,為了使程序更加完善,我添加了針對(duì)各種意外情況,會(huì)顯示不同提示的代碼(如圖7)。

      Clock1控件的TimerEnabled屬性默認(rèn)值為false,當(dāng)連接了藍(lán)牙設(shè)備,TimerEnabled就修改為true。Clock1控件Timer事件代碼如圖8所示。

      因?yàn)榇a篇幅過長(zhǎng),影響了截圖,這里我僅僅寫了一個(gè)傳感器。為了便于觀察,我將獲取的字符顯示在Label4上。

      3.運(yùn)行測(cè)試

      編譯為APK文件,然后安裝。App的運(yùn)行效果如圖9所示。Bluno Nano主控板上的藍(lán)牙默認(rèn)配對(duì)碼是1234,連接上后,就能看到傳送過來的數(shù)據(jù)了。

      ● 拓展應(yīng)用

      在本項(xiàng)目中,Android僅僅將接收到的傳感器數(shù)據(jù)顯示出來,并沒有做進(jìn)一步的處理,也沒有根據(jù)傳感器信息,控制Arduino執(zhí)行相應(yīng)的動(dòng)作。一般來說,手機(jī)還要對(duì)可穿戴設(shè)備的數(shù)據(jù)進(jìn)行進(jìn)一步處理,并存儲(chǔ)在云服務(wù)器上,以便更加深入地進(jìn)行分析。例如,智能手環(huán)可以統(tǒng)計(jì)用戶每天的運(yùn)動(dòng)路徑、消耗卡路里和攝入熱量,也能根據(jù)事先的設(shè)定,通過振動(dòng)馬達(dá)來提醒用戶應(yīng)該運(yùn)動(dòng)或者休息了。結(jié)合本欄目上一期文章的內(nèi)容,相信讓中小學(xué)生實(shí)現(xiàn)這樣的功能并不會(huì)很難。

      ● 總結(jié)

      本項(xiàng)目還可以應(yīng)用在某些特殊場(chǎng)合,如無線抄水電表,甚至也可以把Android作為Arduino的藍(lán)牙顯示屏來使用。藍(lán)牙4.0的功耗很低,應(yīng)用范圍很廣,Android手機(jī)結(jié)合Arduino后,功能將大大提高。從本質(zhì)上看,可穿戴設(shè)備和智能家居、物聯(lián)網(wǎng)并沒有太大的區(qū)別,App Inventor編程的價(jià)值就在于其和硬件結(jié)合緊密,讓學(xué)生們玩玩最新的技術(shù)吧。endprint

      Android手機(jī)雖然已經(jīng)附帶了多種傳感器,如方向、重力、距離、加速度等。并且早在Android2.3(gingerbread)系統(tǒng)中,Google就提供了11種傳感器供應(yīng)用層使用。但是,并非所有Android手機(jī)都把這些傳感器配齊了,如溫度、濕度、氣壓之類的傳感器就不常見。為了使Android手機(jī)能支持更多的應(yīng)用,越來越多的手機(jī)外設(shè)就涌現(xiàn)出來,可穿戴設(shè)備開發(fā)在短時(shí)間內(nèi)就成為了硬件開發(fā)方面的“時(shí)尚”。其實(shí),可穿戴設(shè)備的開發(fā)門檻并不高,通過Arduino,我們也可以初步體驗(yàn)Android的“可穿戴設(shè)備”的開發(fā)。

      可穿戴設(shè)備指直接穿在身上,或是整合到用戶的衣服或配件的一種便攜式設(shè)備。手機(jī)可穿戴設(shè)備將會(huì)給我們的生活、感知帶來很大的轉(zhuǎn)變。但是,可穿戴設(shè)備中的傳感器未必一定是手機(jī)中所沒有的,如最近很流行的智能手環(huán),其核心傳感器就是加速度傳感器和陀螺儀,都是智能手機(jī)標(biāo)配的傳感器。我們選擇了溫度和濕度傳感器,通過Arduino將傳感器數(shù)值發(fā)送給Android手機(jī),以期通過這一項(xiàng)目來體驗(yàn)可穿戴設(shè)備和手機(jī)的信息互動(dòng)。

      ● 項(xiàng)目描述

      本項(xiàng)目設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,讓Arduino能通過藍(lán)牙將各種傳感器(以溫度和濕度傳感器為例)的信息傳輸?shù)紸ndroid手機(jī),并顯示出來。本項(xiàng)目的難度設(shè)計(jì)為中小學(xué)生都能完成,Arduino的程序我們選擇用ArduBlock編寫,而手機(jī)的程序由App Inventor編寫。這個(gè)項(xiàng)目的流程如圖1所示。

      ● 項(xiàng)目分析

      1.協(xié)議設(shè)計(jì)

      與本欄目上期文章《用Android控制Arduino小車》一樣,首先需要為Android和Arduino設(shè)計(jì)通訊協(xié)議。這個(gè)協(xié)議規(guī)定了數(shù)據(jù)的格式以及數(shù)據(jù)代表的意義。針對(duì)ArduBlock教育版和App Inventor的特點(diǎn),我設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,各類數(shù)據(jù)的含義說明如表1。

      因?yàn)锳pp Inventor沒有二進(jìn)制的數(shù)據(jù)處理能力,這個(gè)通訊協(xié)議只能使用字符形式傳送數(shù)值。雖然效率不高,但也通俗易懂。之所以采用6個(gè)字符,是因?yàn)锳rduino的A/d的轉(zhuǎn)換分辨率為10位,即0~1023之間,需要留下4個(gè)字符,第一個(gè)字符是為了標(biāo)識(shí)模擬傳感器的針腳。而第二個(gè)字符永遠(yuǎn)是1,并沒有實(shí)際作用,僅僅是因?yàn)樵贏rduBlock教育版可以使用“10000+傳感器值”的簡(jiǎn)單表達(dá)式來補(bǔ)足傳感器數(shù)值不足4位時(shí)需要補(bǔ)上的“0”。

      另外,ArduBlock教育版的串口打印會(huì)自動(dòng)加上回車(這也是教育版為了簡(jiǎn)化積木模塊而犧牲其更多功能的無奈之舉),回車和換行剛好要占去2個(gè)字節(jié),實(shí)際一次傳輸?shù)氖?個(gè)字符(字節(jié))。

      如果拋開這兩款軟件,我建議可以參照S4A的通訊協(xié)議,效率較高,2個(gè)字節(jié)就能完成一個(gè)傳感器數(shù)據(jù)的傳送。

      2.設(shè)備選擇

      雖然這是一個(gè)測(cè)試的項(xiàng)目,并非開發(fā)真正意義上的可穿戴設(shè)備產(chǎn)品,但我還是物色了一款體積較小的Arduino板子,做出“可穿戴”的感覺來。經(jīng)過比較,DFRobot公司推出的Bluno Nano主控板成了我的選擇。Bluno Nano集成了低功耗的藍(lán)牙4.0芯片,而且只有拇指大小,非常適合用來開發(fā)做可穿戴設(shè)備的原型(如下頁(yè)圖2)。

      除了Bluno Nano主控板外,只有硬幣般大小的Microduino的產(chǎn)品也很適合做可穿戴設(shè)備的原型(如圖3)。

      當(dāng)然,如果僅僅想測(cè)試Arduino和Android的連接,可以找任何一款藍(lán)牙模塊來實(shí)現(xiàn),具體可以參考本欄目的上期文章。至于溫度和濕度傳感器,網(wǎng)上可以選擇的店鋪很多,價(jià)格從幾元到十幾元不等,不再一一說明。

      ● 編程實(shí)現(xiàn)

      1.Arduino程序

      我們使用ArduBlock教育版來寫Arduino的代碼。ArduBlock教育版是一款經(jīng)過優(yōu)化的版本,界面清爽、分類清晰且命名規(guī)范,適合在中小學(xué)的課堂上使用。其串口輸出功能很簡(jiǎn)單,就一個(gè)“串口打印加回車”積木模塊,這一積木模塊和Arduino代碼的對(duì)應(yīng)關(guān)系如表2。

      因?yàn)楸?設(shè)計(jì)的協(xié)議,我編寫了從串口輸出模擬端口A0和A1值的代碼,每隔300毫秒傳輸一次數(shù)據(jù)。其中用“10000+傳感器值”的簡(jiǎn)單表達(dá)式,補(bǔ)足了傳感器數(shù)值不足4位時(shí)需要添加的“0”。這樣加上回車換行,傳輸一個(gè)傳感器的數(shù)值剛好需要8個(gè)字節(jié)(如圖4)。

      轉(zhuǎn)成Arduino代碼后為:

      int _ABVAR_1_A0 = 0 ;

      int _ABVAR_2_A1 = 0 ;

      void setup()

      {

      Serial.begin(9600);

      }

      void loop()

      {

      _ABVAR_1_A0 = ( analogRead(0) + 10000 ) ;

      _ABVAR_2_A1 = ( analogRead(1) + 10000 ) ;

      Serial.print("0");

      Serial.print(_ABVAR_1_A0);

      Serial.println();

      Serial.print("1");

      Serial.print(_ABVAR_2_A1);

      Serial.println();

      delay( 300 );

      }

      注意:如果出現(xiàn)下載失敗的情況,請(qǐng)參照本欄目上期文章進(jìn)行相應(yīng)處理。

      2.App Inventor程序

      Android端App程序的主要功能是接收Arduino發(fā)送的數(shù)據(jù),然后顯示在屏幕上。代碼并不復(fù)雜,除了常見的Label、TextBox、Button外,還需要ListPicker、BluetoothClient這幾個(gè)必要的控件。因?yàn)橐獙?shí)時(shí)接收數(shù)據(jù),我還加上了Clock這一時(shí)間控件。具體界面如圖5所示。

      App中所涉及控件的作用簡(jiǎn)要說明如表3。

      接下來,我們可以開始編寫代碼了,其中給ListPicker1控件寫選擇藍(lán)牙設(shè)備的代碼。需要注意的是,這個(gè)控件僅能顯示手機(jī)已經(jīng)配對(duì)過的藍(lán)牙設(shè)備(如圖6)。

      給Button1控件編寫Click事件,為了使程序更加完善,我添加了針對(duì)各種意外情況,會(huì)顯示不同提示的代碼(如圖7)。

      Clock1控件的TimerEnabled屬性默認(rèn)值為false,當(dāng)連接了藍(lán)牙設(shè)備,TimerEnabled就修改為true。Clock1控件Timer事件代碼如圖8所示。

      因?yàn)榇a篇幅過長(zhǎng),影響了截圖,這里我僅僅寫了一個(gè)傳感器。為了便于觀察,我將獲取的字符顯示在Label4上。

      3.運(yùn)行測(cè)試

      編譯為APK文件,然后安裝。App的運(yùn)行效果如圖9所示。Bluno Nano主控板上的藍(lán)牙默認(rèn)配對(duì)碼是1234,連接上后,就能看到傳送過來的數(shù)據(jù)了。

      ● 拓展應(yīng)用

      在本項(xiàng)目中,Android僅僅將接收到的傳感器數(shù)據(jù)顯示出來,并沒有做進(jìn)一步的處理,也沒有根據(jù)傳感器信息,控制Arduino執(zhí)行相應(yīng)的動(dòng)作。一般來說,手機(jī)還要對(duì)可穿戴設(shè)備的數(shù)據(jù)進(jìn)行進(jìn)一步處理,并存儲(chǔ)在云服務(wù)器上,以便更加深入地進(jìn)行分析。例如,智能手環(huán)可以統(tǒng)計(jì)用戶每天的運(yùn)動(dòng)路徑、消耗卡路里和攝入熱量,也能根據(jù)事先的設(shè)定,通過振動(dòng)馬達(dá)來提醒用戶應(yīng)該運(yùn)動(dòng)或者休息了。結(jié)合本欄目上一期文章的內(nèi)容,相信讓中小學(xué)生實(shí)現(xiàn)這樣的功能并不會(huì)很難。

      ● 總結(jié)

      本項(xiàng)目還可以應(yīng)用在某些特殊場(chǎng)合,如無線抄水電表,甚至也可以把Android作為Arduino的藍(lán)牙顯示屏來使用。藍(lán)牙4.0的功耗很低,應(yīng)用范圍很廣,Android手機(jī)結(jié)合Arduino后,功能將大大提高。從本質(zhì)上看,可穿戴設(shè)備和智能家居、物聯(lián)網(wǎng)并沒有太大的區(qū)別,App Inventor編程的價(jià)值就在于其和硬件結(jié)合緊密,讓學(xué)生們玩玩最新的技術(shù)吧。endprint

      Android手機(jī)雖然已經(jīng)附帶了多種傳感器,如方向、重力、距離、加速度等。并且早在Android2.3(gingerbread)系統(tǒng)中,Google就提供了11種傳感器供應(yīng)用層使用。但是,并非所有Android手機(jī)都把這些傳感器配齊了,如溫度、濕度、氣壓之類的傳感器就不常見。為了使Android手機(jī)能支持更多的應(yīng)用,越來越多的手機(jī)外設(shè)就涌現(xiàn)出來,可穿戴設(shè)備開發(fā)在短時(shí)間內(nèi)就成為了硬件開發(fā)方面的“時(shí)尚”。其實(shí),可穿戴設(shè)備的開發(fā)門檻并不高,通過Arduino,我們也可以初步體驗(yàn)Android的“可穿戴設(shè)備”的開發(fā)。

      可穿戴設(shè)備指直接穿在身上,或是整合到用戶的衣服或配件的一種便攜式設(shè)備。手機(jī)可穿戴設(shè)備將會(huì)給我們的生活、感知帶來很大的轉(zhuǎn)變。但是,可穿戴設(shè)備中的傳感器未必一定是手機(jī)中所沒有的,如最近很流行的智能手環(huán),其核心傳感器就是加速度傳感器和陀螺儀,都是智能手機(jī)標(biāo)配的傳感器。我們選擇了溫度和濕度傳感器,通過Arduino將傳感器數(shù)值發(fā)送給Android手機(jī),以期通過這一項(xiàng)目來體驗(yàn)可穿戴設(shè)備和手機(jī)的信息互動(dòng)。

      ● 項(xiàng)目描述

      本項(xiàng)目設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,讓Arduino能通過藍(lán)牙將各種傳感器(以溫度和濕度傳感器為例)的信息傳輸?shù)紸ndroid手機(jī),并顯示出來。本項(xiàng)目的難度設(shè)計(jì)為中小學(xué)生都能完成,Arduino的程序我們選擇用ArduBlock編寫,而手機(jī)的程序由App Inventor編寫。這個(gè)項(xiàng)目的流程如圖1所示。

      ● 項(xiàng)目分析

      1.協(xié)議設(shè)計(jì)

      與本欄目上期文章《用Android控制Arduino小車》一樣,首先需要為Android和Arduino設(shè)計(jì)通訊協(xié)議。這個(gè)協(xié)議規(guī)定了數(shù)據(jù)的格式以及數(shù)據(jù)代表的意義。針對(duì)ArduBlock教育版和App Inventor的特點(diǎn),我設(shè)計(jì)了一個(gè)簡(jiǎn)單的通訊協(xié)議,各類數(shù)據(jù)的含義說明如表1。

      因?yàn)锳pp Inventor沒有二進(jìn)制的數(shù)據(jù)處理能力,這個(gè)通訊協(xié)議只能使用字符形式傳送數(shù)值。雖然效率不高,但也通俗易懂。之所以采用6個(gè)字符,是因?yàn)锳rduino的A/d的轉(zhuǎn)換分辨率為10位,即0~1023之間,需要留下4個(gè)字符,第一個(gè)字符是為了標(biāo)識(shí)模擬傳感器的針腳。而第二個(gè)字符永遠(yuǎn)是1,并沒有實(shí)際作用,僅僅是因?yàn)樵贏rduBlock教育版可以使用“10000+傳感器值”的簡(jiǎn)單表達(dá)式來補(bǔ)足傳感器數(shù)值不足4位時(shí)需要補(bǔ)上的“0”。

      另外,ArduBlock教育版的串口打印會(huì)自動(dòng)加上回車(這也是教育版為了簡(jiǎn)化積木模塊而犧牲其更多功能的無奈之舉),回車和換行剛好要占去2個(gè)字節(jié),實(shí)際一次傳輸?shù)氖?個(gè)字符(字節(jié))。

      如果拋開這兩款軟件,我建議可以參照S4A的通訊協(xié)議,效率較高,2個(gè)字節(jié)就能完成一個(gè)傳感器數(shù)據(jù)的傳送。

      2.設(shè)備選擇

      雖然這是一個(gè)測(cè)試的項(xiàng)目,并非開發(fā)真正意義上的可穿戴設(shè)備產(chǎn)品,但我還是物色了一款體積較小的Arduino板子,做出“可穿戴”的感覺來。經(jīng)過比較,DFRobot公司推出的Bluno Nano主控板成了我的選擇。Bluno Nano集成了低功耗的藍(lán)牙4.0芯片,而且只有拇指大小,非常適合用來開發(fā)做可穿戴設(shè)備的原型(如下頁(yè)圖2)。

      除了Bluno Nano主控板外,只有硬幣般大小的Microduino的產(chǎn)品也很適合做可穿戴設(shè)備的原型(如圖3)。

      當(dāng)然,如果僅僅想測(cè)試Arduino和Android的連接,可以找任何一款藍(lán)牙模塊來實(shí)現(xiàn),具體可以參考本欄目的上期文章。至于溫度和濕度傳感器,網(wǎng)上可以選擇的店鋪很多,價(jià)格從幾元到十幾元不等,不再一一說明。

      ● 編程實(shí)現(xiàn)

      1.Arduino程序

      我們使用ArduBlock教育版來寫Arduino的代碼。ArduBlock教育版是一款經(jīng)過優(yōu)化的版本,界面清爽、分類清晰且命名規(guī)范,適合在中小學(xué)的課堂上使用。其串口輸出功能很簡(jiǎn)單,就一個(gè)“串口打印加回車”積木模塊,這一積木模塊和Arduino代碼的對(duì)應(yīng)關(guān)系如表2。

      因?yàn)楸?設(shè)計(jì)的協(xié)議,我編寫了從串口輸出模擬端口A0和A1值的代碼,每隔300毫秒傳輸一次數(shù)據(jù)。其中用“10000+傳感器值”的簡(jiǎn)單表達(dá)式,補(bǔ)足了傳感器數(shù)值不足4位時(shí)需要添加的“0”。這樣加上回車換行,傳輸一個(gè)傳感器的數(shù)值剛好需要8個(gè)字節(jié)(如圖4)。

      轉(zhuǎn)成Arduino代碼后為:

      int _ABVAR_1_A0 = 0 ;

      int _ABVAR_2_A1 = 0 ;

      void setup()

      {

      Serial.begin(9600);

      }

      void loop()

      {

      _ABVAR_1_A0 = ( analogRead(0) + 10000 ) ;

      _ABVAR_2_A1 = ( analogRead(1) + 10000 ) ;

      Serial.print("0");

      Serial.print(_ABVAR_1_A0);

      Serial.println();

      Serial.print("1");

      Serial.print(_ABVAR_2_A1);

      Serial.println();

      delay( 300 );

      }

      注意:如果出現(xiàn)下載失敗的情況,請(qǐng)參照本欄目上期文章進(jìn)行相應(yīng)處理。

      2.App Inventor程序

      Android端App程序的主要功能是接收Arduino發(fā)送的數(shù)據(jù),然后顯示在屏幕上。代碼并不復(fù)雜,除了常見的Label、TextBox、Button外,還需要ListPicker、BluetoothClient這幾個(gè)必要的控件。因?yàn)橐獙?shí)時(shí)接收數(shù)據(jù),我還加上了Clock這一時(shí)間控件。具體界面如圖5所示。

      App中所涉及控件的作用簡(jiǎn)要說明如表3。

      接下來,我們可以開始編寫代碼了,其中給ListPicker1控件寫選擇藍(lán)牙設(shè)備的代碼。需要注意的是,這個(gè)控件僅能顯示手機(jī)已經(jīng)配對(duì)過的藍(lán)牙設(shè)備(如圖6)。

      給Button1控件編寫Click事件,為了使程序更加完善,我添加了針對(duì)各種意外情況,會(huì)顯示不同提示的代碼(如圖7)。

      Clock1控件的TimerEnabled屬性默認(rèn)值為false,當(dāng)連接了藍(lán)牙設(shè)備,TimerEnabled就修改為true。Clock1控件Timer事件代碼如圖8所示。

      因?yàn)榇a篇幅過長(zhǎng),影響了截圖,這里我僅僅寫了一個(gè)傳感器。為了便于觀察,我將獲取的字符顯示在Label4上。

      3.運(yùn)行測(cè)試

      編譯為APK文件,然后安裝。App的運(yùn)行效果如圖9所示。Bluno Nano主控板上的藍(lán)牙默認(rèn)配對(duì)碼是1234,連接上后,就能看到傳送過來的數(shù)據(jù)了。

      ● 拓展應(yīng)用

      在本項(xiàng)目中,Android僅僅將接收到的傳感器數(shù)據(jù)顯示出來,并沒有做進(jìn)一步的處理,也沒有根據(jù)傳感器信息,控制Arduino執(zhí)行相應(yīng)的動(dòng)作。一般來說,手機(jī)還要對(duì)可穿戴設(shè)備的數(shù)據(jù)進(jìn)行進(jìn)一步處理,并存儲(chǔ)在云服務(wù)器上,以便更加深入地進(jìn)行分析。例如,智能手環(huán)可以統(tǒng)計(jì)用戶每天的運(yùn)動(dòng)路徑、消耗卡路里和攝入熱量,也能根據(jù)事先的設(shè)定,通過振動(dòng)馬達(dá)來提醒用戶應(yīng)該運(yùn)動(dòng)或者休息了。結(jié)合本欄目上一期文章的內(nèi)容,相信讓中小學(xué)生實(shí)現(xiàn)這樣的功能并不會(huì)很難。

      ● 總結(jié)

      本項(xiàng)目還可以應(yīng)用在某些特殊場(chǎng)合,如無線抄水電表,甚至也可以把Android作為Arduino的藍(lán)牙顯示屏來使用。藍(lán)牙4.0的功耗很低,應(yīng)用范圍很廣,Android手機(jī)結(jié)合Arduino后,功能將大大提高。從本質(zhì)上看,可穿戴設(shè)備和智能家居、物聯(lián)網(wǎng)并沒有太大的區(qū)別,App Inventor編程的價(jià)值就在于其和硬件結(jié)合緊密,讓學(xué)生們玩玩最新的技術(shù)吧。endprint

      猜你喜歡
      串口控件字節(jié)
      使用“填表單”微信小程序 統(tǒng)計(jì)信息很方便
      基于.net的用戶定義驗(yàn)證控件的應(yīng)用分析
      字節(jié)跳動(dòng)瞄準(zhǔn)教育等新業(yè)務(wù)
      MCS—51單片機(jī)中的多串口通訊技術(shù)的應(yīng)用
      全國(guó)計(jì)算機(jī)等級(jí)考試機(jī)房準(zhǔn)備工作探討
      微機(jī)串口的測(cè)試診斷
      人類進(jìn)入“澤它時(shí)代”
      利用VF6.0的Timer控件實(shí)現(xiàn)動(dòng)畫效果
      Spreadsheet控件在Delphi數(shù)據(jù)庫(kù)系統(tǒng)中的編程與應(yīng)用
      基于VC串口通信的實(shí)現(xiàn)
      奉贤区| 霍林郭勒市| 甘谷县| 阿拉善盟| 勃利县| 铜陵市| 英德市| 光泽县| 象山县| 霍州市| 新昌县| 义马市| 星子县| 镇赉县| 榕江县| 濉溪县| 延寿县| 大理市| 旅游| 遵义县| 宝应县| 丰宁| 长寿区| 凉山| 安多县| 武宣县| 萍乡市| 丹东市| 正宁县| 兰考县| 康保县| 龙州县| 南开区| 宜州市| 定襄县| 柏乡县| 马尔康县| 孟津县| 政和县| 顺昌县| 如东县|