设为首页 加入收藏

TOP

玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台(一)
2019-09-01 23:09:37 】 浏览:73
Tags:玩转 X-CTR100 STM32F4 树莓 搭建 机器人 平台

我造轮子,你造车,创客一起造起来!塔克创新资讯【塔克社区 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的简易数码相册

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目