基于RT-THREAD nano的平衡车--上位机软件

简要

  • 平衡车文章分为4篇进行说明:

  1. 《平衡车 - 硬件》:讲解平衡车的硬件设计。

  2. 《平衡车 - 软件》:讲解平衡车的软件设计,算法。

  3. 《平衡车 - 上位机》:讲解调参上位机的设计

  4. 《平衡车 - 微信小程序》:讲解微信小程序作为遥控器的实现。

  • github连接:https://github.com/RiceChen/Balance_Car.git

  • PC上位机采用QT开发,主要功能,参数设置,方向控制,数据波形显示。

软件设计

  1. 上位机与下位机通信,是采用串口通信,我自己定义了一个协议:

struct data_packet {
  unsigned char head;
  unsigned char type;
  unsigned char channel;
  unsigned char reserver1;
  int data;
  int reserver2 :24;
  int tail :8;
};
  • 其中head和tail是固定的。head为oxbc,tail为'\n'

  • type:参数设置类型,方向控制类型,波形显示控制类型

typedef enum {
    BC_PARAM_TYPE = 0x01,
    BC_DIRECTION_TYPE,
    BC_WAVEFORM_TYPE,
}BC_DATA_TYPE;
  • channel:根据不同类型选择不同的通道类型:

// BC_PARAM_TYPE
typedef enum {
    BC_BALANCE_P_PARAM_CHANNEL = 0x01,
    BC_BALANCE_I_PARAM_CHANNEL,
    BC_BALANCE_D_PARAM_CHANNEL,
    BC_SPEED_P_PARAM_CHANNEL,
    BC_SPEED_I_PARAM_CHANNEL,
    BC_SPEED_D_PARAM_CHANNEL,
    BC_SPEED_PARAM_CHANNEL,
}BC_PARAM_CHANNEL;

// BC_DIRECTION_TYPE
typedef enum {
    BC_UP_DIRECTION_CHANNEL = 0x01,
    BC_DOWN_DIRECTION_CHANNEL,
    BC_LEFT_DIRECTION_CHANNEL,
    BC_RIGHT_DIRECTION_CHANNEL,
    BC_LEFT_UP_DIRECTION_CHANNEL,
    BC_LEFT_DOWN_DIRECTION_CHANNEL,
    BC_RIGHT_UP_DIRECTION_CHANNEL,
    BC_RIGHT_DOWN_DIRECTION_CHANNEL,
}BC_DIRECTION_CHANNEL;

// BC_WAVEFORM_TYPE
typedef enum {
    BC_BALANCE_PID_WAVEFORM_CHANNEL = 0x01,
    BC_SPEED_PID_WAVEFORM_CHANNEL,
    BC_SPEED_WAVEFORM_CHANNEL,
}BC_WAVEFORM_CHANNEL;
  • data: 具体类型,具体通道对应的数值。

  1. 其中波形图显示,采用QT的chart组件,Qt开发我不熟悉,所以我只能上github搬砖,果真有人写了对应的demo,所以我就直接搬过来了。它包含四个文件:callout.cpp, callout.h, chartview.cpp,chartview.h。

效果:


关注微信公众号『Rice嵌入式开发技术分享』,后台回复“微信”添加作者微信,备注”入群“,便可邀请进入技术交流群。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rice嵌入式开发

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值