由PIC单片机控制的微型慢扫描电视(SSTV)摄像头
藉由常用的PIC单片机,发挥Argent Data Systems SSTVCAM的潜力
作者/马克·斯宾塞(WA8SME)
翻译:LifeWieller
本文已发表于《电子制作》2014年10月刊
本文将会详细介绍如何通过常用的PIC单片机控制微型摄像头,以发挥摄像头模块的潜力。这个项目起源于2011年12月,史蒂夫·福特(WB8IMY)在他的专栏“短文”中提到了Argent Data Systems的慢扫描电视摄像头,SSTVCAM。在他看来,这种摄像头在空间/海洋信标系统中大有用途,而这两方面正是我在ARRL教育和科技项目中的工作内容。因此他向我推荐了这个摄像头[M. Spencer, WA8SME, “ARRL Education and Technology Program Space/Sea Buoy,” QST, May 2012, pp 33-35.|马克·斯宾塞(WA8SME),“ARRL教育和科技项目空间/海洋信标部分”,QST,2012年第5期,33-35页]。我打算把微型慢扫描电视摄像头作为海洋信标传感器载荷的一部分,而首要工作就是制作软硬件实验样机。
Argent SSTVCAM模块
Argent SSTVCAM模块外形尺寸为3.81×3.25×3.30厘米,由两层电路板和一个60°视场角的镜头组成。模块和接口电路如图1所示。不幸的是,模块的文档比较简陋,但其基本功能可从http://wiki.argentdata.com/index/php?title=SSTVCAM得知。模块的基本功能如下:
⚪ 以常见的SSTV格式——Robot36,Robot72,Scottie1或Scottie2拍摄照片,并通过与之相连的电台发送;
⚪ 最多拍摄8张照片并保存至内部EEPROM;
⚪ 发送任意保存的照片;
⚪ 以设定的时间间隔自动拍摄并发送照片。
摄像头通过电路板上低电平有效的控制引脚选择工作模式。摄像头有两个固件版本,V1.1,即本文中用到的摄像头固件版本,和V1.2。两个版本的固件唯一的区别是在V1.2版固件中,叠加到图片上的呼号和文字可以保存在模块内EEPROM中,即便断电后仍然能够保存,而V1.1固件中叠加呼号需要在每次上电后重新加载(拍摄的图片在两版固件中都能够保存)。虽然可以通过引脚电平选择工作模式,叠加的呼号和文字需要在每次上电后通过0~3.3V的低电压TTL(LVTTL)以4800bps的速率传输到摄像头中。因此需要电平转换电路将电脑的标准RS-232电平转换为LVTTL电平。
简单的开关功能选择和RS-232接口
如果你想要通过简单的拨动开关选择摄像头功能,只需连接图2左侧的RS-232接口电路即可。RS-232接口电路提供电平转换和信号反转功能,以便在Scoottie1和Scottie2格式下向摄像头发送叠加呼号(Robot模式不包含叠加呼号)。直接开关控制不需要PIC单片机,因此只需要把图2中相关电路删去,并将2N3904集电极连接至摄像头RXD引脚即可。稳压器和滤波电容需要保留以为RS-232接口电路提供合适的电压。将相应的控制引脚接地即可让摄像头工作在数据手册中对应的模式。
三个电阻和一个2N3904三极管构成了RS-232接口电路。串联的3.3kΩ电阻和1.0kΩ电阻构成分压电路,将RS-232电平转换至大约+/-3V以驱动NPN三极管。集电极连接的1.0kΩ电阻作为负载电阻,并在三极管截止时提供上拉。当基极电平为高时,三极管导通,将摄像头RXD引脚接地(信号反转在此实现)。当RS-232信号为负电平时,三极管截止,在RXD引脚上由1.0kΩ电阻提供上拉3.3V电平。对于摄像头,必须保证其引脚电平不得高于3.3V。5V电平可能会损坏摄像头。
电脑与摄像头的串口通信可通过超级终端(HyperTerminal)或免费终端软件PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)实现。设置波特率为4800,其他设置保持默认,然后输入想要叠加的文字或呼号(最多35个英文字符)。在V1.2固件下,发送回车符(十六进制0x0d或十进制13)将文字保存至EEPROM,而在V1.1固件下需要每次上电后发送。
使用PIC单片机控制SSTVCAM
使用开关控制摄像头是一种简单的方案,你也可以使用单片机以便更灵活的控制摄像头,如远程控制等。图2为单片机与电平转换电路和摄像头的连接电路图。PIC单片机程序用C语言编写,程序源码和可直接烧录的HEX文件可以从ARRL网站获得。
同时,一个采用Visual Basic编写的图形化软件可以设置摄像头的参数和叠加的文字。图3是该软件运行时的图片。软件的VB源文件和可执行文件可以从ARRL网站下载,网址是www.arrl.org/qst-in-depth。
这样做的好处就是摄像头的工作模式可以保存在PIC单片机的EEPROM中,在摄像头上电时可由PIC单片机将工作参数发送至摄像头,避免了V1.1版固件不能保存叠加呼号的问题。
软件操作相当简单,有两种模式可选,即SNAP AND SEND MANUAL(拍摄并手动发送)和SNAP AND SEND AUTO(以一定时间间隔拍摄并自动发送),如图3所示。首先,选择SSTV格式。图中我选择Scottie1,此格式下可显示呼号输入框。图示中我输入WA8SME/1ETP BUOY PROJECT。然后,在OPERATION中选择SNAP AND SEND AUTO(拍摄并自动发送)。接下来在DELAY(时间间隔) 部分选择拍摄时间间隔,即每隔多长时间拍摄一张照片。图示中我选择10秒时间间隔。在点击PROGRAM(编程)之前请确保摄像头-PIC单片机接口已经上电,并且已经连接电脑。这个软件会把参数发送至PIC单片机,PIC单片机据此设置摄像头,然后摄像头即可按给定参数工作。如果你选择SNAP AND SEND MANUAL(拍摄并手动发送),当你按下摄像头模块上的快门按键(S1)时会拍摄并发送一张照片。
接下来是图片记录、获取和发送选项。由于摄像头提供了很多功能,不太可能在软件中提供所有选项。你可以修改PIC程序和图形化软件,以便符合你的要求。在软件中我只提供了基本的拍摄和获取照片的功能。
和刚才一样,我选择Scottie1格式。接下来,在OPERATION(工作模式)中选择RECORD MEM #(拍摄照片并保存)模式。软件界面中会出现NUMBER TO RECORD(保存位置)选项,可在0-7号内存空间中选择。这里我选择3号。当点击PROGRAM(编程)按钮后,软件便将保存位置信息写入PIC单片机。当你按下摄像头上的快门按键(S1)时摄像头会将照片保存至所选位置。如果你想连续拍摄照片,就必须每次拍摄前对PIC单片机编程,将照片保存至不同位置——这一点确实不方便。拍摄的照片在被覆盖之前会一直保存在摄像头内存。
要获得保存的照片(如图5),需要在软件工作模式菜单中选择SEND MEM #(获取照片)模式。软件界面中会出现NUMBER TO SEND 0-7(要获取的照片 0-7)选项,然后输入要获取的照片序号,点击PROGRAM(编程)按钮。摄像头会立即开始发送获取到的照片。随后每按一次摄像头快门按键(S1),摄像头会再次发送相同序号的照片。如果想获取其他照片需要对PIC单片机重新编程。我说过,这个软件只提供最基本的记录、获取和发送照片功能,你需要在此基础上进行修改以实现所需功能。
遥感应用
现在你已经能够控制摄像头,接下来要做的就是发掘系统潜力。通过为摄像头增加PIC单片机控制层,可使摄像头与其他系统协作。例如,在热气球探测系统中,球载传感器数据可通过自动位置报告系统(APRS)UNPORTO数据包传回地面。搭载的摄像头可在气球上升过程中以一定时间间隔拍摄地球照片并传回地面。在传输照片之前,PIC单片机控制电台切换至单频,发送照片,然后切换回APRS频率。在海洋信标应用中,可以利用PIC控制步进电机带动摄像头转动,以获得全景照片并回传。图6是在测试海洋信标应用时拍摄的一张照片。
类似的应用还有很多。只需对程序稍作修改,便可控制摄像头以一定时间间隔发送拍摄的照片,或在其中穿插实时图像。只要你能想到,没有什么应用是不能实现的。开始动手吧!
图片版权归作者所有。
马克·斯宾塞,WA8WME,通信地址为43 Pinelock Dr, Gales Ferry, CT 06335,邮箱是[email protected]
图1——安装在洞洞板上的Argent Data Systems生产的慢扫描电视摄像头模块,PIC单片机和RS-232插座。
图2——SSTV摄像头和PIC单片机、RS-232接口电路图
J1-RS232插座(A35107-ND)
R1-3.3KΩ电阻(3.3KQBK-ND)
R2,R3-1.0KΩ电阻(1.0KQBK-ND)
R4-330Ω电阻(330QBK-ND)
C1,C2,C3-1μF瓷片电容(445-2861-ND)
S1-单刀双掷电源开关(EG1903-ND)
U2-PIC16LF1827单片机(PIC16LF1827-I/P-ND)
Q1-NPN三极管(2N3904FS-ND)
DS1-发光二极管(颜色不限)(67-1105-N)
U1-3.3V稳压器(MCP1702-3302E/TO-ND)
9V电池座(BH9V-PC-ND)
16针摄像头连接器(S706-ND)
18针双列直插芯片座(A100270-ND)
图3——图形界面软件——拍摄并自动发送模式
图4——图形界面软件——拍摄照片并保存模式
图5——图形界面软件——获取照片模式
图6——作者在一次海洋信标测试中拍摄的照片