2009년 4월 19일 일요일

NEMO10 삽질기 2/2

이전 포스트(NEMO10 삽질기 1/2)에서 이어 갑니다.


결론부터 말하자면, SENA 총판인 TCPLINK에서 받은 트랜스포머잭(XFMRS사의 10BASE-T Filter COMBO)으로 -기존 확장보드를 손 봐- 한큐에 성공하여 잘 사용하고 있습니다.




또한, 요청했던 대로 NEMO10 소개 페이지에 트렌스포머에 대한 언급이 추가 되었으며, SENA를 통해 트랜스포머 잭을 -개당 3천원 정도에?- 구매하실 수 있으실 겁니다.



다만, NEMO10을 소매로 구매할 때 -이중으로 배송료를 물지 않게- 트랜스포머잭을 끼워서 살 수 있으면 더 좋을 것 같네요.



트랜스포머잭은 날 RJ45잭에 트랜스포머와 (PHY칩의 필요에 따라 LPF, 초크등이) 내장된 것으로 핀들의 위치(foot print)는 날 RJ45와 동일하지만 각 핀의 기능은 완전히 다르므로 (같은 PHY칩용 트랜스포머간에도 호환되지 않습니다!) 주의하셔야 겠습니다.


사실 SENA를 통하지 않고도 트랜스포머(또는 트랜스포머잭)을 구할 수 있는 방법을 몇 가지 알게되어 공유합니다.



다만 가격이 높은 편이고, 언제까지 공급이 될지 장담할 수가 없네요.


최악의 경우 PULSE사의 catalog 에서 RTL8019AS용 트랜스포머의 사양을 확인 하여 호환품을 찾으시는 방법이 남아 있는데 순탄치많은 않으실 듯.


지난 포스트에서 시험해본 -for ant PHY 라던- 트랜스포머가 RTL8019AS을 사용한 NEMO10에서 동작하지 않은 이유는 LPF를 추가해 주지 않은 것이 이유인 듯 합니다. 17 MHz LPF가 필요하다고 하네요.



몰라 뭐야.. 귀찮어.



NEMO10의 사용자 메뉴얼에 나와 있는 NEMO10의 확장보드의 회로도는 XFMRS사의 10BASE-T Filter COMBO를 기준으로 그려진 것으로, 다른 트랜스포머를 NEMO10에 붙이시려면 넷상에서 찾은, 같은 RTL8019AS를 사용한 다음 이더넷 모듈들의 회로도를 참고하시면 도움이 되실 듯 합니다.



일련의 사건을 통해 제가 배운 점은:



이더넷 모듈이나 PHY칩을 사용하려면 "된다고 알려진" PHY칩을 먼저 확보하자!



입니다.


XFMRS사의 10BASE-T Filter COMBO를 사용한 NEMO10 확장보드 v3를 드디어 공개합니다.




SENA의 NEMO10평가보드와 비교해 볼때 자주 사용하지 않는 CONSOLE, FACTORY_RESET 스위치를 점퍼 처리 하였고, 5V레귤레이터와 시리얼 전압변환 부분은 제외하였습니다. 따라서, 이 확장보드를 Serial2USB 보드와 연결하면 바로 USB2이더넷 보드로 사용하실수 있게 됩니다.


제 확장 보드에서는 세개의 LED만을 남겨 두었는데 각각 다음과 같습니다.



  • RDY : 콘솔모드가 아닌 경우 (이더넷을 사용할 준비가 된 경우)점등합니다.

  • LINK : 랜 케이블을 연결하면 점등합니다.

  • ACT: 랜선으로 무언가를 주고 받을때 깜박 거립니다.


일전의 MAX232 보드의 설명에서 잠시 언급했든이 NEMO10이 H/W flow control을 사용해 CTS/RTS 핀을 준비하지 않은 근래의 시리얼 보드로는 아예 설정 콘솔에 접근하지 못하는 골탕을 먹을 여지가 있는데, 게다가 SENA의 NEMO10 확장보드는 굉장히 고가에요, CTS/RTS핀을 자뻑하게 해 주면 No flow control로 콘솔에 접근이 가능해 집니다.


위의 확장보드에서 우 하단의 리셋 스위치 옆에 쇼트된 NEMO10의 두 핀 (16,18번)이 이에 해당합니다.


다시? 말씀드리자면 Serial2Ethernet 보드가 유용한 이유는 아두이노의 스케치를 털끝하나 건드리지 않고도 인터넷에 연결하게 해 준다는데 있습니다.


예를 들어, 아두이노에 간단한 시리얼 에코 스케치를 심어 두었다면,


다음과 같이 NEMO10을 tcp서버로 설정하고,



> get host
Host_mode: tcps
Local_port: 6001
Inactivity_timeout(sec): 300

파이썬 twisted를 사용한 간단한 스크립트를 통해 NEMO10에 할당한 IP주소로 데이터를 주고 받으면,
아두이노는 여전히 일상적인 시리얼 통신을 하는 것처럼 인식하고 작동하게 됩니다.




from twisted.internet import reactor, protocol

class EchoClient(protocol.Protocol):
"""접속후 메세지를 보내고, 받은 후 종료"""
def connectionMade(self):
print "Say to server:", "hello NEMO10"
self.transport.write("hello NEMO10\n")

def dataReceived(self, data):
print "Server said:", data # you will received "HELLO NEMO10"
self.transport.loseConnection()

def connectionLost(self, reason):
print "connection lost"

class EchoFactory(protocol.ClientFactory):
protocol = EchoClient
def clientConnectionFailed(self, connector, reason):
print "Connection failed - goodbye!"
reactor.stop()

def clientConnectionLost(self, connector, reason):
print "Connection lost - goodbye!"
reactor.stop()

def main():
f = EchoFactory()
reactor.connectTCP("000.000.000.000", 6001, f) # address of NEMO10
reactor.run()

if __name__ == '__main__':
main()


앞으로, 인터넷에 연결된 아두이노를 활용한 예를 몇가지 올려 보겠습니다. :)

댓글 11개:

  1. 안녕하세요 포스트 잘보고 있습니다.
    아르두이노에 갑자기 필이 꽂혀 여기 저기 서핑하며 공부하고 있습니다만
    전자쪽 전공이 아니다보니 부품들 연결하기가 쉽지않네요.

    저도 평소에 서버쪽에 관심이 있어서 nemo10을 유심히 보고있는데
    회로 구성하지 않고 선하고 트랜스포머 잭 만으론 연결을 못하는건가요?
    회로 구성하는건 저한텐 무리일듯싶은데...ㅜㅜ

    답글삭제
  2. 오... 뭔가 대단해 보이는데 무슨 소린지 하나도 모르겠군요 ^^:;;

    답글삭제
  3. 팹시맨 님/ 저도 전자쪽 전공자 아닙니다. :)
    이글캐드로 제 확장보드의 회로도 (sch 파일)을 보시면 도움이 되실 것 같네요. 회로도의 결선대로 결선하시면 됩니다. 될때까지 하면 되요. -o-;;
    pashiran 님/ 그게 너무 오래 시달리다보니 집중력이 흐트러져서 될대로 되라고 포스팅을.. -_-;;;
    차차, 예제와 함께 풀어가 보겠습니다. :)

    답글삭제
  4. 이더넷 연결하려면 저것보다는 WIZNET의 제품들이 좀 더 쉽습니다. WIZ810MJ같은 경우 모듈에 트랜스포머까지 다 들어있고 arduino 라이브러리에서 표준으로 지원해주기 때문에 SPI 핀만 연결해주면 바로 동작시킬 수 있습니다.

    답글삭제
  5. http://techblog.tistory.com/entry/EthernetForArduino

    어제 리플로 남긴 Wiz810mj 연결에 대한 포스팅입니다.

    답글삭제
  6. 나우테스 님/ 소개해주신 모듈과 링크 잘 보았습니다. WIZNET모듈은 매우 유명하네요. 시간이 나면 이더넷 실드로 제작해 봐야 겠습니다. :)

    답글삭제
  7. 나우테스님 안그래도 헤매고 있었는데 정보 감사합니다 .

    수아파파님 nemo10 선만 연결해서는 동작 안하나요? 시리얼쪽도 이더넷쪽도 콘솔로 접근이 안되네요 동작을 확인하고 싶은데...

    rj45에서 Tx+ ,- Rx+, - 각각 nemo의 해당 핀에 연결했는데, 반응이 없더라구요
    시리얼쪽도 tx, rx, 전원,gnd 연결했는데 반응이 없고,

    수아파파님 회로도에는 저항이나 여러 부품들을 연결했는데
    부품 없이 직결만 하면 안되는건가요?
    모듈이 망가졌나...^^a

    답글삭제
  8. 펩시맨 님/ CTS/RTS 핀을 서로 연결하시고, Console 핀을 GND에 연결하신 후에 흐름제어 없음으로 접근하시면 설정용 콘솔에 접근하실 수 있습니다.
    RJ45는 트랜스포머나 트랜스포머내장 잭을 사용하셔야 되요. 이것과 전 포스팅에서 제가 헤매던 바로 그 부분. 날 Rj45잭만으로는 연결되지 않습니다.

    답글삭제
  9. CTS/RTS 연결했고요 console 핀도 gnd 했고요 하드웨어 흐름제어도 none으로 했고요
    rj45도 수아파파님께서 구입하신곳에서 같은거 사왔어요.

    rj45가 납땜하다 열받아서 망가졌을까요?
    랜선에 1번핀하고 rj45 1번핀하고 도통하고, 2번은 - 2번하고 도통하고
    이렇게 1:1로 도통해야 맞는거 아닌가요? 트랜스포머 붙어 있음 다른가
    이상하게 1번하고 1,2번 이런식으로 1:n으로 도통하더라구요

    그렇다고 해도 시리얼콘솔모드는 되야 하는건데...이해가 안되네요

    답글삭제
  10. 펩시맨 님/ RX,TX선을 교차해서 연결해 보시구요 (설마 PC에 바로 연결하신건 아니겠죠? 그럼 안되는데...)
    RJ45잭을 사용하신건가요? 트랜스포머잭을 사용하신건가요? RJ45잭만으로는 원래 안되고 트랜스포머잭은 랜선 핀배열과 완전히 다릅니다. 이 내용도 포스팅 중에 있어요. SENA에서 트랜스포머잭을 받으셨다면 사용자 메뉴얼의 확장보드 회로도를 기반으로 배션하세요 (제 회로도는 홈서버가 죽은지라 지금 드릴수가 없네요 - 사용자 메뉴얼과 같습니다.)

    그래도 안되신다면 제게 기댈게 아니라 세나를 갈궈서 원하는 바를 성취하세요. 제 경험상 대응이 미숙한 점이 있었지만 결국 줄건 다 주더라구요. :)

    답글삭제
  11. 좋은글 잘 보고 갑니다.
    저와 같은 고민을 하셨네요. 덕분에 삽질을 조금만 해도 되겠습니다.
    2년전에 이미 해보셨다니..흘.
    판매처에 트랜스포머내장잭을 파는지 확인하러 가야겠습니다~

    답글삭제