Obvod parkovacího senzoru zpětného chodu s alarmem

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku se chystáme zkonstruovat obvod alarmu zpětného parkovacího senzoru automobilu pomocí Arduina, ultrazvukového senzoru a modulu 2,4 GHz transceiveru. Tento projekt může být doplňkovou funkcí pro vaše auto, pokud nemá zabudované parkovací senzory.

Úvod

Navrhovaný projekt má podobnou funkčnost jako tradiční parkovací senzor, například vzdálenost mezi automobilem a překážkou na LCD displeji a zvukové pípnutí.



Navrhovaný projekt lze použít jako stacionární parkovací senzor, tj. Senzor umístěný na vaší garáži nebo mobilní parkovací senzor, tj. Senzor umístěný na zadní straně vašeho vozu, pokud jste připraveni riskovat malé riziko propojení projektu s elektrickým systémem automobilu.

Motivací tohoto projektu však je postavit stacionární parkovací senzor které lze postavit s nulovým rizikem.



Projekt alarmu senzoru parkování u auta využívající Arduino má dvě části, vysílač, který se skládá z ultrazvukového senzoru, arduina, bzučáku a modulu vysílače a přijímače 2,4 GHz. Tento obvod bude měřit vzdálenost mezi automobilem a překážkou.

Přijímač se skládá z modulu vysílače a přijímače 2,4 GHz, arduino a 16x2 LCD displeje.

Obvod přijímače bude umístěn uvnitř automobilu s 9V baterií jako zdrojem energie. Přijímač zobrazí vzdálenost mezi automobilem a překážkou v metrech.

Vysílač bude přenášet data ze snímače do přijímače uvnitř automobilu přes 2,4 GHz linku. Komunikační spojení je navázáno pomocí modulu NRF24L01.

Nyní se podívejme na přehled modulu NRF24L01.

Ilustrace NRF24L01:

Modul NRF24L01

Tento modul je navržen k vytvoření obousměrného komunikačního spojení mezi dvěma mikrokontroléry. Funguje na komunikačním protokolu SPI. Má 125 různých kanálů a maximální rychlost přenosu dat 2 Mb / s. Má teoretický maximální dosah 100 metrů.

Konfigurace kolíků:

Pracuje na 3,3 V, takže 5 V na terminálu Vcc ho může zabít. Může však přijímat 5V datové signály z mikrokontrolérů.

Nyní přejdeme k vysílači projektu.

Obvod vysílače alarmu snímače parkovacího vozu

Obvod je zapojen s modulem NRF24L01 s 5 vodiči připojenými k digitálním I / O pinům arduino a zbytek dvou na 3,3 V a zem. Pin # 2 je připojen k základně tranzistoru, který bude napájet bzučák.

Napájecí svorky ultrazvukového senzoru jsou připojeny k 5 V a GND a A0 je připojeno ke spouštěcímu kolíku a A1 je připojeno k echo kolíku senzoru.

Údaje o vzdálenosti snímače jsou přenášeny přes modul NRF24L01 do přijímače.

-------------------------------------------------- ----------------------------------------- Stáhněte si soubor knihovny z následujícího odkazu: github.com/nRF24/RF24.git----------------------------------------- -------------------------------------------------- ---

Program pro vysílač:

//----------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-------------//

Tím je vysílač ukončen.

Přijímač:

Přijímač má 16x2 LCD displej pro zobrazení měření vzdálenosti. Připojení displeje je uvedeno níže:

Obvod LCD displeje alarmu senzoru parkování vozidla

Upravte potenciometr 10K pro lepší kontrast při sledování.

Výše uvedené schéma je zbytek obvodu přijímače. K dispozici je tlačítko pro resetování arduina v případě, že není navázáno spojení 2,4 GHz.

Obvod přijímače je umístěn uvnitř automobilu, může být napájen z 9V baterie. Přijímač může být umístěn ve sběrné schránce, díky čemuž může vaše auto vypadat dobře. Nevyžádaná pošta může být umístěna ve vašem voze nad sdruženým přístrojem nebo na jakémkoli jiném vhodném místě.

Program pro přijímač:

//--------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-------//

Tím je přijímač uzavřen.

Jak umístit senzor jako stacionární parkovací senzor:

Jak umístit senzor jako mobilní parkovací senzor:

U mobilního parkovacího senzoru je ultrazvukový senzor vysílače umístěn na zadní straně vozu, napájení je poskytováno z baterie vozidla. Měl by být zapojen takovým způsobem, aby se po vypnutí zapalování arduino muselo odpojit od napájení.

Přijímač může být umístěn uvnitř, jak bylo uvedeno výše.

Jak ovládat tento projekt parkovacích senzorů (stacionární typ)

• Nejprve zapněte vysílač, přejděte k autu a zapněte přijímač. Pokud je navázáno spojení mezi vysílačem a přijímačem, zobrazí se „Spojení: OK“ a zobrazí vzdálenost mezi automobilem a senzorem.

• Pokud se zobrazí „Spojení nebylo navázáno“, stiskněte tlačítko na přijímači.

• Pokud je vaše plechovka daleko od ultrazvukového senzoru, může se zobrazit „Auto není v dosahu“.

• Jemně vezměte auto zpět nebo vpřed na parkovací místo.

• Jelikož je vzdálenost mezi autem a senzorem menší než 1,0 metru, bzučák pípne.

• Jakmile se přiblížíte k senzoru blíže, rychlost pípnutí se zvýší, jakmile vozidlo dosáhne vzdálenosti 1 stopy nebo 0,3 metru, na displeji se zobrazí výzva k zastavení vozidla a vy musíte zastavit.

• Vysílač se resetuje a automaticky přejde na volnoběh. Vypněte přijímač v autě. Pokud jste vysílač napájeli z baterie, také jej vypněte.

Jak ovládat tento alarmový obvod parkovacího senzoru automobilu (mobilní parkovací senzor)

• Podobná dříve uvedená instrukce je, pokud přijímač zobrazí „Auto není v dosahu“, vaše auto je daleko od překážky.

• Když vypnete motor, musí se vypnout obvod vysílače. Ručně vypněte obvod přijímače.

Autorův prototyp:

Vysílač:

Přijímač:

Prototyp alarmu senzoru parkování vozidla


Předchozí: Univerzální obvod ESC pro motory BLDC a alternátory Další: Řídicí obvod motoru s vysokým proudem pomocí Arduina