Search Results

'BiM 418'에 해당하는 글들

  1. 2007/11/12  'BIM-433(418)'을 이용한 시리얼 RF 통신 (8)

'BIM-433(418)'을 이용한 시리얼 RF 통신

2007/11/12 10:20 로보트
  이번 동아리 전시회 때 로봇축구의 팀원으로 RF 통신을 해보았다.

  RF 모듈은 Radiometrix(http://www.radiometrix.co.uk )의 BIM-433모델을 사용했다. RF 통신으로 흔히 사용되는 모듈로 우리나라에서도 흔히 쓰이는 듯하다.
  'BIM-433-40'은 Euro Version이고, 'BIM-418-40'은 UK Version이다. 기능은 똑같아서 쌍으로 사용하면 된다.

  기본적으로 컴퓨터 Serial Port에 연결하여 송신하고, 로봇에서 수신하는 방식을 사용하기로 했다. 단방향은 전환 시간이라든지 노이즈가 가장 덜 타기 때문에 사용이 쉽다고 한다.

사용자 삽입 이미지

  송신부를 회로를 보면 'Transmitter Enable'로 설정되어 항상 데이터를 전송하고 있다. 그래서 수신부의 'Carrier Detect' 핀을 찍어보면 항상 Low로 떨어져 있다.
 
  "RS232" Serial Data 전송 방법은 데이터시트 뒷부분에 나오나 Radiometrix사이트 App note에 자세히 나온다.
http://www.radiometrix.co.uk/apps/apnt101.htm 

 실제 데이터를 전송하기 전에 아래의 순서로 헤더 코드를 붙여준다.

Preamble -> UART Sync -> Start Code

Preamble - '0x55(고주파 데이터)'를 대략 3ms 이상 전송한다.
UART Sync - '0xFF'를 1, 2 바이트 전송한다.
Start Code - 고유한 시작코드를 전송한다. 수신부에서는 이 신호를 기점으로 실제 데이터를 받을 준비를 한다.

  RF 통신의 특성상 데이터가 저주파성분(0xFF나 0x00)을 띨 때 노이즈가 생길 확률이 높아진다. 따라서 0(mark), 1(space) 비트 비율이 50:50이 되도록 맞추길 강조한다. 그래서 데이터시트에서는 3가지의 인코딩 방법을 추가로 설명해 주었다. 총 전송 데이터의 양이 늘어나는 대신 에러율이 적어 속도를 높일 수 있다.
 

  일단 로봇축구에서는 많은 데이터나 높은 속도가 요구되지 않기 때문에 인코딩 방법은 추가로 사용하지 않았다.

  CPU로 사용된 TMS320F2808의 SCI 핀과 RF 모듈을 연결하였으나 문제가 발생했다. CPU의 SCI핀은 기본 HIGH 상태에서 LOW로 떨어지는 시점을 시작으로 인식했으나, BIM-433의 RXD(RF->CPU)핀은 기본이 LOW였다.  신호의 극성은 맞으나 초기상태가 틀려 문제가 발생했다.

  RXD Pin을 풀업해도 BIM-433의 내부저항으로 신호가 풀업이 되는 것이 아니고 중간에 뜨게 된다. 그래서 버퍼를 사용하려 했느나 'Enable'을 연결할 핀이 없어 못하는 중에 동아리 선배분이 도와주었다^^.

 문제점은 CPU(TMS320F2808)에서 SCI(UART) 에러 처리를 하지 않았던 것. 첫 비트가 HIGH->LOW가 아니라서 Rx 오류가 발생하게 되는 데, 이 오류를 클리어 해주면 다음 데이터 부터는 정상적으로 받을 수 있다는 것이다. 즉, Rx 에러 비트를 클리어해줌으로서  첫 바이트는 오류로 버리고 다음 바이트부터 데이터를 정상적으로 받을 수 있었다.


 
  또한 PC와 CPU간의 통신 시 데이터 형을 구조체로 선언하여 바이트 오더와 정렬을 하여 간편하게 받아오고 싶었으나, TMS320F2808의 데이터 크기와 메모리 구조가 PC와 차이점이 커서 결국 변수 하나하나 넣어주는 방식을 사용하게 되었다. TMS320F2808에서 sizeof의 크기가 일반적인 것과 달라 고생했다. 결국 하윤이형이 찾아 줘서 넘어갔다.

  Note: TMS320C28x Byte Is 16 Bits

By ANSI/ISO C definition, the sizeof operator yields the number of bytes required
to store an object. ANSI/ISO further stipulates that when sizeof is applied to char,
the result is 1. Since the TMS320C28x char is 16 bits (to make it separately
addressable), a byte is also 16 bits. This yields results you may not expect; for
example, size of (int) = = 1 (not 2). TMS320C28x bytes and words are equivalent
(16 bits).
2007/11/12 10:20 2007/11/12 10:20
  1. 진이  2007/12/24 15:53     댓글주소  수정/삭제  댓글쓰기
    안녕하세요 구성하신 회로에 궁금한점이 있어 이렇게 덧글 남깁니다. 제가 2812로 테스트중인데 rxd와 txd를 Yarmini님께서 구성하신 회로데로 물려도 되는지 궁금해서 문의드립니다. 저는 rxd를 저항을 이용해서 5v->3.3v 레벨로 변환했고 txd를 바로 연결했는데 오류가 좀 많이 있어서요. dsp의 SCI와 연결할때 Yarmini님께서 구성하신 회로데로 바로연결해도 문제없을까요?
    • Yarmini  2007/12/24 23:44     댓글주소  수정/삭제
      안녕하세요^^ 메일주소 남겨주시면 더 좋았을텐데^^;;
      처음에는 3.3V로 바꿔줘야 하지 않을까.. 하다가 일단 그냥 달아봤는데요.
      별 문제 없이 동작하더라구요.

      전 BPS 4800으로 느린속도를 사용하였기 때문에 오류가 적었을 수도 있네요^^
  2. 진이  2007/12/25 17:42     댓글주소  수정/삭제  댓글쓰기
    감사합니다. ^^ 느린속도로 하니 오류가 거의 없어졌습니다. 덕분에 크리스마스는 집에서 보냅니다~ ^^; 그럼 즐거운 연말 크리스마스 보내세요~ ^^ ~
  3. 준이  2007/12/27 12:54     댓글주소  수정/삭제  댓글쓰기
    안녕하세요 yarmini님...제가 이번에 RF통신에 입문하게되었는데요...정말 왕초보에요...혼자 공부해서 시작해나가야하는데...어떻게 시작을 해야할지 감이안와서요...그리구 위의 회로는 yarmini님이 직접 만드신거죠? 전 BIM-418을씁니다...aj53s@nate.com으로 답글주세요...궁금한거있음 계속 여쭤바도 될런지 ^^; 참고로 데이터 시트는 볼줄압니다...
  4. 주이  2008/07/16 17:29     댓글주소  수정/삭제  댓글쓰기
    안녕하세요~ rf통신을 공부하고 있는 학생인데요 ㅋ 일단 하드웨어는 만든다고 만들었는데.. 근데 셀렉트에 저항 꼭 달아야하나요?? 그리구.. 프로그래밍을 코드비젼을 사용해서 하는데 아무리 찾아도 저랑 같은 조건인 프로그램은 없더라구요.. ㅜㅅㅜ 혹시 간단한 회로 테스트 할만한 프로그램 있으면 알려주심 안될까요?? 대충 개념은 있는데.. 값을 전송할때 한 핀을 통해서 직렬로 전송하는게 쫌 이해가 안되네요;; 어떻게 프로그램해야지 그렇게 나가는지;; 도움좀 주시면 감사하겠습니다~
    제 메일 주소는 yellow79012@naver.com 이에요~ 부탁드려요 ^^ㅋ
  5. 동혁  2008/10/09 14:34     댓글주소  수정/삭제  댓글쓰기
    안녕하세요?저도 이것과 비슷한 것을 만드려고하는데요..제가 워낙 초보라서 어려움이 많이있습니다. 이것저것 여쭤보려고하는데..우선 어떤 부품들을 사용하셨는지 궁금합니다. hyuck96@nate.com으로 메일주시면 감사하겠습니다. 그럼 수고하세요^^
menu openmenu close