3월 202016
 

NX 프로토콜을 다시 분석하는 과정에서 막간을 이용해 NX 렌즈를 아두이노로 직접 컨트롤하는 테스트를 진행해봤습니다.

수년전에도 같은 테스트를 한적이 있는데, 그 때는 아두이노를 사용하지는 않았었습니다. 이번에 아두이노로 한 것은 관심있는 분들이 쉽게 시도해보시라고 한번 올려봤습니다.

사용한 아두이노는 여러 아두이노 종류 중에, 아두이노 나노라고 하는 모델입니다. 이유는 SPI 통신에 3.3V를 사용하기 때문에, NX 가 사용하는 로직 전압과 같기 때문이고, 이베이 같은 곳을 이용하면 2-3천원에 구매할 수 있습니다.

아래는 아두이노 나노를 NX 마운트의 어느 핀에 연결을 해야 하는지 나타내주는 배선도입니다. 외부전압은 5V를 사용해주시고, 가능하면, USB를 아두이노에 직접 공급하는 전압을 사용하지는 마십시오. 전류가 부족해 좀 불안정합니다.

NX-Lens-Control

테스트에 사용한 아두이노 소스코드는 GitHub에 공개했습니다. 아래 링크에서 소스코드를 받으실 수 있습니다.

https://github.com/blueringlab/NXLensControlTest

소스코드가 하는 일은 가장 처음 0x03 0xAA 0x55를 주고 받는 인증작업을 하고, 바로 이어서, NX렌즈를 MF 모드로 전환하는 명령을 렌즈로 내립니다. 그렇게 되면 모든 NX 렌즈는 외부 링으로 포커스를 조절할 수 있어집니다.

소스코드를 보시면 아시겠지만, 테스트 내내 클록을 2MHz가 아닌, 250 KHz로 사용하고 있습니다. 이렇게 사용하더라도 원활하게 통신을 주고 받습니다.

아래는 테스트 영상입니다.



3월 172016
 
삼성 NX 바디-렌즈 부팅 절차 - 2편

지닌 1편에 이어 계속 3단계 부터 설명하겠습니다.   3단계: 렌즈 개별 특정 정보 요구/수신 지난 번에도 말씀 드렸지만, 이 단계 부터는 CLK (1번핀)에서 발생하는 동기신호는 2 MHz로 증가합니다. 기본적으로 이 3단계는 2단계의 블록 4 : 지원 특성 정의 테이블에서 정의한 각 항목이 다시 질의 되는 형태를 취합니다. 예를 들자면 NX 30/2 렌즈의 경우는, 16진수로, 5001, […]

3월 152016
 
삼성 NX 바디-렌즈 부팅 절차 - 1편

지난 게시글로 어느정도 워밍업이 되셨을 것이라고 보고… ㅎㅎㅎ 오늘 게시글은 상당히 복잡합니다. 바로 NX 바디에 NX 렌즈가 결합되었을 때, 또는 NX 바디의 전원을 켰을 때, 바디와 렌즈가 서로 같인 인증을 거치면서 렌즈로 부터 바디가 필요로 하는 데이터를 수집하는 절차에 대해 글을 올려보겠습니다. 이 절차는 워낙 까다로운 부분이 들어가고, 4년전에 이미 해석을 시도했을 때도 그랬지만, 이번에 […]

3월 092016
 
삼성 NX 바디-렌즈 통신 데이터 구조

삼성 NX 바디와 렌즈가 통신을 할 때, 기본적으로 동일한 데이터 구조를 가집니다. 렌즈와 바디가 서로에게 통신을 주고 받는 모습을 한번 보면서 말씀드리겠습니다.     통신을 캡쳐한 이미지를 보면, 바디에서 0x05 0x10 0x07 0x50 0x07 이라는 5개 바이트를 렌즈로 보내고, 렌즈는 답변으로 0x05 0x20 0x01 0x01 0x6F를 보냈습니다. 지금까지 쭉 NX 통신을 지켜본 결과, 데이터 통신의 […]

3월 052016
 
삼성 NX 마운트 프로토콜 - 일반

이미 구석기시대에 상당부분 분석이 끝난 NX 마운트 프로토콜의 재분석 작업에 들어갔습니다. 이전에 작업했던 것은 어떻게 보면 상당부분 꼼수를 부린 것이거든요. ㅎㅎㅎ 렌즈와 카메라가 부팅을 시도할 때, 이전에 했던 테스트는 NX 30팬 렌즈의 프로파일을 그대로 덤프받아서 NX 바디를 속였던 것입니다. 이번에 EF-NX 어댑터를 이용하게 되면, 사진 촬영시 EXIF 데이터에 사용한 렌즈 모델명이라던가, 초점 거리, 조리개값 등등의 […]