智能小车
文章平均质量分 61
年轻人的第一辆“三轮车“
小车演示:https://www.bilibili.com/video/BV1K3411M7P9?share_source=copy_web&vd_source=d6b62ea36d09d5899101585761eec921
ONE_Day|
这个作者很懒,什么都没留下…
展开
-
语音控制-循迹跟随避障前进后退左转右转
OLED屏可根据需要接电路显示,不过在OLED显示时会去遍历点阵数据,有for循环, 清屏函数也有,如果for循环调用得多,对循迹和跟随模块的实时性会造成影响,因为切换模式时想在OLED屏上显示当前模式,就要在上面的 if 判断内调用OLED的显示函数, 有可能模块的输出脚发生了电平转换,但程序还在for循环里跑,就不能及时改变状态,造成小车实时性不好。7.Voice.c:语音识别模块,根据语音模块的三个输出引脚的电平状态不同,调用不同的功能模块。9.Follow.c:跟随模式,将之前的跟随代码封装整合。.原创 2022-08-18 14:38:20 · 1104 阅读 · 0 评论 -
SU-03T语音模块使用简介
CH340不支持接负载的,需要外部给模块接电源,共地问题要解决好,即CH340的GND要接到外部电源的GND,保证CH340的地线与模块供电的地线是相连的,可以用面包板来接线。(2).打开工具,镜像文件选择与工具同一目录下的bin文件,要选release版本的,名称:uni_app_release_update.bin。(4).CH340插上电脑,看到工具显示COM口后,点击烧录,再给模块上电(在此之前模块不要上电),上电后就会显示下载进度,等待即可。),具体烧录方式查看烧录文档。...原创 2022-08-18 14:33:14 · 5200 阅读 · 0 评论 -
小车联网—通过ESP8266将速度发送到客户端
如果是想通过串口查看通信情况的,可以将CH340接上,ESP8266的TX通过分线接单片机的RX和CH340的RX,ESP8266的RX通过分线接单片机的TX和CH340的RX,因为小车的电源由两节18650电池供电,经过降压模块得到5V,要给单片机、电机驱动、测速模块供电,所以ESP8266的电源需要额外供给,把模块的地全接在面包板上。主要是用来设置AP模式的AT指令数组,需要加code,将数组放到ROM中,不然代码太大编译不通过,然后是应答的标志位,两个通过串口发送AT指令的函数。...原创 2022-08-18 14:30:51 · 1297 阅读 · 0 评论 -
小车测速并通过OLED显示
main.c:主函数,定时器0、定时器2、外部中断、串口、OLED的初始化函数调用,然后调用清屏函数清一下屏,while循环内根据标志位发送速度到串口,同时也调用函数在OLED上显示速度。增加IIC.c,OLED.c,OLEDASCII.h,相应头文件也加载进来,直接在OLED显示字符串(用厂商代码)的程序中拷贝这些文件进来,然后整合。OLED.c:OLED写命令函数,写数据函数,清屏函数,初始化函数,显示文字、字母或数字函数,设置坐标和显示8*16点阵的函数。Delay.c:延时函数。...原创 2022-08-18 14:16:57 · 2746 阅读 · 0 评论 -
小车测速并通过串口发送速度数据
main.c:主函数,定时器0、定时器2、外部中断和串口的初始化函数调用,while循环内根据标志位发送速度到串口Motor.c:小车前进、后退、左转、右转和停止的函数Delay.c:延时函数Timer0.c:定时器0初始化函数,中断处理函数中是前进的PWM调速Timer2.c:定时器2初始化函数,中断处理函数是定时1秒对外部中断的变量进行处理后清零Init0.c:外部中断0初始化函数,下降沿中断处理函数让变量不断+1。...原创 2022-08-18 14:12:36 · 590 阅读 · 0 评论 -
小车测距避障-通过串口(可蓝牙)控制
主函数中要先调用定时器0、定时器2、串口的初始化函数,调用函数让舵机旋转,让超声波模块往前,然后while循环内就不断判断标志位是否是1,是1则说明串口那边下指令了,就调用函数让小车进入避障模式。5.HC-SR04.c:定时器2初始化函数,不开启中断,因为这次用到串口控制,要用定时器1作波特率发生器,所以超声波改为用定时器2,超声波测距的函数。串口中断函数中加入新指令,串口收到的指令如果是“Avoid”,则将避障模式的标志位置1,其他判断不变。把前面测距避障的代码进行封装整合,写成一个源文件。...原创 2022-08-18 14:08:12 · 814 阅读 · 0 评论 -
小车测速模块使用介绍
按照上面的思路,我们的测速传感器就可以发挥出效果了,我们知道一圈就有 10 个中断,于是我们计算中断次数,得到的总次数除于 10 也就是电机转动次数了,然后按照轮子的周长,计算轮子一圈是多长,就可以推算出小车已经跑多远了。按照测距离的思路,我们用一个 MCU 定时器计算,1 秒内接收多少个外部中断,例如一秒内接收了 20 个外部中断,我们就可以判断小车速度为 1 秒小车轮子转两圈,然后再计算出小车轮子的周长,就可得知小车 1 秒行驶的速度。4、比较器输出,信号干净,波形好,驱动能力强,超过15mA。...原创 2022-08-18 14:04:46 · 4304 阅读 · 1 评论 -
使用舵机和超声波模块实现小车自动避障
1.要实现舵机摇头就是依次从0°摇到90°,然后再摇到180°,反复循环,因为舵机是用PWM控制的,在垃圾桶项目中已经使用过舵机,可以直接拿代码过来用,最好进行代码的封装,在工程中引入该舵机的源文件。在测距避障过程中,如果使用的是普通转弯函数,就是一个轮子转另一个轮子不转,这样找到出口的速度会慢点,有时候会在一个地方反复摇头测试,将左转或右转的函数修改一下,让小车在原地旋转,提高找到出口的速度。用热熔胶把舵机固定在小车车头,然后把超声波模块接好线后,绑定在舵机上,可自己想办法固定,舵机转动角度对即可。...原创 2022-08-15 14:47:17 · 7619 阅读 · 16 评论 -
红外避障模块介绍
该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接回输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围2~30cm,工作电压为3.3v-5v。该模块测距离2~~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;1.VCC外接3.3v-5v电压(可以直接与5v单片机和3.3v单片机相连).原创 2022-08-15 14:38:37 · 20906 阅读 · 1 评论 -
跟随模式——红外模块
跟随模式使用的传感器也是红外传感器,跟循迹的工作原理一样,只不过红外发射是向前的,检测到前方有障碍或没障碍就执行不同的函数,即可用来避障,也可用来做跟随,做避障的化程序要进行修改。if 判断语句一致,只是第二条判断语句是调用左转函数,因为在跟随模式下,左边有反射,右边没反射,说明左边有物体,要跟着物体走就要左转,右边同理。实现的效果:上电后,把手或其他物体放在小车的红外传感器前面,小车就会跟随着手或物体前进。2.Motor.c:小车前进、后退、左转、右转和停止的函数。3.Delay.c:延时函数。...原创 2022-08-15 14:35:19 · 932 阅读 · 1 评论 -
循迹模式-差速转弯
需要注意的是在两个传感器都不反射的情况下,也就是启动的过程中把小车从地面拿起来了,红外没反射回来,如果使用之前的Stop函数,则会出现电流声,这样是个bug,要改为将比较值置0才解决这个问题。普通循迹模式下,小车转弯是让一个轮子停止,另一个轮子转动,强行带动停下的轮子前进,所以会造成转弯时“一拐一拐的”,显得不平滑;实现差速转弯,主要用到了左右轮PWM调速的功能,把小车PWM调速-左右轮差速调速的定时器初始化和中断处理拿过来使用。4.Timer.c:定时器0和定时器1初始化,以及中断PWM。...原创 2022-08-13 14:05:15 · 7717 阅读 · 0 评论 -
循迹模式——红外循迹模块使用介绍
TCRT5000传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管饱和,此时模块的输出端为低电平,指示二极管被点亮。总之一句话:没反射回来,D0输出高电平,灭灯没反射——D0输出高电平——灭灯反射——D0输出低电平——点亮1.左右循迹模块都照射到白色上——红外返回——都输出低电平——指示灯亮——直走。...原创 2022-08-13 14:02:26 · 45356 阅读 · 9 评论 -
串口控制小车电机转动+蓝牙长按控制
2.中断处理函数中也要相应修改,在控制信号后加适当的延时,延时越小,就越接近点动模式,太小的话小车轮子会抽搐,适当加大点就有点动的现象;1.在main函数的while循环中添加让小车停止的函数,如果没有串口中断时就一直是停止状态,当有中断信号过来时就控制小车启动,4.Uart.c:串口初始化函数,发送一个字节函数,发送一个字符串函数,中断处理函数接收串口指令,从而控制小车启动。点击后设置按钮,选择长按发送,持续发送时间间隔为50ms,间隔越小,说明一直按着按钮的话串口发送数据的频率就越高。...原创 2022-08-13 13:55:56 · 1950 阅读 · 1 评论 -
串口控制电机转动+可蓝牙
4.Uart.c:串口初始化函数,发送一个字节函数,发送一个字符串函数,中断处理函数接收串口指令,从而控制小车启动。2.通过电脑的串口助手可以控制小车动起来后,将蓝牙模块接到TX,RX上后就可以用手机蓝牙助手远程控制小车启动。1.将控制电机转动的几个函数封装成模块后,加上串口控制的模块即可。2.Motor.c:小车前进、后退、左转、右转和停止的函数。1.main.c:调用串口初始化函数,循环里什么都不做。3.Delay.c:延时函数。...原创 2022-08-13 13:50:50 · 967 阅读 · 2 评论 -
小车PWM调速-模式选择
定时器0和定时器2只能有一个在计时,不能同时进行;在收到停止信号后,要将ForwardSpeed和BackSpeed都清零6.原创 2022-08-12 11:34:49 · 2571 阅读 · 0 评论 -
小车PWM调速-串口控制
2.只需在串口中断处理函数中判断接收到的串口信号,如果是调速信号则改变speed的值即可。1.将上节PWM调速用到的定时器0源文件和头文件引入进来,工程文件如下。3.串口可以调速后,接上蓝牙模块,即可通过手机蓝牙助手控制小车调速。Timer0.c:定时器0初始化以及中断处理(PWM调速)Motor.c:小车前进、后退、左转、右转和停止的函数。Uart.c:串口初始化以及中断处理(接收串口信息)串口控制调速,即通过串口修改speed的值,Delay.c:延时函数。mian.c:主函数。...原创 2022-08-12 11:27:30 · 845 阅读 · 0 评论 -
小车PWM调速
PWM调速的原理是,一个周期内如50ms,一直调用GoForward(),则小车全速前进,不能调速;如果前30ms调用GoForward()让小车前进,后20ms调用Stop()让小车停止,那么获得到的功率就比让小车全速前进的功率小,相应的速度也要小。1.main.c:调用定时器0初始化函数,while循环内隔一段时间改变speed的值,让小车以不同的速度前进。程序现象是:小车车轮先慢速旋转两秒,再中速旋转两秒,最后快速旋转两秒,再回到慢速旋转。2.Motor.c:小车前进、后退、左转、右转和停止的函数。.原创 2022-08-12 11:25:13 · 2401 阅读 · 0 评论 -
小车PWM调速-左右轮差速转弯
2.因为之前的代码已经初始化了定时器0,用作两个轮子的PWM调速,所以这里需要再加入定时器1,定时器0用于左轮的PWM控制,定时器1用于右轮的PWM控制,在各自的中断处理函数中,定时器0中断调用左轮前进和停止,定时器1中断调用右轮前进和停止。之前写的左转和右转函数都是一个轮子停止,另一个轮子转动,才实现了转弯效果,那差速就是,两个轮子都转动,只不过一个轮子快,一个轮子慢,这样就实现了较平滑的转弯。3.main函数中外部声明左右轮的速度变量,在while循环内给左右轮变量赋不同的值即可实现差速转弯。...原创 2022-08-11 12:27:13 · 10296 阅读 · 4 评论 -
L9110S电机驱动——让小车动起来
双L9110S芯片的电机驱动模块供电电压:2.5-12V,供电电压越大则直流电机转速越快,前提不超过额定电压适合的电机范围:电机工作电压2.5v-12V之间,最大工作电流0.8A,目前市面上的智能小车电压和电流都在此范围内可以同时驱动2个直流电机,或者1个4线2相式步进电机。PCB板尺寸:2.8cm*2.1cm超小体积,适合组装设有固定安装孔,直径:3mm。......原创 2022-08-10 21:23:30 · 14716 阅读 · 1 评论