# 基于ros的CH32V307VCT6小车 **Repository Path**: xujiaqi2022/ros-based-CH32V307vct6-car ## Basic Information - **Project Name**: 基于ros的CH32V307VCT6小车 - **Description**: 用于存放基于ROS,主控板为赤兔CH32V307VCT6的麦克纳木轮小车代码,其中包括该开发板的lcd运行代码,通信串口中断代码,等基本小车所需要的代码。 - **Primary Language**: C - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-07-02 - **Last Updated**: 2024-08-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: CH32V307, 嵌入式大赛, 麦克纳木轮小车, ROS ## README # 基于ros的CH32V307VCT6小车 #### 介绍 本次参加2022年嵌入式大赛,在此进行代码开源,使用时,可以直接参考user里面的文件。 项目如下:主控板为赤兔CH32V307VCT6,车体为麦克纳木轮+亚克力底板,电机驱动为l298n,电机就是普通的小黄电机1:120,上位机采用英伟达jetson nano b01,深度相机采用Intel realsense 双目语眼跟踪相机T265。上位机通过ROS订阅话题,将话题内容串口发送给开发板,此处发送t265内部slam处理后的空间坐标信息。开发板根据内部串口中断程序作出判断,根据当前坐标向指定坐标行进。 #### 软件架构 **1.lcd程序** 赤兔ch32v307的使用其实stm32的使用类似基本时可以直接拉来使用的。入门可以前往b站搜索,有一个up做了很多期关于赤兔开发板的介绍。 在user文件夹里面添加lcd.c,lcd.h,font.h文件,原处的cs接口出错了,已经进行修改,可以直接在程序中使用,驱动lcd屏幕。 在串口调试过程中,可以将串口内容打印在屏幕上,以便调试。 ![输入图片说明](QQ%E6%88%AA%E5%9B%BE20220702133649.png) 运行效果如下,可以参考一下,USART_Printf_Init(115200);那个必须要有,具体为什么暂时没清楚,有大佬可以告知。 ![输入图片说明](QQ%E5%9B%BE%E7%89%8720220702134022.jpg) 使用时参数设置如下,可以参照lcd.c文件的内容,进行修改。 lcd_show_num(90,140,90,20,24); lcd_show_num(150,140,150,20,24); x y num len size (备注:size只有16 24 32三种大小,屏幕大小为240*240,len这里设为20) **2.串口函数** 在main.c中串口函数定义与中断的使用已经写明。 此处强烈建议使用USART2,板载买来的时候跳线帽已经接好,而且程序例程也很多,方便开发。如果想使用usart1或别的话,需要改跳线帽。 ch32v307板子串口函数类似于stm32与openmv通信,调试时可以先用单片机代替上位机试通信。 提交的代码当中,我在openmv中写的发送内容为data=bytearray([0x41 ,0x43 ,cx ,cy,0x44]),其中0x41和0x43为包头,0x44为包尾,cx,cy为上位机中t265的数据。 上位机发送函数,网上有很多,也可以自己写,这里不过多阐述。先判断包头是否正确,将数据存入数组当中保存,保存后判断包尾是否正确,如果包尾也正确,那就保存数据,否则这个数组清零,重新开始接收。 ![输入图片说明](IMG_3157.PNG) **3.Delay程序** debug.c里面已经写好了,可以直接使用非常方便。 #### 安装教程 **1. 整体效果图** ![输入图片说明](QQ%E5%9B%BE%E7%89%8720220702140148.jpg) ![输入图片说明](QQ%E5%9B%BE%E7%89%8720220702140158.jpg) **2. 电路连接** 如图所示,电机交叉连接,需要保证斜向两个电机转的方向一致。这样四个电机便分为两对,每对电机并联出两根线到l298n处,具体麦克纳木轮的使用可以再CSDN里面搜一下,非常多。这样就可以通过控制GPIO的引脚高低电平,控制电机正反转。不同的正反转可以控制小车的前后左右移动。main.c里面已经写好了函数,可以直接使用。 ![输入图片说明](IMG_3155(1)(1).png) ![输入图片说明](6EFF159718AAADF2C8E526E08A0B7F3D.png) **3. 上位机接线** 通过usb to ttl的tx和rx接到板子上的usart2上,注意GND也接上。 在运行过程当中,可以打开reaalsense——viewer查看里程计信息和imu数据 ![输入图片说明](IMG_3158.PNG) #### 使用说明 1. 代码下载即可 2. 具体运行视频,后续会上传到b站 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)