Σε αυτό το σεμινάριο πρόκειται να σχεδιάσουμε ένα σύστημα μέτρησης βαρομετρικής πίεσης χρησιμοποιώντας BMP180 και ARDUINO. Πρώτα απ 'όλα για διασύνδεση BMP180 με ARDUINO, πρέπει να κατεβάσετε μια βιβλιοθήκη ειδικά σχεδιασμένη για BMP180. Αυτή η βιβλιοθήκη είναι διαθέσιμη στη διεύθυνση: https://github.com/adafruit/Adafruit-BMP085-Library Αφού συνδέσουμε αυτήν τη βιβλιοθήκη, μπορούμε να καλέσουμε ειδικές λειτουργίες που θα διευκολύνουν την εργασία με τον αισθητήρα BMP180.
Απαιτούμενα στοιχεία
Υλικό: Arduino uno board, πείροι σύνδεσης, αντίσταση 220Ω, αισθητήρας βαρομετρικής πίεσης BMP180, LCD 16x2, πλακέτα ψωμιού.
Λογισμικό: Arduino κάθε βράδυ
Διάγραμμα κυκλώματος και επεξήγηση εργασίας
Αφού ζητήσουμε κεφαλίδα, δεν χρειάζεται να ανησυχούμε για τη δημιουργία επικοινωνίας μεταξύ του αισθητήρα Arduino Uno και BMP180. Μπορούμε απλά να καλέσουμε σε ειδικές λειτουργίες που θα το κάνουν για εμάς. Αρκεί να αρχικοποιήσουμε μια οθόνη LCD και να δείξουμε τις τιμές που ονομάζονται από το SENSOR.
Σε LCD 16x2 υπάρχουν 16 ακίδες πάνω από όλα αν υπάρχει οπίσθιο φως, εάν δεν υπάρχει οπίσθιος φωτισμός θα υπάρχουν συνολικά 14 ακίδες. Κάποιος μπορεί να τροφοδοτήσει ή να αφήσει τις πίσω ακίδες. Τώρα στις 14 ακίδες υπάρχουν 8 καρφίτσες δεδομένων (7-14 ή D0-D7), 2 ακροδέκτες τροφοδοσίας (1 & 2 ή VSS & VDD ή GND & + 5v), 3ος ακροδέκτης για έλεγχο αντίθεσης (VEE-ελέγχει πόσο παχύ πρέπει να είναι οι χαρακτήρες φαίνεται) και 3 ακίδες ελέγχου (RS & RW & E).
Στο κύκλωμα, μπορείτε να παρατηρήσετε ότι έχω πάρει μόνο δύο ακίδες ελέγχου, το bit αντίθεσης και το READ / WRITE δεν χρησιμοποιούνται συχνά, ώστε να μπορούν να βραχυκυκλωθούν στη γείωση. Αυτό θέτει την οθόνη LCD σε υψηλότερη αντίθεση και λειτουργία ανάγνωσης. Πρέπει απλώς να ελέγξουμε ENABLE και RS καρφίτσες για να στείλουμε ανάλογα χαρακτήρες και δεδομένα.
Οι συνδέσεις που γίνονται για LCD δίνονται παρακάτω:
PIN1 ή VSS στη γείωση
PIN2 ή VDD ή VCC σε ισχύ + 5v
PIN3 ή VEE στη γείωση (δίνει τη μέγιστη αντίθεση καλύτερα για έναν αρχάριο)
PIN4 ή RS (Επιλογή καταχώρησης) στο PIN8 του ARDUINO UNO
Το PIN5 ή το RW (Ανάγνωση / Εγγραφή) στη γείωση (θέτει την οθόνη LCD σε λειτουργία ανάγνωσης διευκολύνει την επικοινωνία για τον χρήστη)
PIN6 ή E (Ενεργοποίηση) στοPIN9 του ARDUINO UNO
PIN11 ή D4 έως PIN10 του ARDUINO UNO
PIN12 ή D5 έως PIN11 του ARDUINO UNO
PIN13 ή D6 έως PIN12 του ARDUINO UNO
PIN14 ή D7 έως PIN13 του ARDUINO UNO
Το ARDUINO IDE επιτρέπει στο χρήστη να χρησιμοποιεί LCD σε λειτουργία 4 bit. Αυτός ο τύπος επικοινωνίας επιτρέπει στο χρήστη να μειώσει τη χρήση των καρφιτσών στο ARDUINO, σε αντίθεση με άλλους, το ARDUINO δεν χρειάζεται να προγραμματιστεί ξεχωριστά για τη χρήση του σε λειτουργία 4 it, επειδή από προεπιλογή το ARDUINO έχει ρυθμιστεί για επικοινωνία σε λειτουργία 4 bit. Στο κύκλωμα μπορείτε να δείτε ότι έχουμε χρησιμοποιήσει επικοινωνία 4bit (D4-D7).
Έτσι από απλή παρατήρηση από τον παραπάνω πίνακα συνδέουμε 6 ακροδέκτες LCD με ελεγκτή στον οποίο 4 ακίδες είναι καρφίτσες δεδομένων και 2 ακίδες για έλεγχο.
Για τη σύνδεση του BMP180 με το Arduino Uno πρέπει να κάνουμε τα εξής:
|
Πρώτα πρέπει να καλέσουμε το αρχείο κεφαλίδας για την ενεργοποίηση ειδικών λειτουργιών "#include".
Με αυτό το αρχείο κεφαλίδας μπορούμε να καλέσουμε συναρτήσεις που μπορούν να διαβάσουν τιμές από το Sensor απευθείας χωρίς κανένα ασαφές.
Τώρα πρέπει να ενεργοποιήσουμε την επικοινωνία C, αυτό γίνεται καλώντας το "#include
Μπορούμε να διαβάσουμε την πίεση καλώντας "String PRESSUREVALUE = String (bmp.readPressure ());". Εδώ η τιμή πίεσης θα διαβαστεί από τον αισθητήρα και θα αποθηκευτεί στη συμβολοσειρά "PRESSUREVALUE".
Μπορούμε να διαβάσουμε τη θερμοκρασία καλώντας "String TEMPARATUREVALUE = String (bmp.readTemperature ());". Εδώ η τιμή πίεσης θα διαβαστεί από τον αισθητήρα και θα αποθηκευτεί στη συμβολοσειρά "TEMPARATUREVALUE".
Πρώτα πρέπει να ενεργοποιήσουμε το αρχείο κεφαλίδας ('#include
Δεύτερον, πρέπει να πούμε στον πίνακα ποιος τύπος LCD χρησιμοποιούμε εδώ. Εφόσον έχουμε τόσους πολλούς διαφορετικούς τύπους LCD (όπως 20 * 4, 16 * 2, 16 * 1 κ.λπ.). Εδώ πρόκειται να συνδέσουμε μια οθόνη LCD 16 * 2 με το UNO, ώστε να λάβουμε το "lcd.begin (16,2);". Για 16 * 1 παίρνουμε "lcd.begin (16,1);".
Σε αυτήν την οδηγία πρόκειται να πούμε στον πίνακα πού συνδέσαμε τους ακροδέκτες, Οι ακίδες που συνδέονται πρέπει να αναπαριστώνται με τη σειρά «RS, En, D4, D5, D6, D7». Αυτές οι ακίδες πρέπει να αντιπροσωπεύονται σωστά. Δεδομένου ότι συνδέσαμε το RS με το PIN0 και ούτω καθεξής, όπως φαίνεται στο διάγραμμα κυκλώματος, αντιπροσωπεύουμε τον αριθμό pin για να επιβιβαστούμε ως "LiquidCrystallcd (0,1,8,9,10,11);".
Μετά από πάνω, το μόνο που μένει είναι να στείλουμε δεδομένα, τα δεδομένα που πρέπει να εμφανίζονται σε LCD θα πρέπει να γράφονται ως "cd.print (" hello, world! ");". Με αυτήν την εντολή, η οθόνη LCD εμφανίζει «γεια, κόσμος!».
Όπως μπορείτε να δείτε, δεν χρειάζεται να ανησυχούμε για κάτι άλλο, απλώς πρέπει να αρχικοποιήσουμε και το UNO θα είναι έτοιμο να εμφανίσει δεδομένα. Δεν χρειάζεται να γράψουμε βρόχο προγράμματος για να στείλουμε τα δεδομένα BYTE από το BYTE εδώ. Αφού διαβάσετε την τιμή από τον αισθητήρα, θα τις εμφανίσουμε σε οθόνη LCD 16x2.