TTL串口摄像头模块的使用

  • 内容
  • 评论
  • 相关

概述

TTL串口摄像头模块
本次介绍TTL摄像头模块如何完成视频输出。当您想要通过Arduino MCU 拍照或进行视频监控时,TTL串口摄像头模块是 MCU 的一个很好的选择。TTL摄像头模块提供了一些内置的功能,比如可以改变图像的亮度/饱和度/色调/自动对比度/自动亮度调整以及运动检测等。该模块最初是为视频监控而设计的。它可以从串行端口获取命令后不断地从 CVBS 针脚传输视频,串口命令可以要求模块截取视频,然后得到一个JPEG图像。例如,摄像头模块平时只是通过监视器显示视频,当它检测到运动物体时,就会拍摄一张照片并将其保存到一个磁盘中。因此,TTL摄像头模块的分辨率通常不会很高,它的最大图像尺寸仅是640x480像素。而且它对红外线很敏感,拍摄的图像在颜色的再现方面不是它的强项,因为它是为了监控而生的,而不是为了自然摄影。

TTL_camera_picture

TTL摄像头模块的引脚连接

根据生产厂家不同,有的模块出厂时厂家预焊接了接线端子,有的则是引脚留孔需要自己焊接。在连线时,视频输出可以直接CVBS引脚与电视机或显示器的RCA视频输入端口连接,也就是CVBS、GND连接到监视器的RCA视频输入端,监视器的图像可能是单色的,因为TTL摄像头模块的输出视频制式默认为 NTSC,而且不能更改为PAL。其它引脚分别是+5V、GND、TX、RX,重点介绍一下TX和RX引脚,模块的 TX 引脚指模块发送数据应连接到接收端的 RX 引脚;模块的 RX 引脚指模块接收数据应连接到发送端的 TX 引脚,也就是通常所说的交叉连接。

TTL摄像头模块的简单测试

TTL摄像头模块的引脚图

最简单的测试方法是直接连接CVBS引脚和GND至监视器的RCA视频输入端,适当调整焦距即可看到相应的视频输出。

串口调试工具的使用

Windows环境下使用串口调试工具需要一块USB转TTL模块的支持,TTL摄像头模块才能连接至串口工具。如果使用Arduino来调试,那需要上传一个空文件来“劫持”串行芯片(FTDI芯片),这里所谓的空文件并不是什么都没有,他应该是这样的:

// 空文件

void setup()
{
}

void loop()
{
}

注意:“劫持”串行端口的方式只在一些Arduino控制板上有效,比如Uno。对 Leonardo这样的控制板是无效的!

当然上面的无效并不是说无解,当使用Leonardo, Micro, Yun 或其它采用 ATmega32U4 的控制板时,我们需要使用如下代码而不是空文件:

// 允许 Leonardo 使用串口
// 红线连接 +5V
// 黑线连接 Ground
// 绿线(TX)连接 Digital 0
// 白线(RX)连接 Digital 1

void setup() {
Serial1.begin(57600);
Serial.begin(57600);
}

void loop()
{
while (Serial.available())
Serial1.write(Serial.read());
while (Serial1.available())
Serial.write(Serial1.read());
}

上面的步骤完成后还需要下载 VC0706 CommTool ,启动软件并选择Arduino所在的COM端口。

VC0706 CommTool software

具体的使用这里不再赘述,各位可以自行摸索。

Arduino上使用TTL摄像头模块

接下来,把摄像头模块连接到Arduino,为了保存图像,这里使用了一块microSD模块,并在RX引脚采用两个10K电阻做分压,确保模块的安全。连接图如下:

TTL摄像头模块连接Arduino

首先我们需要从GitHub上下载Adafruit VC0706 camera library,地址:https://github.com/adafruit/Adafruit-VC0706-Serial-Camera-Library 下载后解压到硬盘,重命名该文件夹为Adafruit_VC0706,文件夹内应包含Adafruit_VC0706.cpp 和 Adafruit_VC0706.h ,将该文件夹拷贝到你的Arduino项目文件夹内,通常路径为:<arduino 项目文件夹>/libraries/(<arduino 项目文件夹>--打开Arduino,“文件”-“首选项”-“项目文件夹”可查看路径),终于可以准备拍摄了。

TTL摄像头模块拍摄图片TTL

打开Arduino IDE,选择“文件-> 示例-> Adafruit_VC0706-> Snapshot”,代码将呈现在IDE窗口,打开“工具- 串口监视器”,

TTL_camera_串口监视器监视运行结果

你可以看到这个程序会拍摄 640x480 的照片并保存到SD卡上。然后你可以将SD卡片弹出,再放到你的电脑中就可以查看拍摄到的JPG文件了。

改变TTL摄像头连接Arduino的针脚序号:

// 连接camera TX 引脚到 pin 2,  RX 引脚到 pin 3;
NewSoftSerial cameraconnection = NewSoftSerial(2, 3);

还可以通过改变这些行来改变拍摄图像的分辨率:

// 设置图片大小 - 支持640x480, 320x240 或 160x120
// 分辨率越大传输时间相应越长!
//通过删除或添加“//”来设置
cam.setImageSize(VC0706_640x480); // biggest
//cam.setImageSize(VC0706_320x240); // medium
//cam.setImageSize(VC0706_160x120); // small

运动监测示例

运动检测,模块会在监控视频流中寻找运动物体并向微控制器发送一个串行数据包,这个功能在某些场合可以代替 PIR 传感器。测试方法:打开Arduino IDE,选择“文件-> 示例-> Adafruit_VC0706-> MotionDetect”,然后打开“工具- 串口监视器”,

TTL_camera运动检测

刚运行时,程序会控制摄像头拍摄一张照片,然后等几分钟,你可以在镜头前挥挥手,它会立刻拍下另一张照片。

我们可以通过调用 setMotionDetect()函数 来开启或关闭动态检测:

// 当摄像头检测到运动时,系统可以提醒你.
cam.setMotionDetect(true); // 打开
//cam.setMotionDetect(false); // 关闭 (默认)