ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Arduino/Python]Arduino로 무선조종기 값을 읽어 UART로 주고 받기 이야…
    카테고리 없음 2020. 2. 11. 21:11

    #Arduino.Python#UART#Taranis#X8R​ Jetson tx2에 자율 주행 차를 만드는 프로젝트를 진행 중이었다.건데 jetson tx2에는 PWM을 받아들이는 1수가 없어 무선 조종(Taranis-plus)와 수신기(X8R)에서 보내는 값을 읽을 수 없다.그래서 대안을 찾던 중 Arduino Uno에 있는 PWM핀을 이용하여 조종사 값을 받기로 하였습니다.​ 그렇게 받은 신호는 UART통신에서 Jetson tx2에서 보낸다.수신기와 Arduino는 사진과 함께 연결.


    >


    그리고, 아래는 무선조종기 Taranis 모델입니다. 원래는 드론용으로 많이 사용합니다.


    >


    Arduino의 PWM핀으로 총 3개 채널의 값을 받고 온다. Sketch에서 작성한 코드는 이후와 같다.​


    매우 간단하다. 이것은 모두 Arduino Uno 보드에 PWM핀이 있어 주셨기 때문에 전송할 데이터는 json 형식으로 보내주셔야 한다. 그래야 수신하는 사람도 보내는 사람도 개운할 테니까.​ 후 은 Jetson tx2에서 UART를 통해서 json데이터를 받아 오는 코드이다. python을 이용해서 작성했는데, 나중에 자율주행차의 모터구동을 python으로 할 예정이기 때문에. 개인적으로는 python보다 c++를 더 좋지만(둘다 아직 서툰게 함정;;), dc모터 구동을 위해 사용하는 motor hat 라이브러리가 python으로 되어 있어 json 데이터 수신도 python 코드로 작성하는 것이 좋다고 생각했기 때문이야.


    >


    아무튼 uart에서 json 데이터를 받기위한 코드를 눌렀는데...json.loads()가 계속 안통하는 하나가 생겼다. 요러고 저러고 해 봐야 별 방법이 없어. 한숨만 쉬고 반 친구가 준 힌트! 쓰레기값!! 그렇다. 쓰레기가 문제였다. 수신측에서 serial 통신을 개시하자마자 그 값을 읽고 json 변환을 하려고 한 것이 문제였다. 초기에 불러오는 값은 예기대로 더러운 값이 있었고 특히 정확한 형식을 구하는 json 데이터의 성미에 맞추기가 어려웠던 것이다.​ 그리고 소견한 묘수(?)는 처음 20개 정도의 값은 읽지만 쓰지 않는 것.이하의 코드에서 최초로 등장하는 for 문장이 즉석 그것이다.결국 해결되었다. 바른 길은 아닐지도 모르지만 어쨌든 앞으로 나아갈 수 있게 되었다.


    우여곡절 끝에 기기간 통신을 무사히 해결했습니다. 그러나 이제 시작이다. 받은 가격을 이용해 차를 움직여야 한다는 예상이었다. 특히 위에 사진에서도 보이지만 움직이는 1차량이 옴니 휠이며 steering과 throttle에서만 작동한 rc차량과는 다소 달리 접근해야 합니다. 그래서, json 데이터에도 LR의 좌우이동을 위한 값도 넣었다. 어쨌든 앞으로의 작업도 순조롭게 진행되도록, 아니, 적당히 가시밭길이었으면 한다.


    댓글

Designed by Tistory.