历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2018年02月03日 | 基于嵌入式Linux的图像采集与蓝牙传输

2018-02-03 来源:eefocus

  嵌入式 Linux 系统具有可移植性好、网络功能强、优秀的GNU编译工具、免费的开放源代码等优点。S3C2410处理器是一款采用 ARM 920T结构,内部资源非常丰富的32位嵌入式处理器。USB摄像头具有低廉的价格,良好的性能,加上Linux下有V4L支持对其编程,很容易集成到嵌入式系统中。蓝牙技术是目前被认可的短距离无线通信技术,广泛应用于手机、电脑以及汽车免提系统。

  本文介绍基于嵌入式Linux的USB 图像采集 系统,并通过构建好的嵌入式Linux下的蓝牙环境将采集到的图片传送到蓝牙手机上,实现监控功能。

 






  1 软硬件平台概述

  系统硬件平台如图1所示。该平台软件上采用嵌入式Linux操作系统;硬件上采用Samsung公司的S3C2410处理器,另外配置了64 MB的NAND Flash存储器和64MB的SDRAM,通过以太网控制芯片CS8900扩展一个10M以太网接口。引出两个USB主口,一个接USB摄像头,一个接USB蓝牙适配器;将通过USB摄像头采集到的图像数据输出到缓冲区中,保存成文件,并通过 蓝牙传输 到蓝牙手机上。

系统硬件平台

  2 摄像头驱动

  在Linu


x下已经支持的摄像头驱动是采用ov511芯片的摄像头。使用这款芯片的摄像头有网眼2000/3000等系列,而现在市面上常见的摄像头芯片大多采用中芯微的zc0301、zc0302和zc0303等。Linux内核中并没有相关的驱动支持,但可以从网上下载到相关的spca5xx驱动。

  本系统就采用市面上最常用的zc0301p1芯片的摄像头。由于是用于ARM开发板上,可以下载专用于嵌入式Linux的spca5xx-LE驱动,LE版的驱动最大限度地减少了内存的使用,符合嵌入式的需要。将下载的驱动加入到内核中,修改Makefile和Kconfig文件,在内核中选中USB_SPCA5XX,编译后就将摄像头的驱动加入到内核映像中了。

  3 Video4Linux简介

  Video4Linux(简称“V4L”)是Linux下用于获取视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现影像/图片采集、AM/FM广播、频道切换等功能,在远程会议、可视电话、视频监控系统中都有广泛的应用。

  在Linux下,所有外设都被看成是一种特殊文件,称为“设备文件”,可以像访问普通文件一样对其进行读写。一般来说,采用V4L驱动的摄像头设备文件是/dev/v4l/video0。为了通用,可建立一个到/dev/video0的连接。

  V4L支持两种方式来捕获图像:mmap(内存映射方式)和read(直接读取方式)。

  V4L在include/linux/videodev.h文件中定义了一些重要的数据结构,在进行图像的采集过程中,就是通过对这些数据的操作来获得最终的图像数据。

  4 图像采集

  在图像采集过程中,采用V4L的read方式直接读取设备来获取JPEG格式的图像数据,具体流程如图2所示。

具体流程

  4.1 初始化摄像头设备

  指定要操作的摄像头设备文件/dev/video0,调用open()打开该设备文件,将自定义的数据结构vdIn中的成员初始化,包括设备名称(vd->videodevICe)、要采集图像的宽度(vd->HDRwidth)和高度(vd->hdrheight)、像素位数(vd->bpPIN)、帧大小(vd->framesizeIn),为帧数据分配存储空间(vd->pFramebuffer)。

程序

  4.2 设定待采集图像的各种属性

  zc0301p1摄像头支持JPEG格式的图像采集,定义VIDEO_PALETTE_JPEG为21,将其赋值给图像帧的调色板palette,这是一个必须设置的重要的参数。其他参数(如图像色调、颜色、对比度等)可以先将VIDIOCGPICT传递给ioctl()查看其默认值。

程序

  如果发觉以上的参数不符合采集图像的规范,则可以将pict.brightness、pict.colour、pict.contrast、pict.white-ness、pict.depth等重新赋值,再将VIDIOCSPICT传递给ioctl()来重新设置这些参数。

程序

  4.3 进行图像采集

  在图像采集过程中,采用read方法直接读取设备文件来获取一帧数据保存到缓冲区中,通过convertframe()函数将pFramebuffer中的数据转成完整的JPEG格式的数据保存到ptframe缓存中去,再调用fwrite()函数将pt-frame缓存中的JPEG格式数据写入到指定的文件中去,即得到一幅JPEG格式的图像。

程序

  5 蓝牙传输

  蓝牙协议规范遵循开放系统互连参考模型(OpenSystem Interconnection/Referenced Model,OSI/RM),从低到高地定义了蓝牙协议堆栈的各个层次,如图3所示。

 

从低到高地定义了蓝牙协议堆栈的各个层次

 






  在蓝牙协议体系中,OBEX位于RFCOMM之上。OBEX提供了对象的表示模型,并通过“Put”和“Get”操作传输对象。设备间的对话遵循客户和服务器间的请求—响应模式。OBEX会话开始由客户端发出连接请求,连接建立成功后服务器发送成功的连接响应,否则发送连接不成功的连接响应。在连接之后,客户端可以通过Put请求向服务器“推送(Push)”对象,如果对象较大,Put请求可以使用多个Put请求分组,每个请求分组需返回一个Put响应分组。本系统将采集到的图片保存到/tmp/cap.jpeg,现在要将图片通过蓝牙传输到蓝牙手机上。具体实现过程如下:

  ① 在内核中打上蓝牙补丁,加入蓝牙协议的支持,添加USB蓝牙适配器的驱动。

  ② 编译bluez的库和工具。从网上下载bluez-libs、bluez-utils和dbus库,用 ARM - Linux -gCC完成交叉编译,得到了arm版的bl


uez库和bluez的工具以及dbus-daemon工具。这是蓝牙适配器在ARM Linux的环境下正常工作所必需的。

  ③ 启动USB蓝牙适配器。要使USB蓝牙适配器正常工作,需要用到步骤②中编译得到的dbus-daemon工具和一些蓝牙工具(如hcIConfig、hcid等)。dbus是一个消息传递系统,应用程序间可通过它来相互传递消息。dbus-daemon是一个守护进程,是运行hcid所必需的,hcid用来读入hcid.conf文件。该文件是蓝牙设备的一个配置文件,在该配置文件中设置好蓝牙设备的类型、classid、配对码、设备是否可被搜索等其他的属性。

  ④ 实现文件传输。本系统采用OBEX协议的客户/服务器模式来传递采集到的图片文件,需要用到蓝牙的Object PUSH服务。首先用sdptool工具搜索到蓝牙手机的MAC地址以及Object PUSH服务所占用的频道,然后用rfcomm工具将该频道绑定到虚拟串口,最后运行obex_test完成文件的传输。

  图4是采用Object PUSH服务来实现文件传输的流程。

采用Object PUSH服务来实现文件传输的流程

  结 语

  本设计实现了ARM Linux环境下的 图像采集 工作,构建了ARM Linux下的蓝牙工作环境;通过蓝牙的OBEX协议和Object PUSH服务,实现了ARM Linux平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。


推荐阅读

史海拾趣

ASI [ASI Semiconductor, Inc]公司的发展小趣事

在竞争激烈的电子行业中,创新是企业持续发展的关键。ASI深知这一点,因此一直致力于技术创新和产品升级。通过不断投入研发资源、引进先进技术以及与高校和研究机构的合作,ASI成功推出了一系列具有竞争力的新产品和解决方案。这些创新不仅提升了ASI的市场竞争力,还为其未来的发展注入了强大的动力。

这些故事展示了ASI Semiconductor, Inc.从创立到发展成为电子行业领导者的过程。通过抓住市场机遇、提升产品质量、拓展全球市场、创新技术和优质服务,ASI成功地实现了自身的快速发展,并在行业中树立了良好的声誉。

EMC Component Group公司的发展小趣事

随着电子行业的快速发展,许多电子产品型号逐渐停产或变得稀缺。ASI敏锐地捕捉到了这一市场变化,并开始专注于生产停产及稀缺元器件的替代或新设计。其RF功率晶体管生产线主要提供Motorola、Philips及SGS Thomson公司的替代型号,而微波二极管生产线则主要提供HP、M/A-COM、Alpha及Loral/Frequency sources公司的替代型号。这一策略不仅满足了市场的需求,还进一步巩固了ASI在行业中的地位。

弘凯光电(BRIGHTEK)公司的发展小趣事

弘凯光电股份有限公司,自2001年成立以来,便以光电半导体封装与解决方案提供商的身份,开始在电子行业中崭露头角。早期,公司以台湾为基地,凭借对技术的不断追求和对市场的敏锐洞察,逐步在光电半导体领域积累了宝贵的经验。通过持续的研发和创新,弘凯光电逐渐形成了自己的核心竞争力,为后续的快速发展奠定了坚实基础。

HALO Electronics公司的发展小趣事

随着技术的不断进步和市场的逐步打开,弘凯光电开始将业务拓展至全球范围。公司的客户群迅速扩大,遍布60多个国家和地区,同时在欧洲、北美、南美、东南亚和中东地区均设立了经销网点。此外,弘凯光电还积极寻求国际认证,以证明其产品的品质和可靠性。通过取得ISO9001质量保证体系、ISO14001国际环境管理体系认证等一系列认证,公司进一步提升了品牌形象和市场竞争力。

CML Microcircuits公司的发展小趣事

在1968年,电子行业正迎来一场技术革新。在这个充满机遇的时代,CML Microcircuits公司应运而生。初创时期的CML专注于研发单芯片解决方案,而不是传统的标准组件组合。这一创新理念使CML在行业中脱颖而出。公司的第一个产品——频率敏感开关,凭借其卓越的性能和可靠性,迅速赢得了市场的认可。这款产品不仅销售了30多年,而且至今仍在某些应用中发挥着关键作用。

Fabrimex AG公司的发展小趣事

1995年,Fabrimex GmbH成立,作为电子组装和电源生产的生产公司。这一举措标志着公司进一步向国际化发展迈进。通过设立生产公司,Fabrimex AG能够更好地控制产品质量和生产成本,提高市场竞争力。同时,公司还加强了在全球范围内的销售活动,进一步扩大了市场份额。

问答坊 | AI 解惑

也是个keil家protues仿真的例子

实现的是把0-19写到AT24C02里面在有把这写写进去的数字读出来并且把读的数据和写的数据用LED显示出来。希望和一样刚学单片机的朋友喜欢…

查看全部问答>

伟福仿真器

我现在刚接触到伟福仿真器 老师要我做一个关于密码键盘的东西    现在要先进行仿真 然后再进行硬件测试 为什么我写的代码在伟福上用不了呢? 请问谁给指点一下我?或者给我一个代码   谢谢…

查看全部问答>

散热结构对白光LED使用性能的影响

  解决封装的散热问题才是根本方法   由于增加电力反而会造成封装的热阻抗急剧降至10K/W以下,因此国外业者曾经开发耐高温白光LED,试图藉此改善上述问题。然而,实际上大功率LED 的发热量比小功率 LED高数十倍以上,而且温升还会使发光效率 ...…

查看全部问答>

stm32单片机资料

本帖最后由 paulhyde 于 2014-9-15 09:45 编辑 比较给力的单片机,功能丰富,使用简单。 [ 本帖最后由 sirius119 于 2011-8-4 14:13 编辑 ]  …

查看全部问答>

拜托哪位高手帮帮忙 将51的MFRC522程序 用飞思卡尔的单片机写出来

拜托哪位高手帮帮忙 将51的MFRC522程序 用飞思卡尔的单片机写出来…

查看全部问答>

EK-LM4F232 最新下载软件

  Kit DVD for EKI-LM4F232 with IAR Tools:  http://www.ti.com.cn/tool/cn/eki-lm4f232-dvd     [ 本帖最后由 蓝雨夜 于 2011-10-11 22:58 编辑 ]…

查看全部问答>

SSD1963触屏控制器

哪位做过SSD1963触屏控制器的驱动啊?直接修改9b96驱动,除了修改硬件意外还需要怎么修改啊,屏幕总是不亮,但是可以画线!…

查看全部问答>

2013-14 年度TI DSP及嵌入式大奖赛在线报名开始啦!

自从2003年TI DSP及嵌入式大赛以来,已经有数千名本科生和研究生参加了大赛,在TI高性能的DSP平台下发挥创造力,创作出了许多优秀作品。随着嵌入式技术的进步和新应用领域的拓展,更是有很多作品带给我们惊喜。2013-14年度的DSP及嵌入式大奖赛已经 ...…

查看全部问答>