• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【工程师6】+实践类+多功能控制小车(已完结)

    DIY小车这个项目已经很多了,对于前后左右等控制,司空见惯,这次尝试一下能监控的多功能控制小车,电脑,手机都可以!

多功能车基本功能参数和关键部件,视频传输这块和我们现在智能家具这块无线视频原理一样,下面会有介绍

1.输入电源:2串或3串的锂电池(带充电器)

2.输出5v,3.3V等电压为负载供电

3.四个直流减速电机

4.WIFI数传模块

5.电机驱动模块

6.STM32F105主控板

7.UVC摄像头

8.小车底盘

最后实现电脑或手机通过wifi和软件控制小车动作并实时监控

框图

全部回复(89)
正序查看
倒序查看
斌520
LV.9
2
2019-08-10 19:11
一句话新闻?具体内容呢?
0
回复
2019-08-10 21:57
@斌520
一句话新闻?具体内容呢?
已经更新了
0
回复
2019-08-10 22:05
@liuxiaofei126
已经更新了

基本框图:

0
回复
2019-08-10 22:10
@liuxiaofei126
基本框图:[图片]

基本编程软件

keil5

0
回复
2019-08-11 11:54
@liuxiaofei126
基本编程软件keil5[图片]

对于单片机编程这块,目前STM32占用非常多,涉及到库函数和寄存器编程

这次采用库函数编程,采用传统的标准库,HAL库后续可以

如上图所示,先把框架建立好,拿一个自己用的工程,把相应的函数添加进去就可以了

0
回复
heiha88
LV.1
7
2019-08-11 11:59
@liuxiaofei126
对于单片机编程这块,目前STM32占用非常多,涉及到库函数和寄存器编程这次采用库函数编程,采用传统的标准库,HAL库后续可以如上图所示,先把框架建立好,拿一个自己用的工程,把相应的函数添加进去就可以了
有这块的入门教程吗
0
回复
gxg1122
LV.10
8
2019-08-11 21:40
多功能控制小车的设计增加了这么多模块,主控芯片资源及响应速度能跟上吗?
0
回复
2019-08-12 12:49
@liuxiaofei126
对于单片机编程这块,目前STM32占用非常多,涉及到库函数和寄存器编程这次采用库函数编程,采用传统的标准库,HAL库后续可以如上图所示,先把框架建立好,拿一个自己用的工程,把相应的函数添加进去就可以了

这个处理视频的话,需要上系统?

0
回复
2019-08-12 22:03
@gxg1122
多功能控制小车的设计增加了这么多模块,主控芯片资源及响应速度能跟上吗?
主控单片机只负责解析串口发来的命令并执行小车动作,
0
回复
2019-08-12 23:14
@liuxiaofei126
主控单片机只负责解析串口发来的命令并执行小车动作,

舵机这块是两个,上下,左右各一个,180度旋转

0
回复
2019-08-12 23:19
@liuxiaofei126
舵机这块是两个,上下,左右各一个,180度旋转[图片]

舵机的基本控制原理

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:

   0.5ms--------------0度;

   1.0ms------------45度;

   1.5ms------------90度;

   2.0ms-----------135度;

   2.5ms-----------180度;

0
回复
2019-08-15 22:25
@liuxiaofei126
舵机的基本控制原理控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:   0.5ms--------------0度;   1.0ms------------45度;   1.5ms------------90度;   2.0ms-----------135度;   2.5ms-----------180度;

看看程序中是怎么控制的

用STM32硬件PWM和模拟PWM都可以

TIM_OCInitTypeDef  TIM_OCInitStructure; 
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;	    //ÅäÖÃΪPWMģʽ1
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = Speed_Left-1;	  //ÉèÖÃͨµÀ2µÄµçƽÌø±äÖµ£¬Êä³öÁíÍâÒ»¸öÕ¼¿Õ±ÈµÄPWM
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽ
  TIM_OC1Init(TIM5, &TIM_OCInitStructure);	 //ʹÄÜͨµÀ1
  TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);
我们改变这个值
 Speed_Left-1就可以改变舵机角度

0
回复
2019-08-15 22:32
@liuxiaofei126
看看程序中是怎么控制的用STM32硬件PWM和模拟PWM都可以TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//ÅäÖÃΪPWMģʽ1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=Speed_Left-1;//ÉèÖÃͨµÀ2µÄµçƽÌø±äÖµ£¬Êä³öÁíÍâÒ»¸öÕ¼¿Õ±ÈµÄPWMTIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽTIM_OC1Init(TIM5,&TIM_OCInitStructure);//ʹÄÜͨµÀ1TIM_OC1PreloadConfig(TIM5,TIM_OCPreload_Enable);我们改变这个值Speed_Left-1就可以改变舵机角度

这个是整个产品的核心wifi模块

wifi数传模块是基于MIPS 24K 高通CPU的一款WIFI1X1芯片AR9331,其SDK采用uboot作为引导。是基于MIPS 架构的,目前有x86、ARM和MIPS三种主流芯片架构,ARM集架构的主要特点:一是体积小、低功耗、低成本、高性能;二是大量使用寄存器且大多数数据操作都在寄存器中完成,命令执行速度更快;三是寻址方式灵活简单,执行效率高;四是命令长度固定,可通过多流水线方式提高处理效率。

0
回复
2019-08-15 22:46
@liuxiaofei126
这个是整个产品的核心wifi模块[图片]wifi数传模块是基于MIPS24K高通CPU的一款WIFI1X1芯片AR9331,其SDK采用uboot作为引导。是基于MIPS架构的,目前有x86、ARM和MIPS三种主流芯片架构,ARM集架构的主要特点:一是体积小、低功耗、低成本、高性能;二是大量使用寄存器且大多数数据操作都在寄存器中完成,命令执行速度更快;三是寻址方式灵活简单,执行效率高;四是命令长度固定,可通过多流水线方式提高处理效率。

wifi模块的工作原理

WiFi模块通过采集挂载在USB接口的MJPG格式的摄像头的数据,并编码封装成http协议的视频流,默认推送到8080端口。Android/IOS/PC设备,连接到WiFi模块的热点后,打开控制软件,会自动从8080端口获取MJPG视频流,并进行解码、显示。由此实现了WiFi智能小车的实时视频传输功能。

0
回复
2019-08-19 12:21
@liuxiaofei126
wifi模块的工作原理WiFi模块通过采集挂载在USB接口的MJPG格式的摄像头的数据,并编码封装成http协议的视频流,默认推送到8080端口。Android/IOS/PC设备,连接到WiFi模块的热点后,打开控制软件,会自动从8080端口获取MJPG视频流,并进行解码、显示。由此实现了WiFi智能小车的实时视频传输功能。
这个wifi模块可以连接外网?
0
回复
2019-08-20 07:06
@lihui710884923
这个wifi模块可以连接外网?
主要是把wifi模块作为热点使用,连接外网不是太稳定
0
回复
2019-08-20 12:33
@liuxiaofei126
主要是把wifi模块作为热点使用,连接外网不是太稳定
其实这个要想实现WIFI的视频传输,还需要一个小型的linux系统,下面会讲解一下
0
回复
2019-08-25 08:58
@liuxiaofei126
其实这个要想实现WIFI的视频传输,还需要一个小型的linux系统,下面会讲解一下

OpenWrt 可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt三类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。

对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。

0
回复
2019-09-07 10:02
@liuxiaofei126
OpenWrt可以被描述为一个嵌入式的Linux发行版。(主流路由器固件有dd-wrt,tomato,openwrt三类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。对于开发人员,OpenWrt是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。
这个还需要刷linux系统?
0
回复
gxg1122
LV.10
21
2019-09-08 20:12
@liuxiaofei126
基本编程软件keil5[图片]
这个STM开发,WIFI模块、小车驱动、串口都是模块案例及例程。
0
回复
gxg1122
LV.10
22
2019-09-08 20:12
@lihui710884923
这个处理视频的话,需要上系统?
视频实时上传,下端有显示屏吗?还是通过上位机软件显示控制。
0
回复
gxg1122
LV.10
23
2019-09-08 20:15
@liuxiaofei126
舵机的基本控制原理控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:   0.5ms--------------0度;   1.0ms------------45度;   1.5ms------------90度;   2.0ms-----------135度;   2.5ms-----------180度;
响应速度是够用,串口解析及小车控制。
1
回复
gxg1122
LV.10
24
2019-09-08 20:17
@liuxiaofei126
其实这个要想实现WIFI的视频传输,还需要一个小型的linux系统,下面会讲解一下
这个不用linux系统吧,UC系统就可以了。
0
回复
gxg1122
LV.10
25
2019-09-08 20:20
@liuxiaofei126
其实这个要想实现WIFI的视频传输,还需要一个小型的linux系统,下面会讲解一下
这个不用linux系统吧,UC系统就可以了。
0
回复
2019-09-10 17:40
@gxg1122
这个不用linux系统吧,UC系统就可以了。
UC系统是?
0
回复
2019-09-15 07:49
@lihui710884923
这个还需要刷linux系统?
这个需要刷openwrt系统的
0
回复
2019-09-15 07:52
@gxg1122
响应速度是够用,串口解析及小车控制。
老哥对这块非常熟悉啊,响应速度可以的
0
回复
2019-09-15 08:29
@liuxiaofei126
老哥对这块非常熟悉啊,响应速度可以的

这个是实际的wifi图传模块

0
回复
2019-09-15 08:40
@liuxiaofei126
看看程序中是怎么控制的用STM32硬件PWM和模拟PWM都可以TIM_OCInitTypeDefTIM_OCInitStructure;TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//ÅäÖÃΪPWMģʽ1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse=Speed_Left-1;//ÉèÖÃͨµÀ2µÄµçƽÌø±äÖµ£¬Êä³öÁíÍâÒ»¸öÕ¼¿Õ±ÈµÄPWMTIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//µ±¶¨Ê±Æ÷¼ÆÊýֵСÓÚCCR1_ValʱΪ¸ßµçƽTIM_OC1Init(TIM5,&TIM_OCInitStructure);//ʹÄÜͨµÀ1TIM_OC1PreloadConfig(TIM5,TIM_OCPreload_Enable);我们改变这个值Speed_Left-1就可以改变舵机角度

看看舵机怎么控制转动速度

舵机的转动速度取决于起始角度和目标角度的差,差别越大转得越快,当接近时就放慢角度。所以没有专门的函数控制转速。但在大角度转动时,你可以用程序把它设成几个小角度递进,这样可以放慢速度。也通过delay进行慢速,但快速的话只有加高电压了 。

0
回复
2019-09-15 08:47
@liuxiaofei126
这个是实际的wifi图传模块[图片]

现在在重申一下这个模块的工作原理和使用方法

WiFi模块通过采集挂载在USB接口的MJPG格式的摄像头的数据,并编码封装成http协议的视频流,默认推送到8080端口。Android/IOS/PC设备,连接到WiFi模块的热点

(wifi-robots.com开头的SSID信号)后,打开控制软件,会自动从8080端口获取MJPG视频流,并进行解码、显示。由此实现了WiFi智能小车的实时视频传输功能。

们简单恢复一下出厂设置就可以了,简单说一下,用USB转tll工具连接模块配置好波特率(57600)和串口号一定注意先后顺序

1:点击打开串口,此时WIFI的状态是没有上电的

2:给WIFI上电此时要注意串口开始打印(很关键),

3:输入命令firstboot就可以了

0
回复