3871|1

655

帖子

30

TA的资源

版主

楼主
 

22“万里”树莓派小车——手机遥控电机转动 [复制链接]

本帖最后由 lb8820265 于 2022-1-30 11:55 编辑

在如何准确控制轮子速度的坑里面挣扎了许久,最后还是决定进行开环控制,并且也不进行速度的校准。

前面介绍了电机控制手机树莓派的UDP通信,那么结合这两个功能,再制定通信协议,就能实现使用手机控制控制电机转速。将目标分解为三个部分:通信协议,APP上位机,树莓派小车。

通信协议

在编写APP和小车代码前,必须明确的就是两者的通信协议,并不是指前面介绍的UDP,而是指手机发送的控制数据具体是什么含义。由于最终目标是控制小车的四个轮子的转速,那么就可以简单的用4个字节来表示,每个字节表示一个轮子的转速,数值范围从-100~100,负数表示反转,正数表示正转,数值越大速度越快。另外使用一个字节当做备用,一共五个字节。

位置

Byte0

Byte1

Byte2

Byte3

含义

M1速度

M2速度

M3速度

M4速度

范围

-100~100

-100~100

-100~100

-100~100

       APP上位机

APP上位机的作用主要是连接树莓派和发送控制数据。上位机的制作我主要参考我以前的开源小车项目,过去这么多年,AS软件变化太多,很多库都不支持了,不过这都不是问题,使用AS4.1新建“lb_Wanli_Car”工程,整合之前的UDP通信工程,加上摇杆和四个拖动条和四个显示控制量的编辑框。效果图和源码,详见最后。

摇杆暂时不用,这次使用拖动条来控制电机速度,添加一个定时器,连接成功就开启,断开就关闭,每100ms读取一次拖动条数值并发送给树莓派。

树莓派小车

树莓派小车主要负责数据接收和电机控制,也就是整合电机控制与UDP通信,在之前四轮控制速度的基础上进行修改,新建Car_Control工程,加入Socket_UDP.cpp文件,在主函数中开一个新的线程,用来专门接收数据,在接收的函数中解析收到的数据,并控制电机。

这其中解析数据需要额外注意,数值范围是-100~100,但是char类型数据是没有负数的,但是大于128数据可以认为是负数,用256减去该数就相当于取绝对值了,处理代码如下。

void Data_Process(char * Data){
	float gen=2.55;
	if(Data[0]>128){
		M1.Motor_out=(256-Data[0])*gen;
		M1.Direction=2;
	}else{
		M1.Motor_out=Data[0];
		M1.Direction=1;
	}
	if(Data[1]>128){
		M2.Motor_out=(256-Data[1])*gen;
		M2.Direction=2;
	}else{
		M2.Motor_out=Data[1];
		M2.Direction=1;
	}
	if(Data[2]>128){
		M3.Motor_out=(256-Data[2])*gen;
		M3.Direction=2;
	}else{
		M3.Motor_out=Data[2];
		M3.Direction=1;
	}
	if(Data[3]>128){
		M4.Motor_out=(256-Data[3])*gen;
		M4.Direction=2;
	}else{
		M4.Motor_out=Data[3];
		M4.Direction=1;
	}
}

运行效果

首先连接好硬件,在树莓派上运行Car_Control。

       打开APP,在连接界面连接树莓派。在控制界面拖动拖动条就可以对电机进行控制,可以实现不同速度和正反转的控制。

问题

现在实现了使用手机控制四个电机转动了,但是小车使用的是纳姆轮,要想让小车运动还是不简单。

源码

GitHub:

Android上位机

树莓派代码

Gitee:

Android上位机

树莓派代码

此帖出自创意市集论坛

最新回复

"万里"树莓派小车汇总贴: lb8820265的“万里”树莓派小车开源分享 - DIY/开源硬件专区 - 电子工程世界-论坛 (eeworld.com.cn)   目录:   “万里”树莓派小车开张贴  1“万里”树莓派小车——建立项目仓库 2“万里”树莓派小车——python学习(Thonny的使用) 3“万里”树莓派小车——python学习(定时任务) 4“万里”树莓派小车——C++学习(编译与运行,geany使用) 5“万里”树莓派小车——wiringPi学习(延时与线程模拟定时器) 6“万里”树莓派小车——wiringPi学习(PWM与外部中断模拟定时器) 7“万里”树莓派小车——RPi.GPIO学习(PWM与外部中断模拟定时器) 8“万里”树莓派小车——socket学习(本机通讯) 9“万里”树莓派小车——socket学习(TCP两机通讯) 10“万里”树莓派小车——socket学习(UDP两机通讯) 11“万里”树莓派小车——socket学习(Android发送) 12“万里”树莓派小车——socket学习(Android收发) 13“万里”树莓派小车——配件准备 14“万里”树莓派小车——电机驱动学习 15“万里”树莓派小车——光电编码器学习(正反转的判断) 16“万里”树莓派小车——光电编码器学习(转速的获取) 17“万里”树莓派小车——VSCode学习(编译和调试) 18“万里”树莓派小车——Makefile学习 19“万里”树莓派小车——VSCode学习(多C文件链接调试) 20“万里”树莓派小车——电机控制学习(控制速度) 21“万里”树莓派小车——电机控制学习(4轮速度控制) 22“万里”树莓派小车——手机遥控电机转动 23“万里”树莓派小车——无屏幕连接树莓派 24“万里”树莓派小车——树莓派64位系统bullseye跑分测试 25“万里”树莓派小车——纳姆轮控制 26“万里”树莓派小车——程序开机启动 27“万里”树莓派小车——固定和获取树莓派IP地址 28“万里”树莓派小车——小车组装 29“万里”树莓派小车——直行偏向问题与新控制模式 30.“万里”树莓派小车——第一阶段完成展示(从零开始介绍)   详情 回复 发表于 2022-3-21 13:37
点赞 关注
个人签名QQ:252669569
 
 

回复
举报

1万

帖子

203

TA的资源

管理员

来自 2楼
 

"万里"树莓派小车汇总贴:

lb8820265的“万里”树莓派小车开源分享 - DIY/开源硬件专区 - 电子工程世界-论坛 (eeworld.com.cn)

 

目录:

 

“万里”树莓派小车开张贴 

1“万里”树莓派小车——建立项目仓库

2“万里”树莓派小车——python学习(Thonny的使用)

3“万里”树莓派小车——python学习(定时任务)

4“万里”树莓派小车——C++学习(编译与运行,geany使用)

5“万里”树莓派小车——wiringPi学习(延时与线程模拟定时器)

6“万里”树莓派小车——wiringPi学习(PWM与外部中断模拟定时器)

7“万里”树莓派小车——RPi.GPIO学习(PWM与外部中断模拟定时器)

8“万里”树莓派小车——socket学习(本机通讯)

9“万里”树莓派小车——socket学习(TCP两机通讯)

10“万里”树莓派小车——socket学习(UDP两机通讯)

11“万里”树莓派小车——socket学习(Android发送)

12“万里”树莓派小车——socket学习(Android收发)

13“万里”树莓派小车——配件准备

14“万里”树莓派小车——电机驱动学习

15“万里”树莓派小车——光电编码器学习(正反转的判断)

16“万里”树莓派小车——光电编码器学习(转速的获取)

17“万里”树莓派小车——VSCode学习(编译和调试)

18“万里”树莓派小车——Makefile学习

19“万里”树莓派小车——VSCode学习(多C文件链接调试)

20“万里”树莓派小车——电机控制学习(控制速度)

21“万里”树莓派小车——电机控制学习(4轮速度控制)
22“万里”树莓派小车——手机遥控电机转动

23“万里”树莓派小车——无屏幕连接树莓派

24“万里”树莓派小车——树莓派64位系统bullseye跑分测试

25“万里”树莓派小车——纳姆轮控制

26“万里”树莓派小车——程序开机启动

27“万里”树莓派小车——固定和获取树莓派IP地址

28“万里”树莓派小车——小车组装

29“万里”树莓派小车——直行偏向问题与新控制模式

30.“万里”树莓派小车——第一阶段完成展示(从零开始介绍)

此帖出自创意市集论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表