Fw: [问题] arduino uno跟jetson nano的沟通问题

楼主: hydebeast (雷枪)   2021-06-05 03:16:44
※ [本文转录自 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互传讯息就用了好久...
再麻烦各位大大帮个忙了...
作者: dces4212 (flawless)   2021-06-05 03:33:00
strncmp?会不会是接线松了 收不到 会*哈
楼主: hydebeast (雷枪)   2021-06-05 03:48:00
d大晚上好 我有把接线都动一动~而且事后有再改回单纯arduino跟jetson互传那个程式没有问题QQ
作者: Lipraxde (Lipraxde)   2021-06-05 09:27:00
看起来可能是 jetson 传太多、太快了,arduino 那边来不及处理疴 看你描述的问题的状况好像也不是这样,你可能要先确定 arduino 执行时卡在什么地方
作者: derekjj (忘记帐号的男子)   2021-06-05 11:37:00
封包有没有lost?
楼主: hydebeast (雷枪)   2021-06-05 23:26:00
感谢各位的回答 我后来发现 在跟jetson互传讯息正常的那个程式码 加入打开第二组软串口的指令之后互传就不正常了囧 第二组串口只是打开而已都没做任何动作
作者: laladeer (laladeer)   2021-06-08 23:38:00
arduino收资料偶尔会延迟 改成一秒两次之类

Links booklink

Contact Us: admin [ a t ] ucptt.com