在本文中,我们将利用arduino、超声波传感器和2.4 GHz收发模块构建一个汽车倒车停车传感器报警电路。如果你的车没有内置的停车传感器,这个项目可以作为附加功能。
介绍
该项目与传统的汽车停车传感器具有类似的功能,如在液晶显示屏上显示汽车与障碍物之间的距离,以及音频提示。
建议的项目可以用作固定停车传感器,即放置在车库上的传感器,或移动停车传感器,即放置在汽车背面的传感器,如果您准备承担一个小的风险,将该项目与汽车的电气系统连接。
然而,这个项目的动机是建立一个固定的停车传感器它可以在零风险的情况下建立。
利用Arduino实现的停车传感器报警项目由两部分组成,发射器由超声波传感器、Arduino、蜂鸣器和2.4 GHz收发模块组成。这个电路将测量汽车和障碍物之间的距离。
该接收机由2.4 GHz收发模块、arduino和16x2 LCD显示屏组成。
接收电路将放置在车内,以9V电池为电源。接收器将显示汽车与障碍物之间的距离,以米为单位。
发射机将传感器数据通过2.4 GHz的链路传输到车内的接收器。利用NRF24L01模块建立通信链路。
现在让我们来看看NRF24L01模块的概述。
NRF24L01的说明:
该模块主要用于建立两个微控制器之间的双向通信链路。它采用SPI通信协议。它有125个不同的通道,最大数据速率为2Mbps。它的理论最大射程为100米。
销配置:
它工作在3.3V,所以5伏特的Vcc终端可以杀死它。然而,它可以接受来自微控制器的5V数据信号。
现在让我们来看看这个项目的发射机。
电路连接NRF24L01模块,5根线连接arduino的数字I/O引脚,其余2根线连接到3.3V与地。引脚2连接到晶体管的底座,它将为蜂鸣器供电。
超声波传感器的电源端子连接5V和GND, A0连接传感器的触发引脚,A1连接传感器的回声引脚。
传感器的距离数据通过NRF24L01模块传输到接收机。
------------------------------
发射机的程序:
//---------- 项目由R.Girish -------------//
# include < RF24.h >
# include < SPI.h >
RF24电台(7、8);
Const字节地址[][6]= {"00001","00002"};
const int trigger = A0;
const int echo = A1;
Const int蜂鸣器= 2;
浮动的距离;
浮动的结果;
长时间;
布尔状态= false;
Boolean dummystate = 0;
无效的设置()
{
pinMode(触发、输出);
pinMode(蜂鸣器、输出);
pinMode(呼应,输入);
radio.begin ();
radio.openWritingPipe(地址[1]);
收音机。openReadingPipe(1、地址[0]);
radio.setChannel (100);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_MAX);
radio.startListening ();
而(! radio.available ());
收音机。读(&dummystate sizeof (dummystate));
radio.stopListening ();
如果(dummystate = =高);
{
For (int j = 0;j < 10;j + +)
{
const char text[] = "Connection:OK !!";
收音机。写(之外,sizeof(文本));
延迟(100);
}
}
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
延迟(1000);
}
void(* resetFunc) (void) = 0;
无效循环()
{
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
如果结果(> 2.00)
{
const char text[] = "CAR不在范围内";
收音机。写(之外,sizeof(文本));
}
If (> <= 2.00 && > = 1.90)
{
const char text[] = "距离= 2.0 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 0, > = 0)
{
const char text[] = "距离= 1.9 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 0, > = 0)
{
const char text[] = "距离= 1.8 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 0, > = 0)
{
const char text[] = "距离= 1.7 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 1.60 and > <= 1.50)
{
const char text[] = "距离= 1.6 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 1.50 and > <= 1.40)
{
const char text[] = "距离= 1.5 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 1.40 and > <= 1.30)
{
const char text[] = "距离= 1.4 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 1.30 and > <= 1.20)
{
const char text[] = "距离= 1.3 M";
收音机。写(之外,sizeof(文本));
}
If(结果<= 1.20 &&结果> 1.10)
{
const char text[] = "距离= 1.2 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.10 && result > 1.00)
{
const char text[] = "距离= 1.1 M";
收音机。写(之外,sizeof(文本));
}
If (> <= 1.00 && > 0.90)
{
国家= true;
const char text[] = "距离= 1.0 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(700);
digitalWrite(蜂鸣器、低);
延迟(700);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.90 || result > 1.0)
{
国家= false;
}
}
}
If (> = 0, > = 0, > = 0)
{
国家= true;
const char text[] = "距离= 0.9 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(600);
digitalWrite(蜂鸣器、低);
延迟(600);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.80 || result > 0.90)
{
国家= false;
}
}
}
If (> <= 0, > = 0)
{
国家= true;
const char text[] = "距离= 0.8 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(500);
digitalWrite(蜂鸣器、低);
延迟(500);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.70 || result > 0.80)
{
国家= false;
}
}
}
If (> <= 0, > = 0)
{
国家= true;
const char text[] = "距离= 0.7 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(400);
digitalWrite(蜂鸣器、低);
延迟(400);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.60 || result > 0.70)
{
国家= false;
}
}
}
If (> <= 0.60 and > <= 0.50)
{
国家= true;
const char text[] = "距离= 0.6 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(300);
digitalWrite(蜂鸣器、低);
延迟(300);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.50 || result > 0.60)
{
国家= false;
}
}
}
If (> <= 0.50 and > <= 0.40)
{
国家= true;
const char text[] = "距离= 0.5M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(200);
digitalWrite(蜂鸣器、低);
延迟(200);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.40 || result > 0.50)
{
国家= false;
}
}
}
If (> = 0, > = 0, > = 0)
{
国家= true;
const char text[] = "距离= 0.4 M";
收音机。写(之外,sizeof(文本));
在(国家)
{
digitalWrite(蜂鸣器、高);
延迟(100);
digitalWrite(蜂鸣器、低);
延迟(100);
digitalWrite(触发、高);
delayMicroseconds (10);
digitalWrite(触发、低);
时间= pulseIn(呼应,高);
距离=时间* 0.034;
结果=距离/ 200;
If (result < 0.30 || result > 0.40)
{
国家= false;
}
}
}
如果(结果< = 0.30)
{
const char text[] = " STOP!! ";
收音机。写(之外,sizeof(文本));
digitalWrite(蜂鸣器、高);
延迟(3000);
digitalWrite(蜂鸣器、低);
resetFunc ();
}
延迟(200);
}
//---------- 项目由R.Girish -------------//
这就是发射机。
接收方:
接收机有16x2液晶显示器,用于显示距离测量。显示连接如下:
调整10K电位器,以获得更好的观看对比度。
上述原理图是接收机电路的其余部分。在没有建立2.4 GHz链路连接的情况下,提供了一个按钮来复位arduino。
接收器电路置于汽车内部;它可以由一个9V的电池供电。接收器可能被放在一个垃圾盒里,这可能会让你的车看起来不错。垃圾盒可放置在您的汽车仪表盘上方或您希望的任何方便的地方。
接收机方案。
//--------由R.Girish开发的程序-------//
# include < LiquidCrystal.h >
# include < RF24.h >
# include < SPI.h >
液晶液晶(7,6,5,4,3,2);
RF24电台(9、10);
Const字节地址[][6]= {"00001","00002"};
const int dummy = A0;
Boolean dummystate = 0;
无效的设置()
{
Serial.begin (9600);
液晶显示器。开始(16日2);
pinMode(假、输入);
digitalWrite(假、高);
radio.begin ();
收音机。openReadingPipe(1、地址[1]);
radio.openWritingPipe(地址[0]);
radio.setChannel (100);
radio.setDataRate (RF24_250KBPS);
radio.setPALevel (RF24_PA_MAX);
radio.stopListening ();
dummystate = digitalRead (dummystate);
收音机。写(&dummystate sizeof (dummystate));
延迟(10);
radio.startListening ();
如果(! radio.available ())
{
lcd.clear ();
lcd.setCursor (0,0);
液晶显示器。打印(“连接而不是“);
lcd.setCursor (0,1);
lcd.print(“建立”);
延迟(50);
}
}
无效循环()
{
如果(radio.available ())
{
Char text[32] = "";
收音机。读(之外,sizeof(文本));
lcd.clear ();
lcd.setCursor (0,0);
lcd.print(文本);
lcd.setCursor (0,1);
lcd.print ("----------------");
}
}
//--------由R.Girish开发的程序-------//
现在,接收器结束了。
如何将传感器放置为固定式停车传感器:
如何将传感器放置为移动停车传感器:
在移动停车传感器中,发射器的超声波传感器被放置在汽车的背面,电源由汽车的电池提供。它应该以这样一种方式连接,当你关闭点火时,arduino必须断开电源。
如前所述,接收人可以被置于内部。
如何操作这个停车传感器项目(固定式)
•首先打开发射器的电源,到你的车里打开接收器。若收发器连接成功,则显示“连接完毕”,并显示车辆与传感器的距离。
•如果显示“连接未建立”,按下接收器上提供的按钮。
•如果您的罐子远离超声波传感器,它可能显示“汽车不在范围内”。
轻轻地倒车或向前开到停车场。
•当汽车与传感器之间的距离小于1.0米时,蜂鸣器会嘟嘟作响。
•当你靠近传感器时,蜂鸣声的频率会增加,一旦汽车达到1英尺或0.3米,显示屏提示停车,你必须停车。
•发射机将自动复位并进入空闲状态。关掉你车里的接收器。如果你用电池给发射机供电,也要关掉它。
如何操作此汽车停车传感器报警电路(移动停车传感器)
•与之前声明的指令类似;如果接收器显示“车不在范围内”,说明你的车离障碍物很远。
•当你关闭引擎时,发送电路必须关闭。手动关闭接收电路。
作者的原型:
发送器:
接收方:
很棒的项目。
你能帮我一个项目基于微控制器定时器插座?
我会很高兴的。谢谢
谢谢,如果可能的话,我们将尽力为您邮寄……
嗨oyekunle,
我已经在设计一个了,希望很快就能出版。
问候