Arduino Project: Σύστημα parking με τον Ultrasonic Distance Sensor HR-SC04

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

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

Έξυπνο σύστημα parking λοιπόν, χρησιμοποιώντας ένα Arduino UNO (το nano και το mega είναι και αυτά συμβατά) και έναν υπερηχητικό αισθητήρα απόστασης τύπου Ultrasonic HR-SC04.

Τι είναι ο ultrasonic αισθητήρας απόσρασης HR-SC04

Ο ultrasonic distance sensor HR-SC04 είναι ένας από τους πολλούς αισθητήρες που κυκλοφορούν με στόχο την μέτρηση της απόστασης χρησιμοποιώντας υπέρηχο. Γι αυτό τον λόγο αν και δύσκολα θα συναντήσετε τον όρο, αυτού του είδους οι αισθητήρες λέγονται και υπερηχητικοί αισθητήρες μέτρησης απόστασης.

Ο arduino αισθητήρας λειτουργεί με 5V τάση όπως οι περισσότεροι. Αυτό σημαίνει πως μπορείτε να τον συνδέσετε είτε κατευθείαν πάνω σε ένα Arduino είτε χρησιμοποιώντας ένα breadboard. Η σύνδεση του με 3.3V αντί για 5V μπορεί να έχει λανθασμένα αποτελέσματα ή αυτό που αποκαλούμε “σκουπίδια”, σίγουρα όμως δεν θα τον καταστρέψει.

Διαθέτει δύο στρογγυλά “κανάλια” εκπομπής και λήψης υπερήχων. Τα δυο αυτά κανάλια είναι υπεύθυνα για να δημιουργία των ηπερήχων και την λήψη τους αφού “χτυπήσουν” σε κάποιο αντικείμενο. Με την λειτουργία αυτή μπορούμε να μάθουμε πόση είναι η απόσταση.

Ultrasonic Distance Sensor Αισθητήρας για το Arduino

Εφαρμογές Χρήσης

Όπως αναφέρθηκε και πιο πάνω, ο αισθητήρας HR-SR04 είναι μια ηλεκτρονική συσκευή που δουλεύει με υπέρηχους (sonar). Ο υπέρηχος λειτουργεί σε συχνότητες που δεν μπορούμε να τις ακούσουμε και ταξιδεύει στον χώρο με την ταχύτητα 340m/s. Τι εφαρμογές μπορεί να έχει αυτός ο αισθητήρας όμως;

Εφαρμογές του ultrasonic distance sensor στην ρομποτική

Στην ρομποτική υπάρχουν διάφορα είδη από ρομπότ όπως τροχοφόρα (mobile robots) και εναέρια (drones). Ένα challenge που αρκετοί ερευνητές έχουν έρθει αντιμέτωποι και έχουν φυσικά βρει λύσεις είναι το λεγόμενο obstacle avoidance ή αλλιώς αποφυγή εμποδίων. Σε αυτού του είδους την εφαρμογή το ρομπότ, είτε μιλάμε για τροχοφόρο με ρόδες είτε για αναέρια χρησιμοποιώντας αισθητήρες προσπαθεί να καταλάβει πότε και που υπάρχει εμπόδιο. Ως συνέπεια, μόλις το αντιληφθεί κάνει τις κατάληλες κινήσεις για να το αποφύγει και να συνεχίσει την πορεία του.

Επιπλέον στο ίδιο σενάριο που μόλις αναφέραμε, το ρομπότ μπορεί να εκτελεί το λεγόμενο path finding ή εύρεση διαδρομής. Σε αυτού του είδους τις εφαρμογές τα ρομπότ δεν γνωρίζουν το περιβάλλον και προσπαθούν να το μάθουν μέσω των αισθητήρων. Φανταστείτε λοιπόν το ακόλουθο σενάριο. Έχουν το ρομπότ σε ένα σημείο και η αποστολή του είναι να περάσει μέσα από έναν λαβύρυνθο με τοίχους χωρίς να γνωρίζει ποιά είναι η κατάληλη διαδρομή.

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

Εφαρμογές για το έξυπνο σπίτι

Το έξυπνο σπίτι ή αλλιώς smart home είναι μια νέα τάση που έρχεται ολοένα και περισσότερο στην ζωή μας. Στα πλαίσια του IoT (Internet of Things, έχουν δημιουργηθεί από έξυπνες συκσευές για έλεγχο μιας λάμπας, έξυπνες τοστιέρες, ψυγείο και άλλες συσκευές μέχρι και αυτοματοποιήσεις στο γκαράζ, συναγερμούς και έλεγχο της θερμοκρασίας. Για παράδειγμα, ένα δοχείο όπως η δεξαμενή πετρελαίου μπορεί να αυτοματοποιηθεί με έναν αισθητήρα μέτρησης της στάθμης.

Ultrasonic Distance Sensor που μετρά την στάθμη από ένα δοχείο.

Εργοστάσια παραγωγής προϊόντων

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

ultrasonic distance sensor που μετρά αντικείμενα στην γραμμή παραγωγής.

Θέλετε να μάθετε περισσότερα για τον ultrasonic distance sensor HR-SC04;

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

Απαιτούμενος Εξοπλισμός

Παρακάτω παραθέτουμε μία λίστα με τον απαραίτητο εξοπλισμό που απαιτείται για αυτό το Project και συνδέσμους από Ελληνικό κατάστημα. Τον εξοπλισμό μπορείς επίσης να τον βρεις και μέσω e-shop, όπως το ebay.com, amazon.com, banggood.com. Ωστόσο, αν δεν προσέξεις, η ποιότητα μπορεί να μην είναι η ίδια και οι συνδέσεις σε κάποιες από τις πλακέτες μπορεί να είναι διαφορετικές καθώς πρόκειται για απομιμήσεις και όχι αυθεντικό εξοπλισμό. Επιπλέον, θέλοντας να σε ενθαρρύνουμε, μπορείς πάντα να έχεις την φιλοσοφία του think out of the box εφόσον και αν φυσικά γνωρίζεις τι κάνεις. Δεν είσαι σίγουρος; Επικοινώνησε μαζί μας ή σχολίασε παρακάτω.

  1. Arduino UNO Board και καλώδιο σύνδεσης με τον Η/Υ
  2. Breadboard
  3. Ultrasonic Distance Sensor HC-SR04
  4. Καλώδια σύνδεσης M – M

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

Η ομάδα του FutureGeneration

Κέρδισε Προσφορές & Εκπτωτικό Κουπόνι

Το FutureGeneration συνεργάζεται με καταστήματα εντός και εκτός Ελλάδας, προσφέροντας σας έκπτωση με προσφορές στον παραπάνω και όχι μόνο εξοπλισμό!

Συνδεσμολογία (Connection Diagram & Wiring)

Πριν περάσουμε στον προγραμματισμό του arduino και κάνουμε upload το arduino code, όπως θα δεις στην συνέχεια, θα πρέπει να κάνουμε τις απαραίτητες συνδέσεις σύμφωνα με τα παρακάτω διαγράμματα σύνδεσης (connection diagrams).

Μπορείτε να χρησιμοποιήσετε ένα breadboard για μια πιο εύκολη διασύνδεση όλων των εξαρτημάτων. Το ultrasonic distance sensor καθώς και το buzzer εκπομπής ήχου χρειάζονται μια τροφοδοσία και μια γείωση. Επειδή σε κάθε κύκλωμα η γείωση πρέπει να είναι κονή, θα πρέπει η γείωση δηλαδή το GND και στους δύο αισθητήρες να συνδεθεί σε μια από τις δύο οριζόντιες γραμμές με τα pins του breadboard (έστω στην μπλέ). Έχοντας κάνει αυτή τη σύνδεση, συνδέοντας ένα τρίτο καλώδιο από το GND pin του arduino σε ένα τρίτο pin στην μπλέ γραμμή, έχει αποτέλεσμα να τροδοφοτηθεί όλη η μπλέ γραμμή με γείωση.

Το παράδειγμά μας, χρησιμοποιούνται δύο LED όπως φαίνεται και στο διάγραμμα. Σε προηγούμενο άρθρο, έχουμε αναφέρει πως μπορείτε με εύκολο τρόπο να συνδέσετε LED με ένα arduino χρησιμοποιώντας το breadboard. Σε αυτό το σημείο θα πρέπει το κύκλωμά μας να είναι έτοιμο. Πριν περάσουμε στο επόμενο βήμα, καλό είναι να σιγουρευτούμε πως όλα τα καλώδια είναι καλά τοποθετημένα. Κάνουμε λοιπόν, έναν τελευταίο έλεγχο σε κάθε ένα από αυτά.

Διάγραμμα σύνδεσης του Αrduino με τον ultrasonic distance sensor HC-SR04

O Ultrasonic Distance Sensor HC-SR04 έχει 4 pin σύνδεσης με το Arduino όπως αναφέρονται παρακάτω:

  • το pin γείωσης (ground wire) το οποίο το συνδέουμε με το GND pin του Arduino.
  • το pin τροφοδοσίας (power wire) το οποίο το συνδέουμε με το 5V pin του Arduino.
  • το pin σήματος ECHO (echo) το οποίο το συνδέουμε με το ψηφιακό pin του Arduino D7.
  • το pin σήματος TRIG (trigger) το οποίο το συνδέουμεμε το ψηφιακό pin του Arduino D8.

Μπορείτε φυσικά αντί για τα D7 και D8 pins να χρησιμοποιήσετε όποια pins θέλετε, αρκεί να κάνετε και τις κατάλληλες διορθώσεις στον κώδικα.

Προγραμματισμός

Αρχικά πρέπει να ορίσουμε σε ποια pins θα βρίσκονται όλες οι συνδέσεις. Επίσης ορίζουμε και δύο μεταβλητές για την μέγιστη και ελάχιστη απόσταση του ultrasonic distance sensor.

Ορίζουμε τις αντιστοιχίες της κάθε μεταβλητής που θα χρησιμοποιήσουμε στον κώδικα μας με τα pinout στο Arduino. Το echoPin και trigPin συνδέονται με το digital pin 7 και 8 στο Arduino. Το LED θα αντιστοιχηθεί με το digital pin 13, το οποίο είναι και το default pin στο Arduino board. Τέλος, το buzzer θα αντιστοιχηθεί με το pin 6.

#define echoPin 7        // Echo Pin
#define trigPin 8          // Trigger Pin
#define LEDPin 13       // Onboard LED
#define BUZZERPin 6  // Buzzer Pin

Ορίζουμε σε μεταβλητές το μέγιστο και ελάχιστο μήκος που θα λειτουργεί ο αισθητήρας. Αυτό που μας ενδιαφέρει είναι να ορίσουμε ως μέγιστη απόσταση τα 200cm και ελάχιστη τα 3cm. Θυμηθείτε πως η μέγιστη απόσταση είναι τα 200cm.

int maximumRange = 200;     // Maximum range needed
int minimumRange = 3;         // Minimum range needed

Θα χρησιμοποιήσουμε 2 μεταβλητές για την απόσταση και για το duration.

long duration, distance; // Duration used to calculate distance

Στην setup() συνάρτηση θα πρέπει να ορίσουμε όλα τα INPUT και OUTPUT. Έτσι το Arduino θα ξέρει αν θα διαβάζει ή αν θα γράψει σε κάθε ένα από τα Pins.

void setup() {
 Serial.begin (9600);
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 pinMode(LEDPin, OUTPUT);
 pinMode(LED2Pin, OUTPUT);
 pinMode(laserPin, OUTPUT);
 pinMode(buzzerPin, OUTPUT);
}

Η συνάρτηση activeBuzzer δέχεται ως όρισμα το dist. Το dist αφορά την αόσταση και με τα If block ελέγχουμε για διάφορες αποστάσεις. Ανάλογα τις αποστάσεις που υπάρχουν εκτελούμε διαφορετικά block

void activateBuzzer(int delayTime) {
  tone(BUZZERPin, 1000);
  delay(delayTime);
  noTone(BUZZERPin);
  delay(delayTime);
}
void controlDistance(int dist) {

  Serial.println(dist);
  if(dist <= 3) { 
    tone(BUZZERPin, 1000);
  }else if( (dist > 3) && (dist<=15) ) {
   activateBuzzer(dist*15);
    digitalWrite(LEDPin, HIGH);
  }else if( (dist > 15) && (dist <= 20) ) {
    activateBuzzer(300);
    digitalWrite(LEDPin, HIGH);
  }else {
     noTone(BUZZERPin);
  }
}

Η συνάρτηση loop εκτελείται επ άπειρον. Αρχικά υπολογίζουμε την απόσταση distance εκπεποντας τον σωστό παλμό για 10ms.

void loop() {

 digitalWrite(trigPin, LOW); 
 delayMicroseconds(2); 

 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10); 
 
 digitalWrite(trigPin, LOW);
 duration = pulseIn(echoPin, HIGH);

 distance = duration/58.2;
if (distance >= maximumRange || distance <= minimumRange){
    Serial.println("-1");
    controlDistance(-1);
 }else {
    controlDistance(distance);
 }
 delay(50);
}

Key Takeaways

  • Ο ultrasonic distance ή proximity sensor χρησιμοποιείται για την μέτρηση απόστασης.
  • Οι αποστάσεις υπολογίζονται μέσα απο έναν μαθηματικό τύπο αφού γίνει η εκπομπή και η λήψη των υπερήχων.
  • Λειτουργούν με 5V και μπορούν να συνδεθούν κατευθείαν στο Arduino.
  • Ο αισθητήρας HC-SR04 υποπολογίζει αποστάσεις από 2cm μέχρι 200cm.

Υποβολή απάντησης