_SKU_DFR0515_OSD_Character_Overlay_Module - jimaobian/DFRobotWikiCn GitHub Wiki

FireBeetle OSD字符叠加模块

简介

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

Fig3: OSD Character Overlay Module Pinout

warning_yellow.png
注:NC不连接,VCC为电源电压输出(5V-USB供电时, 3.7V-锂电池供电时)

使用教程

准备

硬件

  • AV接口摄像头 *1
  • AV接口显示屏 *1
  • AV信号线 *2
  • OSD Character Overlay Module(V1.0) *1
  • FireBeetle-ESP32 *1

软件

接线图

connect_osd.png

操作步骤

  • 将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.点击设置按钮 Tool.png 2.选择下图中的选项:Padding Removal,Line wrap,Byte Config-20180313.png 3.在左侧编辑框输入内容,点击Generate生成字模 Putout.png

示例

  • 以下为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(){

}

|}

结果

DSC_77701.jpg

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

Fig1: FireBeetle Covers-OLED12864 Display尺寸图

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |

更多

DFshopping_car1.png DFRobot商城购买链接