2022년 6월 8일 수요일

비디오(HD-SDI,CVBS) 계측기 보드



이번 보드는 가장 최근에 작업한 비디오 계측기능을 구현한 보드이다.

비디오 CVBS(NTSC,PAL)와 같은 영상이나 HD-SDI 와 같은 비디오 영상계측기

의 경우 고가이거나 현재는 구하기 힘든 제품들이 많아서 계측기능중에

웨이브폼(Waveform), 벡터스코프(Vectorscope)를 볼수 있는 보드를 만들어봤다.

보드에 대해서 간단히 소개를 하면 아래와 같다.

1. 입력은 CVBS 와 HD-SDI 신호를 받는다.

2. DC +12V입력을 받아서 FPGA로 패널 영상을 만들어서 7인치 패널을 동작시킨다.

3. 7인치 패널에 Display하는 영상에 CVBS , HD-SDI 의 웨이브폼(Waveform) 과 벡터스코프(Vectorscope) 영상을 구현한다.

4. 패널은 1024 x 600 해상도의 AUO패널을 사용하였고, Waveform - Vectorscope는 512 x 512 해상도로 구현하여 패널 정중앙에 Display해준다.

5. FPGA구현 프로그램을 2개로 구현해서 CVBS또는 HD-SDI로만 결정해서 볼수 있다.

보드의 블럭도를 살펴보겠다.










위 블럭도에서 보는바와 같이 SDI신호는 FPGA의 SERDES블럭을 이용하여

동작을 시켰고, CVBS(컴포지트)경우는 CVBS to TTL을 만들어줄수 있는

Decoder를 따로 사용하여 Y/C 20bit로 데이타를 받아서 처리하였다.










위 사진은 실제 블럭도에 해당하는 보드사진이다.


위 사진은 보드와 패널을 결합하였을때를 보여주는 사진이다.

AUO 7인치 패널로 연결되는 LVDS쪽 연결이 FPC 케이블로 되어있어서

연결하기가 쉽지않게 되어있다

아래 사진들은 CVBS와 HD-SDI 입력을 넣었을때 실제로 동작하는

WaveForm, Vector 를 보여주고 있다.









1) CVBS NTSC입력을 넣고 VectorScope 동작.

​








2) HD-SDI 입력시 WaveForm동작.








3) HD-SDI 입력시 VectorScope동작.

동작 동영상



FPGA관련 정보, 영상 신호 이론, 하드웨어 관련 더 많은 정보는 하기 네이버 블로그에 있습니다. https://blog.naver.com/zaszas2345

​



SDI 모니터 , 방송용 모니터 교육자료

 이번장에서는 방송용 모니터의 간단한 소개와 역사, 종류에 대해서 교육자료로 만들어 보았다.

( PDF로 작성된 자료 다운로드는 : https://blog.naver.com/zaszas2345/221597442553 )


방송용 모니터는 주로 방송국에서 사용되던 모니터인데, 일반인들이 접근하기에는 어려운 환경적인 부분과, 방송용 모니터에 들어가는 기능들을 눈으로 확인할수 있는 자료라고 생각한다.

설명은....

1. SDI 모니터의 현재 상황과 역사

2. Video 종류

3. HD-SDI란?

4. SMPTE Format

5. 방송모니터 종류

6. Monitor Front

7. Monitor Rear

8. Main Features

9. Data Ports

10. 방송모니터 OSD

11. Color Calibration

12. Waveform/Vector

13. Audio Level Meeter

14. Marker & Safety Area

15. False Color

16. Y Clip Guide

17. Focus & Histogram

18. Closed Caption

의 순서로 이루어져 있고, 설명으로는 방대한 내용이기 때문에 방송용 모니터에 있어야 하는 기능들이 뭐가 있는지? 그 기능들이 실제로 어떻게 동작되서 보이는지 위주로 내용 정리가 되어있다.

본 내용을 보고 방송용 모니터와 일반 모니터의 차이점이나 방송용 모니터에 들어가는 기능들이 어떤게 있는지 확인할수 있는 자료가 됐으면 한다.

모니터 감마(Gamma), 색온도(Color Temp)

 

이번장에서는 모니터에서는 항상 같이 쫒아다니는 하지만 일반적으로 내용이 어려울수가 있는 감마(gamma), 색온도(White Balance)에 대해서 이야기를 해보고자 한다.

기본적으로 내용을 전문가 수준으로 설명하기에는 내용이 너무 방대하고 나또한 어렵기때문에, 최대한 쉽게 개념 위주로 모니터를 토대로 설명하고자 한다.

먼저 감마와 색온도에 대해서 그동안 내가 했던 방송용모니터나 의료용모니터 제품을 토대로 정의를 쉽게 내린다고 하면 아래와 같고, 이러한 감마와 색온도를 조정하는 작업을 모니터에서는 Color Calibration 작업이라고 한다.

감마(gamma) : 0% ~ 100% 까지 Black에서 최대 밝기까지의 단계를 어떤 형태로 볼것인지를 선택.

색온도(White balance) : White Patten을 R,G,B값을 이용하여 원하는 색좌표를 선택.

여기서 모니터 Calibration시 감마와 색온도의 역할이 조금씩 다른데 그 차이를 알아보겠다.

감마 : 어두운 부분부터 밝은 부분까지의 전체적인 구간을 어떻게 볼것인지 선택이고, 주로 우리가 보는 모니터의 경우는 2.2 감마 곡선을 사용하고, 의료용이나 다른 특정 분야에서는 그 분야에 맞는 곡선을 사용한다.

하지만 특정 한 구간만 원하는 형태로 보고자 한다면 전체적인 영상의 밝기 밸런스가 무너지기 때문에 감마 곡선을 이용하여 전체적인 밸런스를 우리가 보기 편하게 만들어준다.

그리고, 감마를 조정하기 위해서는 Look-up table 이라고 하는 메모리 구조를 사용하는데 특정 입력값에 대해 정해진값으로 바로 변환해주는 방식이라고 생각하면 된다.








위 사진은 (1) 영상 데이타를 LUT 를 이용하여 Linear한 값을 적용했을때 동일하게 나오는 (2)영상과 LUT값에 동일한 값을 규칙적으로 적용하고, 이 LUT를 사용했을때 나오는 (3)영상을 보여주고 있다.

아래 표는 위 영상에 대한 LUT값이 실제 적용됐을때의 값을 보여주고 있다.












위 (1) -> (2) LUT가 적용됐을때는 동일한 값이 동일한 출력으로 나가지만, 오른쪽에 있는 (1)->(3)LUT가 적용됐을때는 입력이 0,1,2 가 들어와도 출력은 동일한 '0' 으로 나가게 된다.

이 부분을 영상에서 확대하여 보면 아래와 같이 보인다.







색온도 : 일반적으로 감마를 먼저 맞추고 나서 이후에는 색온도를 Calibration하는 작업을 하는데 색온도는 보편적으로 R,G,B Gain을 사용하여 내가 원하는 색의 온도를 맞추는 작업이다.

우리가 형광등을 고를때 약간 붉은색 또는 푸른색을 선택하듯이 형광등이나 LED에도 색온도가 존재하고, 모니터에도 존재한다.

일반적으로 가장 많이 사용하는 색온도는 6500K를 사용하지만 사용 환경이나 분야에 따라서 5000K ~ 9000K 내에서 많이 사용하고 경우에 따라서는 이 범위를 벗어난 수치도 사용한다.

6500K 정도가 우리가 일반적으로 보는 경우라고 하면 이 수치에서 낮아질수록 전체적으로 붉어지고, 수치가 올라갈수록 푸른색이 된다.

아래 그림을 보면 우리가 표현하는 색 공간이고, 그 색 공간안에서 색온도에 따라서 전체적인 색은 붉은색과 푸른색쪽으로 움직이는것을 알수 있다. 그리고, 그 색온도를 이야기하는 좌표가 X 좌표, Y좌표를 가지고도 이야기한다.

X(0.3127) , Y(0.3290) = 6500K 를 이야기한다.











모니터를 한대만 볼경우에는 User가 임의대로 메뉴를 수정후 어느정도까지는 사용할수도 있겠지만 수십대의 모니터를 같이 볼경우에는 각각의 모니터를 정해진 기준으로 Calibration하여 봐야지만 모니터간의 편차를 줄이고,동일한 색감과 원하는 Gamma로 볼수가 있다.

모니터가 동일 제조사 동일 모델명이라고 하더라도 모니터 보드쪽에서 Calibration을 하지 않는경우에는 편차가 생각보다 심하게 나기때문에 전혀 다른 색감으로 볼수밖에 없다.

경우에 따라서 패널 자체적으로 감마가 내가 원하는 감마로 잘 나올경우 색온도 Calibration만 하는 경우도 있다.

다음편에는 실제로 의료용모니터중에서 초음파, 내시경 모니터에 적용한 보드를 이용하여 Calibration한 동영상을 가지고 설명을 하도록 하겠다.

FPGA관련 정보, 영상 신호 이론, 하드웨어 관련 더 많은 정보는 하기 네이버 블로그에 있습니다.   https://blog.naver.com/zaszas2345



블루투스 HC-05사용하기



이번에는 블루투스 모듈 HC-05 2개로 서로 통신을 해보자.

이번에 블루투스 통신을 해보고 싶어서 인터넷을 찾아보니 HC-05, HC-06 이라는 모듈을 많이 사용하는걸로 보여지고 가격도 꽤 저렴해서 한번 자료조사를 해봤다. HC-05는 Master,Slave 기능이 둘다 되고 HC-06의 경우 Slave만 된다고 한다.

(어떤 글에서는 HC-06도 버젼에 따라서 Master,Slave둘다 된다고 하기도 한다.)

그리고, 통신 속도와 STATE상태 핀이 나와있냐 안나와있냐가 조금 다르다.

HC-05 : 38400,N,8,1 , 통신 마지막에 추가 Data("Both NL&CR")가 있다.

HC-06 : 9600,N,8,1 , 통신 마지막에 추가 Data가 없다.

여기서 추가 Data의 경우 통신 Tool에서 지원이 되면 Both NL&CR 을 선택해주면 되고, 없다면 사용자가 직접 넣어줘야 한다. 이 부분은 모듈 셋팅시 마지막에 항상 넣어줘야 하고, 셋팅완료후 모듈간에 통신을 할때는 있으면 통신 창에서 라인이 바뀌어서 나오고 없으면 그냥 데이타가 이어서 보여진다. 그리고, 통신 속도의 경우 사용자가 셋팅시 명령어로 통신 속도를 바꿔줄수 있는데 이는 사용자가 통신할때 통신 속도이지 블루투스 모듈 셋팅을 할때는 통신속도를 HC-05 (38400)으로 해줘야 한다.

우선 둘다 Master,Slave가 가능한 HC-05를 두개 인터넷으로 주문을 하고 드뎌 도착했다. HC-05나 HC-06이나 기본 셋팅법은 동일하니 이 내용을 참고하여 HC-06사용시 활용하면 된다. HC-06과 HC-05 셋팅 명령어가 다른 부분을 확인.






보드 앞을 보면 패턴 안테나가 있고, 뒷면을 보니 사용자가 사용가능한 핀들이 친절히 표시되어있다.

여기서 사용자가 사용할 핀들은 RXD,TXD,GND,VCC이고 모듈 셋팅을 해주기 위해서 EN핀을 사용해야 한다. 모듈 셋팅시 High가 되어있어야 셋팅이 가능하고, 셋팅이 끝나고 사용할때는 EN핀을 OPEN으로 해두면 된다.

PC로 셋팅을 하기 위해서 집에 있는 보드를 찾아보니 USB to UART통신 컨버터가 있어서 이 보드를 이용해서 PC와 연결해보기로 했다.
















위와 같이 2개를 만들었다. 이제 PC에 저 USB단자를 연결해서 셋팅해보자.













왼쪽 그림과 같이 EN핀 High를 주고 셋팅을 하였다.

여기서 오른쪽 그림의 LED가 모듈 상태에 따라서 켜지는 속도가 달라지는것을 알수있다.

1. LED 깜빡이는 속도가 3초간 ON/OFF : EN핀 High로 줬을때 모듈을 셋팅할수 있는 상태. 모듈 셋팅을 위해서는 이 LED상태를 확인하자. 참고로 EN핀을 사용하지 않을때는 전원을 넣기 전에 모듈에 있는 스위치를 누르고 있다가 전원 넣고 2~3초후에 스위치에서 손을 띄고 사용해도 된다. (근데, 누군가 스위치로 셋팅시 Full로 셋팅을 못한다는 이야기도 있어서 우선 확실히 하는걸로 선택했다)

2. 셋팅후 둘이 페어링이 되면 약 2초간 OFF에서 빠른 속도로 2번 ON이 되고 다시 OFF됨. (이 순서로 반복되면 2개의 모듈이 연결이 잘 됐다고 보면 된다.)

3. 연결이 안됐을때는 Slave는 지속적으로 빠른 속도로 LED가 깜빡이고 Master는 LED가 2번과 같이 반복하는데 좀더 빠르게 동작하는 걸로 보여진다.

이제 PC에 연결하였을때 연결된 PC Port를 확인하고, 통신 프로그램을 이용하여 셋팅을 먼저 해보자. 여기서는 http://blog.daum.net/pg365/276 이라는 블로그에서 친절히 자기가 개발한 프로그램을 올려주셔서 이 프로그램을 사용해봤다.








프로그램을 실행하여 Connect를 누르고 Serial 셋팅을 하였다. 연결 포트와 통신 속도 38400을 선택.








이후에 AT , at 대소문자 구분은 안하는걸로 보여진다. 이 명령어를 보냈을때 OK라는 데이타가 와야 셋팅이 가능한 상태가 된다. 위에 이야기 했듯이 오른쪽 종료 버튼 위에 보면 뒤에 붙이기 (\r\n) 을 넣어주었다.

아니면 통신 Tool에서 (both nl&cr)을 선택해주는게 있다거나 Hex로 0x0D,0x0A를 주면 된다.

1. both nl&cr

2. 0x0D 0x0A

3. \r\n

위 3가지모두 동일한 데이타를 전송하는거다. 이는 모듈 셋팅할때 필요하다.










위와 같이 at 라는 데이타를 보내면 OK가 모듈에서 데이타가 와야 한다. 이제 모듈과 PC가 연결이 되었고, 명령어로 셋팅을 할수 있다. 가끔 통신을 하다보니 그전 상태가 뭔가 안좋을때는 OK가 아니라 ERROR:[0]이라는 문구가 오는데 다시 정상적인 데이타를 보내면 OK가 온다.





버전을 확인하는 명령어를 보냈더니 2.0 버젼과 날짜가 오고, OK가 온다.

이리 저리 셋팅을 처음하는거라 한대는 Master로 하고, 다른 한대는 Slave로 해서 2개의 HC-05 끼리 통신을 시켜보니 서로 페어링이 안돼서 처음부터 다시 셋팅을 해봤다.

한대는 Master로

at

at+init

at+role=1

at+pswd=2345

at+uart=9600,0,0

at+cmode=1

또다른 한대는 Slave로 at+role = 1 을 '0' 으로 바꿔서

at

at+init

at+role=0

at+pswd=2345

at+uart=9600,0,0

at+cmode=1

각순서대로 설명하면

at (기본 연결됐는지 확인용)

at+init (기존 통신 연결상태를 모두 지우는 명령)

at+role=1 ( '1'로주면 Master, '0' 주면 Slave)

at+pswd=2345 (패스워드)

at+uart=9600,0,0 (통신속도)

at+cmode=1 (모든 Address장비와 통신)

위와 같이 순서대로 셋팅을 해서 EN핀을 다시 OPEN해주고 2개의 USB를 PC로 연결하니 페어링은 되어서 LED가 주기적으로 2번 깜빡이는게 보인다.

다시 통신 창을 열어서 데이타를 주고 받아보니 된다.






한쪽은 \r\n을 넣어주고, 한쪽은 안넣어주고 서로 데이타를 주고 받을때 통신창에 나타나는 메세지가 어떻게 다르게 보여지는지 알수 있다.

HC-05명령어를 더 보고 싶으면 하기 사이트에 들어가면 된다.

http://www.linotux.ch/arduino/HC-0305_serial_module_AT_commamd_set_201104_revised.pdf

아래 보면 AT Command에 \r\n 을 주라는 내용도 있다.











HC-05, HC-06의 명령어 참고시 다른 사이트도 많고, 하기 사이트에도 있다.

https://blog.naver.com/wararat/220457318826

http://www.martyncurrey.com/arduino-and-hc-06-zs-040/

이상으로 HC-05 블루투스 모듈을 이용하여 통신하는걸 해봤다.

FPGA관련 정보, 영상 신호 이론, 하드웨어 관련 더 많은 정보는 하기 네이버 블로그에 있습니다. https://blog.naver.com/zaszas2345