Autó hátramenet parkoló érzékelő áramköre riasztással

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben egy autó hátrameneti parkolóérzékelő riasztási áramkört fogunk építeni arduino, ultrahangos érzékelő és 2,4 GHz-es adó-vevő modul segítségével. Ez a projekt kiegészítő szolgáltatás lehet autója számára, ha nem rendelkezik beépített parkolóérzékelőkkel.

Bevezetés

A javasolt projekt hasonló funkciókkal rendelkezik, mint a hagyományos parkolóérzékelők, például az autó és az akadály közötti távolság az LCD kijelzőn és a hangjelzés.



A javasolt projekt használható helyhez kötött parkolóérzékelőként, azaz a garázsban elhelyezett érzékelőként vagy mobil parkolóérzékelőként, azaz érzékelőként, amelyek az autója hátulján helyezkednek el, ha készen áll arra, hogy kis kockázatot vállaljon a projekt elektromos autóval történő bekötéséről.

A projekt motivációja azonban építsen álló parkolóérzékelőt amely nulla kockázattal építhető fel.



Az Arduino-t használó parkolóérzékelő riasztási projektnek két része van, az adó ultrahangos érzékelőből, arduino-ból, hangjelzőből és 2,4 GHz-es adó-vevő modulból áll. Ez az áramkör mérni fogja az autó és az akadály közötti távolságot.

A vevőegység 2,4 GHz-es adó-vevő modulból, arduino és 16x2 LCD kijelzőből áll.

A vevő áramkört az autó belsejében helyezik el, 9 V-os akkumulátorral. A vevő méterben jeleníti meg az autó és az akadály közötti távolságot.

Az adó 2,4 GHz-es kapcsolaton keresztül továbbítja az érzékelő adatait az autóban lévő vevőnek. A kommunikációs kapcsolat az NRF24L01 modul segítségével jön létre.

Most nézzük meg az NRF24L01 modul áttekintését.

Az NRF24L01 illusztrációja:

NRF24L01 modul

Ezt a modult kétirányú kommunikációs kapcsolat létrehozására tervezték két mikrovezérlő között. Az SPI kommunikációs protokollon működik. 125 különböző csatornával rendelkezik, és maximális adatátviteli sebessége 2Mbps. Elméleti maximális hatótávolsága 100 méter.

PIN konfiguráció:

3,3 V-on működik, így a Vcc terminálon lévő 5 volt megölheti. Ugyanakkor képes elfogadni a mikrovezérlőktől származó 5 V-os adatjeleket.

Most térjünk át a projekt adójára.

Parkoló érzékelő riasztó adó áramköre

Az áramkör NRF24L01 modullal van bekötve, 5 vezetékkel, amelyek az arduino digitális I / O csatlakozóihoz vannak csatlakoztatva, és a kettő többi része 3,3 V-ra és a földre. A 2. sz. Csatlakozó a tranzisztor aljához van csatlakoztatva, amely táplálja a hangjelzőt.

Az ultrahangos érzékelő tápcsatlakozói 5 V-ra vannak csatlakoztatva, a GND és az A0 pedig a ravasztüskére, az A1 pedig az érzékelő visszhangcsapjára van csatlakoztatva.

Az érzékelő távolságadatait az NRF24L01 modulon keresztül továbbítja a vevőnek.

-------------------------------------------------- ----------------------------------------- Kérjük, töltse le a könyvtár fájlt a következő linkről: github.com/nRF24/RF24.git----------------------------------------- -------------------------------------------------- ---

Program az adó számára:

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

Ezzel befejeződött az adó.

Vevő:

A vevő 16x2 LCD kijelzővel rendelkezik a távolságmérés megjelenítésére. A kijelző csatlakozása az alábbiakban látható:

Parkolóérzékelő riasztás LCD kijelző áramkör

A jobb kontraszt érdekében állítsa be a 10K potenciométert.

A fenti vázlat a vevő áramkörének többi része. Egy nyomógomb biztosítja az arduino visszaállítását, ha a 2,4 GHz-es kapcsolat nem jön létre.

A vevő áramkört az autó belsejében helyezik el, így 9 V-os akkumulátorral táplálható. A vevőkészüléket egy szemétdobozba helyezhetik, aminek köszönhetően jól néz ki az autó. Az ócska doboz elhelyezhető autójában a műszercsoport felett, vagy bármely más kívánt helyen.

Program a vevő számára:

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

Ezzel a vevő véget ér.

Az érzékelő elhelyezése álló parkolóérzékelőként:

Az érzékelő elhelyezése mobil parkolási érzékelőként:

A mobil parkolóérzékelőben az adó ultrahangos érzékelőjét az autó hátsó oldalán helyezik el, az áramellátás az autó akkumulátorából történik. Olyan módon kell bekötni, hogy a gyújtás kikapcsolásakor az arduino-nak meg kell szakadnia az áramellátásról.

A vevő a fentiek szerint bennfentes helyzetben helyezhető el.

Hogyan kell működtetni ezt a parkoló érzékelő projektet (álló típusú)

• Először kapcsolja be az adóegységet, menjen autójához és kapcsolja be a vevőt. Ha létrejön a kapcsolat az adó és a vevő között, a „Connection: OK” felirat jelenik meg, és megmutatja az autó és az érzékelő közötti távolságot.

• Ha a „Csatlakozás nem sikerült” felirat jelenik meg, nyomja meg a vevőn található nyomógombot.

• Lehet, hogy az „Autó nincs hatótávolságon” felirat jelenik meg, ha a doboza távol van az ultrahangos érzékelőtől.

• Óvatosan vigye autóját hátramenetben vagy előre a parkolóig.

• Mivel az autó és az érzékelő közötti távolság kevesebb, mint 1,0 méter, a hangjelző sípol.

• Az érzékelőhöz közeledve a csipogás sebessége megnő, ha az autó eléri az 1 lábat vagy 0,3 métert, a kijelző felszólítja az autó leállítására, és le kell állnia.

• Az adó visszaáll és automatikusan üresjáratra áll. Kapcsolja ki a kagylót az autójában. Ha a távadót akkumulátorral táplálja, kapcsolja ki azt is.

A parkolóérzékelő riasztó áramkörének működtetése (mobil parkolóérzékelő)

• Hasonló a korábban megadott utasítás, ha a vevőn a „Car not in range” felirat jelenik meg, az autója messze van az akadálytól.

• A motor kikapcsolásakor az adó áramkörének ki kell kapcsolnia. Kapcsolja ki kézzel a vevő áramkört.

A szerző prototípusa:

Adó:

Vevő:

Parkolóérzékelő riasztás prototípus


Előző: Univerzális ESC áramkör BLDC és generátor motorokhoz Következő: Nagy áramú motorvezérlő áramkör Arduino segítségével