Κύκλωμα αισθητήρα στάθμευσης αυτοκινήτου με συναγερμό

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Σε αυτήν την ανάρτηση πρόκειται να κατασκευάσουμε ένα κύκλωμα συναγερμού αισθητήρα στάθμευσης αντίστροφου αυτοκινήτου χρησιμοποιώντας arduino, αισθητήρα υπερήχων και μονάδα πομποδέκτη 2,4 GHz. Αυτό το έργο μπορεί να είναι πρόσθετο για το αυτοκίνητό σας, εάν δεν διαθέτει ενσωματωμένους αισθητήρες στάθμευσης.

Εισαγωγή

Το προτεινόμενο έργο έχει παρόμοια λειτουργικότητα με τον παραδοσιακό αισθητήρα στάθμευσης αυτοκινήτων, όπως απόσταση μεταξύ αυτοκινήτου και εμποδίου σε μια οθόνη LCD και ηχητικό σήμα ήχου.



Το προτεινόμενο έργο μπορεί να χρησιμοποιηθεί ως σταθερός αισθητήρας στάθμευσης, δηλαδή ο αισθητήρας που βρίσκεται στο γκαράζ σας ή ο κινητός αισθητήρας στάθμευσης, δηλαδή ο αισθητήρας που βρίσκεται στο πίσω μέρος του αυτοκινήτου σας, εάν είστε έτοιμοι να αναλάβετε έναν μικρό κίνδυνο καλωδίωσης του έργου με το ηλεκτρικό σύστημα του αυτοκινήτου.

Ωστόσο, το κίνητρο στο οποίο είναι αυτό το έργο δημιουργήστε έναν σταθερό αισθητήρα στάθμευσης που μπορεί να κατασκευαστεί με μηδενικό κίνδυνο.



Το έργο συναγερμού αισθητήρα στάθμευσης αυτοκινήτων που χρησιμοποιεί το Arduino έχει δύο μέρη, τον πομπό που αποτελείται από αισθητήρα υπερήχων, arduino, βομβητή και μονάδα πομποδέκτη 2,4 GHz. Αυτό το κύκλωμα θα μετρήσει την απόσταση μεταξύ του αυτοκινήτου και του εμποδίου.

Ο δέκτης αποτελείται από μονάδα πομποδέκτη 2,4 GHz, arduino και οθόνη LCD 16x2.

Το κύκλωμα δέκτη θα τοποθετηθεί μέσα στο αυτοκίνητο με μπαταρία 9V ως τροφοδοτικό. Ο δέκτης θα εμφανίσει την απόσταση μεταξύ του αυτοκινήτου και του εμποδίου σε μέτρα.

Ο πομπός θα μεταδώσει τα δεδομένα του αισθητήρα στον δέκτη μέσα στο αυτοκίνητο μέσω συνδέσμου 2,4 GHz. Ο σύνδεσμος επικοινωνίας δημιουργείται χρησιμοποιώντας τη μονάδα NRF24L01.

Ας δούμε τώρα την επισκόπηση της ενότητας NRF24L01.

Εικόνα του NRF24L01:

Ενότητα NRF24L01

Αυτή η ενότητα έχει σχεδιαστεί για να δημιουργεί αμφίδρομη σύνδεση επικοινωνίας μεταξύ δύο μικροελεγκτών. Λειτουργεί με πρωτόκολλο επικοινωνίας SPI. Έχει 125 διαφορετικά κανάλια και έχει μέγιστο ρυθμό δεδομένων 2Mbps. Έχει μέγιστο θεωρητικό εύρος 100 μέτρων.

Διαμόρφωση καρφιτσών:

Λειτουργεί σε 3.3V, οπότε 5 volt στον τερματικό Vcc μπορεί να το σκοτώσει Ωστόσο, μπορεί να δεχτεί σήματα δεδομένων 5V από μικροελεγκτές.

Τώρα ας προχωρήσουμε στον πομπό του έργου.

Κύκλωμα πομπού συναγερμού αισθητήρα στάθμευσης αυτοκινήτων

Το κύκλωμα είναι ενσύρματο με μονάδα NRF24L01 με 5 καλώδια συνδεδεμένα σε ψηφιακές καρφίτσες I / O arduino και τα υπόλοιπα δύο έως 3.3V και γείωση. Ο ακροδέκτης # 2 συνδέεται με τη βάση του τρανζίστορ που τροφοδοτεί τον βομβητή.

Οι ακροδέκτες τροφοδοσίας του αισθητήρα υπερήχων συνδέονται με 5V και GND και το Α0 συνδέονται με την ακίδα ενεργοποίησης και το Α1 συνδέεται με τον πείρο ηχούς του αισθητήρα.

Τα δεδομένα απόστασης του αισθητήρα μεταδίδονται μέσω της μονάδας 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-------------//

Αυτό ολοκληρώνει τον πομπό.

Δέκτης:

Ο δέκτης διαθέτει οθόνη LCD 16x2 για προβολή της μέτρησης απόστασης. Η σύνδεση οθόνης εμφανίζεται παρακάτω:

Κύκλωμα οθόνης συναγερμού αισθητήρα στάθμευσης αυτοκινήτου

Ρυθμίστε το ποτενσιόμετρο 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 μέτρο, η οθόνη ζητά να σταματήσει το αυτοκίνητο και πρέπει να σταματήσετε.

• Ο πομπός θα επαναφέρει και θα μεταβεί αυτόματα στο ρελαντί. Απενεργοποιήστε το δέκτη στο αυτοκίνητό σας. Εάν τροφοδοτήσατε τον πομπό με μπαταρία, απενεργοποιήστε τον επίσης.

Πώς να χειριστείτε αυτό το κύκλωμα συναγερμού αισθητήρα στάθμευσης αυτοκινήτου (Κινητός αισθητήρας στάθμευσης)

• Είναι παρόμοια προηγουμένως αναφερθείσα οδηγία εάν ο δέκτης εμφανίζει το 'Car not in range' το αυτοκίνητό σας απέχει πολύ από το εμπόδιο.

• Όταν απενεργοποιείτε τον κινητήρα, το κύκλωμα πομπού πρέπει να σβήσει. Απενεργοποιήστε το κύκλωμα του δέκτη χειροκίνητα.

Πρωτότυπο συγγραφέα:

Πομπός:

Δέκτης:

Πρωτότυπο συναγερμού αισθητήρα στάθμευσης αυτοκινήτων


Προηγούμενο: Universal ESC Circuit για κινητήρες BLDC και Alternator Επόμενο: Κύκλωμα ελέγχου ρεύματος κινητήρα υψηλού ρεύματος χρησιμοποιώντας το Arduino