相机GPS可以把位置坐标写到照片中,永远记录了你每张照片的拍摄地点,是一种很有价值的摄影附件。尤其对于那些经常旅游的拍摄者来说,更是不可或缺的装备。对于单反相机,很多品牌或型号都必须外接专用的GPS接收器才能记录位置信息。这个接收器现在有原厂、副厂和自DIY三种渠道可以得到。俺还是喜欢DIY,有成就感,倒是DIY一个什么样的GPS接收器需要思量!

网上马云家有很多品牌的相机GPS,价格相差很大,最低的大概270元左右,绝大多数都是单GPS定位功能,少数有电子罗盘,可以把拍摄的方向也记录在照片中。我看了一下,这些GPS接收器基本上都装在相机的热靴上,然后与相机的GPS接口连接。但有些相机的GPS接口跟快门、自动对焦等信号接口共用一个适配器,所以装了GPS接收器就不能再快门、遥控器等附件,比如尼康D800/D810就是这样的结构。有的GPS接收器把快门,对焦等接口引出来,在GPS接收器上再装一个适配器,虽然可以解决GPS信息和快门遥控共用的问题,但结构上显得臃肿,使用时相机上要装接收器和遥控器两个装置,也不方便。另外,现在大多数GPS接收器都使用了内置天线的GPS接收模块,增加了接收端的体积和功能耗,使用的体验不佳。所以,我想DIY一个集成了GPS接收器的遥控器,在发射端集成GPS接收模块,接收端功能尽量简单,便于小型化。最终我决定用安卓手机作为发射端,因为它集成了GPS定位功能,并且有蓝牙功能,很容易实现手机与相机的蓝牙通信。方案清晰了就开始准备啦,花了4个月的时间,从看书起,到写代码,调试,现在终于可以稳定工作啦。现在简要介绍它的结构和功能。

一、适配器

适配器是相机与外围设备通信的接口,我用的尼康D800,后来换成D810了,它们的适配器都是尼康标准的10Pin圆形适配器,各接口的定义如下:

二、发射器

因为发射器直接选用安卓手机,所以,在手机上要用软件实现以下功能:

1、用户对拍摄模式的选择和拍摄参数的设定。我设计的拍摄模式有4大类:单张拍摄、B门拍摄、连续拍摄(包括自动连续拍摄和自定义连续拍摄)、延时拍摄,其中,B门拍摄、连续拍摄和延时拍摄均可自定义拍摄参数,我想,这几种模式和参数应该能对付大多数拍摄场景了吧;

2、接收GPS定位信息。在安卓中,获得位置信息很简单,但我的相机定位需要提供NMEA0183语句才能定位(NMEA0183的意思不明白可以度娘),这就稍微需要一点技巧,用采用安卓系统中GpsStatus.NmeaListener类的onNmeaReceived(longtimestamp,String nmea)方法从手机的GPS组件中获得NMEA0183语句。 将以上NMEA0183语句的监听方法与requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)方法结合使用,这里还有一个小技巧,用手机接收的NMEA语句最后的那个换行符掉了,传到相机里只见GPS符号闪烁,就是不定位,后来发现是掉了这个,于是在每个语句的最后加了0X0A。

3、信息处理。主要对接收到的GPS位置信息进行了优化,只传递对定位有效的NMEA0183语句,免得传递太多的冗余信息加大系统的信息处理量。信息优化后得到了一个意外的效果,就是定位速度要快多了,夏天的晴天空旷场地,冷定位10秒以下啦!是不是目前最快的哟,嘿嘿。

4、信息传输。这个没什么好说的,选用的蓝牙透传模块HC-05,直接蓝牙与接收端握手成功后就可以传输啦。对于相机控制信息和GPS定位信息,我是采用的分时传输,在信息前面加上识别码,以便接收端能认出哪条是相机遥控信息,哪条是GPS定位信息。

这个图是发射端工作时截屏,有功能键和NMEA显示:

三、接收端

我设计的接收器实际上是一个基于蓝牙的多核微处理器,它是先用蓝牙透传模块接收发射端的信息,然后用单片机对信息进行分别处理,共用了三个STC15L104W单片机,这种单片机只有8只脚,体积小,便宜,每个1.7元左右。当然,每个单片机都要装编写的功能代码。三个单片机一个是分路器,对蓝牙模块透传的信息进行识别,把相机控制信息和GPS定位信息分开,然后用不同的端口送到下级单片机。STC15L104W单片机虽然体积小,但它没有标准的串口,需要用定时器对普通口进行串口模拟,所以在分路器上采用了时分复用模拟串口技术,下一级微处理器分别是GPS定位信息的微处理器和相机控制微处理器,这两个微处理器是独立的,因而串行信息在通过分路器后就成为了并行,就是接收端是同时处理GPS信息和相机控制信息的,不会因为相机控制时占用CPU的时间而丢掉定位信息。这两个微处理器的功能是解码,把符合蓝牙传输协议的信息解码成相机能识别的信息和信号,然后通过适配器传到相机中。

适配器和接收器我全手工做滴,焊工手艺比较渣,因为贴片封装的元件虽然小,但手工焊接太难,所以都选用的直插封装的元件,体积大一点,呵,但用起来还算稳定。看看图吧:

最后那张图是组装成功能后的样子,我是用魔贴把它固定在相机的背带上,这样不占用热靴,与相机的合体照在这里:

DIY的过程就介绍到这里啦,有什么问题和建议可以讨论。随意搜了一下,MS还没有同样功能、同样结构的商品化产品,所以申请了专利,说不准有人会对这东西感兴趣咧?

在我看来,DIY就是玩的过程,玩相机不光有拍摄的乐趣,DIY这些外围设备也很有趣啊,而且还能学到东西,做这个前我只写过几行C的代码,没接触过单片机,没接触过android,做完这个后,对android不再陌生了,对单片机也熟悉了,再DIY其他的玩艺有基础了,呵。

DIY基于android的带GPS的相机遥控器相关推荐

  1. android的gps函数accuracy参数,基于Android平台的GPS林地面积测量-计算机工程与应用.PDF...

    基于Android平台的GPS林地面积测量-计算机工程与应用 Computer Engineering and Applications 计算机工程与应用 2014 ,50(23 ) 261 基于An ...

  2. android 自带gps定位Location相关知识

    android自带gps定位功能相信大家都不会太陌生了,都有所涉及.简单的写了一个示例程序,获取经纬度还有其它相关数据的代码,还有其他相关的知识,比如直接跳转到打开系统gps设置的界面.还有一个bug ...

  3. android gps 差分定位,基于Android的高精度GPS定位与土地测量应用设计

    摘要: 随着移动平台技术的飞速发展,Android作为一款新兴的嵌入式操作系统,基于Android系统的移动终端应用设计成为当今应用开发的一个主流.而GPS(Global Positioning Sy ...

  4. 基于Android自带插入器的图形波动效果 --转载自李硕老师博客160303

    原文地址:http://blog.csdn.net/u012215170/article/details/50598747 对于Android的各种动画我们并不陌生,但是可能很多同学不知道Interp ...

  5. 最简单DIY基于C#和51单片机上下位机一体化的PCA9685舵机控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  6. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

  7. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序

    51单片机物联网智能小车系列文章目录 第一篇:最简单DIY的51蓝牙遥控小车设计方案 第二篇:最简单DIY串口蓝牙硬件实现方案 第三篇:最简单DIY蓝牙PS2遥控器控制蓝牙智能小车 第四篇:最简单DI ...

  8. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决...

    转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...

  9. 基于Android的手机导航系统设计与实现

    目 录 摘 要 I Abstract II 第一章 绪 论 1 1.1 课题来源 1 1.2 研究背景和存在问题 1 1.2.1 手机导航背景 1 1.2.2 手机导航面临的问题 2 1.3 研究目标 ...

最新文章

  1. SAP BAPI的一些初级资料
  2. Zuul默认路由规则
  3. 论文浅尝 | 中科院百度微软等学者最新综述论文40+最新方法阐述知识图谱提升推荐系统准确性与可解释性...
  4. 双十一终极预告:免单+半价+100% 中奖,没有套路,直降直减!
  5. 基于SSM的景区旅游管理系统
  6. 基于51单片机ADC0808的proteus仿真
  7. STM32+Zigbee模块实现串口通信获取传感器数据
  8. win7无法连接打印机拒绝访问_打印机拒绝访问,小编教你打印机拒绝访问无法连接怎么解决...
  9. 运行maven打包的项目jar包
  10. 移动端测试 (APP测试)
  11. 数字化转型避无可避,PCB行业如何借力采购管理平台“乘风破浪”
  12. ACPR'11 Accepted
  13. 钢铁企业以撮合模式切入B2B平台,汇聚势能实现价值最大化
  14. 用nodeMCU制作无线MIDI转换器
  15. 互联网公司的前台让我学 Flutter :)
  16. cmd窗口输入java命令执行无反馈
  17. c语言实验--正弦,C语言实验——正弦
  18. CTFShow-电子取证篇Writeup
  19. 网络系统集成的主要工作内容
  20. 你想三年后过上什么样的生活?

热门文章

  1. oracle vm virtualbox 失败,VirtualBox 打开 虚拟硬盘 失败
  2. mysql super-smack_super-smack
  3. Linux文件编辑器
  4. 高速缓存(L1、L2、L3三级缓存)
  5. 物理/虚拟高速缓存区别以及高速缓存重名/同名问题详解
  6. python中对数函数怎么表示
  7. OpenGL3D图形绘制
  8. 《惢客创业日记》2018.11.11(周日) 独角兽的婴儿时期是什么样的?
  9. 【汇智学堂】-python小游戏(太空阻击之四-飞碟入侵)
  10. 关于JS跨域访问介绍