加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

【RT-Thread作品秀】Art-pi机械臂控制

2020/12/20
515
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(2)
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

【RT-Thread作品秀】Art-pi机械臂控制

作者:李志青

 

 

概述

5G时代物联走入更多行业与领域,使用广和通的L610在模块,通过MQTT与中国移动onenet互联,也尝试搭建了本地MQTT服务器,适合内部布署,其再加入柿饼派两块,结合体感手套与机械臂,数据进行通讯,实现远程控制

开发环境

硬件:art-pi,广和通4G模块,柿饼派,体感手套,SG90舵机

RT-Thread版本:4.0.3

开发工具及版本:RT-Thread Studio, STM32CubeMX, Arduino IDE1.8.5,PersimmonUIBuilder

RT-Thread使用情况概述

ulog:日志标红打印,更显眼

pahomqtt:与中国移动OneNet进行通讯

at_device:建立与广和通L610通讯

onnet:加密授权与中国移动OneNet配置信息一致

pwm:控制sg90舵机

uart:运用了三个,分别是uart1(控制台使用),uart4(与广和通L610通讯),uart6(接收柿饼派串口信息)

 

硬件框架

请见附件word文件

  • 体感手套使用arduino板子,串口通讯至第一块柿饼派
  • 第一块柿饼派通过MQTT通讯到第二块柿饼派
  • 第二块柿饼派通过串口与art-pi通讯
  • Art-pi与舵机,广和通L610通讯相互

 

软件框架说明

请见附件word文件

  1. 开启串口并指定相应引脚
  2. 开启多个组件,并做具体配置
  3. 开启线程
  4. 开启指定GPIO并指定引脚

软件模块说明

具体软件模块:

Uart串口通讯主要在main,c:

/* 数据解析线程---发送串口指令 */

static void data_parsing(void)

{

    char ch;

    char data[ONE_DATA_MAXLEN];

    static char i = 0;

 

    while (1)

    {

        ch = uart_sample_get_char();

        rt_device_write(serial, 0, &ch, 1);

        if(ch == DATA_CMD_END)

        {

            data[i++] = '';

            rt_kprintf("data=%srn",data);

            i = 0;

            if (strcmp(data, "0") == 0) {

                UserPWM_0_5msStart(); // 0

            }

            if (strcmp(data, "45") == 0) {

                UserPWM_1_0msStart(); // 45

            }

            if (strcmp(data, "90") == 0) {

                UserPWM_1_5msStart(); // 90

            }

            if (strcmp(data, "135") == 0) {

                UserPWM_2_0msStart(); // 135

            }

            if (strcmp(data, "180") == 0) {

                UserPWM_2_5msStart(); // 180

            }

            //UserPWM_0_5msStart();

            continue;

        }

        i = (i >= ONE_DATA_MAXLEN-1) ? ONE_DATA_MAXLEN-1 : i;

        data[i++] = ch;

 

    }

}

Pwm控制主要在drv_pwm.c:

/* 封装舵机控制函数,即pwm */

void UserPWM_Init(void)

{

    MX_TIM3_Init();

}

MSH_CMD_EXPORT(UserPWM_Init, user pwm init);

 

void UserPWM_Stop(void)

{

    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3);

}

MSH_CMD_EXPORT(UserPWM_Stop, user pwm stop);

void UserPWM_0_5msStart(void)

{

 

    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3);

    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,500);

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);

}

MSH_CMD_EXPORT(UserPWM_0_5msStart, angle zero);

 

void UserPWM_1_0msStart(void)

{

 

    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3);

    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,1000);

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);

}

MSH_CMD_EXPORT(UserPWM_1_0msStart, angle 45);

 

void UserPWM_1_5msStart(void)

{

 

    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_3);

    __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_3,1500);

    HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);

}

MSH_CMD_EXPORT(UserPWM_1_5msStart, angle 90);

命令行控制台 与 OneNet通讯:

/* onnet平台的通讯指令 */

Onnet_mqtt_init

演示效果

请见附件word文件

视频地址:

 

比赛感悟

 

Rt-thread的产品应用在领域广泛,这次就柿饼派与art-pi做了一次结合体验,并加入了舵机和广和通4G模块,arduino板子,对RT-Thread Studio软件操作不太熟悉,但又更想尝试用,在学习的过程中进度较慢,只好不停的QQ群或是微信群里不停请教,并收集互联网上的资料(CSDN,微信公众号,B站视频等)别人做了什么项目,就买相关硬件进行测试,请教别人做的DEMO,在上面做延伸,慢慢相对理解了里面原理,对PWM,UART,MQTT都明白,再一步步整合到自已的项目,收获就是对rt-thread了解的更加透彻了一点,各种组件的应用也更得心应手了,大致能知道问题出现时的解决基本思路,能在向别人请教时方向更明确,问题更具体化,做到消化吸收的有效性加强。不足之处:mqtt可以合并,机械臂可以是多个,以后再接再励,加油!!!

  • 代码地址.txt
    描述:代码地址
  • Art-pi机械臂控制.docx
    描述:ART-Pi STM32H750开源硬件

相关推荐

电子产业图谱