专业小程序设计开发——助力新电商新零售
电话+V:159999-78052,欢迎咨询stm32蓝牙小车通信程序步骤,[小程序设计与开发],[小程序投流与推广],[小程序后台搭建],[小程序整套源码打包],[为个体及小微企业助力],[电商新零售模式],[小程序运营推广及维护]
一、在校大学生,想用ARM芯片stm32做一个项目,但是不知道可以做什么...希望...
做一个简单的只能避障小车吧。。。先简单的做起,比如实现直线走到,然后测障碍物的距离,并显示出来,然后慢慢加模块,加功能。。。最后最好移植一个ucos系统上去跑。。。。这样就能学到东西啦
二、stm32小车蓝牙模块可以实现刷卡启动吗
可以。stm32小车蓝牙模块可以实现刷卡启动。基于STM32和蓝牙模块的智能刷卡控制装置,其特征在于,包括STM32单片机、蓝牙模块、电磁锁、存储器,所述蓝牙模块包括门禁蓝牙模块和控制蓝牙模块,所述门禁蓝牙模块与所述电磁锁连接,所述门禁蓝牙模块和控制蓝牙模块经过调试后,所述门禁蓝牙模块受到所述控制蓝牙模块控制,从而控制所述电磁锁。
基于单片机stm32的智能小车(远程控制、避障、循迹)
2023-11-1415:53·嵌入式xff
制作智能小车的硬件名单:制作智能小车的硬件列表:(1)STM32C8T6核心板一块(2.4G遥控需要两块,手机遥控需要一块)(2)L298N电机驱动两个(或一块)(4)红外壁障模块三个(5)红外循迹模块三个(7)12V供电电池一个(8)带电机轮子的小车支架(自带tt电机)一个2.4G遥控模式:(1)2.4G无线通讯模块两个手机遥控模式:(1):蓝牙模块一个
由于我们做的控制功能可以使用2.4G控制,也可以使用蓝牙进行控制,两种传输方式所需购买的模块不同,已在硬件名单中加以区分,接下来就一步步的实现。一、先让小车跑起来!!!
我们在淘宝上买的那种智能小车底板都是自带tt电机的,不管我们用那种控制方式,首先要做的都是让电机先跑起来。(一)、驱动一个电机转动:说到驱动电机,就不得不说一下L298N(电机驱动)了,为什么要说L298N呢?当时我第一次用电机的时候,也很疑惑,为什么要用L298N,我电机是5v的,直接连上单片机IO口,让其输出高低电平不久能控制电机转动吗????但其实是不是的,IO口确实能输出5V的电压,也确实是和电机的电压一样,但大家不要忽略IO口输出的电流,也就是驱动能力。IO口输出的电流太小了,根本带不动电机啊。。。。举个例子:“可以想象一下让一个小伙子去耕地,他肯定拉不动,但如果给他一头牛,就让小伙拿着小皮鞭赶牛,让牛去耕地,veryesay。”而L298N的作用和刚刚说的“牛”的作用一样,,我们只需用单片机IO口控制L298N的工作,其他的脏活累活全让L298n去做,,好奸商的感觉哈哈哈哈。
L298n电源接口的接线:电源12V正极→L298n正极电源12V负极、单片机GND→L298n的GNDL298n的5V输出→单片机的5V(用L298n产生的5V给单片机供电)刚刚说过了我们使用单片机的IO口输出控制L298n的工作,怎么控制呢??看到逻辑输入那四个引脚了吗对就是他们。左边两个逻辑输入控制电机A(正转、反转、停止)右边两个逻辑输入控制电机B(正转、反转、停止)具体如何控制正反转及停止的:简单说IN1、IN2输出(0,1)正传、输出(1,1)反转、输出(1,1)制动。具体的解释大家可以进群免费咨询,点击这里找小助理0元领取:扫码进群领资料
(二)、控制小车前进、后退、左转、右转刚刚已经了解了如何驱动一个电机的转动,那控制小车的前进方向,无非就是四个轮子搭配着运行。前行:四个轮子都顺转后退:四个轮子都逆转左转:左侧两个轮子不动,右边两个轮子往前走。右转:右侧两个轮子不动,左边两个轮子往前走。
四个电机,由于两个逻辑输入控制L298N的一个电机输出,所以每个电机需要两路PWM输出控制,共需要8路PWM(注意:这8路PWM输出都是连接到L298N的逻辑输入端),本项目选择STM32单片机的TIM1与TIM4产生PWM输出,驱动程序代码:PWM.C#include"pwm.h"//TIM1_PWM输出初始化//TIM1_CH1=PA8//TIM1_CH2=PA9//TIM1_Reload_Num=TIM1自动重装值//TIM1_Frequency_Divide=时钟预分频数voidTIM1_PWM_Init_YX(void){GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);//使能TIM1时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOB时钟//配置IO模式GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOA,GPIO_InitStructure);//初始化PA8、PA9、PA10、PA11//初始化TIM1的计数模式、分频值、重装载值等TIM_TimeBaseStructure.TIM_Period=TIM1_Reload_Num;//设置下一个更新事件后,装入自动重装载寄存器的值TIM_TimeBaseStructure.TIM_Prescaler=TIM1_Frequency_Divide;//设置TIM3时钟预分频值TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式TIM_TimeBaseInit(TIM1,TIM_TimeBaseStructure);//根据参数初始化TIM1//初始化TIM1_CH1、2的PWMTIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//选择定时器模式:TIM脉冲宽度调制模式1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能TIM_OCInitStructure.TIM_OutputNState=TIM_OutputState_Disable;//比较输出N不使能TIM_OCInitStructure.TIM_Pulse=0;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出极性:TIM输出比较极性高TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Reset;TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleState_Reset;TIM_OC1Init(TIM1,TIM_OCInitStructure);//数初始化TIM1_OC1TIM_OC2Init(TIM1,TIM_OCInitStructure);//数初始化TIM1_OC2TIM_ARRPreloadConfig(TIM1,ENABLE);//使能TIM1的自动重装载寄存器TIM_CtrlPWMOutputs(TIM1,ENABLE);//主输出使能TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);//使能TIM1在OC1上的预装载寄存器TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);//使能TIM1在OC2上的预装载寄存器TIM_Cmd(TIM1,ENABLE);//使能TIM1}//TIM4_PWM输出初始化//TIM4_CH1=PB6//TIM4_CH2=PB7//TIM4_Reload_Num=TIM1自动重装值//TIM4_Frequency_Divide=时钟预分频数voidTIM4_PWM_Init_YX(void){GPIO_InitTypeDefGPIO_InitStructure;TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_OCInitTypeDefTIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB时钟//配置IO模式GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_Init(GPIOB,GPIO_InitStructure);//初始化TIM4的计数模式、分频值、重装载值等TIM_TimeBaseStructure.TIM_Period=TIM4_Reload_Num;//设置下一个更新事件后,装入自动重装载寄存器的值TIM_TimeBaseStructure.TIM_Prescaler=TIM4_Frequency_Divide;//设置TIM4时钟预分频值TIM_TimeBaseStructure.TIM_ClockDivision=0;//设置时钟分割:TDTS=Tck_timTIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式TIM_TimeBaseInit(TIM4,TIM_TimeBaseStructure);//根据参数初始化TIM4的计数方式//初始化TIM4_CH1、2的PWMTIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//选择定时器模式:TIM脉冲宽度调制模式1TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出极性:TIM输出比较极性高TIM_OC1Init(TIM4,TIM_OCInitStructure);TIM_OC2Init(TIM4,TIM_OCInitStructure);TIM_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable);//使能TIM4在OC1上的预装载寄存器TIM_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);//使能TIM4在OC2上的预装载寄存器TIM_Cmd(TIM4,ENABLE);//使能TIM4}完整资料可进群免费领取。嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!点击这里找小助理0元领取:扫码进群领资料
【WINDRISES MINIPROGRAM PROMOTION】尊享直接对接老板
电话+V: 159999-78052
专注于小程序推广配套流程服务方案。为企业及个人客户提供了高性价比的运营方案,解决小微企业和个体拓展客户的问题