Arduino Ultrasonic Sensor – Robots Cyprus Μάθημα #1 – Μαθήματα Ρομποτικής
Περιγραφή Μαθήματος #1 Robots Cyprus – Arduino Ultrasonic Sensor – Μαθήματα Ρομποτικής:
Αγορά Arduino Sensors και Modules
Αγορά Arduino Uno Starter Kit
Εισαγωγή:
Σε αυτό το μάθημα θα μάθετε πως να χρησιμοποιείτε τον αισθητήρα Arduino Ultrasonic Sensor HC-SR04. Μπορεί να μετρήσει αποστάσεις από 2 εκατοστά μέχρι 4 μέτρα με ακρίβεια τεσσάρων χιλιοστών. Ο τρόπος που λειτουργεί o αισθητήρας Arduino Ultrasonic Sensor είναι σχετικά απλός. Εκπέμπει ένα υπέρηχο των 40000Hz στον αέρα και αν υπάρχει κάποιο αντικείμενο ή εμπόδιο μπροστά του επιστρέφει πίσω στον αισθητήρα. Λαμβάνοντας υπόψη την διάρκεια επιστροφής του υπέρηχου και την ταχύτητα του ήχου, μπορούμε να υπολογίσουμε την απόσταση του αντικειμένου από τον αισθητήρα Arduino Ultrasonic Sensor.
Περιγραφή Αισθητήρα:
Ο αισθητήρας Arduino Ultrasonic Sensor έχει 4 υποδοχές. Την γείωση (Ground), το VCC, το Trig και το Echo. Η υποδοχή ground και VCC χρειάζεται να συνδεθεί αντίστοιχα στο Ground και στην υποδοχή 5 Volts της κάρτας Arduino. Μπορούμε να συνδέσουμε την υποδοχήTrig και Echo σε οποιαδήποτε ψηφιακή υποδοχή (είτε εισαγωγή, είτε εξαγωγή) , στην κάρτα Arduino.
Για να παραχθεί ο υπέρηχος, χρειάζεται να θέσουμε το Trig σε υψηλή κατάσταση για 10 microSeconds (μS). Αυτό θα στείλει ένα κύκλο 8 ηχητικών «εκρήξεων» που θα ταξιδεύσει στην ταχύτητα του ήχου και θα εισαχθεί από την υποδοχή Echo. Η υποδοχή Echo θα μας δώσει τον χρόνο που έκανε να ταξιδεύσει ο ήχος σε microseconds (μS).
Για παράδειγμα αν το αντικείμενο είναι 10cm μακριά από τον αισθητήρα και η ταχύτητα του ήχου είναι 340 μέτρα ανά δευτερόλεπτο, ή 0,034 εκατοστά ανά microsecond, το κύμα του ήχου θα χρειαστεί να ταξιδεύσει για περίπου 294 microsecond. Η καταγραφή όμως που θα λάβουμε από την υποδοχή Echo είναι η διπλάσια λόγω του ότι ο υπέρηχος ταξιδεύει 2 φορές. Μία από τον αισθητήρα προς το αντικείμενο και μία από το αντικείμενο προς τον αισθητήρα.
Οπότε για να έχουμε την απόσταση σε εκατοστά χρειάζεται να πολλαπλασιάσουμε την τιμή που πήραμε από την υποδοχή Echo με 0,034 και να την διαιρέσουμε με δύο.
Περιγραφή Κώδικα Arduino:
Ας κοιτάξουμε λίγο τον κώδικα προγραμματισμού τώρα. Αυτό είναι ένα παράδειγμα κώδικα προγραμματισμού για αυτό το μάθημα. Αρχικά πρέπει να προσδιορίσουμε τις υποδοχές Trig και Echo. Σε αυτή την περίπτωση είναι οι υποδοχές 9 και 10 στην κάρτα Arduino και τις ονομάζουμε trigPin και echoPin.
Χρειαζόμαστε μία long μεταβλητή όπου την ονομάσζουμε duration για την διάρκεια επιστροφής του ήχου στον αισθητήρα. Επίσης χρειαζόμαστε μία μεταβλητή integer που την ονομάζουμε distance και μας δίνει την απόσταση.
Δηλώνουμε το trigPin ως output και το echPin ως input. Δηλώνουμε επίσης την έναρξη της επικοινωνίας serial για να προβάλλονται τα αποτελέσματα στην οθόνη Serial.
Στο loop πρέπει καταρχάς να είμαστε σίγουροι πως το trigPin είναι μηδενισμένο. Έτσι δηλώνουμε την εν λόγω υποδοχή σε low κατάσταση για 2 μόνο microseconds.
Για να παράγουμε το υπερηχητικό κύμα χρειάζεται να δηλώσουμε την υποδοχή TrigPin σε κατάσταση High για 10 microseconds και θα το πράξουμε μέσω αυτών των τριών γραμμών κώδικα.
Λειτουργία Function:
Μέσω της λειτουργίας (fuction) pulseIn() διαβάζουμε τον χρόνο επιστροφής του υπέρηχου και τοποθετούμε αυτή την τιμή στην μεταβλητή “duration”.
Αυτή η λειτουργία έχει 2 παραμέτρους. Η πρώτη είναι η υποδοχή echoPin και στην δεύτερη προσδιορίζουμε αν είναι High ή Low. Στην δική μας περίπτωση το High σημαίνει πως η λειτουργία pulseIn(), θα περιμένει η υποδοχή να γίνει High από την επιστροφή του υπερηχητικού κύματος. Μετά θα αρχίσει το χρονόμετρο και θα περιμένει η υποδοχή να γίνει Low όταν το κύμα υπέρηχου σταματήσει, όπου και θα σταματήσει το χρονόμετρο. Στο τέλος της λειτουργίας (fuction) θα μας δώσει την διάρκεια του παλμού σε microseconds.
Τέλος για να υπολογίσουμε την απόσταση πολλαπλασιάζουμε με 0,034 και διαιρούμε με 2.
Μετά δίνουμε εντολή για προβληθούν τα αποτελέσματα στην οθόνη serial. Το αποτέλεσμα θα προβάλλεται κάπως έτσι.
Το παράδειγμα που ακολουθεί προβάλει την απόσταση σε LCD. Μπορείτε να βρείτε αυτό τον κώδικα στον σύνδεσμο που υπάρχει στην περιγραφή του βίντεο για τον Arduino Ultrasonic Sensor.
Κώδικας:
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs,
enable, d4, d5, d6, d7)
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch;
void setup() {
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the
dimensions (width and height) of the display
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm= duration*0.034/2;
distanceInch = duration*0.0133/2;
lcd.setCursor(0,0); // Sets the location at which subsequent text written to the
LCD will be displayed
lcd.print(“Distance: “); // Prints string “Distance” on the LCD
lcd.print(distanceCm); // Prints the distance value from the sensor
lcd.print(” cm”);
delay(10);
lcd.setCursor(0,1);
lcd.print(“Distance: “);
lcd.print(distanceInch);
lcd.print(” inch”);
delay(10);
}