[問題] arduino uno跟jetson nano的溝通問題

看板Electronics作者 (晴日橘子)時間2年前 (2021/06/05 03:05), 編輯推噓1(102)
留言3則, 1人參與, 2年前最新討論串1/1
各位先進好 小弟打算做一台簡單的無人車 可以根據影像辨識的結果來做不同應對 無人車方面用的是irobot create第一代 然後利用arduino uno來控制irobot的行走 jetson nano負責做影像辨識 若是jetson辨識到特定的人 他就會傳特定訊號給arduino 讓arduino把車停下來 並根據辨識到的是誰來做不同反應(發出聲音 首先irobot方面 小弟用arduino控制起來沒什麼問題 簡單的行走、避障跟發出聲音都OK 另外arduino跟jetson溝通的方面 因為arduino的UART邏輯輸出是0V~5V 而jetson的GPIO的UART邏輯輸出則是0V~3.3V 所以我有加了一個level shifter 我試過讓兩台互傳訊息並用jetson印出內容 基本上也OK 小弟遇到問題的地方是三者一起運行的時候 首先這是arduino的程式碼 https://ideone.com/L8uTXT Jetson.Serial是對jetson通訊的串口 而face變數則是用來存jetson傳過來的訊號 裡面大多函式都是用來控制車子的 重點是在patrol()跟scan()兩個函式 patrol()是arduino的loop 他會讓車子行走0.1秒之後先判斷有沒有撞到東西(bump() 接著再scan()看看jetson有沒有輸入 https://ideone.com/fqHFyw jetson的程式碼 jetson基本上就是不停的傳100這個訊號 直到arduino回傳OK表示收到了才停止 而arduino的scan()則是在讀到東西後會先讓車子停下兩秒 如果讀到100或200會回傳OK 然後根據讀到的是100或是200來發出不同的聲音(現在的測試程式jetson只會送100 之所以我會讓jetson在收到OK前不斷送訊號 是因為我怕jetson送訊號跟arduino讀訊號會不同步 前面說的測試jetson連arduino的時候 我是用while(!Serial)的方式 讓arduino直到收到東西才讀取 但現在因為還要讓車子動 所以我是用每0.1秒讀一次訊號的方式 另外因為pyserial似乎只能傳送字串 但arduino的C語言判斷字串是否相等很麻煩 所以我是jetson傳100 然後arduino再用toInt()轉成數字100之後再做判斷 不過我用這個方式做測試 車子只會不停的行走 先不說收到100後發出聲音 車子連有收到訊號先停下兩秒這個動作都不會出現 代表scan()後根本都沒進到迴圈 想請問各位大大 不知道問題是出在哪裡呢... 小弟的問題如果很笨請見諒...本身對開發板 機器人 UART這些東西都是新手 光是arduino跟jetson互傳訊息就用了好久... 再麻煩各位大大幫個忙了... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.242.127.144 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1622833518.A.030.htmlhydebeast:轉錄至看板 C_and_CPP 06/05 03:16

06/05 10:50, 2年前 , 1F

06/05 10:50, 2年前 , 2F
etson-nano-powered-arduino-rover-5717e5
06/05 10:50, 2F

06/05 10:50, 2年前 , 3F
Code 在repo裡
06/05 10:50, 3F
文章代碼(AID): #1Wkdbk0m (Electronics)