我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介绍X-CTR100控制器与树莓派Linux系统组成机器人平台。首先介绍与树莓派串口通信,后介绍机器人平台搭建。这种上下位机平台架构常用于机器人ROS系统开发中。最后介绍了Linux机器人开发中常用的软件工具,意在抛砖引玉。
环境搭建
本文使用树莓派硬件版本为3B+,GPIO扩展接口具有1路串口,可以与X-CTR100控制器通信。
组成强大的上下位机机器人系统,这个是主流的ROS架构。GPIO的串口引脚定义如下。
软件操作系统使用NOOBS安装,NOOBS版本2.8.2,2018-06-27更新。
安装树莓派官方Raspbian Stretch版本。
默认状态树莓派串口是关闭的,需要打开串口,并关闭串口终端,如下。如果未关闭串口终端,改串口会打印系统调试信息。
输入以下命令,查看串口状态。ttyS0为我们要使用的扩展接口上的串口。
ls -l /dev
此时,无须像网上教程所述修改任何配置映射文件,即可使用ttyS0通信。
树莓派与PC机串口通信测试
首先测试树莓派例串口通信是否正常,测试采用树莓派与PC机串口通信。硬件平台如下。
本文使用一款图像化的Linux串口工具cutecom,当然也可以常用的minicom或picocom。
后两者在Linux中使用较多,但是为文本工具,上手有难度。
cutecom软件通信
cutecom安装非常简单使用apt-get命令,如下。
sudo apt-get install cutecom
安装完成后,输入如下命令打开软件。串口操作需要root权限。
sudo cutecom
设置串口设备为/dev/ttyS0,并打开设备,可以实现串口数据收发。
minicom软件通信
minicom软件安装前注意更新软件源,通常使用命令安装软件apt-get install。
sudo apt-get install minicom
也可以使用图形化的方式安装一款软件:串口调试工具minicom。使用系统自带的 "Add /Remove Software"软件。
打开终端,如下命令打开ttyS0串口。
sudo minicom –b 115200 –o –D /dev/ttyS0
软件界面如下,为文本界面。
树莓派键盘输入字符即可传输到PC机,PC机发送字符到树莓派。
如果参数固定,也可使用如下命令,配置minicom,后续启动均按照该配置启动。
sudo minicom –s
进入配置界面,选"Serial port setup"进行串口设置。按下图设置,重点A选型串口名称。
然后进入配置界面,选择"Save setup as dfl"保存配置,并选择"Exit"退出。
后续输入如下命令,即可按照配置内容打开串口。
sudo minicom
退出minicom方法,根据提示按CTRL+A,进入help界面,按X退出。按Z查看帮助。
打开软件时,如果出现如下提示,可通过进入/var/lock文件夹,删除"LCK..ttyS0"解决。该情况一般为错误关闭串口导致。
Device /dev/ttyS0 is locked.
树莓派与X-CTR100串口通信测试
硬件连接
本例程测试树莓派与X-CTR100串口通信是否正常,硬件平台如下,树莓派连接UART1。
测试例程
X-CTR100控制器下载《X-CTR100 l 树莓派串口通信例程(循环发送)》例程,X-CTR100会每隔1S发送一次串口数据。树莓派使用minicom接收,测试结果如下。
树莓派与X-CTR100 python串口通信
minicom仅满足调试用途,用于制作还需要编程解决,树莓派流行的编程语言为python语言,介绍如何使用python编写串口通信代码,使用python的serial扩展库——pyserial实现。
硬件连接
本例程测试树莓派与X-CTR100 python串口通信功能。此例程树莓派串口连接UART3(LB接口)。
pyserial安装
安装pyserial扩展库有很多种方法,可使用pip或者easy_install安装,也可以直接选择apt-get工具安装。若使用apt-get工具安装,可输入以下指令
sudo apt-get install python-serial
python代码
代码实现树莓派循环向X-CTR100控制器发送数据功能。
# -*- coding: utf-8 -* import serial import time # 打开串口 ser = serial.Serial("/dev/ttyS0", 9600,timeout =0.5) # 循环发送 while 1: ser.write('Hello X-CTR100\r\n'.encode()) time.sleep(1) #关闭串口 ser.close() |
测试例程
X-CTR100控制器下载《X-CTR100 l 树莓派串口通信例程(接收数据)》例程。例程实现UART3接收树莓派发送的数据,并通过USB串口显示数据内容,当接收到'\n'符后,反转LED灯指示状态。主程序及UART3中断接收部分代码如下。
int main(void) { /* X-CTR100初始化 */ AX_Init(115200);
printf("***X-CTR100 接收树莓派串口数据测试例程***\r\n");
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组
AX_UART_Init();
while (1) { AX_Delayms(1000); //延时100ms } }
/** * @简 述 串口中断服务程序 * @参 数 无 * @返回值 无 */ void USART3_IRQHandler(void) { uint8_t Res;
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断 {
Res = USART_ReceiveData(USA |
首页 上一页 1 2 3 下一页 尾页 1/3/3 | |
【大 中 小】【打印】 【繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部】 | |
上一篇:Linux内存描述之概述--Linux内存.. | 下一篇:基于STM32的简易数码相册 |