“復(fù)古手環(huán)”是開源Arduino可穿戴設(shè)備的第二版作品。以我來說,這不該稱為“智能手環(huán)”,這僅有簡單功能罷了。實(shí)際上,還不如稱之為活動(dòng)跟蹤記錄儀……只是“智能手環(huán)”這個(gè)詞對(duì)我來說更親切些。智能手環(huán)的重要特征是他們能通過藍(lán)牙和移動(dòng)設(shè)備相連,記錄用戶工作日程。
Arduino實(shí)現(xiàn)的復(fù)古手環(huán)只有單一功能,即通過加速計(jì)收集數(shù)據(jù),然后發(fā)到移動(dòng)設(shè)備上,移動(dòng)設(shè)備根據(jù)數(shù)據(jù)計(jì)算用戶消耗熱量和走動(dòng)步數(shù)。功能很簡單,也就意味著這個(gè)裝置結(jié)構(gòu)上比之前的“復(fù)古手表”簡單,那么根據(jù)你的個(gè)人品味制作也就變得容易了。
安卓應(yīng)用使用Arduino復(fù)古手環(huán)反饋信息計(jì)算行走步數(shù),而應(yīng)用的算法并不復(fù)雜。如果你對(duì)算法這一塊頗有心得,用你自己的算法替代亦可。手機(jī)應(yīng)用儲(chǔ)存消耗熱量數(shù)據(jù),所以你能得到每月/每日/每小時(shí)圖表報(bào)告。不過要提醒的是,Arduino復(fù)古手環(huán)的內(nèi)存很小,不能在自身儲(chǔ)存信息,它只能在連接到移動(dòng)設(shè)備上工作,也就是說你不能單靠Arduino復(fù)古手環(huán)收集數(shù)據(jù)。我認(rèn)為,這個(gè)問題在Arduino改進(jìn)后將得到很好解決。
第一步:工作機(jī)制
復(fù)古手環(huán)由Arduino部分和一個(gè)安卓應(yīng)用組成。
Arduino部分分為4個(gè)主要部分——Arduino板、加速計(jì)(MPU-6050)、藍(lán)牙模塊(HC-06)、聚合物鋰電池(充電板可選)。
安卓應(yīng)用也包括4個(gè)部分——安卓界面、藍(lán)牙管理、算法部分、后臺(tái)服務(wù)。
如果Arduino電源開啟,并和復(fù)古手環(huán)應(yīng)用配對(duì)完畢,那么主板將每秒讀取加速計(jì)數(shù)據(jù)20次。接著,它將數(shù)據(jù)每秒發(fā)送一次到移動(dòng)設(shè)備上。加速計(jì)測(cè)量x軸、y軸和z軸數(shù)據(jù)(20次x3軸),發(fā)送它們到移動(dòng)設(shè)備上。安卓應(yīng)用收到兩秒之間的數(shù)據(jù)進(jìn)行比對(duì),找出用戶在步伐加速上的周期。在用戶步伐加速時(shí),就計(jì)算為用戶踏出了一步。接著,安卓應(yīng)用根據(jù)用戶的體重和步數(shù)計(jì)算消耗的熱量,并按月、日和小時(shí)進(jìn)行疊加。
第二步:準(zhǔn)備工作
這里用了下列零件來制作: – Arduino Pro mini 3.3伏 – 加速計(jì)/陀螺儀傳感器(MPU-6050) – 藍(lán)牙模塊(HC-06) – USB異步收發(fā)機(jī)轉(zhuǎn)接器(FTDI)
手環(huán)部分(硬件)
Arduino
我用了“復(fù)古手表”上相同的Arduino板,Arduino Pro Mini 3.3伏(ATmega328)。選擇它的原因是它能在鋰聚合物電池3.7伏電壓下工作以及它的尺寸。如果你不介意模塊和電池的尺寸,而僅僅拿來測(cè)試,那用Arduino Nano板也未嘗不可(容易實(shí)現(xiàn)和測(cè)試)。Arduino Pro Mini以8兆赫頻率工作,在5伏時(shí)則是16兆赫,但8兆赫的頻率就足夠了。總的來說,你只需要準(zhǔn)備Arduino Pro Mini 3.3伏板和USB異步收發(fā)機(jī)轉(zhuǎn)接器模塊。
藍(lán)牙
大部分你能入手的藍(lán)牙模塊都是HC-06模塊,而且有控制界面板。界面板上有重設(shè)按鈕、工作狀態(tài)LED,支持3.3伏或5伏工作電壓,就顯得比較方便,但尺寸就較大了。而LED不是必須的,而且還耗電。所以我直接就用HC-06模塊,忽略界面板。
加速計(jì)
使用的是MPU-6050加速/陀螺儀傳感器模塊。如果你有其他類似的加速計(jì),也可以拿來替代。不過這么一來,源代碼就要做出改動(dòng)了。
電池
在這里我使用了鋰聚合物電池。單芯鋰電輸出電壓為3.7伏,能讓Arduino Pro mini正常工作。當(dāng)然市面上也有不同尺寸和容量大小的電池任君選擇。低于100毫安時(shí)的電池尺寸小,但不能保證持續(xù)供電,而且電量太低的話,啟動(dòng)系統(tǒng)都是個(gè)問題。我建議使用帶有過充放保護(hù)的電池,如果由可拆卸插座的就更好了。
為了方便,你也可以加上鋰電池充電模組,帶有USB充電口,從引腳輸出電源到Arduino上。
其他材料
你需要導(dǎo)線、電烙鐵、開關(guān)、電池座。而這個(gè)組裝教程也對(duì)你有所幫助。
安卓部分
復(fù)古手環(huán)的安卓程序在安卓4.0環(huán)境下運(yùn)行。如果你的安卓版本低于4.0,或者用的是iPhone的話,呵呵……
第三步:組裝
圖上顯示的是除了電池外每個(gè)模塊組裝后的結(jié)果。現(xiàn)在FTDI為整個(gè)模組供電,所以就不需要電池。
連接Arduino-藍(lán)牙模塊
如果想知道如何配對(duì)測(cè)試藍(lán)牙模塊,百度之!只要跟著教程對(duì)VCC、GND、TXD、RXD引腳接線即可。(VCC接3.3伏、GND接地、TX接D2、RX接D3)
連接Arduino-加速計(jì)(MPU-6050)
加速計(jì)模塊使用I2C界面。(VCC接3.3伏、GND接地、SDA接A4、SCL接A5)
連接Arduino-電池
供電是很簡單的事,只要將正極接入輸入端(RAW),負(fù)極接地(GND)即可。如果你想帶有充電功能,那么就使用鋰電池充電模塊吧。這是,你應(yīng)將電池的B+、B-接到充電模塊的正負(fù)輸出上,將輸出的正負(fù)極分別連到Arduino板的RAW和GND上。
檢查連接
完成了所有過程后,就輪到下面步驟了。除了電池外,連接了每個(gè)部分,電源由FTDI模塊供給,在源代碼上載和完成測(cè)試前就不要連接電池了。當(dāng)所有測(cè)試完成后,斷開FTDI模塊,將電池連上(或加上充電模塊)。
第四步:手環(huán)的Arduino源代碼
在GitHub上你能下載到手環(huán)的程序框架
上載Arduino源代碼
在代碼編譯完成后,你需要將其上載到Arduino板上。在上載之前,選擇主板型號(hào)“Arduino Pro mini 3.3伏(ATmega328)”,在上載前按下板上的重設(shè)按鈕。如果過程失敗,就會(huì)有下列信息反饋:
arvdud: stk500_getsync():not in sync: resp=0×00
顯示這段信息的原因通常是:
1.你在Arduino開發(fā)環(huán)境里選擇的主板類型和實(shí)際的不同。 2. TX、RX引腳連接錯(cuò)誤。 3. 用作連接TX、RX引腳的串口引腳出錯(cuò)。 4. 板上的啟動(dòng)引導(dǎo)故障。 5. 用戶使用了不支持自動(dòng)重設(shè)功能的USB模塊。
對(duì)于第一種情況,你需要在Arduino開發(fā)環(huán)境的[tools 》 board]中選擇正確的主板類型;第二種情況,檢查TX、RX引腳是否正確連接;改正后如果還是像第三種情況所說的那樣,將D0和D1引腳斷開連接;第五種情況,你只需按下重設(shè)按鈕。當(dāng)你按下Arduino開發(fā)環(huán)境里的上載按鈕后,觀察出現(xiàn)的信息,有一個(gè)時(shí)刻上它會(huì)從“Compiling”(編譯中)轉(zhuǎn)為“Uploading”(上載中)。如果你看到USB模塊上TX/RXLED燈在閃爍,那么表示上載過程正常。比較罕見的是情況4的那種,那你就用一塊 UNO板對(duì)故障的啟動(dòng)模塊進(jìn)行重寫。
調(diào)試
你需要確定連接好了每個(gè)模塊,工作無誤。首先運(yùn)行Arduino開發(fā)環(huán)境的串行監(jiān)視器,看看加速計(jì)是否正常運(yùn)行。(在完成上載程序代碼后,板上的 LED會(huì)亮,運(yùn)行程序試驗(yàn)。)因?yàn)橄旅娴脑创a有段檢錯(cuò)代碼,當(dāng)連接正常時(shí),它應(yīng)當(dāng)顯示Arduino板發(fā)回的數(shù)值。沒有的話,就證明加速計(jì)連接有問題。(在完成所有調(diào)試工作后,可以刪除檢錯(cuò)代碼。)
// Print the raw acceleration values《br》 Serial.print(F(“accel x,y,z: ”)); Serial.print(accel_t_gyro.value.x_accel, DEC); Serial.print(F(“, ”)); Serial.print(accel_t_gyro.value.y_accel, DEC); Serial.print(F(“, ”)); Serial.print(accel_t_gyro.value.z_accel, DEC); Serial.print(F(“, at ”)); Serial.print(iAccelIndex); Serial.println(F(“”));
現(xiàn)在,輪到檢查藍(lán)牙模塊。準(zhǔn)確連接VCC、GCN引腳后,移動(dòng)設(shè)備掃描下模塊應(yīng)該能被找到。如果在設(shè)備列表上看不到HC-06模塊,就檢查一下電源引腳。完成這步后,是時(shí)候檢查程序應(yīng)用部分。
假設(shè)配對(duì)過程正常,但程序應(yīng)用收不到數(shù)據(jù),那么就是TX/RX引腳連接出了問題。換個(gè)說法,從Arduino到藍(lán)牙模塊的數(shù)據(jù)傳輸異常。
第五步:安裝運(yùn)行應(yīng)用
講解如何編譯及修改安卓源代碼會(huì)很長,所以這里就掠過了。不過你能在GitHub上下載整個(gè)復(fù)古手環(huán)安卓源代碼,并對(duì)其進(jìn)行修改,任意傳播,只要保留版權(quán)信息即可。在[RetroBand_AndroidRetroBand]文件夾內(nèi)可以找到安卓應(yīng)用的源代碼。
我將應(yīng)用放到了谷歌應(yīng)用商店上了,只要在上面搜索“RetroBand”就能找到,然后安裝。它在安卓4.0系統(tǒng)以上運(yùn)行。
安裝應(yīng)用,運(yùn)行程序,利用復(fù)古手環(huán)對(duì)移動(dòng)設(shè)備程序進(jìn)行校正,看應(yīng)用能否成功收到信息。安卓應(yīng)用有3個(gè)列表選單。
時(shí)間軸:這里每小時(shí)收集累計(jì)消耗熱量數(shù)據(jù),你能查到每小時(shí)、每日、每月消耗熱量數(shù)據(jù)。
圖表:顯示加速計(jì)收到的數(shù)據(jù),并將其繪制為圖表,你能看到3軸數(shù)據(jù)是如何變換的。
設(shè)置:這里配置程序設(shè)定,輸入自己體重。其他功能將陸續(xù)開放。
成功測(cè)試安卓應(yīng)用的話,連接鋰電池,完成接下來的工作。
復(fù)古手環(huán)技術(shù)參數(shù):
處理器:ATmega328-3.3v(8MHz),32KB閃存(2KB引導(dǎo)啟動(dòng)共享),2KB內(nèi)存,1KB EEPROM。
安卓4.0或以上的專用安卓應(yīng)用。
基于步數(shù)計(jì)算的消耗熱量計(jì)算功能。
累計(jì)消耗熱量數(shù)據(jù),將統(tǒng)計(jì)數(shù)據(jù)以每月、每日、每小時(shí)方式顯示出來。
實(shí)時(shí)監(jiān)測(cè)加速計(jì)上3軸數(shù)據(jù)變化。
開源。
在下圖你能看到產(chǎn)品原型——Arduino、加速計(jì)、藍(lán)牙模塊、充電模塊、鋰電池、電源開關(guān)的組合體。我故意抹上了一些膠,讓它看起來臟兮兮的,但還是能正常工作的。
第六步:包裝
如果你有一臺(tái)3D打印機(jī),那就試試看自己設(shè)計(jì)外殼。這里看到的外殼就是由一臺(tái)3D打印機(jī)打印的。
第七步:后記
復(fù)古手環(huán)是我的第二個(gè)作品,”自制智能手表(復(fù)古手表)“的后續(xù)作。我的智能手環(huán)比起其他活動(dòng)跟蹤產(chǎn)品的功能太簡單了,但藍(lán)牙模塊和加速計(jì)是其他作品要用到的基本模塊。根據(jù)我的程序源代碼,你能做出不同的改型。
我希望本教程對(duì)你有所幫助。感謝以下諸位幫我完成這個(gè)作品。
Chang-Han Jeon、Il-Yong Park、Byung-Gyu Kim、KyungReol Ku、Sang-Won Lee、Kyung-Bu Jeong。
-
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186952 -
可穿戴設(shè)備
+關(guān)注
關(guān)注
55文章
3814瀏覽量
167007 -
智能手環(huán)
+關(guān)注
關(guān)注
47文章
795瀏覽量
72871
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論