看板 C_and_CPP 關於我們 聯絡資訊
※ [本文轉錄自 Electronics 看板 #1Wkdbk0m ] 作者: hydebeast (晴日橘子) 看板: Electronics 標題: [問題] arduino uno跟jetson nano的溝通問題 時間: Sat Jun 5 03:05:12 2021 各位先進好 小弟打算做一台簡單的無人車 可以根據影像辨識的結果來做不同應對 無人車方面用的是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.html ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: hydebeast (101.9.176.33 臺灣), 06/05/2021 03:16:44
dces4212: strncmp? 06/05 03:33
dces4212: 會不會是接線鬆了 收不到 會 06/05 03:34
dces4212: *哈 06/05 03:34
hydebeast: d大晚上好 我有把接線都動一動~而且事後有再改回單純 06/05 03:48
hydebeast: arduino跟jetson互傳那個程式沒有問題QQ 06/05 03:48
Lipraxde: 看起來可能是 jetson 傳太多、太快了,arduino 那邊來 06/05 09:27
Lipraxde: 不及處理 06/05 09:27
Lipraxde: 痾 看你描述的問題的狀況好像也不是這樣,你可能要先確 06/05 09:41
Lipraxde: 定 arduino 執行時卡在什麼地方 06/05 09:41
derekjj: 封包有沒有lost? 06/05 11:37
hydebeast: 感謝各位的回答 我後來發現 在跟jetson互傳訊息正常的 06/05 23:26
hydebeast: 那個程式碼 加入打開第二組軟串口的指令之後互傳就不 06/05 23:26
hydebeast: 正常了囧 第二組串口只是打開而已都沒做任何動作 06/05 23:26
laladeer: arduino收資料偶爾會延遲 改成一秒兩次之類 06/08 23:38