基于嵌入式Linux的图像采集与蓝牙传输

发布者:EnchantedMagic最新更新时间:2018-02-03 来源: eefocus关键字:于嵌入式  Linux  图像采集  蓝牙传输 手机看文章 扫描二维码
随时随地手机看文章

  嵌入式 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平台与蓝牙手机之间的文件传输。利用嵌入式系统和无线传输实现远程监控,符合数字化、网络化的发展趋势。


关键字:于嵌入式  Linux  图像采集  蓝牙传输 引用地址:基于嵌入式Linux的图像采集与蓝牙传输

上一篇:基于ARM电冰箱模糊控制系统的仿真与设计
下一篇:STM32启动流程分析

推荐阅读最新更新时间:2024-03-16 15:54

Arm-linux内存管理(4)
上一篇主要是与具体体系有关的数据结构,并最后遗留了个问题: 那么,这些数据结构怎样发挥作用的呢?特别是,ARM-Linux内核怎样根据这些数据结构建立起地址映射呢? 1、从系统的初始化说起。系统引导以后,CPU进入内核的总入口,即代码段的起点stext.在stext中,CPU首先从自身读出CPU的型号及其所在的机型,把有关的信息存放在processor_id和machine_arch_type两个全局变量中,然后就转入start_kernel()。 asmlinkage void __init start_kernel(void) { ...... setup_arch(&command_line); 这个
[单片机]
Arm-<font color='red'>linux</font>内存管理(4)
OK6410A 开发板 (六) 2 OK6410A linux-5.11 移植
$ arm-linux-gnueabi-gcc --version arm-linux-gnueabi-gcc (Linaro GCC 7.4-2019.02) 7.4.1 20181213 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. arch/arm/configs/s3
[单片机]
Linux系统软件加壳保护技术的改进设计
加壳是对软件内核一种很有效的保护方式。目前Linux系统下的加壳方法,多是直接继承Windows 程序的加壳理论和方法,在传统加壳工具上进行了有限的扩展, 单纯在LINUX 系统下实现的加壳工具还是很少的。如何在Linux 系统下尽量减少内核信息的暴露,增加有难度的反逆向手段来提升破解难度,对加壳保护程序进行很好的隐藏,都是目前主要攻克的难题。 根据加载外壳程序方式的不同将现有软件加壳技术分为:嵌入式、附加式和包含式。嵌入式中最经典的是Upx,支持多种文件类型加壳,且压缩算法先进。但该方法缺少反动态跟踪功能,破解者可用动态跟踪调试方法对Upx 进行破解 。文献 中描述了附加式加壳(SELF 加壳):在原elf 文件格式中添加处理安
[单片机]
<font color='red'>Linux</font>系统软件加壳保护技术的改进设计
风河发布 Wind River Linux 3.0
设备软件优化(DSO)厂商风河系统公司(Wind River)日前宣布推出其最新版本Linux平台Wind River Linux 3.0。预集成(pre-integrated)、商用级(commercial-grade)、全支持(fully supported)是这个全新Linux平台的三大突出特色。 最新的Wind River Linux 3.0基于全新的Linux 2.6.27内核和GCC 4.3,提供了灵活、通用的开发环境。其中拥有超过500个增值软件包,较其前一版本产品增加了250多个,包括多媒体、图形处理和HMI(人机接口)技术等,例如X.org、GTK+、GNOME或GStreamer等。新版Linux
[嵌入式]
基于嵌入式Linux系统的3G/4G路由器
3G的接人技术已经从WCDMA/TD- SCDMA/CD-MA2000发展到HSDPA、HSUPA 以及HSPA+ ,并开始由3G 网络向4G网络过渡。目前HSDPA的接入带宽可以达到7.2 Mbps,HSPA+ 的接人带宽可以达到21 Mbps,而即将部署的LTE的网络带宽甚至达到了100 Mbps 。同时,由于接人移动互联网 的智能终端的数量快速增长,人们对移动互联网的应用需求也日益增长。当人们面对几十兆带宽甚至是上百兆带宽时,必定存在带宽的过剩问题,即人们不需要在任何时刻都需要这么大的带宽,因而可以将过剩的用户带宽分配给更多的用户。 目前,WiFi技术能够支持IEEE的802.11b、802.11g和802.1ln标准,
[单片机]
基于<font color='red'>嵌入式</font><font color='red'>Linux</font>系统的3G/4G路由器
STM32和OV2640的嵌入式图像采集系统设计
引言 随着电子产品向低功耗、低价格、智能化的方向发展,利用视频传感器采集图像成为研究热点,如可视门铃、安全监控 、赛车自动循迹 、烟叶图像采集 、草本叶子图像采集 等。本文根据在线采集、分析、存储图像的需求,设计了嵌入式图像采集系统,运用嵌入式芯片STM32对图像信息进行采集、显示和存储。 1 系统结构与功能 图像采集系统以基于ARM公司的CortexM3内核的STM32F103RBT6(以下简称STM32)处理器为核心,配合OV2640摄像头和TFT液晶显示器,是一款采集像素多、实时性好且成本低廉的图像采集系统。 系统的硬件结构框图如图1所示,系统通过JLink口实现程序在STM32上的仿真、在线调试,利用JLI
[单片机]
STM32和OV2640的<font color='red'>嵌入式</font><font color='red'>图像采集</font>系统设计
基于ARM-Linux架构的远程可控电源插座设计方案
互联网的迅速发展,实现了信息的高速传输和资源共享,极大地方便了人们的生活。嵌入式系统广泛应用于各种电器产品、智能仪表和控制设备中,它与互联网的结合是一种必然的趋势。 嵌入式系统和网络技术的快速发展,为网络远程控制的发展和完善提供了技术基础。 笔者综合运用嵌入式系统和Web技术,设计了一种可通过互联网进行远程控制的电源插座系统,实现对家用或工业电器的远程实时控制。用户通过网页浏览器访问该系统,对各插座进行打开或关闭的操作,实现对与其相连接的电器的远程控制。 1 嵌入式Web工作原理 嵌入式Web的体系结构如图1所示。客户端和嵌入式系统中Web服务器之间的通信协议采用HTTP(超文本传输协议)。嵌入式操作系统提
[单片机]
基于ARM-<font color='red'>Linux</font>架构的远程可控电源插座设计方案
高速蓝牙干扰测试结果引发业内关注
  蓝牙特别兴趣组(SIG)正着手制定下一代蓝牙规范。这种高速蓝牙规范将支持高速文件传输以及视频流应用。最初,蓝牙SIG仅仅选择WiMedia的超宽带(UWB)技术来作为新一代的协议。然而,最近它宣布采用802.11作为一种可选的过渡解决方案,从而在便携式设备中、在现有的Wi-Fi射频上谋求构建蓝牙协议。   这意味着现在WiMedia UWB和802.11均是高速蓝牙版本的备选MAC/PHY (AMP)。其原则就是让现有的蓝牙技术在消费设备中可被使用,与此同时,通过第二个射频实现更快的吞吐量。然而,业内不少人士担忧那将在基于802.11射频的蓝牙设备与工作在临近频率的IMT-2000——如WiMax、LTE、UMTS以及W-C
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved