本帖最后由 yang_alex 于 2015-3-31 19:18 编辑
自行车一度淡出了人们的视线,至少在我印像里,深圳的自行车道有段时间被取消,改成机动车道(当然现在也没有恢复),但随着人们对绿色交通以及自身健康的关注,现在越来越多的人开始骑自行车,有些是上下班交通,有些是健身。深圳也发展了许多公共自行车租用,也建立起自行车道(号称绿道,大约1米宽)。
趁着这次论坛活动,我计划做一个类似自行车码表的东东,我起名叫自行车伴侣。由于只有两块SAM R21评估板,加上初次尝试,时间紧张,我这次只做主机和尾灯从机部分。实际上还可以扩展出很多东西。
先说系统架构,系统有主机部分和尾灯从机部分组成,两者之间通过SAM R21集成的RF进行数据交互。
系统主机部分实现骑行数据、GPS位置信息数据、GPS卫星时间获取、电池剩余容量等的显示,以及相关参数设置。其组成部分包括128X64 LCD屏、GPS模块、电子指南针模块、5键键盘、锂电池充电、升压模块。
尾灯从机部分实现速度信息、路程信息的采集,以及转向信息、夜间骑行警示的显示。其组成部分包括LED尾灯模块(自制)、干簧管磁控开关模块 、钕铁硼强力磁铁、锂电池和充电、升压模块。
主机和从机交互的信息主要有路程信息、速度信息和尾灯显示信息。由于单次数据量不大,同时希望尽快交互,故没有采用通讯协议,仅依赖ATMEL RF 自身的RF协议。
主机部分框图
①LCD模块硬件连接
为了节省使用SAM R21评估板的端口,LCD选用了SPI串行驱动的LCD模块。LCD和SAM R21评估板的具体硬件连接如下:
②GPS模块硬件连接
GPS模块通过UART接口和SAM R21评估板通讯,具体硬件连接如下:
③电子指南针模块硬件连接
电子指南针模块通过I2CT接口和SAM R21评估板通讯,具体硬件连接如下:
也许有网友会问,为什么有了GPS还需要电子指南针模块?答案是:第一,GPS信号有时不好或没有。其次,GPS的方向是在运功中根据两次不同位置的数据确定方向的,如果静止,其方向信息就不准确。
④自制ADC 5按键模块硬件连接
为了节省使用本身为数就不多的SAM R21评估板的端口,键盘采用了ADC键盘,5个按键共用一个ADC通道。具体硬件连接如下:
⑤电池容量检测硬件连接
主机检测锂电池模块的剩余电量,并在LCD上显示出来。锂电池模块的剩余电量通过检测锂电池电压的方式估算,使用了一个ADC通道。具体硬件连接如下:
主机部分实物图
先来一张整体的吧,利用了一个电话液晶屏的盒子。GPS 部分后续用薄膜挡住就会更漂亮了。
主机底侧将SAM R21评估板的USB\ 调试USB露出来,方便调试,另外增加了电源开关。最右边是电池充电接口,后续会放入盒子中。
主机内部揭秘
,会不会有些凌乱啊。
主机屏幕显示
*******************************************************************************************************
我是华丽的分割线
*******************************************************************************************************
尾灯从机部分框图
①自制LED尾灯模块硬件连接
LED尾灯模块动态显示转向信息、夜间骑行警示,采用动态扫描的方式。后续可以采用SN74HC595的串并转换方式可以进一步节省IO端口,也可以实现更大的LED屏,可以做更复杂的花样显示。具体硬件连接如下:
②干簧管磁控开关模块硬件连接
系统中速度、路程的检测是通过干簧管磁控开关模块和固定在车轮上的钕铁硼强力磁铁实现的。最初曾考虑用霍尔检测模块实现,但实际测试发现同样的磁铁,霍尔检测模块的检测距离太近了,在自行车上安装是件很麻烦的事。而干簧管磁控开关模块可以很轻松的实现3~4厘米的距离。所以最终选择了干簧管磁控开关模块。为了避免车轮上的磁铁在一个干簧管磁控开关模块附近来回晃动引起错误计数,项目中采用了两个干簧管磁控开关模块,并在软件中做互锁。具体硬件连接如下:
③锂电池充电、升压模块硬件连接
从机的锂电池充电、升压部分和主机中的相同。
尾灯从机部分实物图
为了把干簧管磁控开关模块安装到自行车上,需要做个外壳。
做个固定的把手
把干簧管磁控开关模块和强力磁铁安装到自行车上
尾灯显示
尾灯的显示效果见项目视频
*******************************************************************************************************
我是华丽的分割线
****************************************************************************************************
软件部分
由于只有2个节点通讯,所以用官方例程peer2peer修改而来,增加相关的功能模块。ATMEL提供了好几种无线模式的例程,在此基础上实现一个简单的无线数据通讯系统还是非常方便的。
两个SAM R21评估板间每秒通讯一次,交换数据,主机把主机按键确定的转向信息、夜间骑行警示信息发送到尾灯从机,同时接受尾灯从机发送给主机的速度、路程信息,然后在LCD屏幕上显示。
需要说明的是,SD卡读写文件的功能已经验证(Atmel的官方例程),但是本次项目中的评估板引脚引出太少,太紧张,导致没有加到项目功能中来,使得项目功能有些失色。本来是可以记录历史路径的。以后再想办法实现吧。
项目中利用了SAM R21的实时时钟模块,同时利用GPS提供的时间信号做时间配置,取消了时间设置的功能。这样时间会更准确些。
项目时钟树
相同的8MHz时钟通道用了2个,主要是为了调试方便(可以调成不同的分频),实际上可以改成一个。
软件代码
主机项目代码压缩包
M_EBike-2015-3-30-OK.rar
(9.44 MB, 下载次数: 29)
尾灯从机项目代码压缩包
S_EBike-2015-3-30-OK.rar
(8.23 MB, 下载次数: 29)
项目视频
系统实现功能:
1、电池电量指示
2、有效GPS卫星数量指示
3、日期、时间、温度信息(温度检测利用SAM R21内部温度检测,信息不准确,待优化)
骑行信息
4、当前方向
5、即时速度
6、总里程
GPS位置信息:
7、纬度
8、经度
9、海拔
相关参数设置
10、GPS开/关
11、LCD背光(ON/OFF)
12、轮胎直径设定
13、页面切换时间设定
尾灯功能
14、尾灯转向指示(左转、右转、夜间闪灯提示)
待实现功能
15、历史路径记录
16、尾灯后续车辆测距提醒
本次项目主要使用到的物料清单
SAM R21评估板 x2(主机从机各1个)
锂电池 x2(主机从机各1个)
锂电池充电模块 x2(主机从机各1个)
5V升压模块 x2(主机从机各1个)
GPS模块 x1 (主机)
电子指南针模块 x1 (主机)
LCD模块 x1 (主机)
自制ADC 5按键模块 x1 (主机)
LED二极管 x35 (从机 自制尾灯)
干簧管磁控开关模块 x2 (从机2个)
钕铁硼强力磁铁 x2 (从机2个)
9*15cm万用板 x1
外壳 x2
导线若干(卷)
热熔胶
开关、电容、电阻、排针若干
还有一些事先计划用并采购了,但是因为一些原因(如ADC端口不够)而没有使用的传感器和元器件。
温湿度传感器 x1
SD卡模块 x1
大气压传感器 x1
超声波模块 x1
学习感想:
时间过的太快,年后工作上增加了一些任务,能腾出的时间少了许多,部分项目功能到现在还有一些没能够完成,后续会继续完成,同时有些代码需要优化一下,这些都会继续和大家分享、求教。
第一次尝试使用ATMEL的ASF框架,感觉功能很强大,工程师可以更好的聚焦在自己项目的实现上,可以少花很多时间在熟悉一个新的MCU相关寄存器配置上。另外就是通过学习发现ATMEL的MCU外设很丰富、功能很强大,像这次项目中用到的UART\SPI\I2C竟然只需要配置SERCOM这一种串行外设就可以实现,很灵活地满足不同项目设计对串行通讯外设数量的要求。由于时间关系,SAM R21中的USB接口这次没有用到,后续可以利用起来和PC进行通讯。
最后,还是要感谢EEworld举办的这次活动以及Atmel提供的SAM R21评估板!也要感谢论坛网友给予的帮助和指导!
学习过程汇总:
【Atmel SAM R21创意大赛周计划】(1)熟悉ATMEL的IDE开发环境,熟悉Atmel SAM R21开发板
【Atmel SAM R21创意大赛周计划】(2) Atmel SAM R21 Xplained Pro板晒图及评论
【Atmel SAM R21创意大赛周计划】+ATSAMR21E的内部温度检测不可用?
【Atmel SAM R21创意大赛周计划】 SAM R21的SPI的数据位可以设成24bit吗?
【Atmel SAM R21创意大赛周计划】(3) GPIO学习-按键、外部中断和点亮LED
【Atmel SAM R21创意大赛周计划】(4) SERCOM学习-SPI接口LCD驱动
【Atmel SAM R21创意大赛周计划】(5) RF学习-简单的点对点