关键词:Ardupilot,Pixhawk,DroneCAN,CANUART,Serial over DroneCAN,DroneCANUART,UAVCAN,MAVlink,Px4
Keywords:Ardupilot,Pixhawk,DroneCAN,CANUART,Serial over DroneCAN,DroneCANUART,UAVCAN,MAVlink,Px4
摘要:分享Pogo-DroneCAN CANUART模块,实现CAN口的UART通信,完全兼容Ardupilot。通过DroneCAN调试器和DroneCAN_GUI_Tool上位机,可查看、更新模块参数。使用MissionPlanner和Ardupilot/Pixhawk飞控,可以配置串口参数,实现CANUART功能。
哈喽大家好我是Mokel,我将在这期视频和大家分享Pogo-DroneCAN CANUART模块,这个模块让我们能够通过CAN口,在这里是GH1.25-4P口,实现UART通信即串口通信,不过需要注意的是,逻辑上属于同一个的CAN口最多扩展三个UART口,也就是说当你有两个或多个物理CAN口属于同一个逻辑CAN口时,你的多个物理CAN口之间是冗余关系,不同物理CAN口扩展的UART口之间也是冗余关系。
Pogo-DroneCAN CANUART扩展板是与Ardupilot完全兼容的模块,你可以查看Ardupilot的文档和讨论相关信息,文档链接:https://ardupilot.org/rover/docs/common-dronecan-serial.html ,讨论链接:https://discuss.ardupilot.org/t/serial-over-dronecan-support/109783 ;此外,你可以查看Pogo智能科技店铺的商品详情页了解更多信息,商品链接:https://item.taobao.com/item.htm?spm=a21n57.1.item.7.513e523c4fsElw&priceTId=214782d217205805099463638ec04e&utparam=%7B%22aplus_abtest%22:%2243b7cd8383a05658f17287a48c9d4473%22%7D&id=763474006000&ns=1&abbucket=17&skuId=5270245629865
一、使用Pogo-DroneCAN调试器和DroneCAN_GUI_Tool上位机查看、更新DroneCAN CANUART模块
按照下图将CANUART模块和DroneCAN调试器接线,并通过typeC将DroneCAN调试器接到电脑,在电脑上打开DroneCAN_GUI_Tool上位机,选择STM...Virtual COM Port,点击OK进入上位机。然后依次在左上角点击✅设置localNodeID,在右下角点击小火箭icon给所有连接到DroneCAN调试器的DroneCAN节点自动分配NodeID,可以看到,识别到了Pogo-DroneCAN CANUART模块。
点击识别到的Pogo-DroneCAN CANUART节点,上位机会打开一个Node属性界面,你可以点击FetchAll获取和修改模块的所有参数,也可以点击Update Firmware更新模块的应用固件,你可以查看 这篇文章 了解更多相关的操作。
关闭Node属性界面,打开 Tools -> Bus Monitor 界面,点击左上角的摄像机icon,可以看到有CANUART模块回传的状态信息,任意点击一条可以查看详情。
二、使用 MissionPlanner 和 Ardupilot/Pixhawk 连接、查看、更新和测试 DroneCAN CANUART模块
按照下图连接Pogo-DroneCAN CANUART扩展板和Ardupilot/Pixhawk飞控,在电脑上打开MissionPlanner,选择对应的端口和波特率,点击连接,等待MP和飞控完成连接。需要注意的是,请确保你的飞控已经开启了CAN总线支持和已经设置通讯协议为DroneCAN,如果你不确定你的飞控是否完成了设置,你可以查看Ardupilot的文档来检查你的飞控,文档链接:https://ardupilot.org/plane/docs/common-canbus-setup-advanced.html 。
在初始设置 -> 可选硬件 -> DroneCAN/UAVCAN界面点击MAVlink-CAN1,MP会加载目前连接到飞控的DroneCAN节点。如果你的飞控开启了Slcan Direct支持,那么你也可以点击Slcan Direct来加载DroneCAN节点,但一般情况下, 除非有特殊需求,否则我们比较少开启Slcan Direct支持。
可以看到界面中加载出了Pogo-DroneCAN CANUART节点,你可以点击最右侧的menu按钮查看节点的信息或对节点进行相关操作,比如在这里我们可以点击menu -> parameters 查看节点的所有参数,如同在DroneCAN_GUI_Tool上位机中点击FetchAll一样。
对于DroneCAN CANUART模块,由于后续我们需要将该模块的NodeID设置为另一个飞控参数的值,所以这里我建议将DroneCAN CANUART模块的NodeID设置为固定值,在parameters界面修改CAN_NODE参数的值为121(1-126均可),点击写入参数,点击OK,数据更新后给飞控和模块重新上电,并重新连接到MP。这里我们会注意到CAN_NODE的原始值为0,0的含义是让系统自动给该DroneCAN CANUART模块分配NodeID。
然后切换到配置/调试 -> 全部参数表界面,在 CAN -> CAN_D1 -> CAN_D1_UC 下找到 CAN_D1_UC_SER_EN 参数,将该参数修改为1。请务必注意,在你进行这步操作之前,你需要开启飞控的CAN BUS支持并设置通讯协议为DroneCAN,查看Ardupilot文档了解设置的详细教程,文档链接:https://ardupilot.org/plane/docs/common-canbus-setup-advanced.html ,我这里提供一个设置示例:CAN_P1_DRIVER = 1,CAN_D1_PROTOCOL = 1。然后点击右侧的写入参数,点击OK,写入完成后给飞控和模块重新上电,并重新连接到MissionPlanner。
再回到配置/调试 -> 全部参数表界面,可以看到在 CAN_D1_UC 下多了三组串口参数,分别为 CAN_D1_UC_S1, CAN_D1_UC_S2,CAN_D1_UC_S3,我们使用第一组串口来测试DroneCAN CANUART功能,将参数设置为 CAN_D1_UC_S1_BD = 115,CAN_D1_UC_S1_IDX = 1,CAN_D1_UC_S1_NOD = 121,CAN_D1_UC_S1_PRO = 1,其中注意 CAN_D1_UC_S1_NOD 参数,我这里将它设置为了121,是因为我们在上文中将DroneCAN CANUART模块节点的CAN_NODE 设置为了121,这里参数的值要与上文中参数的值保持一致。然后点击右侧的写入参数,写入完成后给飞控重新上电,确保飞控和模块完成重启。
然后将一个串口转USB模块连接到CANUART的串口1,这里我是将STLink下载器作为串口转USB模块使用,用一根GH1.25转杜邦线将CANUART的串口1 和 STLink 接在一起,注意查看CANUART模块背面的串口的引脚标注,将CANUART的GND接到STLink的GND,将CANUART的RX接到STLink的TXD,将CANUART的TX接到STLink的RXD,+5V引脚这里不需要互接,然后将STLink下载器通过typeC接到电脑,由typeC对STLink进行供电。
接好后,在电脑上打开串口调试助手,选择对应的串口号,我这里使用的STLink下载器作为串口转USB模块,所以对应的串口号为 COMxx #STM...STLink Virtual COM Port,底下的接收设置选择 HEX,然后点击打开,可以看到串口调试助手中有MAVLink心跳包的数据了,说明我们的飞控和CANUART正常连通并工作了。
此外,我们打开的MissionPlanner,选择 COMxx STM...STLink Virtual COM Port 端口和对应的波特率115200,点击连接,此时MissionPlanner就是通过 STMLink下载器 -> CANUART 链路与飞控建立连接,因此速度会比直接通过USB与飞控连接更慢一些,等待一段时间,MP和飞控完成连接,这也说明我们的飞控和CANUART正常连通并工作了。
如果你在进行以上操作时遇到无法解决的问题,你可以保留图文信息向Pogo智能科技店铺客服咨询,Pogo智能科技店铺客服会为你提供相应的技术服务。