设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

树莓派+.NET MF打造视频监控智能车 遥控篇

2014-2-8 14:47| 发布者: 红黑魂| 查看: 4694| 评论: 0|来自: 博客园

摘要: 树莓派是最近比较火热的开源硬件,其设备只有信用卡大小,运行着Linux系统,专为学生编程教育而设计。我十多年的技术路线基本以学习微软的技术为主,中间也曾试图学习过linux,但是相对陡峭的学习曲线,只好让我放弃 ...

树莓派是最近比较火热的开源硬件,其设备只有信用卡大小,运行着Linux系统,专为学生编程教育而设计。我十多年的技术路线基本以学习微软的技术为主,中间也曾试图学习过linux,但是相对陡峭的学习曲线,只好让我放弃了。最近几年深入研究嵌入式系统,自然绕不过去linux学习这个坎。幸好有了树莓派,一是让人容易滋生学习的兴趣;二是全球范围内网友技术交流,便于问题的定位和解决;所以在学习的过程中,慢慢地解开了linux的神秘面纱,使得有机会一探linux设计架构之美。

以前用.NET Micro Framework系统做过一些智能车控制,但是功能相对简单。这次有了树莓派的加入,增加了Sony PS2遥控器、视频监控和机械手,便变得很有意思了。下图是设备连接的示意图:

从上图来看,功能还是相对比较复杂的,需要9路PWM,其中7路来自凌霄评估板(.NET Micro Framework开发板)3路控制机械手,余下的四路PWM和8个GPIO分别驱动四个马达;另外2路PWM来自树莓派,用来驱动摄像头云台(两自由度,可以水平和垂直旋转);树莓派引出一个GPIO,用来控制LED闪烁,摄像头选取的是配套摄像头;由于Sony PS2接收器和凌霄评估板连接,所以还需要把一些按键信息通过串口发给树莓派,由树莓派驱动摄像头云台。

下图是组装好的设备图片:

为了让大家有一个直观的印象,先看一段演示视频:

 

视频链接:http://v.youku.com/v_show/id_XNjY2MTE1NjQ0.html

 由于需要介绍的内容相对较多,所以我们分四篇来讲解视频监控智能车的制作,分别为《遥控篇》:主要讲解Sony PS2遥控器信号接收处理;《控制篇(.NET MF)》:主要讲解用.NET MF如何驱动小车和控制机械手;《控制篇(树莓派)》:主要讲解如何用树莓派驱动GPIO、PWM和串口通信;《视频篇》:主要讲解视频服务的搭建,远程视频观看及自启动程序的配置。

本篇先介绍Sony PS2遥控器信号获取。

遥控器说明

 

Sony PS2游戏机手柄有两个摇杆,14个功能键(不包含模式键),非常适合我们控制复杂的系统,比如控制机械手、摄像头云台、小车行进及速度快慢。

目前网上购买一个这样的游戏手柄大概40元左右的样子,性价比还是非常高的。

设备接线

购买游戏手柄的时候已经包含了一个接收头了。有些店家还额外提供两种转接头,一种是SPI接口的,一种是串口的。SPI接口的其实就是进行了一个电平转换(3V3=>5V),没有进行什么特别的处理。串口的转接头是中间加了一个AVR单片,可以主动把采集的按键信息,通过串口(TTL电平)发送出去。使用相对简单,但是功能上有问题,一是程序似乎有bug,在操作PSB_PINK和PSB_BLUE按键的时候,其返值和其它按键不同(PSB_PINK仅抬起发键值,PSB_BLUE按下和抬起都发键值,其它键都是按下发键值)。另外摇杆的键值是必须按下L2或R2时,才发送对应摇杆的X/Y值,此外多个按键如果同时按下,是无法区分的。

所以我们选用SPI接口的(其实我们也可以直接把手柄接收头和我们的凌霄系统进行连接,只是增加转接板便于接线)。

凌霄评估板包含一个USB、一个TF卡槽和一路RS485接口,另外直接引出31个PIN(两个标准.NET Gadgeteer接口和一个子板接口)。提供2路SPI、1路I2C、5个串口、16路PWM、12路AD、2路DA、若干GPIO(Pin脚会有复用)。

四个马达,两个驱动器供分别需要4个GPIO和2路PWM,为了便于连接,我们分别通过.NET Gadgeteer接口提供,所以遥控手柄接收器我们连接在子板接口上。

接线如下:

Mainboard.SubPort.Pin2 (5V)   --  电源(4.vcc,如果是直接连,则连接Pin1 3V3)

Mainboard.SubPort.Pin12(PA5)  --  att(6.ATT选取)

Mainboard.SubPort.Pin10(PA7)  --  cmd(2.命令)

Mainboard.SubPort.Pin8(PC7)   -- dat(1.资料)

Mainboard.SubPort.Pin14(PB3)  -- clk(7.时钟)

Mainboard.SubPort.Pin3 (GND)  -- 地(GND)

    【注】中间的四个GPIO可以任意,只要在程序中指定就可以。




酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部