アラーム付きカーリバースパーキングセンサー回路

問題を排除するために楽器を試してください





この投稿では、arduino、超音波センサー、2.4GHzトランシーバーモジュールを使用して、車のリバースパーキングセンサーアラーム回路を構築します。このプロジェクトは、パーキングセンサーが組み込まれていない場合、車のアドオン機能になる可能性があります。

前書き

提案されたプロジェクトは、LCDディスプレイ上の車と障害物の間の距離やビープ音の警告音など、従来のパーキングセンサーと同様の機能を備えています。



提案されたプロジェクトは、固定パーキングセンサー(ガレージに配置されたセンサー)またはモバイルパーキングセンサー(車の電気システムにプロジェクトを配線するリスクを少し負う準備ができている場合は車の後ろに配置されたセンサー)として使用できます。

しかし、このプロジェクトの動機は 固定パーキングセンサーを構築する リスクなしで構築できます。



Arduinoを使用した駐車センサーアラームプロジェクトには、超音波センサー、arduino、ブザー、2.4GHzトランシーバーモジュールで構成される送信機の2つの部分があります。この回路は、車と障害物の間の距離を測定します。

受信機は、2.4 GHzトランシーバーモジュール、arduino、16x2LCDディスプレイで構成されています。

受信回路は、9V電池を電源として車内に配置されます。受信機は、車と障害物の間の距離をメートル単位で表示します。

送信機は、2.4GHzリンクを介して車内の受信機にセンサーデータを送信します。通信リンクは、NRF24L01モジュールを使用して確立されます。

それでは、NRF24L01モジュールの概要を見てみましょう。

NRF24L01のイラスト:

NRF24L01モジュール

このモジュールは、2つのマイクロコントローラー間の双方向通信リンクを確立するように設計されています。 SPI通信プロトコルで動作します。 125の異なるチャネルがあり、最大データレートは2Mbpsです。理論上の最大範囲は100メートルです。

ピン構成:

それは3.3Vで動作するので、Vcc端子の5ボルトはそれを殺すことができます。ただし、マイクロコントローラからの5Vデータ信号を受け入れることができます。

それでは、プロジェクトの送信者に移りましょう。

パーキングセンサー警報送信機回路

回路はNRF24L01モジュールで配線され、5本のワイヤーがarduinoのデジタルI / Oピンに接続され、残りの2本は3.3Vとアースに接続されています。ピン#2は、ブザーに電力を供給するトランジスタのベースに接続されています。

超音波センサーの電源端子は5VとGNDに接続され、A0はトリガーピンに接続され、A1はセンサーのエコーピンに接続されます。

センサーの距離データは、NRF24L01モジュールを介して受信機に送信されます。

-------------------------------------------------- -----------------------------------------次のリンクからライブラリファイルをダウンロードしてください。 github.com/nRF24/RF24.git ----------------------------------------- -------------------------------------------------- ---

送信機のプログラム:

//----------Program Developed by R.Girish-------------//
#include
#include
RF24 radio(7,8)
const byte address[][6] = {'00001', '00002'}
const int trigger = A0
const int echo = A1
const int buzzer = 2
float distance
float result
long Time
boolean state = false
boolean dummystate = 0
void setup()
{
pinMode(trigger, OUTPUT)
pinMode(buzzer, OUTPUT)
pinMode(echo, INPUT)
radio.begin()
radio.openWritingPipe(address[1])
radio.openReadingPipe(1, address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.startListening()
while(!radio.available())
radio.read(&dummystate, sizeof(dummystate))
radio.stopListening()
if(dummystate == HIGH)
{
for(int j = 0 j <10 j++)
{
const char text[] = 'Connection:OK !!!'
radio.write(&text, sizeof(text))
delay(100)
}
}
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
delay(1000)
}
void(* resetFunc) (void) = 0
void loop()
{
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result > 2.00)
{
const char text[] = 'CAR NOT IN RANGE'
radio.write(&text, sizeof(text))
}
if(result 1.90)
{
const char text[] = 'Distance = 2.0 M'
radio.write(&text, sizeof(text))
}
if(result 1.80)
{
const char text[] = 'Distance = 1.9 M'
radio.write(&text, sizeof(text))
}
if(result 1.70)
{
const char text[] = 'Distance = 1.8 M'
radio.write(&text, sizeof(text))
}
if(result 1.60)
{
const char text[] = 'Distance = 1.7 M'
radio.write(&text, sizeof(text))
}
if(result 1.50)
{
const char text[] = 'Distance = 1.6 M'
radio.write(&text, sizeof(text))
}
if(result 1.40)
{
const char text[] = 'Distance = 1.5 M'
radio.write(&text, sizeof(text))
}
if(result 1.30)
{
const char text[] = 'Distance = 1.4 M'
radio.write(&text, sizeof(text))
}
if(result 1.20)
{
const char text[] = 'Distance = 1.3 M'
radio.write(&text, sizeof(text))
}
if(result 1.10)
{
const char text[] = 'Distance = 1.2 M'
radio.write(&text, sizeof(text))
}
if(result 1.00)
{
const char text[] = 'Distance = 1.1 M'
radio.write(&text, sizeof(text))
}
if(result 0.90)
{
state = true
const char text[] = 'Distance = 1.0 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(700)
digitalWrite(buzzer, LOW)
delay(700)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 1.0)
{
state = false
}
}
}
if(result 0.80)
{
state = true
const char text[] = 'Distance = 0.9 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(600)
digitalWrite(buzzer, LOW)
delay(600)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.90)
{
state = false
}
}
}
if(result 0.70)
{
state = true
const char text[] = 'Distance = 0.8 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(500)
digitalWrite(buzzer, LOW)
delay(500)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.80)
{
state = false
}
}
}
if(result 0.60)
{
state = true
const char text[] = 'Distance = 0.7 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(400)
digitalWrite(buzzer, LOW)
delay(400)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.70)
{
state = false
}
}
}
if(result 0.50)
{
state = true
const char text[] = 'Distance = 0.6 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(300)
digitalWrite(buzzer, LOW)
delay(300)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.60)
{
state = false
}
}
}
if(result 0.40)
{
state = true
const char text[] = 'Distance = 0.5M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(200)
digitalWrite(buzzer, LOW)
delay(200)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.50)
{
state = false
}
}
}
if(result 0.30)
{
state = true
const char text[] = 'Distance = 0.4 M'
radio.write(&text, sizeof(text))
while(state)
{
digitalWrite(buzzer, HIGH)
delay(100)
digitalWrite(buzzer, LOW)
delay(100)
digitalWrite(trigger,HIGH)
delayMicroseconds(10)
digitalWrite(trigger,LOW)
Time = pulseIn(echo,HIGH)
distance = Time*0.034
result = distance/200
if(result 0.40)
{
state = false
}
}
}
if(result <= 0.30)
{
const char text[] = ' STOP!!!'
radio.write(&text, sizeof(text))
digitalWrite(buzzer, HIGH)
delay(3000)
digitalWrite(buzzer, LOW)
resetFunc()
}
delay(200)
}
//----------Program Developed by R.Girish-------------//

これで送信機は終わりです。

レシーバー:

受信機には、距離測定値を表示するための16x2LCDディスプレイがあります。ディスプレイの接続は次のとおりです。

パーキングセンサーアラームLCDディスプレイ回路

表示コントラストを向上させるために、10Kポテンショメータを調整します。

上記の回路図は、受信回路の残りの部分です。 2.4 GHzリンク接続が確立されていない場合に、arduinoをリセットするためのプッシュボタンが用意されています。

レシーバー回路は車内に配置されており、9Vバッテリーから電力を供給できます。レシーバーは、車の見栄えを良くする可能性のあるジャンクボックスに入れることができます。ジャンクボックスは、インストルメントクラスターの上の車内または任意の便利な場所に配置できます。

受信者のためのプログラム:

//--------Program Developed by R.Girish-------//
#include
#include
#include
LiquidCrystal lcd(7, 6, 5, 4, 3, 2)
RF24 radio(9,10)
const byte address[][6] = {'00001', '00002'}
const int dummy = A0
boolean dummystate = 0
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
pinMode(dummy , INPUT)
digitalWrite(dummy, HIGH)
radio.begin()
radio.openReadingPipe(1, address[1])
radio.openWritingPipe(address[0])
radio.setChannel(100)
radio.setDataRate(RF24_250KBPS)
radio.setPALevel(RF24_PA_MAX)
radio.stopListening()
dummystate = digitalRead(dummystate)
radio.write(&dummystate, sizeof(dummystate))
delay(10)
radio.startListening()
if(!radio.available())
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Connection not')
lcd.setCursor(0,1)
lcd.print('established')
delay(50)
}
}
void loop()
{
if(radio.available())
{
char text[32] = ''
radio.read(&text, sizeof(text))
lcd.clear()
lcd.setCursor(0,0)
lcd.print(text)
lcd.setCursor(0,1)
lcd.print('----------------')
}
}
//--------Program Developed by R.Girish-------//

これで受信者は終わりです。

センサーを固定パーキングセンサーとして配置する方法:

センサーをモバイルパーキングセンサーとして配置する方法:

モバイルパーキングセンサーでは、送信機の超音波センサーが車の後ろ側に配置され、電力は車のバッテリーから供給されます。イグニッションをオフにしたときにarduinoが電源から切断されなければならないように配線する必要があります。

レシーバーは、前述のように内部に配置できます。

このパーキングセンサープロジェクトの操作方法(固定タイプ)

•最初に送信機の電源を入れ、車に行き、受信機の電源を入れます。送信機と受信機の接続が確立されると、「接続:OK」と表示され、車とセンサーの間の距離が表示されます。

•「接続が確立されていません」と表示された場合は、受信機にある押しボタンを押します。

•缶が超音波センサーから遠く離れていると、「車が範囲外です」と表示される場合があります。

•車をゆっくりと後進または前進させて駐車場に向かいます。

•車とセンサーの間の距離が1.0メートル未満になると、ブザーが鳴ります。

•センサーに近づくと、ビープ音の速度が上がります。車が1フィートまたは0.3メートルに達すると、ディスプレイに車を停止するように求められ、停止する必要があります。

•送信機はリセットされ、自動的にアイドル状態になります。車のレシーバーの電源を切ります。送信機に電池で電力を供給している場合は、それもオフにします。

このパーキングセンサー警報回路(モバイルパーキングセンサー)の操作方法

•受信機に「車が範囲内にありません」と表示された場合は、前述の指示と同様に、車が障害物から遠く離れています。

•エンジンをオフにするときは、送信機回路をオフにする必要があります。レシーバー回路を手動でオフにします。

著者のプロトタイプ:

送信機:

レシーバー:

パーキングセンサーアラームのプロトタイプ


前:BLDCおよびオルタネーターモーター用のユニバーサルESC回路 次へ:Arduinoを使用した大電流モーター制御回路