51单片机红外循迹小车:从基础电路到微调算法实战

【单片机毕业设计】【mcuclub-cl-011】红外遥控小车 | 循迹避障小车 | 红外循迹小车 | 超声波避障小车 中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。2、通过红外遥控器控制小车前进、后退、左转、右转、停止、加速向前、减速向前,通过超声波检测前方障碍物,当检测到障碍物距离小于50cm大于30cm,蜂鸣器报警,当检测到障碍物距离小于等于30cm时自动避开障碍物。1、通过一对红外寻迹管进行寻迹,在寻迹过程中,通过超声波检测前方障碍物,当检测到障碍物距离小于50cm大于30cm,蜂鸣器报警,当检测到障碍物距离小于等于30cm时,自动停车,直到障碍物移除。 阅读详情

1. 红外循迹小车的硬件搭建

我第一次做红外循迹小车的时候,以为只要把传感器和电机接上就能跑,结果小车在原地打转就是不走直线。后来才发现,硬件搭建的细节决定了小车的性能上限。红外循迹小车的核心硬件包括51单片机、红外传感器模块、电机驱动电路和电源系统,每个部分都要精心设计。

先说最关键的传感器布局。我建议使用4路红外传感器,分别标记为D1到D4,从左到右排列在小车前端。传感器之间的间距最好控制在2-3厘米,太近容易漏检黑线,太宽则会影响转弯精度。传感器的安装高度也很重要,最好距离地面1-1.5厘米,这个距离既能保证检测灵敏度,又不会因为地面不平而误触发。

电机的选择直接影响小车的运动性能。我试过几种不同的直流电机,最后发现转速在100-200RPM之间的减速电机最适合循迹小车。转速太高的电机需要频繁调整PWM,小车会抖动得很厉害;转速太低又会影响行驶速度。电机的供电一定要独立,最好用两节18650锂电池串联供电,这样能保证电机工作时不会影响单片机的稳定运行。

电机驱动电路我推荐使用L298N或者RZ7899芯片。L298N的驱动能力更强,但功耗较大;RZ7899更省电,但驱动电流稍小。在实际接线时,一定要注意给电机加上续流二极管,否则电机产生的反向电动势很容易烧毁驱动芯片。我在这个坑里栽过好几次,后来加了1N4007二极管就再也没出过问题。

电源系统设计往往被初学者忽视,但其实非常关键。单片机需要5V稳定供电,电机需要7-12V供电。最好用两个独立的稳压模块,我用的是AMS1117-5.0给单片机供电,LM2596给电机供电。这样电机启动时的电流波动就不会影响单片机的正常工作。记得在电源输入端加上100μF的电解电容和0.1μF的瓷片电容滤波,这个小细节能让系统稳定很多。

底盘的制作也很讲究。我建议用亚克力板制作底盘,既轻便又坚固。车轮要选择摩擦力适中的橡胶轮,太滑的车轮容易打滑,太黏的又会影响转弯。车轮的安装位置要尽量对称,否则小车会偏向一边。我在第一次组装时没注意这个问题,结果小车总是往右偏,调了很久的代码才发现是机械结构的问题。

2. 红外传感器信号处理实战

红外传感器的信号处理是循迹小车的眼睛,处理不好就会变成"瞎子"。传感器的基本原理是利用红外光在不同颜色表面的反射率不同,黑色吸收红外光,白色反射红外光。但实际环境中还有很多干扰因素,比如环境光线变化、地面反光等,都需要在软件层面进行处理。

传感器的初始化很关键。上电后需要延时100-200毫秒让传感器稳定,否则读取的数据会不准。我一般在程序初始化时先读取10次传感器值,取平均值作为基准参考。有些高级的做法是用ADC读取模拟值,但对于大多数循迹应用来说,数字传感器已经足够用了。

在实际循迹过程中,我总结出几种典型的传感器状态组合。当D2和D3同时检测到黑线时,说明小车正在直行;只有D2检测到黑线时,说明小车稍微偏右,需要向左微调;只有D3检测到黑线时,说明小车偏左,需要向右微调。这些状态判断是循迹算法的基础。

信号去抖动处理是必须的。由于传感器采样频率和机械振动,原始信号会有毛刺。我通常采用软件滤波的方式,连续采样5次,取出现次数最多的值作为最终结果。这样可以有效避免偶然的误检测。采样间隔建议在1-2毫秒,太短会增加处理器负担,太长会错过重要状态变化。

// 传感器去抖动示例代码
#define SAMPLE_TIMES 5

unsigned char read_sensor() {
    unsigned char count[4] = {0};
    for(int i=0; i<SAMPLE_TIMES; i++) {
        if(D1 == 0) count[0]++;
        if(D2 == 0) count[1]++;
        if(D3 == 0) count[2]++;
        if(D4 == 0) count[3]++;
        delay(1);
    }
    
    unsigned char result = 0;
    if(count[0] > SAMPLE_TIMES/2) result |= 0x08;
    if(count[1] > SAMPLE_TIMES/2) result |= 0x04;
    if(count[2] > SAMPLE_TIMES/2) result |= 0x02;
    if(count[3] > SAMPLE_TIMES/2) result |= 0x01;
    
    return result;
}

对于复杂环境,还需要考虑自适应阈值调整。我遇到过这样的情况:早上在室内测试很正常,下午阳光照进来后小车就乱跑了。后来我增加了环境光自适应功能,每隔一段时间重新校准传感器阈值,问题就解决了。校准时让小车在原地旋转一周,记录各个传感器的最大最小值,然后取中间值作为新阈值。

传感器的安装角度也会影响检测效果。我建议传感器稍微向前倾斜10-15度,这样能提前检测到路线变化,给小车的反应留出更多时间。但角度不能太大,否则会检测到太远的位置,容易产生误判。

3. PWM电机控制技术详解

PWM(脉冲宽度调制)是控制电机速度的核心技术,但用好PWM并不简单。我刚开始时以为只要改变占空比就能精确控制速度,结果发现电机响应有延迟,不同占空比下的速度也不是线性变化的。

51单片机的定时器是产生PWM的关键。我通常使用定时器0的工作模式2(8位自动重装模式),这样能产生稳定的PWM信号。定时器的重装值要根据需要的PWM频率来计算,一般电机控制使用1-10kHz的PWM频率比较合适。频率太低电机会有噪音,太高又会增加开关损耗。

// 定时器初始化代码
void Timer0_Init() {
    TMOD &= 0xF0;
    TMOD |= 0x02;
    TH0 = 0x9C;
    TL0 = 0x9C;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
}

// 中断服务程序
void Timer0_Routine() interrupt 1 {
    static unsigned char count = 0;
    count++;
    if(count >= 100) count = 0;
    
    if(count < PWMA) ENA = 1;
    else ENA = 0;
    
    if(count < PWMB) ENB = 1;
    else ENB = 0;
}

电机的死区电压是另一个需要特别注意的问题。每个电机都有一个启动电压阈值,低于这个值电机不会转动。我发现通过实验确定每个电机的死区电压很重要。我的做法是逐渐增加PWM占空比,记录电机刚开始转动时的值,这个值就是死区电压。在实际控制中,要把这个偏移量考虑进去。

双电机速度匹配是保证直线行驶的关键。即使是同一型号的电机,实际转速也会有差异。我采用的方法是:让两个电机空载运行,用红外测速仪测量实际转速,然后计算补偿系数。比如左电机比右电机快5%,那么在给相同PWM值时,右电机的占空比要增加5%。

加速度控制能让小车运行更平稳。突然的速度变化会导致小车抖动甚至脱轨。我实现了简单的加速度控制,每次调整PWM值时都采用渐变的方式。比如当前PWM是50,目标值是70,我不会直接跳到70,而是每10毫秒增加1,这样电机就能平稳加速。

刹车控制也很重要。突然停止PWM输出会让小车依靠惯性滑行很远。我采用软刹车方式:先快速降低PWM值到死区电压以下,保持一段时间让电机减速,最后才完全停止PWM输出。这样停车位置更准确,机械冲击也小。

4. 延时微调算法实战心得

延时微调算法是我在硬件条件有限的情况下想出的解决方案。我的小车没有编码器,无法实现精确的PID控制,但通过巧妙的延时控制,同样实现了稳定的循迹效果。

基本思想是根据传感器检测到的偏离程度,给予不同时间的转向修正。当只有轻微偏离时,给一个很短的转向脉冲(3-5毫秒);当偏离较大时,给较长的转向脉冲(30-40毫秒)。这种方法的优点是计算量小,响应快,在低速情况下效果很好。

我设计了8种典型的传感器状态及其对应的处理策略:

当D1D2D3D4都检测到黑线时,说明小车可能已经出轨,立即停止等待处理。

当D2和D3检测到黑线时,小车正在直行,给两个电机相同的PWM值,但加入轻微的左右摇摆来保持动态平衡。

当只有D2检测到黑线时,说明小车稍微偏右,左轮给略大的PWM值,持续3毫秒的向右转向。

当只有D3检测到黑线时,说明小车稍微偏左,右轮给略大的PWM值,持续4毫秒的向左转向。

遇到直角转弯时,需要特殊的处理策略。我通过传感器序列判断转弯类型:先看到D3D4检测到黑线,然后D4检测到,说明是右直角转弯。这时先让小车直行一小段(30毫秒),然后执行190毫秒的大幅度转向。

延时时间的调整需要耐心。我花了整整一个下午才调出合适的参数。先从小数值开始,慢慢增加,同时观察小车的反应。太小的延时不起作用,太大的延时又会导致过度转向。最好在赛道上标记测试点,记录小车通过每个点时的状态。

// 延时微调算法示例
if (D1==0 && D2==1 && D3==1 && D4==0) {
    // 直行状态,加入微幅摇摆保持动态平衡
    PWMA = 21.0;
    PWMB = 21.0;
    turn_right();
    delay(30);
    turn_left();
    delay(30);
}

if(D1==0 && D2==0 && D3==1 && D4==0) {
    // 偏右,向左微调
    PWMA = 20.9;
    PWMB = 21.0;
    turn_right();
    delay(3);
}

环境适应性调整也很重要。在不同材质的地面上,最佳的延时参数会有所不同。我在木地板、瓷砖和水泥地上测试时,发现需要调整延时时间。后来我增加了地面类型检测功能,小车能根据首次运行时的传感器反馈自动选择参数组。

防抖动处理是延时算法的关键。由于传感器检测和电机响应都有延迟,容易出现控制振荡。我采用状态机的方式,记录上一次的控制动作,避免连续反向调整。同时加入最小调整间隔限制,确保每次调整都有足够时间生效。

5. 系统优化与性能提升

在小车基本能循迹后,我开始关注系统优化和性能提升。这些优化措施让我的小车从"能跑"升级到了"跑得好"。

电源管理优化是第一个改进点。我发现电机启动时的电流冲击会导致单片机复位,于是增加了电源去耦电容:在单片机的VCC和GND之间并联100μF电解电容和0.1μF瓷片电容,电机驱动芯片的电源引脚也加上同样的电容。这个简单的改动彻底解决了复位问题。

传感器布局优化提升了检测精度。最初我的传感器是等间距排列,后来改为中间密、两边疏的非均匀排列。中间两个传感器间距2厘米,负责精确循迹;两边传感器间距3厘米,负责检测急转弯。这样既保证了直线循迹精度,又不会错过急转弯。

代码优化减少了响应延迟。我将传感器读取和控制输出都放在定时器中断中完成,确保每1毫秒就能更新一次控制状态。主循环只负责处理按键和状态显示等非实时任务。这样改进后,小车的响应时间从原来的10毫秒缩短到1毫秒。

速度自适应调节让小车在不同路段都能稳定运行。我在直道段适当提高速度,在弯道段自动降低速度。通过传感器序列预测前方路况:如果检测到连续弯道,就提前减速;如果是长直道,就逐渐加速。这样既提高了平均速度,又保证了稳定性。

故障检测与恢复机制增加了系统的鲁棒性。我添加了超时检测功能:如果小车连续500毫秒没有检测到黑线,就进入搜索模式——原地缓慢旋转直到重新找到黑线。同时还添加了电机堵转检测,当PWM输出很高但小车不动时,自动降低功率防止烧毁电机。

数据记录与分析功能帮助我进一步优化参数。我让小车在运行时记录传感器状态和控制指令,通过串口发送到电脑分析。用Excel绘制出传感器数据曲线和控制响应曲线,能很清楚地看到哪些参数需要调整。这个方法是性能优化的利器。

最后是机械结构的精细调整。我重新调整了车轮的安装位置,确保两个轮子完全对称;给车轮加上O型环增加摩擦力;调整传感器支架减少振动影响。这些机械上的改进往往能带来意想不到的效果,有时比调代码更有用。

6. 常见问题与解决方案

做红外循迹小车的过程中,我遇到了各种各样的问题,有些问题折腾了好几天才找到解决方法。这里分享几个最常见的问题及其解决方案。

第一个常见问题是小车总是抖动厉害。这通常是PID参数不合适或者延时微调算法过于敏感导致的。我的解决方法是:首先确保机械结构牢固,传感器和电机安装稳定;然后降低控制灵敏度,增加去抖动滤波;最后采用渐变的控制输出,避免突然的速度变化。

第二个问题是遇到交叉线或断线时容易迷失。我增加了状态记忆功能:当检测到交叉线时,保持上一次的转向方向继续前进;当完全丢失黑线时,根据最后检测到的位置决定向左还是向右寻找。同时设置超时限制,避免长时间盲目寻找。

第三个问题是不同光照条件下表现不一致。我采用了动态阈值调整机制:每隔一段时间重新校准传感器基准值;增加传感器屏蔽罩减少环境光干扰;在软件层面采用相对值判断而不是绝对值判断。

第四个问题是电池电压下降导致速度变化。我增加了电压检测功能,当电池电压低于设定值时自动提高PWM占空比进行补偿。同时建议使用高质量的锂电池,并定期检查电池状态。

第五个问题是电机响应不一致。即使同一型号的电机,实际特性也会有差异。我通过实验测量每个电机的死区电压和速度曲线,在软件中给予补偿。更好的方法是使用编码器实现闭环控制,但在资源有限的51单片机上实现起来较复杂。

最后一个问题是程序跑飞或死机。我增加了看门狗定时器,定期喂狗确保程序正常运行。同时添加软件异常处理机制,当检测到异常状态时自动复位相关模块而不是整个系统。

这些解决方案都是我在实际项目中一点点摸索出来的,有些方法看起来很简单,但效果却很显著。最重要的是要保持耐心,仔细分析问题根源,不要盲目修改参数。

51红外循迹智能车——红外循迹模块设计 TCRT5000传感器红外发光二极管一个光电三极管黑色光线很弱,接收端处于截止状态白色光线很强,接收端处于导通状态。 阅读详情

相关推荐

【基于51】红外寻迹智能小车 - 代码篇

这是一个基于C51单片机的红外巡线智能小车,是一个适合嵌入式单片机、C语言初学者练习的小Demo,文章提供完整的项目思路、免费的源代码。

ZER00000001的博客 3万+

基于51单片机的红外寻迹小车(设计思路+注意事项+源代码)

本人本科为化院生,该项目仅为爱好,如有不妥处,欢迎所有指导与批评。该站已有大部分关于该项目的文章,本文主要目的在于分享自己在制作过程中遇到的问题与如何处理以及进行整合,如有冒犯请联系删除。不能保证该文章可以帮您完成比赛,但是按照步骤做一个可循迹简单路线的小车没有问题。#include <reg52.h>//通用51头文件//电机驱动IO口//驱动使能端 L298N四路//寻迹口五组红外对管//循迹函数//左转函数(纠正)//左转函数2:大角度转弯。

plmnko208的博客 1万+

单片机 | 基于51单片机的自动循迹小车设计

红外对管发射红外线,根据地面反射强度差异(黑线/白底)产生数字信号。单片机根据传感器组合信号,通过PID算法控制电机差速转向。完整实现需要配合硬件电路设计,建议先用洞洞板搭建测试平台,逐步调试各模块功能。(S1-S4为传感器状态,0=白区,1=黑线)

尘世冰封的专栏 1134

基于51单片机的循迹小车(循迹、超声波测距)

控制引脚IN1 & IN2电机驱动器A的输入引脚,控制电机A转动及旋转角度IN1输入高电平HIGH,IN2输入低电平LOW,对应电机A正转IN1输入低电平LOW,IN2输入高电平HIGH,对应电机A反转IN1、IN2同时输入高电平HIGH或低电平LOW,对应电机A停止转动调速就是改变IN1、IN2高电平的占空比(需拔掉ENA处跳帽)IN3 & IN4电机驱动器B的输入引脚,控制电机B转动及旋转角度IN3输入高电平HIGH,IN4输入低电平LOW,对应电机B正转。

QSNH0130的博客 5329

51单片机红外四路循迹小车程序

循迹小车,随着电力电子器件的发展,PWM电压型逆变器在交流变频调速、UPS、电能质量控制器、轻型直流输电换流器等电力电子装置中得到了越来越广泛的应用。PWM电压型逆变器直流侧所需的理想无脉动直流电压源通常通过整流加上大直流电容滤波获得。大直流滤波电容的使用,给装置带来占用空间大、成本高及严重影响电能质量方面的问题。因此,研究如何减小甚至去除逆变器直流侧电容,以及解决因其产生的低次谐波和相关问题,具有十分重要的理论意义和实用价值。本文在综述了国内外在PWM电压型逆变器及各种抑制谐波PWM技术的基础上,对目前工程中应用最广泛的SPWM电压型逆变器的主电路及谐波消除调制技术和相关问题进行了深入研究。50年代末晶闸管标志着电力电子半导体期间的开端。电力电子器件经历了40多年的发展历程[1-2],特别是近30多年内更是得到了迅猛的发展[3,4]。以Th(SCR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。CR)为代表的半控型器件是第一代电力电子器件[5],其主要用于可控整流装置,若用于可控的逆变器,因其无法自行关断,须配置强迫换流电路,致使装置复杂化。

还在用iReport 5.6.0?手把手教你用JasperSoft Studio 6.8.0设计报表(附JDK 11+兼容方案)

本文详细介绍了从iReport 5.6.0迁移到JasperSoft Studio 6.8.0的全过程,包括JDK 11+环境配置、项目迁移实战、高级特性应用及常见问题解决方案。帮助开发者高效完成报表生成工具的升级,提升开发体验和报表性能。

weixin_30687051的博客 408

51单片机循迹小车

小车沿黑线循迹,小车在两侧黑线内沿着环形跑道自主行驶一圈,打开开关时小车前行,左侧检测到黑线时左轮前进,右侧检测到黑线时右轮前进,两侧都检测到黑线时小车停止。

weixin_62130844的博客 4万+

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

Redis 可视化工具 RedisInsight 的保姆级安装以及使用(最新)

一名全栈小白的博客 1万+

【51单片机实例】智能小车(三)-------- 小车的红外循迹

基于51单片机下的简单应用,实现智能小车红外循迹的功能

Bit_Dong的博客 5971

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 300

深入解析安卓/Linux固件:从DTB到DTS的反编译实战

本文详细介绍了如何从安卓/Linux设备固件中提取并反编译DTB文件,将其转换为可读的DTS源码。通过实战步骤,包括拆解boot.img、处理resource.img以及使用dtc工具,帮助开发者深入理解设备硬件配置,为固件定制、驱动调试和系统移植提供关键支持。

weixin_29274337的博客 341

51红外循迹小车

②LM339:四路输出比较器,每路比较器有两个输入端和一个输出端,当同向输入端(+)>反向输入端(-)时,输出端为截止信号(需加上拉电阻,拉至高电平);注:磁极不动,线圈旋转,通电后,电流经过导体会产生磁场,磁铁同性相斥,异性相吸,从而产生安培力,转到后,换向器会,可改变绕组上的电流方向,再次产生磁场,产生力,从而实现不断转动。:减速马达,底盘,C51控制板,L298N电机驱动,轮胎,万向轮,电池盒,杜邦线,铜柱,螺丝螺母。注:①VCC:电源线;若IN1和IN2为1,T1,T3导通,电机不转动。

2303_79462608的博客 6339

TASK02【datawhale组队学习】视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建

参考教程AI硬件与机器人技术教程:https://github.com/datawhalechina/ai-hardware-robotics视觉感知与手眼协调,计算机视觉在机器人中应用,手眼标定算法实现,深度估计与3D重建单目深度估计 (Monocular Depth Estimation)DPT 的全称是 Dense Prediction Transformer。

m0_52024881的博客 1191

基于51单片机实现红外循迹

红外循迹外观: 红外循迹原理: 红外循迹模块原理还是很简单的,和许多光电传感器原理一样,当发射器发射出去的光被接收器接收到后,模块上对应的LED灯点亮,此时相应的输出引脚输出低电平;如果发射器发射的光没有被接收器接收到的话,那么LED灯不点亮,此时相应的输出引脚输出高电平。 PWM调速: 这里必须要有PWM来控制小车的速度,不然的话太快容易脱离轨道,具体多少速度还是需要看硬件和软件的配合,需要多次实验试错。PWM可以参考我前面写的关于舵机的代码,原理是一样的,只需要加些变量即...

qq_55490300的博客 1万+

Dynamics 365 F&O新手必看:Visual Studio 2019搭建项目框架全流程(含Model避坑指南)

本文详细介绍了如何在Visual Studio 2019中为Dynamics 365 Finance and Operations搭建企业级项目框架,包括Model分层策略、Solution管理及开发工作流优化。特别提供了Model避坑指南和实用配置建议,帮助新手快速上手并避免常见错误。

weixin_30505225的博客 382

SoIC、CoWoS、InFO一次讲透:从2D/2.5D/3D看懂先进封装

先进封装是后摩尔时代提升芯片性能的关键路径,但面对SoIC、CoWoS、InFO这些名词,很多人容易混淆。理解它们,需从最基本的2D、2.5D、3D封装概念入手:2D是传统平房,2.5D通过硅中介层实现高密度互连,3D则让芯片直接堆叠。CoWoS作为2.5D中介层封装,已成为AI芯片与HBM高带宽存储集成的行业标准;SoIC通过铜-铜混合键合实现真正的3D堆叠,为逻辑与缓存提供极致带宽;InFO以扇出型封装兼顾成本与集成度,广泛用于移动SoC。在系统级封装(SiP)和CPO共封装光学等前沿趋势中,这些技术往

weixin_42388898的博客 314

27、基于51单片机红外循迹、红外避障、遥控小车系统设计(程序+原理图+元件清单+参考论文等)

本系统以设计题目的要求为目的,采用51单片机为控制核心,利用红外线传感器进行寻线,控制电动小汽车的自动循迹,并再通过光电开关探测障碍,从而控制电机转向,实现进行壁障功能。小车运行方案,在现有玩具电动车的基础上,加装红外线光电开关模块和红外寻线模块,实现对电动车位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。硬件构成:单片机+最小系统+L293D电机驱动模块+稳压电路+按键电路+红外避障电路+红外遥控电路+红外循迹电路。

qq_46030545的博客 2368

GFPS技术原理(一)-简介

GFPS(谷歌快速配对服务)利用BLE技术简化设备配对流程,相比传统方式大幅提升用户体验。首次配对时,设备广播包含型号ID和安全密钥的BLE信号,手机检测后弹出配对通知,用户点击即可完成安全连接并将设备与Google账户绑定。该技术支持跨设备同步、电量显示、找回设备等功能,后续配对更加便捷。GFPS通过BLE实现快速发现、一键配对和安全连接,结合Google后端服务提供元数据支持,已成为出海设备的认证标准。其核心优势在于简化操作步骤并增强功能性,特别适合非技术用户群体。

十多年蓝牙协议软件开发,擅长蓝牙协议分析 2062

51单片机小项目--红外巡线小车

1单片机,实现红外循迹,超声波避障,蓝牙遥控的功能

m0_58181754的博客 5558

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

51单片机循迹小车 三红外

对于代码可以多加调试,对于每个人电机插线的不同,需要修改0 1的数值,还有供电的电压,可能也需要修改 本人使用12v电源也是可以正常使用。本代码对于复杂赛道,比如锐角暂时不能做到,本代码提供了个人的一点思路。注意:l298n电机驱动模块别接短路了,额接短路了直接烧了,高低分别为置1,0 杜邦线对着自己定义的io口进行对接。还有最小开发板的接线端子正确对接电机驱动模块的正负极;两个使能模块接口 ENA ENB。我是当时使用的是7.5v左右的电源供电。总的代码献上:(供参考)

lml1781978327的博客 3014

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于51单片机的红外循迹小车

在前面(废话):金沙滩的板子入门51单片机,有幸见过学长的各种小车视频,亿点点羡慕,于是在期末考试前计划寒假上手尝试,刚好学校社团又有比赛 材料: 小车套件(包含底盘,轮子,减速电机,若干铜柱螺丝螺帽) 循迹模块 TCRT5000 灵敏度可调 有DO和AO输出 3.单片机STC89C52 及51单片机最小系统板 4.电机驱动模块 L298N 5.电源 18650锂电池 及 三节串联电池座 6.杜邦线若干(公公母母) 7.面包板 循迹模块需供电,单片机电源输出不够,需将正负极接

weixin_45527365的博客 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

基于51单片机循迹小车(仿真+源程序)

循迹小车原理:红外发射管发射光线到路面,红外光遇到白底则被反射,接收管接收到反射光,经施密特触发器整形后输出低电平;采用51单片机,采用两个红外对管来扫面地上的循迹黑线,当一个对管被遮挡住,相当于小车就跑偏,通过调节左右轮子的速度让小车恢复正常路线,完美的仿真出循迹小车的功能,程序采用C语言,有中文注释,比较容易看懂,仿真采用Proteus软件。//定时器时钟12T模式。//定时器时钟12T模式。//定时器0开始计时。//定时器0开始计时。

m0_74295839的博客 3831

基于51单片机的四路红外传感器的循迹小车

基于51单片机的循迹小车 材料: 步骤: 代码:

jun8086的博客 1万+

基于51单片机的红外巡迹小车

在做巡迹小车的时候,需要用到一下几个方面的:   首先就是先让小车可以调速的跑起来,就是用L298N来驱动直流电机,再用pwm技术实现控速,完成第一步。L298N的连接,其中有两个使能位ENA 和ENB,开始是由跳线连接的,但是没法实现控速,如果想要实现控速,就用拔掉跳线,用接入生成pwm的两个引脚。   其次是四路巡迹模块的使用,该模块的传感器可以检测黑色与白色,有不同的返回值,于是就可以实

Horizonhui 1万+

基于51单片机的循迹小车

针对小白,从循迹小车的机械、电控、代码三个方向进行讲解,帮助新手制作出属于自己的第一辆循迹小车。

weixin_62449114的博客 1万+

【学习笔记】51单片机 按键控制LED流水灯模式&定时器时钟

在下面去给他写中断子函数,他会在main中去到Timer0这个子函数当中去,再接着跳转回来。再TMOD上,这个是不可位寻址的,必须八位同时复制,如果同时使用定时器1和定时器0,先配置定时器1再去配置定时器0会把 之前前定时器1的更新掉,我们去给他让他只去执行一部分。现在我们要去做中断了,改正之后的是这样,但其实是还有缺陷在的。寄存器是连接软硬件的媒介,我们现在写一个关于这个的代码。这样得到的和我们预期的一样。TMOD的寄存模式,M1和M0是来决定工作模式的。我们要看的是关于以下的寄存器。

2601_96469072的博客 246
上一篇: 双卡切换的智能逻辑:物联网设备中的SIM卡管理艺术
下一篇: Arduino循迹小车制作全攻略:从零搭建智能追踪机器人
gitlab7runner
博客等级 码龄4年 78粉丝 1747原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值