1 – 引言
首先讓我們看下這個(gè)項(xiàng)目要考慮到的問題:
複製代碼
1.)使用100%Arduino兼容性硬件
2.)保證存儲(chǔ)器足夠大可以裝下大量的稍后會(huì)擴(kuò)展的新內(nèi)容
3.)電量最少夠1天用
4.)BLE既是中樞設(shè)備又是外圍設(shè)備
5.)體積足夠小
接下來的幾頁(yè)都是如何建造一個(gè)開源的手表?。ㄟ@個(gè)版本是最初版本,所以之后的內(nèi)容會(huì)有所更改來改進(jìn)設(shè)計(jì)!)
這個(gè)項(xiàng)目非常耗時(shí),既需要耐心又需要堅(jiān)定的決心完成細(xì)致的焊接項(xiàng)目(小電線是不是非常有趣呢?)
這張圖片是完成版的手表
2 – 零配件和工具
1.)Microduino Core + ATmega 644PA / ATmega1284P, 8mhz, 3.3v – http://www.microduino.cc
2.) 3.3v 穩(wěn)壓器 – http://www.pololu.com
3.) 觸感按鍵 – http://www.adafruit.com
4.) OLED 屏幕 – http://www.adafruit.com
5.) 500mah(毫安) 3.7v 鋰電池 – http://www.adafruit.com
6.) 藍(lán)牙LE芯片 BLE112 A – http://www.mouser.com
7.) 電源開關(guān) – http://www.adafruit.com
8.) JST-PH 2 針連接器 – http://www.adafruit.com
9.) 表帶 – http://www.amazon.com
10.) 細(xì)金屬絲 – http://www.adafruit.com
11.) LED亮片 – http://www.adafruit.com
12.) 振動(dòng)電機(jī) – http://www.radioshack.com
13.) 4* 3/4 英寸 4-40 螺絲 – http://www.fmwfasteners.com
14.) 4* 4-40 六角螺母 – http://www.pololu.com
15.) 微型USB前列充電器 – http://www.adafruit.com
16.) 陰極跳線 – http://www.adafruit.com
17.) 陽(yáng)極跳線 – http://www.adafruit.com
Misc 的其他部件:
複製代碼
1.) 10k ohm 電阻
2.) NPN 晶體管
3.) 0.1uF 電容
4.) 二極管
5.) 1k ohm 電阻
6.) 33 ohm 電阻
3D打印部件
配件包下載
http://oswatch.org/files/parts.zip
複製代碼
1.) 手表正面 1x - microduino_front.stl
2.) 手表背面(3 parts) 2x microduino_back_left_small.stl, 1x microduino_back_small.stl
3.) 邏輯框架 1x - microduino_frame_bluegiga.stl
4.) 手表填充 1x - microduino_fill_1.stl
5.) 連接端口 2x microduino_ftdi.stl
6.) 表帶支撐 2x - watch_strap.stl
工具
複製代碼
1.) CC 調(diào)試器 (編程藍(lán)牙芯片)
2.) PC (藍(lán)牙程序僅適用于PC)
3.) 一個(gè) FTDI 助手 (或者相似于FTDI - USB 編程器)
4.) 一個(gè)額外的 Arduino (如果你需要mod microduino時(shí),刻錄引導(dǎo)程序)
5.) 溫控烙鐵
6.) 藥芯焊絲
7.) 焊接管
8.) 細(xì)導(dǎo)線切割器
9.) 細(xì)導(dǎo)線剝線鉗
10.) Dremmel 工具
11.) 砂紙
12.) 強(qiáng)力膠
13.) 環(huán)氧樹脂
14.) 萬用表
15.) 鑷子
3 – 高層硬件
手表的核心由3個(gè)小型板子組成:1個(gè)microduino核+,1個(gè)Bluegiga ble112 芯片,和1個(gè)電壓調(diào)節(jié)器。
我選擇microduino core核+是因?yàn)樗拇笮?、在修改周期?m赫茲時(shí)可以在3.3v設(shè)備上運(yùn)行、以及它有比其他Arduino 內(nèi)核更大的內(nèi)存/IO。我目前的板子是ATmega644PA芯片。這是64K或者4K RAM的閃存,還有2K EEPROM。這提供了很大的代碼空間,還可以運(yùn)行一個(gè)Sharp內(nèi)存顯示(所以我還可以利用它做其他事情,因?yàn)樗苁‰姡┪視?huì)在未來移動(dòng)到ATmega1284P芯片,128K內(nèi)存,16K RAM,和4K eeprom。他們都有一些額外的I/O引腳,暫時(shí)我們還不需要使用他們進(jìn)行擴(kuò)展。
我花了很長(zhǎng)時(shí)間研究并測(cè)試不同的藍(lán)牙LE芯片,最終選定了BlueGiga ble112,因?yàn)樗∏伞?qiáng)大并且既可以作為中樞又可以作為外圍(對(duì)于不同軟件需求很重要)。另外,Jeff Rowberg已經(jīng)寫了一個(gè)非常棒的arduino庫(kù)/BLE配置設(shè)置為base,這樣會(huì)有很大幫助。(鏈接到他寫的庫(kù):BLE112 Arduino Library(https://github.com/jrowberg/bglib/tree/master/Arduino) 未來版本中可能使用 BLE113,因?yàn)樗w積更小、更省電,但是它需要手工焊接有點(diǎn)麻煩)
最后,我添加了一個(gè)穩(wěn)壓器提供來自Le電池的3.3v信號(hào)。它可能不是100%必須的,但是使用它會(huì)更加安全,還可以保護(hù)內(nèi)部硬件不受任何電壓尖峰的損傷。
板子覆蓋在一個(gè)3D打印出來的內(nèi)部框架上。
一旦這三個(gè)板子相連,microduino主要通過一個(gè)SoftwareSerial端口和Ble112.2的輸入按鈕進(jìn)行通信,這些板子使用軟件上拉電阻接通電影,但是第三個(gè)按鈕使用一個(gè)額外的下拉電阻,并且是一個(gè)硬件中斷引腳。這將讓Arduino被置于睡眠狀態(tài),由任何一個(gè)BLE112或者輸入按鈕喚醒。
屏幕通過預(yù)定義硬件SPI引腳連接到microduino,提供最快速的圖形更新。2個(gè)LED被隱藏用于debug和提醒模塊。最后還有一個(gè)小的振動(dòng)馬達(dá)。一個(gè)簡(jiǎn)單的晶體管電路提供所需的電流,因?yàn)榘l(fā)動(dòng)機(jī)不能直接通過引腳被驅(qū)動(dòng)。
4 – 構(gòu)建邏輯
這部分內(nèi)容是最難的、最仔細(xì)微妙的。要有足夠的耐心,不能急于求成。你的部件很容易被燒掉,床架一個(gè)隱藏焊接jump會(huì)花費(fèi)一個(gè)小時(shí)來追查。使用微線材進(jìn)行連接。導(dǎo)線是單芯,很容易就會(huì)破損。我建議用強(qiáng)力膠把焊接點(diǎn)粘起來進(jìn)行保護(hù),減少電線彎曲帶來的破損,尤其是焊接連接點(diǎn)。
從上面看這個(gè)板子的邏輯
從下面看這個(gè)板子的邏輯
步驟1)預(yù)焊接BLE112芯片:
你需要焊接。一旦你把BLE112放在這個(gè)框架里,它就很難焊接,所以如果你之前就焊接好,它就會(huì)稍微簡(jiǎn)單一點(diǎn)。確保你只使用了一點(diǎn)焊接,并且沒有任何短路(使用萬用表確認(rèn));
步驟2)放置黏合3個(gè)板子到3D打印的框架里:
盡量少用膠水。你可能不得不轉(zhuǎn)一下他們,如果你膠水用多了,就很難轉(zhuǎn)了。我建議只在角落用膠水。還要確保你的膠水沒覆蓋芯片(尤其是在BLE112芯片上)然后確保框架里沒有空間讓導(dǎo)線夠的到BLE112芯片。如果你的3D打印質(zhì)量不好,你可能需要使用烙鐵來"騰出更多空間"。如果你需要這么做,一定要小心。塑料非常包,熱量一過它就彎了。
步驟3)把BLE112連接到Microduino:
BLE112芯片指南
這個(gè)鏈接是BLE112的數(shù)據(jù)表https://www.bluetooth.org/tpg/RefNotes/BLE112_Datasheet1.pdf
複製代碼
1 - GND(接地) - Microduino ground
2 - AVDD - 3.3v 電源
3 - AVDD - 3.3v 電源
8 - p1_6 - Pin 5, 模塊喚醒
13 - p1_5 - Pin 7, Arduino 喚醒, 不是當(dāng)前使用
20 - DVDD - 3.3v 電源
23 - P0_5 - Pin 2 / Software Serial RX
24 - P0-4 - Pin 3 / Software Serial TX
29 - 復(fù)位 - Pin 4
你還想讓導(dǎo)線運(yùn)行盡可能流暢。目標(biāo)是防止導(dǎo)線受熱。用烙鐵在框架中搞出小凹槽,讓導(dǎo)線通過。對(duì)于接地或者3v3電源的導(dǎo)線來說,用膠水把這些地方連起來,但是要暫停焊接,直到你有另一根導(dǎo)線要連同一個(gè)引腳。
步驟四)把BLE112連接到程序:
BLE112芯片指南
複製代碼
4 - p2_2 - To Programmer
5 - p2_1 - To Programmer
接地、復(fù)位和3v3電源頁(yè)都需要編程器并且可以被共享。(從編程器引腳接地到microduino接地,連接3v3電源到microduino引腳3v3(也是你連接BLE112芯片到電源的地方),然后連接microduino最近的BLE引腳到編程器引腳)。
你可以通過把5個(gè)陰極跳線粘在一起,然后把他們削短來妥善處理他們(看圖)。
步驟5)測(cè)試:
如果你已經(jīng)焊接了基本的編程器連接,你要確認(rèn)你可以用它寫程序,使用CC Debugger調(diào)試。這里有一篇非常棒的文章告訴你怎么做。使用CC Debugger 編程BLE112(http://blog.bluetooth-smart.com/2012/09/16/programming-the-ble112-using-bgscript/)
使用預(yù)先寫好的文檔進(jìn)行測(cè)試(你需要這個(gè)庫(kù))。
步驟6)連接電源和 Microduino程序碼頭:
Microduino程序碼頭
外部程序碼頭可以讓你寫入microduino。這種連接是非常直接簡(jiǎn)單的:
複製代碼
RTS 引腳 - Microduino 上的 RST 引腳(復(fù)位線上外部增加一個(gè)10MF的電容)
TX 引腳 - Microduino 上的 RX 引腳
RX 引腳 - Microduino 上的 TX 引腳
接地引腳 - Microduino上的接地引腳
引腳的V - 電壓穩(wěn)壓器上的電壓輸入引腳
一旦你實(shí)現(xiàn)了這些連接,使V輸出和電壓穩(wěn)壓器的接地帶到3v3 vin和microduino的接地。這步應(yīng)該會(huì)讓你接通電源并編程microduino!
步驟7)增加3個(gè)按鈕:
手表右側(cè)這2個(gè)按鈕依靠?jī)?nèi)部上拉電阻以盡量減少額外硬件。當(dāng)他們關(guān)閉時(shí),這兩個(gè)按鈕簡(jiǎn)單的和兩個(gè)輸入按鈕引腳接地。
第三個(gè)按鈕會(huì)被用來中斷microduino的任何睡眠模式,并使用一個(gè)外部的下拉10K歐姆電阻。
基于按鈕的中斷連接3.3v到引腳6.
上面的按鈕接地到引腳14,下面的連接到引腳15.
現(xiàn)在你應(yīng)該有了一個(gè)完整的邏輯框架!你可以下載基本的代碼進(jìn)行測(cè)試,因?yàn)樗F(xiàn)在功能都有了就是沒有屏幕。你應(yīng)該可以測(cè)試基本的連接到iOS設(shè)備的功能。
5 – 構(gòu)建背面
背面是電源、振動(dòng)發(fā)電機(jī)和充電接口:
我強(qiáng)烈建議把正面和背面塑在一起,并使用他們來幫助黏合螺絲螺母。電機(jī)需要一些額外的邏輯來驅(qū)動(dòng)。當(dāng)我設(shè)置它時(shí),我有0.1uF的電容、二極管和33歐姆電阻和發(fā)電機(jī)相連,還有晶體管和1K歐姆電阻隱藏在手邊正面的下方。
電源/充電接口詳情
接電源非常簡(jiǎn)單。連接紅色的電源線(V+)到中間的開關(guān)。連接電源的黑色(接地)的導(dǎo)線到充電接口的接地引腳來控制AND把它連接到另一個(gè)導(dǎo)線(這個(gè)導(dǎo)線稍后會(huì)連接到邏輯框架)?,F(xiàn)在把充電端口旁邊的開關(guān)引腳連接到充電器的電壓引腳上。然后連接另一個(gè)開關(guān)引腳到一個(gè)導(dǎo)線(稍后會(huì)連接到邏輯框架)。在這步里,我在背面使用了4跟導(dǎo)線。1根用于電源,1根接地,另一個(gè)和正面的晶體管相連,還有一個(gè)會(huì)被用來連接電壓穩(wěn)定器的電壓輸出引腳。
6 – 構(gòu)建正面
正面放了一個(gè)屏幕、LED和晶體管邏輯
在放置屏幕前,你需要使用dremel切割器切斷下面兩個(gè)屏幕安裝點(diǎn)。你一定要非常小心,因?yàn)槿绻闱绣e(cuò)了或者破壞了平布的玻璃,那后果不堪設(shè)想,屏幕就不能用了。
手表背面細(xì)節(jié):
你可以在這里看到2個(gè)LED亮片(包括電阻)和晶體管/電阻邏輯。還有一點(diǎn)需要注意修剪屏幕安裝點(diǎn)。在你確保屏幕都搞定了之后使用用少量的強(qiáng)力膠。在我的這個(gè)版本里,我使用了3D塑料打印,所以LED亮片非常好的發(fā)揮了作用。如果你是用的是純色,你就得為每個(gè)LED鉆一個(gè)小孔了。
如果把2個(gè)LED接地連到了一條導(dǎo)線,你會(huì)省了很多煩惱,然后把那個(gè)接地連接到晶體管。最后連接OLED屏幕的接地。小心屏幕上用的膠水。如果你在玻璃正面使用了強(qiáng)力膠,你基本上就擦不下去了,然后這個(gè)地方會(huì)變得非常礙眼。
7 – 裝配
3個(gè)主要部分
屏幕正面、LED和晶體管邏輯
現(xiàn)在是時(shí)間把三樣?xùn)|西結(jié)合在一起啦!用細(xì)導(dǎo)線把這些粘起來,導(dǎo)線要足夠長(zhǎng)讓它可以折疊。這是 watch_padding.stl 文件,它可以讓你在邏輯框架上擴(kuò)展屏幕。我在第一個(gè)版本中給導(dǎo)線留下了很多空間(這種做法會(huì)讓屏幕里邏輯電路板高3mm。如果你做的很精確的話,這個(gè)高度可能會(huì)降下來。每個(gè)毫米會(huì)讓手表側(cè)面更低。)
屏幕被連接到了 microduino:
複製代碼
接地(晶體管/LDE接地) - microduino 接地
Vin - microduino 上的 3v3 電源
CS - 數(shù)字引腳 10
RST - 數(shù)字引腳 12
DC - 數(shù)字引腳 9
CLK - 數(shù)字引腳 13
DATA - 數(shù)字引腳 11
你還需要連接晶體管輸入到microduino的數(shù)字引腳17,2個(gè)LED電源線到數(shù)字引腳22和23。
連接背面:
複製代碼
連接開關(guān)電壓到電壓調(diào)節(jié)器的Vin
連接接地到microduino接地
連接一根來自發(fā)電機(jī)到電壓調(diào)節(jié)器VOut
連接另一根來自發(fā)電機(jī)的導(dǎo)線到屏幕旁邊的位于正面的晶體管。
假設(shè)你所有都做對(duì)了,你應(yīng)該就能開啟它了!
最終結(jié)果!
8 – 表帶
增加表帶
首先,在背面使用粗砂紙。這會(huì)讓膠水粘的更好。在我的塑料殼上上了曾清漆,我還想讓它附著的更好。我對(duì)準(zhǔn)表帶,用幾滴強(qiáng)力膠固定。然后混合兩部分的環(huán)氧樹脂把它固定到表帶下方,然后登它變硬。
然后,我在表帶的上層又增加了一層環(huán)氧樹脂,讓它完全定型。最后,我增加了兩個(gè)塑料的支撐作為額外加固。
9 – 軟件
2014年5月7日,我把基本代碼移植到GitHub上。這個(gè)版本的代碼比較粗糙,但是里面包含了基本知識(shí)并且可以運(yùn)行。在未來幾周里,我還要對(duì)這些進(jìn)行擴(kuò)展。
Arduino代碼(https://github.com/donothingbox/oswatch_arduino_lib)
iOS Shell App(https://github.com/donothingbox/oswatch_ios_lib)
因?yàn)椴皇敲總€(gè)人都是蘋果的開發(fā)者,所以我會(huì)盡快發(fā)布其他應(yīng)用程序,讓非蘋果用戶玩兒!
我還在努力開發(fā)Android版本。
所需的其他的庫(kù):
BLE112 Arduino Library(https://github.com/jrowberg/bglib/tree/master/Arduino)
Time Library(http://www.pjrc.com/teensy/td_libs_Time.html)
OLED Library by Adafruit(https://github.com/adafruit/Adafruit-128x64-Monochrome-OLED-PCB)
Graphic Library by Adafruit(https://github.com/adafruit/Adafruit-GFX-Library)