作者hydebeast (晴日橘子)
看板C_and_CPP
标题Fw: [问题] arduino uno跟jetson nano的沟通问题
时间Sat Jun 5 03:16:44 2021
※ [本文转录自 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://webptt.com/cn.aspx?n=bbs/Electronics/M.1622833518.A.030.html
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: hydebeast (101.9.176.33 台湾), 06/05/2021 03:16:44
1F:推 dces4212: strncmp? 06/05 03:33
2F:→ dces4212: 会不会是接线松了 收不到 会 06/05 03:34
3F:→ dces4212: *哈 06/05 03:34
4F:→ hydebeast: d大晚上好 我有把接线都动一动~而且事後有再改回单纯 06/05 03:48
5F:→ hydebeast: arduino跟jetson互传那个程式没有问题QQ 06/05 03:48
6F:→ Lipraxde: 看起来可能是 jetson 传太多、太快了,arduino 那边来 06/05 09:27
7F:→ Lipraxde: 不及处理 06/05 09:27
8F:→ Lipraxde: 痾 看你描述的问题的状况好像也不是这样,你可能要先确 06/05 09:41
9F:→ Lipraxde: 定 arduino 执行时卡在什麽地方 06/05 09:41
10F:推 derekjj: 封包有没有lost? 06/05 11:37
11F:→ hydebeast: 感谢各位的回答 我後来发现 在跟jetson互传讯息正常的 06/05 23:26
12F:→ hydebeast: 那个程式码 加入打开第二组软串口的指令之後互传就不 06/05 23:26
13F:→ hydebeast: 正常了囧 第二组串口只是打开而已都没做任何动作 06/05 23:26
14F:→ laladeer: arduino收资料偶尔会延迟 改成一秒两次之类 06/08 23:38