本文首發(fā)于DF創(chuàng)客社區(qū),作者:robo027
原文鏈接:http://mc.dfrobot.com.cn/thread-296363-1-1.html
為什么是眼鏡?
13世紀被發(fā)明,從當時成為貴族們的玩物到今天幾乎人手至少一副,眼鏡,不管是結構還是功能都沒有什么大的變化.不過,隨著現(xiàn)在的科技日新月異,VR,AR技術的出現(xiàn),讓我們多多少少也都嗅到了一絲"眼鏡革命"馬上要來了的氣息.
我對于眼鏡的改造欲就如同中學時期我們對待歷史書上的人物畫像一樣,總覺得那時他們少了一副帥氣的眼鏡,之前我就做過一個"焊錫保鏢"眼鏡
現(xiàn)在又耐不住了,眼鏡作為穿戴物,掛在臉上,作用如果還只是保護眼睛,校正視力是不是有點對不起咱這張臉.當你在騎車,駕駛,騰不開手的同時又需要獲取來自手機上的信息,怎么辦?這時"第二屏幕"的需求產生了,
它一定具備"不影響你正在執(zhí)行工作,不剝奪你的正常視線范圍,簡單操作或不需要用手操作即可完成重要的交互"這樣一些主要特性.
"HUD"和"AR"
這兩個詞我想大家都不陌生,我就按我的理解簡單介紹一下,HUD原本是戰(zhàn)斗機上把儀表盤數(shù)據投射到擋風玻璃上的技術,現(xiàn)在民用了就成了我們常說的"抬頭顯示",功能說白了就是把方便你開車的一些信息投射到前擋風上.
AR技術呢,俗稱虛擬現(xiàn)實技術,目前它最有價值開發(fā)方向就是做AR眼鏡,什么是"虛擬現(xiàn)實"?其實中間少了兩個字"虛擬輔助現(xiàn)實"其中一個重要的功能就是能在真實的視覺畫面中對指定的目標進行虛擬標識描述并只反映在你的鏡片上,也就是說你從鏡片中看到的畫面是真實和虛擬并存的,比如下面這個應用場景
還有更多實用的功能推薦大家百科一下.所以講了這么多,它除了基本類似HUD的投射功能外,還應該具備圖像識別與物聯(lián)網功能.
而下面我的作品充其量也只能算個HUD眼鏡的半成品.因為說實話能力有限,手上的材料也有限.比賽時間也快到了,所以只能先這樣了.
成像原理
人眼的焦距范圍是25mm-50mm左右,我不可能把OLED直接放到自己的眼前,那樣就跟把臉湊到電視前看一樣,即便看的到上面的字,那也會擋住自己的視野,
所以最理想的方案就是參考谷歌眼鏡的微型投影加半透棱鏡的方法
要么和我一樣直接拆掉一個VR盒子,取透鏡.
至于近似眼的問題,我不是近視,我那副眼鏡也是平光鏡,所以效果不清楚,但是我想畫面光通過你的眼鏡校正的,最終看到的是校正后的成像,所以理論上應該沒有問題.
定位
什么都要小
因為屏幕的大小直接決定眼鏡旁邊這個"家伙"的截面積.所以這個0.66的OLED肯定不行,好在發(fā)現(xiàn)DF商城有更小的屏幕,而且整個模塊都不大.首選!
http://www.dfrobot.com.cn/goods-1188.html
電源:電池也是我拆了我娃的玩具尋到的小鋰電池包
主控一定要能聯(lián)手機(我輕描淡寫了,事實上這涉及到太多專業(yè)知識)所以我根據能力最開始羅列了三種方案:
Arduino promini+hc06
Esp32或Esp8266(能玩)
nRF52(只是聽說)
查資料,對比,發(fā)現(xiàn)nRF52系列的功耗有絕對優(yōu)勢.秉承"只選對的,不選會的"原則淘了兩塊,面對這兩塊陌生的超低功耗多協(xié)議SoC藍牙單芯片(我認為大概就是,除了有藍牙能力自己還能跑程序).只能默默啃資料了...
點亮屏幕
所需:開發(fā)工具: j-Link (用于對nrf52832的swclk swdio端口進行燒寫程序,固定引腳號)
cp2104或CP2102(Tx,Rx串口下載,TX,RX,引腳號會因為協(xié)議棧的不同可能會變)如果有JLINK 這個基本可以不用
板子:nRF52832+Breakout板(方便你用杜邦線實驗)
0.5英寸SPI接口(默認)OLED模塊
接線方式:
- 啟動Arduino IDE
- 進入首選項
- 添加https://sandeepmistry.github.io/ ... 5_boards_index.json為“附加開發(fā)板管理器網址”
- 從工具 - > 開發(fā)板菜單打開開發(fā)板管理器并安裝“Nordic Semiconductor nRF5 Boards”
- 從工具 - > 開發(fā)板菜單中選擇Generic nRF52
- 再到Arduino庫管理器下載U8G2庫https://github.com/olikraus/u8g2
- 下載協(xié)議棧S132 2.0 hex文件,文尾下載
- j-link驅動一般賣家會提供https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
- 下載nrfconnect3.0http://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-desktop
這里主要下載軟件就是nrfconnect安裝過程中也會安裝一些支持包驅動什么的默認就好,打開軟件,你會發(fā)現(xiàn)它其實是一個宿主軟件,在里面可以直接下載所需要的小程序.
這里我們僅需要下載programmer程序
從圖中我們可以看到一個完整的程序一般由引導程序+協(xié)議棧+應用程序(由下到上)三部分組成,
在拖入S132_2.0.HEX后我們發(fā)現(xiàn)完成了下面兩層,還差一層應用程序,
這就要靠IDE編譯了.打開ArduinoIDE選擇示例程序u8g2--- page_buffer---helloworld,
別慌編譯,要改改代碼,里面有很多//U8g2_屏幕種類,我們的屏幕//U8g2_LD7032有兩個,第一個SPI第二個i2C,I2C要改電路,直接用默認的SPI方式就好,也就是取消注釋第一個//LD7032,然后把引腳改成你實際的連線就行了.
需要說明的是OLED可以選擇連NRF52832硬件SPI(HW)或軟件SPI(SW),如果選軟的,在選擇引腳上就自由一些.這里選SW.
嫌麻煩直接Copy "U8G2_LD7032_60X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 17, /* data=*/ 18, /* cs=*/ 28, /* dc=*/ 30, /* reset=*/ 14);"引號中的內容插入到里面就好.
接下來不是點下載,我們是需要這個程序編譯后的hex文件,所以先另存為到一個位置,然后在點Arduino的項目--導出已編譯的二進制文件.這時候我們需要的應用層就做好了,接下來回到nrfconnect界面添加剛剛保存程序路徑下剛編譯好的hex文件,這個軟件很好理解,左邊框框里是現(xiàn)有固件,右邊框框其實就像個沙盤,布置好了點右下角的erase&write過不了多久就燒寫好了,這時OLED就顯示出內容了,這個部分,僅僅只是為了調試OLED,大家不妨多試一下U8G2的其他例程.
制作
LD7032 0.5inchOLED
Nrf52832(重新買了個更小的)
1A充電板
AMS1117(降壓3.3v輸出)
鋰電池包
小開關.按鈕各一
4PIN杜邦母座(引出SWD編程接口,方便以后改程序)
廢舊cd碟片一張,
菲涅爾透鏡(或VR盒子拆下的透鏡)
接線方式:
oled和Nrf52832接線上文有,僅加了一個按鈕(po.20)
電源方案:
總體如下:
外殼部分:
功能的實現(xiàn)
目前還在研究,這里我用了一個開源項目micooke/arduino-nRF5-smartwatches目前暫時只能夠實現(xiàn)傳感器的數(shù)據讀取,和時間顯示.
步驟:1,ArduinoIDE添加第三方硬件[backcolor=rgba(27, 31, 35, 0.05)]https://micooke.github.io/package_nRF5_smartwatche...
2,開發(fā)板管理器打開,刷新后,搜索nrf5 smartwatchs下載安裝
3,安裝好后,在IDE上這樣設置
[backcolor=rgba(27, 31, 35, 0.05)]
4選擇示例程序并在第二欄LD107_OLED.h下注釋原來的引腳設置添加U8G2_LD7032_60X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 17, /* data=*/ 18, /* cs=*/ 28, /* dc=*/ 30, /* reset=*/ 14);
另存為項目,然后導出編譯后的hex文件.
接下來就和前面調試屏幕時的步驟,打開NRFconnect選擇softdevice+剛剛編譯好的hex,燒寫.
后記
這個項目沒完,因為軟件方面遠遠沒有達到我的預期:
1能夠有APP的支持,能夠推送手機上的消息,
2能夠和手機上的導航對接顯示簡要的導航信息.
我不是工程師,很多東西缺乏技術與經驗,采用這款我完全陌生的nrf52832作為主控,主要是保證續(xù)航能力,并且它支持藍牙5.0,我預留了SWD接口也是為了未來能夠有一些突破.
同時也希望有興趣的朋友能夠幫助我一起完善它.