电机电压摄像头怎么接线(实践类 多功能控制小车)

你的笑 电脑 27

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

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

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

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

3.四个直流减速电机

4.WIFI数传模块

5.电机驱动模块

6.STM32F105主控板

7.UVC摄像头

8.小车底盘

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

框图

基本编程软件

keil5

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

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

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

舵机这块是两个,上下,左右各一个,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度;

看看程序中是怎么控制的

用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, //ʹÄÜͨµÀ1 TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);

我们改变这个值

Speed_Left-1就可以改变舵机角度

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

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

wifi模块的工作原理

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

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

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

这个是实际的wifi图传模块

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

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

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

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

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

3:输入命令firstboot就可以了

这个wifi模块怎么刷固件openwrt系统的

首先通过USB口给设备供电,通过miniUSB口加上usb转网口网线连接电脑

准备刷机工具TFTP服务端:tftp32 就是局域网内可以传文件

超级终端:putty Telnet、SSH、rlogin、纯TCP以及串行接口连接软件

需要相应的固件具体教程最后我们看看USB摄像头这块,简单介绍一下无线监控中的摄像头

1.摄像头选择

做本次实验的时候,推荐大家用 USB 免驱的摄像头,最好是支持 MJPEG 输出的摄像头类型。USB 免驱摄像头输出 YUV 格式和输出 MJPEG 格式,对无线监控的效果有什么影响呢?首先大家要知道,同样是一帧数据,YUV 格式会比 MJPEG 格式的大得多,因此我们在视频传输的时候,一般是传输 MJPEG 格式的数据。这样,就有这样一个问题,如果摄像头是输出 YUV 格式,那么就意味着我们需要通过软件将视频数据由 YUV 格式转换成 MJPEG格式,然后传输。如果摄像头输出的是 MJPEG 格式,那个将可以直接将得到的数据进行传输。因此,使用支持 MJPEG 压缩的摄像头,比一般的摄像头,做无线监控的效果,好很多

这个是小车的底盘,四个直流减速电机,四个轮子,底板,两个电机一组,我买的这个直流减速电机供电电压为5v到12v都可以,电压高的话也可以,长时间工作的话会对电机损坏

下面介绍电机驱动模块

看看具体的原理

看看具体是怎么控制电机速度的,通过控制使能端使L298N处于工作和不工作,VSS-9引脚为芯片供电 VS-4引脚为电机供电 ENA-6引脚为通道1使能端,利用定时器的pwm输出作用于ENA,根据脉冲占空比不同就可以得到不同的输出电压,从而达到调速目的。比如在VS引脚加10V的电机供电电压,ENA端脉冲占空比为100%,那么OUT1和OUT2之间将输出10V电压,占空比为50%,那么输出为5V电压,占空比为10%,则为1V

3.配置 OpenWrt 支持 mipg-streamer 软件

mipg-streamer 就是一款用于视频数据采集、视频数据格式转换、视频数据传输的软件,服务器。因此为了让 openwrt 系统支持该软件,我们需要将它配置进去:

2.配置 OpenWrt 支持 usb 摄像头

看看怎么配置

要支持摄像头,就必须配置上摄像头的驱动,因为是免驱的 USB 摄像头,因此我们必须配置上 UVC 驱动,具体如图所示。首先,我们选中内核模块进行配置:

选中 Video 支持配置:

按”y”选中 kmod-video-core:

在展开的选项中选中 uvc:

看看电机驱动模块

基本原理如下

看看具体是怎么控制电机调速的,通过控制使能端使L298N处于工作和不工作,VSS-9引脚为芯片供电 VS-4引脚为电机供电 ENA-6引脚为通道1使能端,利用定时器的pwm输出作用于ENA,根据脉冲占空比不同就可以得到不同的输出电压,从而达到调速目的。比如在VS引脚加10V的电机供电电压,ENA端脉冲占空比为100%,那么OUT1和OUT2之间将输出10V电压,占空比为50%,那么输出为5V电压,占空比为10%,则为1V 我买的电机供电电压为5v到12v都可以,电压高的话也可以,长时间工作的话会对电机损坏

看看电机是怎么正反装 的

逻辑输入端,为IN1\IN2\IN3\IN4,其中IN1、IN2控制电机M1;IN3、IN4控制电 机M2。例如IN1输入高电平1,IN2输入低电平0,对应电机M1正转;IN1输入低电平0,IN2输入高电平1,对应电机M1反转,调速就是改变高电平的占空比

这是整个系统的核心板STM32F105

正好国庆期间可以把程序写写,用一个stm32f103的模板,还是103的标准库,改一下测试再105上可以不?

主要就是串口这块,但是奇怪的是串口通讯不正常

波特率9600是一致的,用串口助手发送,发送FE是没有任何反应的,发送其他,接受的也不一样,多年的编程,程序应该问题不大

就怀疑时钟的问题,先软件仿真看看,调试状态找到RCC

看看能看出来时钟对不

寄存器里面的值不太了解

可以通过一个时钟函数RCC_GetClocksFreq( //缓冲区头部位置

unsigned char tail; //缓冲区尾部位置

unsigned char ringBuf[MAX_SIZE]; //缓冲区数组

} ringBuffer_t;

ringBuffer_t buffer; //定义一个结构体

3.读取缓冲队列中的11个数据后,状态如下:

我们看看程序中是怎么做的

我们需要在主函数的超级循环里读取缓冲区数据,并判断解析数据就可以

这是最终的成品图,带超声波避障功能

最终的产品功能视频演示,整体功能全部实现,视频实时监控

1.电脑连接小车wifi,通过键盘的W A S D控制小车的前 左 后 右

2.电脑控制舵机

3.超声波避障

4.手机APP控制

这是电脑控制软件

功能非常强大的,

这是手机APP

标签: 电机 摄像头 电压

抱歉,评论功能暂时关闭!