Obvod parkovacieho senzora spiatočky s alarmom

Obvod parkovacieho senzora spiatočky s alarmom

V tomto príspevku zostrojíme alarmový obvod spätného parkovacieho senzora vozidla využívajúci Arduino, ultrazvukový senzor a modul 2,4 GHz transceiver. Tento projekt môže byť doplnkovou funkciou pre vaše auto, ak nemá zabudované parkovacie senzory.

Úvod

Navrhovaný projekt má podobnú funkčnosť ako tradičné parkovacie senzory, napríklad vzdialenosť medzi autom a prekážkou na LCD displeji a zvukové pípnutie.



Navrhovaný projekt je možné použiť ako stacionárny parkovací senzor, t. J. Senzor umiestnený vo vašej garáži, alebo mobilný parkovací senzor, t. J. Senzor umiestnený na zadnej strane vozidla, ak ste pripravení podstúpiť malé riziko zapojenia projektu do elektrického systému vozidla.



Motiváciou tohto projektu však je postaviť stacionárny parkovací senzor ktoré je možné vytvoriť s nulovým rizikom.

Projekt alarmu parkovacieho senzora využívajúci Arduino má dve časti, vysielač, ktorý sa skladá z ultrazvukového senzora, arduina, bzučiaka a modulu vysielača a prijímača 2,4 GHz. Tento okruh bude merať vzdialenosť medzi autom a prekážkou.



Prijímač sa skladá z modulu 2,4 GHz transceivera, arduina a 16x2 LCD displeja.

Obvod prijímača bude umiestnený vo vnútri auta s 9V batériou ako zdrojom napájania. Prijímač zobrazí vzdialenosť medzi autom a prekážkou v metroch.

Vysielač bude prenášať údaje zo snímača do prijímača vo vnútri vozidla prostredníctvom spojenia 2,4 GHz. Komunikačné spojenie je nadviazané pomocou modulu NRF24L01.



Teraz sa pozrime na prehľad modulu NRF24L01.

Ilustrácia NRF24L01:

Modul NRF24L01

Tento modul je navrhnutý tak, aby nadviazal obojsmerné komunikačné spojenie medzi dvoma mikrokontrolérmi. Funguje na komunikačnom protokole SPI. Má 125 rôznych kanálov a maximálnu rýchlosť prenosu dát 2 Mb / s. Má teoretický maximálny dosah 100 metrov.

Konfigurácia kolíka:

Pracuje na 3,3 V, takže 5 V na termináli Vcc ho môže zabiť. Môže však prijímať dátové signály 5V z mikrokontrolérov.

Teraz prejdime k vysielaču projektu.

Obvod vysielača alarmu snímača parkovacieho vozidla

Obvod je zapojený s modulom NRF24L01 s 5 vodičmi pripojenými k digitálnym I / O pinom arduino a zvyškom dvoch k 3,3 V a zemi. Pin # 2 je pripojený k základni tranzistora, ktorý bude napájať bzučiak.

Napájacie svorky ultrazvukového snímača sú pripojené k 5 V a GND a A0 je pripojené k spúšťaciemu kolíku a A1 je pripojené k ozvučnému kolíku snímača.

Údaje o vzdialenosti snímača sa prenášajú cez modul NRF24L01 do prijímača.

-------------------------------------------------- ----------------------------------------- Stiahnite si súbor knižnice z nasledujúceho odkazu: github.com/nRF24/RF24.git----------------------------------------- -------------------------------------------------- ---

Program pre vysielač:

//----------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 vysielač uzavretý.

Prijímač:

Prijímač má 16x2 LCD displej pre zobrazenie merania vzdialenosti. Pripojenie displeja je uvedené nižšie:

Obvod LCD displeja alarmu senzora parkovania

Nastavením potenciometra 10K získate lepší kontrast pri sledovaní.

Vyššie uvedená schéma je zvyšok obvodu prijímača. Pre resetovanie arduino je k dispozícii tlačidlo v prípade, že nie je nadviazané spojenie 2,4 GHz.

Obvod prijímača je umiestnený vo vnútri vozidla, môže byť napájaný z 9V batérie. Prijímač môže byť umiestnený v zbernej skrinke, aby vaše auto vyzeralo dobre. Odpadová schránka môže byť vo vašom automobile umiestnená nad združeným prístrojom alebo na ľubovoľnom vhodnom mieste, ktoré si prajete.

Program pre prijí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ýmto je prijímač ukončený.

Ako umiestniť senzor ako stacionárny parkovací senzor:

Ako umiestniť senzor ako mobilný parkovací senzor:

V mobilnom parkovacom senzore je ultrazvukový senzor vysielača umiestnený na zadnej strane vozidla, napájanie je poskytované z batérie vozidla. Mal by byť zapojený tak, aby sa po vypnutí zapaľovania arduino odpojilo od napájania.

Prijímač môže byť umiestnený vo vnútri, ako už bolo spomenuté vyššie.

Ako ovládať tento projekt parkovacích senzorov (stacionárny typ)

• Najprv zapnite vysielač, choďte k autu a zapnite prijímač. Ak je spojenie medzi vysielačom a prijímačom nadviazané, zobrazí sa „Spojenie: OK“ a zobrazí sa vzdialenosť medzi autom a snímačom.

• Ak sa zobrazí „Pripojenie nebolo nadviazané“, stlačte tlačidlo na prijímači.

• Ak je vaša plechovka ďaleko od ultrazvukového snímača, môže sa zobraziť správa „Auto nie je v dosahu“.

• Jemne zoberte svoje auto spiatočkou alebo vpred na svoje parkovacie miesto.

• Keď je vzdialenosť medzi autom a snímačom menšia ako 1,0 meter, bzučiak pípne.

• Keď sa priblížite k senzoru bližšie, rýchlosť pípania sa zvýši, akonáhle vozidlo dosiahne 1 stopu alebo 0,3 metra, na displeji sa zobrazí výzva na zastavenie vozidla a vy musíte zastaviť.

• Vysielač sa resetuje a automaticky prejde do pohotovostného režimu. Vypnite prijímač v automobile. Ak ste vysielač napájali z batérie, tiež ho vypnite.

Ako ovládať tento alarmový obvod parkovacieho senzora vozidla (mobilný parkovací senzor)

• Podobný je už skôr uvedený pokyn, ak prijímač zobrazuje hlásenie „Auto nie je v dosahu“, vaše auto je ďaleko od prekážky.

• Keď vypnete motor, musí sa vypnúť obvod vysielača. Vypnite obvod prijímača manuálne.

Prototyp autora:

Vysielač:

Prijímač:

Prototyp alarmu snímača parkovacieho vozidla


Dvojica: Univerzálny obvod ESC pre motory BLDC a alternátory Ďalej: Vysokoprúdový riadiaci obvod motora pomocou Arduina