【点击上方「蓝字」关注我们,一起成为技术颜控!】

正文共:4060字 33图
预计阅读时间:11分钟
社区ID:robo027
—— 打造自己的"Google Glass" ——

我对于眼镜的改造欲就如同中学时期我们对待历史书上的人物画像一样,总觉得那时他们少了一副帅气的眼镜,之前我就做过一个"焊锡保镖"眼镜:


翻译功能
能够把看到的英语实时翻译成中文显现在眼前。过不了多久应该就能走进我们的生活了,感觉有了它走遍天下都不怕。
还有更多实用的功能推荐大家百科一下。所以讲了这么多,它除了基本类似HUD的投射功能外,还应该具备图像识别与物联网功能。
而下面我的作品充其量也只能算个HUD眼镜的半成品,因为说实话能力有限,加上手上的材料也有限,比赛时间也快到了,所以只能先这样了。

主要研究的部分就是这个微型投影怎么实现。
就关于凸透镜焦距的选择,里面涉及到一些公式计算很复杂。告诉大家两个简单方法:要么淘一块70-100mm焦距的菲涅尔透镜,塑料的又比普通的凸透镜薄很多方便你剪裁;要么和我一样直接拆掉一个VR盒子,取透镜。
至于近视眼的问题,画面光通过你的眼镜校正的,最终看到的是校正后的成像,所以理论上应该没有问题。
定位
什么材料都要小。
因为屏幕的大小直接决定眼镜旁边这个"家伙"的截面积,所以这个0.66的OLED肯定不行,好在发现DF商城有更小的屏幕,而且整个模块都不大,首选!
http://www.dfrobot.com.cn/goods-1188.html

电源:
电池也是我拆了我娃的玩具寻到的小锂电池包
主控:
一定要能联手机(我轻描淡写了,事实上这涉及到太多专业知识)所以我根据能力最开始罗列了三种方案:
1、Arduino promini+hc06
2、Esp32或Esp8266(能玩)
3、nRF52(只是听说)
查资料,对比,发现nRF52系列的功耗有绝对优势。秉承"只选对的,不选会的"原则淘了两块,面对这两块陌生的超低功耗多协议SoC蓝牙单芯片(我认为大概就是,除了有蓝牙能力自己还能跑程序),只能默默啃资料了……
点亮屏幕
开发工具:J-Link (用于对nrf52832的swclk swdio端口进行烧写程序,固定引脚号)

cp2104或CP2102(Tx,Rx串口下载,TX,RX,引脚号会因为协议栈的不同可能会变)
如果有J-LINK 这个基本可以不用。

板子:nRF52832+Breakout板(方便你用杜邦线实验)


0.5英寸SPI接口(默认)OLED模块

接线方式:

J-Link可以给它俩供电。
启动Arduino IDE
进入首选项
添加https://sandeepmistry.github.io/ ... 5_boards_index.json为“附加开发板管理器网址”
从工具 - > 开发板菜单打开开发板管理器并安装“Nordic Semiconductor nRF5 Boards”
从工具 - > 开发板菜单中选择Generic nRF52
再到Arduino库管理器下载U8G2库:https://github.com/olikraus/u8g2
下载协议栈S132 2.0 hex文件,文尾下载
j-link驱动一般卖家会提供:https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
http://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-desktop(下载nrfconnect3.0)
这里主要下载软件就是nrfconnect安装过程中也会安装一些支持包驱动什么的默认就好,打开软件,你会发现它其实是一个宿主软件,在里面可以直接下载所需要的小程序。
这里我们仅需要下载programmer程序。

打开programmer,界面介绍:
从图中我们可以看到一个完整的程序一般由引导程序+协议栈+应用程序(由下到上)三部分组成:

在拖入S132_2.0.HEX后我们发现完成了下面两层,还差一层应用程序:

这就要靠IDE编译了。打开ArduinoIDE选择示例程序u8g2--- page_buffer---helloworld,

别慌编译,要改改代码,里面有很多//U8g2_屏幕种类,我们的屏幕//U8g2_LD7032有两个,第一个SPI第二个i2C,I2C要改电路,直接用默认的SPI方式就好,也就是取消注释第一个//LD7032,然后把引脚改成你实际的连线就行了。
需要说明的是OLED可以选择连NRF52832硬件SPI(HW)或软件SPI(SW),如果选软的,在选择引脚上就自由一些.这里选SW。
嫌麻烦直接复制 "U8G2_LD7032_60X32_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 17, /* data=*/ 18, /* cs=*/ 28, /* dc=*/ 30, /* reset=*/ 14);"引号中的内容插入到里面就好。

接下来不是点下载,我们是需要这个程序编译后的hex文件,所以先另存为到一个位置,然后在点Arduino的项目--导出已编译的二进制文件,这时候我们需要的应用层就做好了。
接下来回到nrfconnect界面添加刚刚保存程序路径下刚编译好的hex文件,这个软件很好理解,左边框框里是现有固件,右边框框其实就像个沙盘,布置好了点右下角的erase&write过不了多久就烧写好了,这时OLED就显示出内容了,这个部分,仅仅只是为了调试OLED,大家不妨多试一下U8G2的其他例程。
制作
材料清单:
LD7032 0.5inchOLED
Nrf52832(重新买了个更小的)
1A充电板
AMS1117(降压3.3v输出)
锂电池包
小开关.按钮各一
4PIN杜邦母座(引出SWD编程接口,方便以后改程序)
废旧cd碟片一张(反射镜面和半透镜材料,其中反射镜面如果有反射率更好的,比如拆掉女友的化妆盒或粉盒什么的...如果胆子小就算了)
菲涅尔透镜70-100mm焦距(或VR盒子拆下的透镜)
接线方式:
oled和Nrf52832接线上文有,仅加了一个按钮(po.20)
电源方案:

总体如下:


外壳部分:



功能实现
目前还在研究,这里我用了一个开源项目micooke/arduino-nRF5-smartwatches目前暂时只能够实现传感器的数据读取,和时间显示。
步骤:
1、ArduinoIDE添加第三方硬件;
2、开发板管理器打开,刷新后,搜索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作为主控,主要是保证续航能力,并且它支持蓝牙5.0,我预留了SWD接口也是为了未来能够有一些突破。
同时也希望有兴趣的朋友能够帮助我一起完善它,点击左下角的阅读原文,可以和我一起讨论这个项目,也可以下载文中涉及的程序和3D模型文件。
各位参加送树莓派4的活动的小伙伴们,记得10月8号前在社区论坛上传自己的项目,我们在节后将给大家开奖!
还想上车的创客们,可以戳上面的小人儿
了解详情,参与报名!
往期回顾
拾色手电:颜色万千,只取一种
快看!这才是真正的创造力!
有了它,爸爸再也不用担心我偷玩手机了!
同样是毕业设计,你看看人家的!
制作一艘满载梦想的小船!

期待下一期作品!
👇


