_SKU_DFR0515_OSD_Character_Overlay_Module - jimaobian/DFRobotWikiCn GitHub Wiki
简介
OSD是On-screen Display的简称,即屏幕菜单式调节方式。这是一种在屏幕上附加各类菜单式字符的技术。DFRobot新推出的OSD视频字符叠加模块,采用AT7456E高性能视频字符叠加芯片,该芯片集成了512Byte的EEPROM用户自定义存储空间,是一款单通道、单色随屏显示发生器,具备视频驱动、同步分离器、视频分离开关等功能。在接入视频源后(AV信号),可在视频上覆盖一层540x192像素点,可显示16x30个字符。用户可调取字库来显示相应文字或图案。 Firebeetle OSD字符叠加模块,兼容FireBeetle萤火虫接口,可以直接插接在FireBeetle萤火虫系列主板上。
技术规格
- 工作电压: 3.3V~5V
- 工作电流: 75mA
- 字符显示: 16行x30列
- 字符像素: 18x12
- 分辨率: 540x192
- 显示颜色: 单色(白)
- 信号源:AV输入/AV输出
- 通信接口: SPI
- 工作温度: -10℃~85℃
- 外形尺寸: 58mm x 29mm
- 安装孔尺寸: 3.1mm x 6mm
- 安装孔位置: 53mm x 24mm
- 安装孔尺寸: 内径3.1mm/外径6mm
功能示意图
- RCA的A/V_IN或PH2.0的IN提供视频信号输入
- RCA的A/V_OUT或PH2.0的OUT提供视频信号输出
- SPI接口控制字符叠�
- RST按钮使字符叠加芯片复位
- D2-D5通过拨码开关提供片选
image:DFR0515 OSD Character Overlay Module 11.png|Fig2: FireBeetle OSD Character Overlay Module Function
PinOut
注:NC不连接,VCC为电源电压输出(5V-USB供电时, 3.7V-锂电池供电时) |
使用教程
准备
硬件
- AV接口摄像头 *1
- AV接口显示屏 *1
- AV信号线 *2
- OSD Character Overlay Module(V1.0) *1
- FireBeetle-ESP32 *1
软件
- Arduino IDE,点击下载Arduino IDE
- [https://github.com/DFRobot/DFRobot_OSD请先下载FireBeetle DFRobot_OSD库] 如何安装库文件,点击链接
- 开源字模软件TheDotFactory.exe 包含在arduino库tool目录下,github 下载链接
接线图
操作步骤
- 将OSD模块与FireBeetle-ESP32按照上图对应的引脚连接,并拨动OSD的拨码开关(当前代码使用的是D3)。
- 将摄像头和显示屏按照接线图与OSD模块连接。
- 将FireBeetle-ESP32通过USB线与电脑连接,打开IDE,下载并运行DFRobot_OSD库中的example。
注:cs变量为片选引脚,必须和拨码开关相对应。例如:拨码开关D3,对应的FireBeetle-ESP32引脚为IO26。本示例片选为D3。
EEPROM字库
image:eeprom1.png|EEPROM第一页: 第一个字符地址 0x01 image:eeprom2.png|EEPROM第二页: 第一个字符地址 0x101
字模软件的使用
1.点击设置按钮 2.选择下图中的选项:Padding Removal,Line wrap,Byte 3.在左侧编辑框输入内容,点击Generate生成字模
示例
- 以下为FireBeetle DFRobot_OSD的样例代码,请注意确保CS与你选择的片选引脚对应。
|
/*!
* file DFRobot_OSD.ino
* character superimposition.
* @n This example Set characters on the screen.
*
* Copyright [DFRobot](http://www.dfrobot.com), 2016
* Copyright GNU Lesser General Public License
*
* version V1.0
* date 2017-10-9
*/
#include <DFRobot_OSD.h>
/*select CS pin*/
#ifdef __AVR__
int cs = 3;
#elif defined ESP_PLATFORM
int cs = D3;
#elif defined __ets__
int cs = D3;
#else
#error unknow board
#endif
DFRobot_OSD osd(cs);
/*Define Chinese characters*/
int buf0[36] = {0x02,0x80,0x02,0x40,0x7F,0xE0,0x42,0x00,0x42,0x00,0x7A,0x40,0x4A,0x40,0x4A,0x80,0x49,0x20,0x5A,0xA0,0x44,0x60,0x88,0x20};
int buf1[36] = {0x20,0x00,0x25,0xE0,0x75,0x20,0x29,0x20,0xFD,0x40,0x21,0x40,0x7D,0x20,0xC5,0x20,0x7D,0x20,0x45,0xC0,0x7D,0x00,0x45,0x00};
int buf2[36] = {0x20,0x00,0x2F,0xC0,0x24,0x40,0xF4,0x40,0x24,0x80,0x64,0xE0,0x74,0x20,0xA6,0x20,0x25,0x40,0x28,0x80,0x29,0x40,0x32,0x20};
int buf3[36] = {0x3F,0x00,0x2A,0xE0,0xFA,0x20,0x2E,0xA0,0x2A,0xA0,0xFE,0xA0,0x2A,0x40,0xAB,0x40,0xBE,0xA0,0xA3,0x20,0xE2,0x00,0xBF,0xE0};
void setup(){
osd.init();
osd.clear();
/* Write the custom character to the OSD, replacing the original character*/
/* Expand 0xe0 to 0x0e0, the high 8 bits indicate page number and the low 8 bits indicate the inpage address.*/
osd.storeChar(0xe0,buf0);
osd.storeChar(0xe1,buf1);
osd.storeChar(0xe2,buf2);
osd.storeChar(0xe3,buf3);
/*Displays custom characters*/
osd.displayChar(2,2,0xe0);
osd.displayChar(2,3,0xe1);
osd.displayChar(2,4,0xe2);
osd.displayChar(2,5,0xe3);
/*display character*/
osd.displayChar(9,9,0x11d);
osd.displayChar(9,10,0x11e);
osd.displayChar(8,11,0x10f);
/*display String*/
const char* str1 = "DFRobot";
String str2 = "2017.9.12";
String str3(3.14);
osd.displayString(14,21,str1);
osd.displayString(2,19,str2);
osd.displayString(4,19,str3);
osd.displayString(4,2,"hello world!");
}
void loop(){
}
|}
结果
Arduino库函数功能列表
- 构造函数,参数:cs 片选引脚
DFRobot_OSD(int CS);
- OSD的初始化
void init();
- 清空显示屏上的字符
void clear(void);
- 显示EEPROM中的字符,可容纳16行,30列字符,参数:row纵向坐标(0,15),col横向坐标(0,29),addr表示字符的地址值,高八位是页号,低八位是页内地址(可查阅EEPROM表),比如0x028,表示第一页,页内地址0x28,查表可知代表d字符。0x10F,表示第二页,页内地址0x0F,查表可知代表雷达字符。
void displayChar(unsigned char row, unsigned char col, unsigned short addr);
- 显示字符串,可容纳16行,30列字符,参数:row纵向坐标(0,15),col横向坐标(0,29),s为String类型的字符串
void displayString(unsigned char row, unsigned char col, unsigned char *s);
- 显示字符串,可容纳16行,30列字符,参数:row纵向坐标(0,15),col横向坐标(0,29),s为String类型的字符串
void displayString(unsigned char row, unsigned char col, String s);
- 将自定义字符存储到OSD的指定地址,参数:addr为OSD存储字符的地址,dt为字模软件提取的字模
void storeChar(unsigned short addr,int dt[]);
兼容性测试
MCU | 测试通过 | 测试失败 | 未测试 | 特别标注 |
FireBeetle-Board328P | √ | |||
FireBeetle-ESP32 | √ | |||
FireBeetle-ESP8266 | √ | |||
Leonardo | √ | 使用杜邦线连接测试 |
尺寸图
- pin脚间距:2.54mm
- 安装孔间距:24mm/53mm
- 安装孔尺寸:3.1mm
- 主板尺寸:29.00mm×58.00mm
- 板厚:1.6mm
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |