Alarmlı Araç Ters Park Sensörü Devresi

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazıda arduino, ultrasonik sensör ve 2,4 GHz alıcı-verici modülü kullanarak bir araba ters park sensörü alarm devresi oluşturacağız. Bu proje, yerleşik park sensörlerine sahip değilse arabanız için eklenti özellik olabilir.

Giriş

Önerilen proje, bir LCD ekranda araba ile engel arasındaki mesafe ve sesli bip uyarısı gibi geleneksel otopark sensörünün sahip olduğu benzer işlevselliğe sahiptir.



Önerilen proje, sabit park sensörü olarak kullanılabilir, yani garajınıza yerleştirilen sensör veya mobil park sensörü, yani projeyi aracın elektrik sistemi ile kablolamak için küçük bir risk almaya hazırsanız arabanızın arkasına yerleştirilen sensör.

Ancak, bu projenin motivasyonu sabit bir park sensörü inşa et sıfır riskle inşa edilebilir.



Arduino kullanılan otopark sensörü alarm projesi, ultrasonik sensör, arduino, zil ve 2,4 GHz alıcı-verici modülünden oluşan verici olmak üzere iki bölümden oluşmaktadır. Bu devre, araç ile engel arasındaki mesafeyi ölçecektir.

Alıcı, 2.4 GHz alıcı-verici modülü, arduino ve 16x2 LCD ekrandan oluşur.

Alıcı devresi, güç kaynağı olarak 9V pil ile arabanın içine yerleştirilecektir. Alıcı, araç ile engel arasındaki mesafeyi metre cinsinden gösterecektir.

Verici, sensör verilerini 2,4 GHz bağlantısı ile araç içindeki alıcıya iletecektir. İletişim bağlantısı NRF24L01 modülü kullanılarak kurulur.

Şimdi NRF24L01 modülüne genel bakalım.

NRF24L01 çizimi:

NRF24L01 Modülü

Bu modül, iki mikro denetleyici arasında iki yönlü iletişim bağlantısı kurmak için tasarlanmıştır. SPI iletişim protokolü üzerinde çalışır. 125 farklı kanala sahiptir ve maksimum 2Mbps veri hızına sahiptir. Teorik olarak maksimum 100 metre menzile sahiptir.

PIN konfigürasyonu:

3.3V ile çalışır, bu nedenle Vcc terminalindeki 5 volt onu öldürebilir. Bununla birlikte, mikrodenetleyicilerden gelen 5V veri sinyallerini kabul edebilir.

Şimdi projenin vericisine geçelim.

Araba Park Sensörü Alarm Verici Devresi

Devre, arduino'nun dijital I / O pinlerine ve geri kalan ikisinin 3.3V'a ve toprağa bağlı 5 telli NRF24L01 modülü ile kablolanmıştır. Pin # 2, zile güç verecek olan transistörün tabanına bağlanır.

Ultrasonik sensörün güç terminalleri 5V'a bağlanır ve GND ve A0 tetik pimine ve A1 sensörün yankı pinine bağlanır.

Sensörün mesafe verileri, NRF24L01 modülü aracılığıyla alıcıya iletilir.

-------------------------------------------------- ----------------------------------------- Lütfen aşağıdaki bağlantıdan kitaplık dosyasını indirin: github.com/nRF24/RF24.git----------------------------------------- -------------------------------------------------- ---

Verici Programı:

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

Bu, vericiyi sonlandırır.

Alıcı:

Alıcı, mesafe ölçümünü görüntülemek için 16x2 LCD ekrana sahiptir. Ekran bağlantısı aşağıda verilmiştir:

Araba Park Sensörü Alarm LCD Ekran Devresi

Daha iyi görüntüleme kontrastı için 10K potansiyometreyi ayarlayın.

Yukarıdaki şematik, alıcı devresinin geri kalanıdır. 2,4 GHz bağlantı bağlantısının kurulmaması durumunda arduino'nun sıfırlanması için bir düğme sağlanmıştır.

Alıcı devresi arabanın içine yerleştirilmiştir, 9V'luk bir bataryadan güç alabilir. Alıcı, arabanızın iyi görünmesini sağlayabilecek bir çöp kutusuna yerleştirilebilir. Önemsiz kutu, aracınızda gösterge panelinin üstüne veya istediğiniz herhangi bir uygun yere yerleştirilebilir.

Alıcı Programı:

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

Şimdi, bu alıcıyı tamamlıyor.

Sensörün sabit park sensörü olarak nasıl yerleştirileceği:

Sensörün mobil park sensörü olarak nasıl yerleştirileceği:

Mobil park sensöründe vericinin ultrasonik sensörü aracın arka tarafına yerleştirilir, güç aracın aküsünden sağlanır. Kontağı kapattığınızda arduino'nun besleme ile bağlantısını kesecek şekilde kablolanmalıdır.

Alıcı, daha önce belirtildiği gibi içeriye yerleştirilebilir.

Bu Otopark sensörü projesi nasıl çalıştırılır (Sabit tip)

• Önce Vericiyi AÇIN, arabanıza gidin ve alıcıyı açın. Verici ve alıcı arasında bağlantı kurulursa, 'Bağlantı: Tamam' mesajını gösterecek ve araç ile sensör arasındaki mesafeyi gösterecektir.

• 'Bağlantı kurulmadı' mesajını görüntülerse, alıcıda bulunan düğmeye basın.

• Kutunuz ultrasonik sensörden uzaktaysa 'Araç menzil içinde değil' mesajını gösterebilir.

• Arabanızı yavaşça geri veya ileri park alanınıza götürün.

• Araç ile sensör arasındaki mesafe 1,0 metreden azaldıkça, sesli uyarı bip sesi çıkarır.

• Sensöre yaklaştığınızda bip sesi oranı artar, araç 1 fit veya 0,3 metreye ulaştığında, ekran aracı durdurmanızı ister ve durmanız gerekir.

• Verici sıfırlanacak ve otomatik olarak boşa geçecektir. Arabanızdaki alıcıyı kapatın. Vericiye pil ile güç verdiyseniz, onu da kapatın.

Bu araba park sensörü alarm devresi nasıl çalıştırılır (Mobil Park sensörü)

• Alıcıda “Araç menzilde değil” mesajını görüntülüyorsa, arabanız engelden uzakta demektir.

• Motoru kapattığınızda, verici devresi de kapanmalıdır. Alıcı devresini manuel olarak kapatın.

Yazarın Prototipi:

Verici:

Alıcı:

Araba Park Sensörü Alarm prototipi


Önceki: BLDC ve Alternatör motorları için Evrensel ESC Devresi Sonraki: Arduino kullanarak Yüksek Akım Motor Kontrol Devresi