鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    FishBot底盘通讯协议V1.0.0.220806_beta

    已定时 已固定 已锁定 已移动
    FishBot二驱机器人
    fishbot 通讯协议
    1
    1
    355
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬
      最后由 小鱼 编辑

      FishBot底盘通讯协议V1.0.0.220806_beta

      本协议基于V1.0.0.2200621_alpha进行改进,相比之下数据帧协议保持不变,数据段进行了添加,主要添加内容如下。

      数据编号:

      • 0x01-左右轮编码器
      • 0x02-IMU传感器
      • 0x03-速度控制数据
      • 0x04-PID设置
      • 0x05-版本信息
      • 0x06-WIFI配置
      • 0x07-设备控制
      • 0x08-通讯模式设置
      
      /**
       * @brief 数据ID定义
       *
       */
      typedef enum
      {
        DATA_ENCODER = 0x01, // 0x01-左右轮编码器
        DATA_IMU,            // 0x02-IMU传感器
        DATA_SPEED,          // 0x03-速度控制数据
        DATA_PID,            // 0x04-PID设置
        DATA_VER_INFO,       // 0x05-版本信息
        DATA_WIFI_CONFIG,    // 0x06-WIFI配置
        DATA_DEV_CONTROL,    // 0x07-设备控制
        DATA_PROTO_MODE,     // 0x08-通讯模式设置
      } __attribute__((packed)) proto_data_id_t;
      

      数据操作:

      • 0X01,反馈数据(底盘向主控)
      • 0X02,命令数据(主控向底盘)

      新增数据协议

      新增协议1: WIFI配置

      /**************************************设备控制数据结构*******************************************/
      /**
       * @brief WIFI配置结构体
       *
       */
      typedef struct {
        wifi_mode_t wifi_mode;
        char ssid[16];
        char password[24];
      } __attribute__((packed)) proto_wifi_config_t;
      
      数据总数 数据编号n 数据长度 数据操作 数据
      0x01 0X06 0X00 0X29 0X02 0X00 0X01 0X00 0X02 ...

      新增协议2:设备控制

      
      /**************************************设备控制数据结构*******************************************/
      /**
       * @brief 设备编号
       *
       */
      typedef enum {
        DEVICE_MOTION_CONTROL = 0x01, // 0x01 运动控制板
        DEVICE_LASER_CONTROL,         // 雷达转接控制板
        DEVICE_POWER_CONTROL,         // 电源管理板
      } __attribute__((packed)) proto_device_id_t;
      
      /**
       * @brief 对设备的操作
       *
       */
      typedef enum {
        DEIVCE_RESTART = 0x01, // 0x01 重启设备
        DEVICE_SHUTDOWN,       // 使得设备关机
        DEVICE_SLEEP,          // 使设备进入休眠状态
      } __attribute__((packed)) proto_device_operation_t;
      
      /**
       * @brief 设备控制结构体
       *
       */
      typedef struct {
        proto_device_id_t id;
        proto_device_operation_t operation;
      } __attribute__((packed)) proto_device_control_t;
      
      
      数据总数 数据编号n 数据长度 数据操作 数据
      0x01 0X07 0X00 0X02 0X02 0X00 0X01

      新增协议3:通讯模式设置

      struct {
       uint8_t mode;
       uint16_t baut;
       uint16_t ip;
       char ip[16];
      }
      
      数据总数 数据编号n 数据长度 数据操作 数据
      0x01 0X08 0X00 0X15 0X02 0X00 0X01 0X00 0X02 ...

      V1.0.0.220621未实现协议

      协议3:PID

      数据总数 数据编号n 数据长度 数据操作 数据
      0x01 0X04 0X00 0X06 0X01/0X02 0X00 0X01 0X00 0X02 0X00 0X03

      协议4:版本

      软硬件版本以ASCII明文传输

      数据总数 数据编号1 数据长度 数据操作 数据
      0x01 0X05 0X00 0X04 0X01/0X02 硬件版本,软件版本(ASCII)

      小思考

      1.将通信方式切换为FishBot为服务端模式,如果是STA模式则可以直接连接OLED上的IP即可,如果是AP模式亦可。
      2.关于LaserBoard,如果使用服务端模式(没有OLED,如何显示,进配置模式,通过串口查看?还是说连接FBMC进行显示)
      
      WIFI启动顺序:
      开机优先进入STA模式,STA失败后自动进入AP模式
      
      作为SERVER无需管客户端的IP地址是什么,所以只需要配置wifi的用户名密码即可(SmartConfig OR AP配置)。
      
      断线重连工作来到了PC端。
      

      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS