RaspberryPi3 UART 통신관련 질문드립니다.


  • Global Moderator

    @이종하 안녕하세요 산딸기마을 이장 나무꾼 입니다.

    네 그건 ASCII 가 아닐 듯 합니다.

    RDM630 을 아두이노나 다른 모듈을 이용해 받아보시면,
    위에 이야기 한 것 처럼 1F00CC4AD940 처럼 1F 00 CC 4A D9 40 이런 HEX CODE 시리얼 데이터가 들어와야 정상 입니다.

    제가 확인한 바로는 그렇습니다. .

    1차 해결 과제는 라즈베리파이 uart 이전에
    우선 Arduino 와 같은 공개된 정보를 이용해 uart data 의 정확한 값을 받으시는 것부터 다시 진행 하셔야지 싶습니다.

    그 이후에 HEX 값을 변환하는 작업을 하셔야지 싶습니다.

    제가 퇴근 길에 잠시 구글링을 해보고 확인한 내용이기도 합니다.
    RDM630 과 같은 파라독스 RFID 제품에 대한 관련 자료는 국외에 생각보다 많이 배포되어 있습니다.


  • Global Moderator

    port = serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=0.2)
    

    여기서 timeout은 데이타가 들어오기를 대기하는 시간입니다. 0.2초 기다리다 데이타가 오지 않으니 에러처리나 다른일을 할지 모릅니다. 0.2가 초 인지 확인해보세요

    http://store.iteadstudio.com/images/produce/RFID/125KReader_U/RDM630-Spec.pdf

    위 문서의 마지막 장을 보면 TTL Interface RS232 Data output format 부분이 있습니다. 그곳에 데이타의 구조가 보이는데요.
    앞에 02가 ascii ‘0’,'2’인지 02(hex)인지 2인지는 확실치 않네요. ascii일듯 합니다만…
    다음이 10ASCII Data 네요. 그렇다면 Data가 rev[2:10]이 되야지 않나 싶구요.
    다음에 checksum이 있네요.

    문서가 맞는지 분석하신 기존 프로그램이 맞는지는 모르겠습니다. 저로서는 문서밖에 볼수 없어서요.

    그리고, GPIO 꽂았을때 읽히는 값이 ?g.▒&ɹӹis▒& 가 나왔는데, 이를 HEX로 바꿔서 확인해보세요. 어쩌면 Data가 밀렸을수도 있고요…

    >>> a='1F00CC4AD940'
    >>> a.encode('hex')
    '314630304343344144393430'
    >>> b='?g.▒&ɹӹis▒&'
    >>> b.encode('hex')
    '3f672ee2969226c9b9d3b96973e2969226'
    

    블라블라…

    라고 겁나게 썼는데, 데이타 시트 보니까, 모듈이 두종류네요… 하나는 Wiegand interface, 다른하나는 RS232… 가지고 계신것은 RS232니까 U2S에 연결해야 되네요. GPIO에 연결하면 안되요. USB시리얼에 연결하여 사용하셔야 됩니다.


  • Global Moderator

    @Seungrok-Han 제가 뭔가 크게 잘못생각하고 있는거 같긴 한데 뭔지 모르겠네요. GPIO UART에 연결해도 돌아간다고 합니다.


  • Global Moderator

    @Seungrok-Han 열받아서 아두이노 소스를 좀 봤습니다.
    http://forum.arduino.cc/index.php?topic=148029.0
    보니 Datasheet 의 내용과 동일합니다.
    rev[4:10]이 아니고 2부터 10자리가 Data입니다.


  • Global Moderator

    @이종하 이래저래 확인해본 바로는 모듈의 출력이 5V로 보입니다. (DataSheet에는 안나왔으나, TTL Level이라기에…) 파이의 GPIO는 3.2V입니다.
    이 둘을 연결할시에 정상적인 데이타가 들어갈수도 있습니다만, GPIO가 나갈수도 있습니다.
    사용하시는 파이가 나갔을 경우를 배제할 수 없다고 봅니다.
    위에서 Data[1:10]으로 읽어야 된다고 언급은 하였습니다만, 그리 읽지 않았다 하더라도 쓰레기값이 아니어야 합니다.
    CC 4A D9 40 이 정도로. 쓰레기값이 들어온 것으로 보아 파이가 나갔지 않나 생각됩니다. 엄청 많은 이야기를 했습니다만. 결론은 없습니다. ^^


  • Global Moderator

    @Seungrok-Han 헐…



  • @Seungrok-Han
    답변 감사합니다~~ 일단 말씀하신거 한번 해보고 다시 말씀드릴게요~~

    근데 파이의 gpio 포트에 5v도 있는데 출력이 3.2v밖에 안되는건가요??

    +추가해서
    gpio 포트가 나간거 같진 않습니다… 다른 파이3 gpio 에 연결해도 값을 똑같이 받아옵니다…



  • @Jae-Sang-Lee

    흠… 아두이노에 RDM630 연결해서 테스트하라는 말씀이신가요??

    제가 라즈베리파이3 만 가지고 있어서요…

    그리고 카드를 찍게 되면 1F00CC4AD940 처럼 아무 소스없이 print만 해도 바로 HEX 값이 들어오는게 정상인가요??


  • Global Moderator

    @이종하 안녕하세요 산딸기마을 이장 나무꾼 입니다.

    1F00CC4AD940 가 HEX 코드로 들어오는 것이 원시데이터 맞습니다.

    시리얼 통신은 정상이라는 뜻입니다.



  • @Jae-Sang-Lee

    흠… NETmate USB to 시리얼 KW-825 S2 이 USB2.0 to 시리얼 변환기에 꽂아서 테스트하면 1F00CC4AD940 이 값을 받아오는데

    GPIO에 직접 꽂으면 ?g.▒&ɹӹis▒& 이렇게 나오다보니…

    그럼 정상값을 받아오려면 시리얼 변환기처럼 중간에서 변환해주는 장치가 필요한건가요??

    GPIO 자체적으로는 안되려는건지…


답글을 작성하기 위해 로그인
 

Rasplay Forum 사이트로의 연결이 끊어졌습니다. 다시 연결을 시도하는동안 잠시만 기다려 주십시오.