알람이있는 자동차 역방향 주차 센서 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 포스트에서는 arduino, 초음파 센서 및 2.4GHz 송수신기 모듈을 사용하여 자동차 후진 주차 센서 경보 회로를 구성 할 것입니다. 이 프로젝트는 주차 센서가 내장되어 있지 않은 경우 자동차의 추가 기능이 될 수 있습니다.

소개

제안 된 프로젝트는 LCD 디스플레이의 자동차와 장애물 사이의 거리 및 오디오 경고음과 같은 기존 주차 센서와 유사한 기능을 가지고 있습니다.



제안 된 프로젝트는 고정식 주차 센서, 즉 차고에 배치 된 센서 또는 이동식 주차 센서 (예 : 자동차의 전기 시스템으로 프로젝트를 배선하는 작은 위험을 감수 할 준비가 된 경우 차량 뒷면에 배치 된 센서)로 사용할 수 있습니다.

그러나이 프로젝트의 동기는 고정식 주차 센서 구축 위험없이 구축 할 수 있습니다.



Arduino를 사용한 주차 센서 경보 프로젝트는 초음파 센서, arduino, 부저 및 2.4GHz 송수신기 모듈로 구성된 송신기의 두 부분으로 구성됩니다. 이 회로는 자동차와 장애물 사이의 거리를 측정합니다.

수신기는 2.4GHz 트랜시버 모듈, arduino 및 16x2 LCD 디스플레이로 구성됩니다.

수신기 회로는 전원 공급 장치로 9V 배터리를 사용하여 차량 내부에 배치됩니다. 수신기는 자동차와 장애물 사이의 거리를 미터 단위로 표시합니다.

송신기는 2.4GHz 링크를 통해 차량 내부의 수신기로 센서 데이터를 전송합니다. 통신 링크는 NRF24L01 모듈을 사용하여 설정됩니다.

이제 NRF24L01 모듈의 개요를 살펴 보겠습니다.

NRF24L01의 그림 :

NRF24L01 모듈

이 모듈은 두 마이크로 컨트롤러 간의 양방향 통신 링크를 설정하도록 설계되었습니다. SPI 통신 프로토콜에서 작동합니다. 125 개의 서로 다른 채널이 있으며 최대 데이터 속도는 2Mbps입니다. 이론상 최대 범위는 100 미터입니다.

핀 구성 :

3.3V에서 작동하므로 Vcc 터미널에서 5V로 작동 할 수 있습니다. 그러나 마이크로 컨트롤러로부터 5V 데이터 신호를받을 수 있습니다.

이제 프로젝트의 송신기로 이동하겠습니다.

주차 센서 알람 송신기 회로

이 회로는 arduino의 디지털 I / O 핀에 연결된 5 개의 와이어와 나머지 2 개는 3.3V 및 접지에 연결된 NRF24L01 모듈로 배선됩니다. 핀 # 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-------------//

이것으로 송신기를 마칩니다.

리시버:

수신기에는 거리 측정을 표시하기위한 16x2 LCD 디스플레이가 있습니다. 디스플레이 연결은 다음과 같습니다.

자동차 주차 센서 알람 LCD 디스플레이 회로

더 나은 대비를 위해 10K 전위차계를 조정하십시오.

위의 회로도는 나머지 수신기 회로입니다. 2.4GHz 링크 연결이 설정되지 않은 경우 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가 전원에서 분리되어야하는 방식으로 배선되어야합니다.

수신기는 앞에서 언급 한대로 내부에 배치 할 수 있습니다.

이 주차 센서 프로젝트를 운영하는 방법 (고정형)

• 먼저 송신기의 전원을 켜고 자동차로 가서 수신기를 켜십시오. 송신기와 수신기가 연결되면 'Connection : OK'가 표시되고 차량과 센서 사이의 거리가 표시됩니다.

• '연결이 설정되지 않았습니다'가 표시되면 수신기에 제공된 푸시 버튼을 누릅니다.

• 캔이 초음파 센서에서 멀리 떨어져 있으면 '차량이 범위 내에 있지 않음'이 표시 될 수 있습니다.

• 주차 공간으로 차를 천천히 후진 또는 앞으로 가져갑니다.

• 차량과 센서 사이의 거리가 1.0m 미만이되면 부저가 울립니다.

• 센서에 가까이 다가 가면 경고음이 증가합니다. 차량이 1 피트 (0.3m)에 도달하면 디스플레이에 차량을 정지하라는 메시지가 표시되고 정지해야합니다.

• 송신기가 자동으로 재설정되고 유휴 상태가됩니다. 차에서 수신기를 끕니다. 배터리로 송신기에 전원을 공급 한 경우 송신기도 끄십시오.

이 주차 센서 알람 회로 (이동식 주차 센서) 작동 방법

• 수신기에 '차량이 범위 내에 있지 않음'이 표시되면 이전에 언급 한 지침과 유사합니다. 차량이 장애물에서 멀리 떨어져있는 것입니다.

• 엔진을 끄면 송신기 회로도 꺼져 야합니다. 수신기 회로를 수동으로 끄십시오.

저자의 프로토 타입 :

송신기:

리시버:

주차 센서 알람 프로토 타입


이전 : BLDC 및 교류 발전기 모터 용 범용 ESC 회로 다음 : Arduino를 사용한 고전류 모터 제어 회로