在这篇文章中,我们将使用arduino,超声波传感器和2.4 GHz收发模块来构建一个汽车倒车报警电路。如果你的车没有内置的停车传感器,这个项目可以作为附加功能。
介绍
该项目具有与传统停车传感器类似的功能,如在LCD显示屏上显示汽车与障碍物之间的距离,并发出音频哔哔警报。
该项目可以用作固定停车传感器,即安装在车库上的传感器,也可以用作移动停车传感器,即安装在汽车后部的传感器,如果您准备冒一点风险将项目与汽车的电气系统连接起来。
然而,这个项目的动机是建造一个固定的停车传感器可以在零风险的情况下建造。
使用Arduino的停车传感器报警项目有两个部分,发射机由超声波传感器、Arduino、蜂鸣器和2.4 GHz收发模块组成。这条赛道将测量赛车与障碍物之间的距离。
接收机由2.4 GHz收发模块、arduino和16x2液晶显示屏组成。
将接收电路置于车内,以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 buzzer = 2;
浮动的距离;
浮动的结果;
长时间;
Boolean state = 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[] = "连接: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 NOT IN RANGE";
收音机。写(之外,sizeof(文本));
}
If (result <= 2.00 && result > 1.90)
{
const char text[] = "距离= 2.0 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.90 && result > 1.80)
{
const char text[] = "距离= 1.9 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.80 && result > 1.70)
{
const char text[] = "距离= 1.8 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.70 && result > 1.60)
{
const char text[] = "距离= 1.7 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.60 && result > 1.50)
{
const char text[] = "距离= 1.6 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.50 && result > 1.40)
{
const char text[] = "距离= 1.5 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.40 && result > 1.30)
{
const char text[] = "距离= 1.4 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.30 && result > 1.20)
{
const char text[] = "距离= 1.3 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.20 && result > 1.10)
{
const char text[] = "距离= 1.2 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.10 && result > 1.00)
{
const char text[] = "距离= 1.1 M";
收音机。写(之外,sizeof(文本));
}
If (result <= 1.00 && result > 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 (result <= 0.90 && result > 0.80)
{
国家= 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 (result <= 0.80 && result > 0.70)
{
国家= 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 (result <= 0.70 && result > 0.60)
{
国家= 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 (result <= 0.60 && result > 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 (result <= 0.50 && result > 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 (result <= 0.40 && result > 0.30)
{
国家= 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[] = "停止!!";
收音机。写(之外,sizeof(文本));
digitalWrite(蜂鸣器、高);
延迟(3000);
digitalWrite(蜂鸣器、低);
resetFunc ();
}
延迟(200);
}
//---------- 项目由R.Girish -------------//
这就是发射器。
接收方:
接收机具有16x2液晶显示,用于显示距离测量。显示连接如下:
调整10K电位器更好的观看对比度。
上面的原理图是接收电路的其余部分。在2.4 GHz链路连接没有建立的情况下,提供了一个按钮来重置arduino。
接收电路置于车内;它可以用9伏电池供电。接收器可以放在一个垃圾箱内,这可能会使您的汽车看起来很好。垃圾箱可以放置在您的汽车仪表盘上方或任何方便的地方。
接收机方案。
//-------- 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必须从电源断开。
如前所述,收信人可以放在收信人的内部。
如何操作这个停车传感器项目(固定式)
•先打开发射器电源,然后回到车里打开接收器。如果发射器和接收器之间的连接建立,将显示“连接:OK”,并显示汽车和传感器之间的距离。
•如果显示“连接未建立”,请按接收器上提供的按钮。
•如果你的汽车远离超声波传感器,它可能会显示“汽车不在范围内”。
•轻轻地倒车或前进到您的停车场。
•当汽车和传感器之间的距离小于1.0米时,蜂鸣器就会发出响声。
•当你接近传感器时,哔哔声的频率会增加,一旦汽车到达1英尺或0.3米,显示器提示停车,你必须停车。
•发射器会自动复位并进入空闲状态。关掉你车上的听筒。如果你用电池给发射机供电,把它也关掉。
如何操作这个停车传感器报警电路(移动停车传感器)
•与之前说明的指令相似;如果接收器显示“车不在范围内”,你的车离障碍物很远。
当你关闭引擎时,发送器电路必须关闭。手动关闭接收电路。
作者的原型:
发送器:
Oyekunle表示“四”说
很棒的项目。
你能帮助我与一个项目的微控制器基于定时器Socket?
我很高兴。谢谢
Swagatam说
谢谢,如果可能的话,我们会尽力为您邮寄…
GR说
嗨oyekunle,
我已经在设计了,希望很快就能出版。
问候