안녕하세요 시더입니다.

 

오늘은 rs485 부품을 가지고 삽질한 내용을 기록 해볼까 합니다.

 

구입처는 다음과 같습니다.

 

http://www.mechasolution.com/shop/goods/goods_view.php?goodsno=2554&category=013


음.. 심플한 디자인이 마음에 들죠?  A랑 B는 RS485에서 T+랑 T- 인거 같고 반대쪽은 TTL 같더군요

(그림만 보고 구입하면 고생합니다. 부품 살땐Schematic 부터 보고 사세요. 걍 이 글을 다 보면 됩니다)

 

 

대략 이렇게 연결됩니다. 그리고 라즈베리 파이로 시리얼 통신 코드를 작성하고 실행 했더니 바로 쭉쭉

 

센서 값이 잘 들어옵니다.

 

 

생각보다 쉽게 끝났다고 좋아하고 있는데 명령어 전송이 되질 않습니다. 간략하게 이야기하자면

 

라즈베리파이에서 쏜 명령어가 센서까지 가질 못하더군요.  처음에는 코드문제라고 생각했으나  딱히

 

복잡한 코드도 아니고, 혹 선이 잘못되었나 싶어서 끝쪽을 다른 시리얼 기계로 찍어봤는데 멀쩡하더군요

 

그렇다면 저 rs485 부품이 문제라는 이야기가 되더군요. 혹시 납땜하다가 선을 태웠나 싶었는데..

 

인터넷 검색찬스를 사용하니 rs485는 반이중통신 이랍니다. 즉 동시에 데이터를 주고 받고

 

하는 기능이 불가능하다는 거죠. 하드웨어나 소프트웨어로 커버를 해야하는 부분입니다. 

 

rs485 부품에 스위치나 점퍼 같은게 있나 봤는데 안보이더군요. 결국 도면을 찾아봅니다.

 

 

중앙을 보면 RTS가 보입니다. 그 오늘쪽에는 /RE(RE의 역이라고 생각함) DE가 보이는군요. 그 두 부분

 

이 RTS로 연결됩니다. 저걸 보니 학부시절 배웟던 플리플롭이 생각납니다. 바로 vcc에 꼽아봅니다.

 

부품 LED에서 불이 켜지네요. 

 

확인해보니 불이 켜지면 송신(send)만 되고, 불이 꺼지면 수신(recv)만 됩니다.

 

그러니 처음 만들었을 때는 센서값이 잘들어오던 거죠.

 

이제 코딩을 몇줄 더 추가해서 전송시에만 잠깐 불이 들어오고 바로 꺼지게 해봅니다.

 

 

위 사진 처럼 라즈베리파이의 GPIO 01에 연결 해주고 pin을 HIGH와 LOW로 상황에 맞게 코딩해줍니다.

 

 

드디어 이제 데이터가 주고받는게 정상적으로 되는군요. 

(중간 중간 연결 거절이라 써있는 것은 다른 기능이니 무시하시면 됩니다.)

Posted by 시더
,