Схема на сензора за обратно паркиране на автомобил с аларма

Схема на сензора за обратно паркиране на автомобил с аларма

В тази публикация ще изградим алармена верига за сензор за обратно паркиране на автомобили, използвайки arduino, ултразвуков сензор и модул за приемо-предавател 2,4 GHz. Този проект може да бъде допълнителна функция за вашия автомобил, ако не разполага със вградени сензори за паркиране.



Въведение

Предложеният проект има подобна функционалност като традиционния сензор за паркиране на автомобили, като например разстоянието между автомобила и препятствието на LCD дисплей и звуков сигнал.

Предложеният проект може да се използва като стационарен сензор за паркиране, т.е. сензорът, поставен върху вас в гараж или мобилен сензор за паркиране, т.е. сензор, поставен на гърба на колата ви, ако сте готови да поемете малък риск от свързването на проекта с електрическата система на автомобила.





Мотивацията обаче е този проект изградете стационарен сензор за паркиране които могат да бъдат изградени с нулев риск.

Проектът за аларма за сензор за паркиране на автомобили, използващ Arduino, има две части, предавателят, който се състои от ултразвуков сензор, arduino, зумер и модул за приемо-предавател 2,4 GHz. Тази схема ще измерва разстоянието между автомобила и препятствието.



Приемникът се състои от 2.4 GHz приемо-предавателен модул, arduino и 16x2 LCD дисплей.

Схемата на приемника ще бъде поставена в автомобила с 9V батерия като захранване. Приемникът ще покаже разстоянието между колата и препятствието в метри.

Предавателят ще предава данните от сензора към приемника в автомобила чрез 2,4 GHz връзка. Комуникационната връзка се установява с помощта на модул NRF24L01.

Сега нека видим общия преглед на модула NRF24L01.

Илюстрация на NRF24L01:

Модул NRF24L01

Този модул е ​​предназначен за установяване на двупосочна комуникационна връзка между два микроконтролера. Работи по протокол за комуникация SPI. Той има 125 различни канала и има максимална скорост на предаване на данни от 2Mbps. Той има теоретичен максимален обхват от 100 метра.

Конфигурация на ПИН:

Той работи на 3.3V, така че 5 волта на Vcc терминал могат да го убият. Въпреки това, той може да приема 5V сигнали за данни от микроконтролери.

Сега да преминем към предавателя на проекта.

Схема на алармен предавател на датчика за паркиране на автомобили

Веригата е свързана с модул NRF24L01 с 5 проводника, свързани към цифрови I / O щифтове на arduino и останалите два до 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-------------//

Това завършва предавателя.

Приемник:

Приемникът има 16x2 LCD дисплей за показване на измерването на разстоянието. Връзката на дисплея е дадена по-долу:

Схема за аларма на сензора за паркиране на автомобили в LCD дисплей

Регулирайте 10K потенциометъра за по-добър контраст на гледане.

Горната схема е останалата част от схемата на приемника. Предвиден е бутон за нулиране на arduino в случай, че не е установена връзка от 2,4 GHz.

Схемата на приемника е поставена вътре в автомобила, може да се захранва от 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,0 метра, зумерът издава звуков сигнал.

• Когато приближите сензора по-близо, скоростта на звуковия сигнал се увеличава, след като колата достигне 1 метър или 0,3 метра, дисплеят ще поиска да спре колата и трябва да спрете.

• Предавателят ще се нулира и автоматично ще премине в режим на готовност. Изключете приемника в колата си. Ако захранвате предавателя от батерия, изключете и него.

Как да управлявам тази алармена верига за датчик за паркиране на автомобил (Mobile Parking sensor)

• Подобна е посочената по-горе инструкция, ако приемникът показва „Автомобилът не е в обсег“ колата ви е далеч от препятствието.

• Когато изключите двигателя, веригата на предавателя трябва да се изключи. Изключете ръчно веригата на приемника.

Авторски прототип:

Предавател:

Приемник:

Прототип на аларма за сензор за паркиране на автомобили


Предишен: Универсална ESC схема за BLDC и алтернаторни двигатели Напред: Сила на тока за управление на двигателя с използване на Arduino