본문 바로가기

천체관측(코동)

라즈베리파이 + 적외선 리모콘으로 코동 경통 움직이기

앞서 작성했던 글 코스트코 천체망원경(코동) DIY 전동 포커서 간소화에서는 라즈베리파이에서 모터를 제어하고 적외선 리모콘으로 경통 길이를 조절하여 초점을 맞추는 기능을 테스트했었습니다. 

 

바깥에 나가서 실제 사용하다보니까, Align없이 수동으로 경통을 움직이면서 초점을 맞추려니 2개의 리모콘(코동의 리모콘과 적외선 리모콘)을 조작해야 하는데 이건 좀 아니다 싶었습니다. 

 

제가 갖고 있는 코동 리모콘은 밑에 USB포트(mini)가 달려 있어서 유선으로 라즈베리파이에 연결하면 /dev/ttyUSB0 포트가 생깁니다. 바로 이 포트를 이용해서 명령어를 보내면 경통을 상하(Altitude)좌우(Azimuth)로 움직일 수 있습니다. 

 

프로토콜 매뉴얼 => Programming for NexStar Controlled Telescopes (nexstarsite.com) 

 

Programming for NexStar Controlled Telescopes

 

www.nexstarsite.com

다행히(?) 옛날에 만들어진 프로토콜이라서 체크섬이나 CRC없이 바이너리 데이터만 전송해주면 "#"을 응답으로 보내주는 단순한 구조였습니다. 그렇다면, 시리얼포트에 데이터를 읽고 쓰는 파이썬 코드만 추가하면 경통의 길이와 상하좌우 조절이 모두 가능해지겠습니다. 

 

좌측 적외선 리모콘, 우측 라즈베리파이4(Astroberry OS 설치)에는 적외선 수신기를 장착

상하좌우는 경통의 길이 조절에 이미 사용하고 있으므로, 2, 4, 6, 8번 숫자 키를 누르면 위로, 시계반대방향, 시계방향, 아래로 움직이기 시작하게 하고, 5번을 누르면 정지시키는 간단한 기능을 구현해 보았습니다. 

 

예를 들면, 숫자키 6를 누르면 아래 함수를 sendslewcommand(ser, True, True, 7) 과 같이 호출하면, 미리 지정한 시리얼포트로 수평회전 시계방향으로 속도 7로 회전하고, 숫자키 5를 누르면  sendslewcommand(ser, True, True, 0) 을 보내서 정지시키게 됩니다. 간단한 작동만 원하는 것이므로 프로토콜을 범용으로 구현하지 않고, 그냥 하드코딩으로 처리했습니다.   

 

def sendslewcommand(ser, azm, positive, rate):
    if azm:
        if positive:
            data = chr(80) + chr(2) + chr(16) + chr(36) + chr(rate) + chr(0) + chr(0) + chr(0)
        else:
            data = chr(80) + chr(2) + chr(16) + chr(37) + chr(rate) + chr(0) + chr(0) + chr(0)
    else:
        if positive:
            data = chr(80) + chr(2) + chr(17) + chr(36) + chr(rate) + chr(0) + chr(0) + chr(0)
        else:
            data = chr(80) + chr(2) + chr(17) + chr(37) + chr(rate) + chr(0) + chr(0) + chr(0)
   
    data = bytes(data,'ascii')
    ser.write(data)
    time.sleep(0.1)

 

참고로, Astroberry OS에는 스텔라리움도 설치되어 있고, 역시 여러 가지 소프트웨어를 사용하여 경통을 제어할 수가 있습니다. 

 

이 방법은 코동 원격 제어 중에 가장 단순한 것이라고 보면 되겠네요. 

 

 

 

 

관련 소스 코드는 https://github.com/sevengivings/pynexstarcontrol 에서 찾아 보실 수 있습니다.~