Πίνακας περιεχομένων:

Arduino Datalogger: 8 βήματα (με εικόνες)
Arduino Datalogger: 8 βήματα (με εικόνες)

Βίντεο: Arduino Datalogger: 8 βήματα (με εικόνες)

Βίντεο: Arduino Datalogger: 8 βήματα (με εικόνες)
Βίντεο: Концепция EP19 - Измерение ВЧ-мощности своими руками 2024, Ιούλιος
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

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

Για να ξεκινήσετε:

Θα χρειαστείτε έναν λογαριασμό Tinkercad (www.tinkercad.com). Επικεφαλής και εγγραφείτε με το λογαριασμό σας ηλεκτρονικού ταχυδρομείου ή κοινωνικών μέσων.

Η σύνδεση σας μεταφέρει στον Πίνακα ελέγχου Tinkercad. Κάντε κλικ στην επιλογή "Κυκλώματα" στα αριστερά και επιλέξτε "Δημιουργία νέου κυκλώματος". Ας αρχίσουμε!

Μπορείτε να βρείτε ολόκληρο το αρχείο στα κυκλώματα TInkercad - Ευχαριστούμε που το ελέγξατε!

Βήμα 1: Προσθέστε μερικά εξαρτήματα

Προσθέστε μερικά εξαρτήματα
Προσθέστε μερικά εξαρτήματα
Προσθέστε μερικά εξαρτήματα
Προσθέστε μερικά εξαρτήματα
Προσθέστε μερικά εξαρτήματα
Προσθέστε μερικά εξαρτήματα

Θα χρειαστείτε κάποια βασικά στοιχεία. Αυτά περιλαμβάνουν:

  • Πίνακας Arduino
  • Breadboard

Προσθέστε αυτά αναζητώντας τα και κάνοντας κλικ-σύροντάς τα στη μεσαία περιοχή.

Τοποθετήστε το breadboard πάνω από το Arduino. Διευκολύνει την προβολή των συνδέσεων αργότερα.

Βήμα 2: Σημείωση για τις σανίδες ψωμιού

Μια σημείωση για τα Breadboards
Μια σημείωση για τα Breadboards

Ο πίνακας ψωμιού είναι μια εξαιρετικά χρήσιμη συσκευή για γρήγορη δημιουργία πρωτοτύπων. Το χρησιμοποιούμε για τη σύνδεση εξαρτημάτων. Μερικά πράγματα που πρέπει να σημειωθούν.

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

Βήμα 3: Προσθέστε δύο αισθητήρες

Προσθέστε δύο αισθητήρες
Προσθέστε δύο αισθητήρες

Οι δύο αισθητήρες που χρησιμοποιούμε είναι ένας αισθητήρας φωτοευαισθησίας και ένας αισθητήρας θερμοκρασίας.

Αυτοί οι αισθητήρες αξιολογούν το φως και τη θερμοκρασία. Χρησιμοποιούμε το Arduino για να διαβάσουμε την τιμή και να την εμφανίσουμε στη Σειριακή οθόνη του Arduino.

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

Βήμα 4: Αισθητήρας φωτοευαίσθητου

Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
Φωτοευαίσθητος αισθητήρας
  1. Για τον φωτοευαίσθητο αισθητήρα, προσθέστε ένα καλώδιο από τον πείρο 5V στο Arduino στην ίδια στήλη με το δεξί πόδι στο τμήμα στο breadboard. Αλλάξτε το χρώμα του καλωδίου σε κόκκινο.
  2. Συνδέστε το αριστερό πόδι μέσω του πείρου στην ίδια στήλη με τον πείρο A0 (A-zero) στο Arduino. Αυτό είναι το αναλογικό pin, το οποίο θα χρησιμοποιήσουμε για να διαβάσουμε την τιμή από τον αισθητήρα. Χρωματίστε αυτό το σύρμα κίτρινο ή κάτι άλλο εκτός από κόκκινο ή μαύρο.
  3. Τοποθετήστε μια αντίσταση (αναζήτηση και κλικ-σύρετε) στον πίνακα. Αυτό ολοκληρώνει το κύκλωμα και προστατεύει τον αισθητήρα και τον πείρο.

    • Γυρίστε το έτσι ώστε να περάσει στις στήλες.
    • Συνδέστε το ένα πόδι στη στήλη του δεξιού ποδιού στο breadboard
    • Τοποθετήστε ένα καλώδιο από το άλλο άκρο της αντίστασης στη γείωση

      Αλλάξτε το χρώμα του καλωδίου σε μαύρο

  4. Ελέγξτε ξανά όλες τις συνδέσεις. Εάν κάτι δεν είναι στο σωστό μέρος, αυτό δεν θα λειτουργήσει σωστά.

Βήμα 5: Ξεκινήστε τον Κώδικα

Ξεκινήστε τον Κώδικα
Ξεκινήστε τον Κώδικα
Ξεκινήστε τον Κώδικα
Ξεκινήστε τον Κώδικα
Ξεκινήστε τον Κώδικα
Ξεκινήστε τον Κώδικα

Ας δούμε τον κώδικα για αυτό το στοιχείο.

Αρχικά, κοιτάξτε την τρίτη εικόνα σε αυτό το βήμα. Περιέχει κώδικα με δύο λειτουργίες:

void setup ()

κενός βρόχος ()

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

Η λειτουργία ρύθμισης εκτελείται μία φορά κατά την εκκίνηση του Arduino (όταν το συνδέετε ή συνδέετε μπαταρίες).

Η συνάρτηση βρόχου εκτελείται σε έναν σταθερό βρόχο από το χιλιοστό του δευτερολέπτου που ολοκληρώνεται η συνάρτηση ρύθμισης.

Όλα όσα βάζετε στη λειτουργία βρόχου θα εκτελούνται όταν εκτελείται το Arduino. Όλα έξω που θα λειτουργούν μόνο όταν κληθούν. Όπως αν ορίζαμε και καλούσαμε άλλη συνάρτηση έξω από το βρόχο.

Εργο

Ανοίξτε τον πίνακα κωδικών με το κουμπί στο Tinkercad. Αλλάξτε το αναπτυσσόμενο μενού Blocks σε Text. Συμφωνήστε με το πλαίσιο προειδοποίησης που εμφανίζεται. Τώρα, διαγράψτε όλα όσα βλέπετε εκτός από το κείμενο στην τρίτη εικόνα σε αυτό το βήμα.

Μεταβλητές

Για να ξεκινήσουμε, πρέπει να εκχωρήσουμε ορισμένες μεταβλητές, ώστε να κάνουμε τον κώδικα μας πραγματικά αποτελεσματικό.

Οι μεταβλητές είναι σαν κάδοι που μπορούν να συγκρατήσουν μόνο ένα αντικείμενο (το C ++ είναι αυτό που λέμε αντικειμενοστρεφής). Ναι, έχουμε πίνακες, αλλά αυτές είναι ειδικές μεταβλητές και θα τις συζητήσουμε αργότερα. Όταν εκχωρούμε μια μεταβλητή, πρέπει να της πούμε τι τύπος είναι και μετά να της δώσουμε μια τιμή. Μοιάζει με αυτό:

int someVar = A0;

Έτσι, εκχωρήσαμε μια μεταβλητή και της δώσαμε τον τύπο int. Το int είναι ακέραιος ή ακέραιος αριθμός.

«Αλλά δεν χρησιμοποιήσατε ολόκληρο αριθμό!», Σας ακούω να λέτε. Αυτό είναι αλήθεια.

Το Arduino κάνει κάτι ιδιαίτερο για εμάς, ώστε να μπορούμε να χρησιμοποιήσουμε το Α0 ως ακέραιο, γιατί σε άλλο αρχείο ορίζει το Α0 ως ακέραιο, έτσι μπορούμε να χρησιμοποιήσουμε τη σταθερά Α0 για να αναφερθούμε σε αυτόν τον ακέραιο χωρίς να χρειάζεται να γνωρίζουμε τι είναι. Εάν πληκτρολογήσαμε μόνο το 0, θα αναφερόμασταν στον ψηφιακό pin στη θέση 0, η οποία δεν θα λειτουργούσε.

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

Ο κωδικός σας πρέπει να μοιάζει με αυτόν:

int lightSensor = A0;

void setup () {} void loop () {}

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

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {}

Η συνάρτηση pinMode λέει στο Arduino ότι ο πείρος (A0) θα χρησιμοποιηθεί ως ακίδα εισόδου. Σημειώστε το camelCaseUsed (δείτε κάθε πρώτο γράμμα είναι κεφαλαίο, καθώς έχει καμπύλες, άρα… καμήλα…!) Για τις μεταβλητές και τα ονόματα των συναρτήσεων. Αυτή είναι μια σύμβαση και καλό είναι να συνηθίσετε.

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

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int reading = analogRead (lightSensor); }

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

int lightSensor = A0;

void setup () {// Ορισμός τρόπων pin pinMode (lightSensor, INPUT); // Προσθέστε τη σειριακή βιβλιοθήκη Serial.begin (9600); } void loop () {// Διαβάστε τον αισθητήρα int ανάγνωση = analogRead (lightSensor); // Εκτυπώστε την τιμή στην οθόνη Serial.print ("Light:"); Serial.println (ανάγνωση); // καθυστέρηση του επόμενου βρόχου με καθυστέρηση 3 δευτερολέπτων (3000). }

Λίγα νέα πράγματα! Αρχικά, θα δείτε αυτά:

// Αυτό είναι ένα σχόλιο

Χρησιμοποιούμε σχόλια για να πούμε σε άλλα άτομα τι κάνει ο κωδικός μας. Θα πρέπει να τα χρησιμοποιείτε συχνά. Ο μεταγλωττιστής δεν θα τα διαβάσει και θα τα μετατρέψει σε κώδικα.

Τώρα, προσθέσαμε επίσης τη σειριακή βιβλιοθήκη με τη γραμμή

Serial.begin (9600)

Αυτό είναι ένα παράδειγμα μιας συνάρτησης που λαμβάνει ένα όρισμα. Καλέσατε τη βιβλιοθήκη Serial και στη συνέχεια εκτελέσατε μια συνάρτηση (γνωρίζουμε ότι είναι συνάρτηση λόγω των στρογγυλών στηριγμάτων) και περάσατε σε ακέραιο ως όρισμα, θέτοντας τη σειριακή συνάρτηση να λειτουργεί σε 9600 baud. Μην ανησυχείτε γιατί - απλά ξέρετε ότι λειτουργεί, προς το παρόν.

Το επόμενο πράγμα που κάναμε ήταν η εκτύπωση στη σειριακή οθόνη. Χρησιμοποιήσαμε δύο συναρτήσεις:

// Αυτό εκτυπώνει στο σειριακό χωρίς διακοπή γραμμής (εισαγωγή στο τέλος)

Serial.print ("Light:"); // Αυτό βάζει στο διάλειμμα της γραμμής, έτσι κάθε φορά που διαβάζουμε και γράφουμε, πηγαίνει σε μια νέα σειρά Serial.println (ανάγνωση).

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

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

Μεγάλος! Προχωράμε!

Βήμα 6: Προσομοίωση

Προσομοίωση
Προσομοίωση
Προσομοίωση
Προσομοίωση
Προσομοίωση
Προσομοίωση

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

Ξεκινήστε την προσομοίωση και ελέγξτε τη σειριακή οθόνη. Αλλάξτε την τιμή του αισθητήρα φωτός κάνοντας κλικ σε αυτόν και αλλάζοντας την τιμή χρησιμοποιώντας το ρυθμιστικό. Θα πρέπει να δείτε την αλλαγή της τιμής και στη σειριακή οθόνη. Εάν όχι, ή αν πατήσετε το κουμπί Έναρξη προσομοίωσης λάβετε σφάλματα, επιστρέψτε προσεκτικά και ελέγξτε όλο τον κωδικό σας.

  • Εστιάστε στις γραμμές που υποδεικνύονται στο κόκκινο παράθυρο εντοπισμού σφαλμάτων που θα σας παρουσιαστούν.
  • Εάν ο κωδικός σας είναι σωστός και η προσομοίωση εξακολουθεί να μην λειτουργεί, ελέγξτε την καλωδίωση.
  • Φορτώστε ξανά τη σελίδα - ενδέχεται να έχετε άσχετο σφάλμα συστήματος/διακομιστή.
  • Κουνήστε τη γροθιά σας στον υπολογιστή και ελέγξτε ξανά. Όλοι οι προγραμματιστές το κάνουν αυτό. Ολα. Ο. Χρόνος.

Βήμα 7: Συνδέστε τον αισθητήρα θερμοκρασίας

Wire Up the Temp Sensor
Wire Up the Temp Sensor

Υποθέτω ότι είστε στο σωστό δρόμο τώρα. Προχωρήστε και συνδέστε τον αισθητήρα θερμοκρασίας όπως δείχνει η εικόνα. Σημειώστε την τοποθέτηση των καλωδίων 5V και GND στον ίδιο χώρο με αυτά για το φως. Αυτό είναι εντάξει. Είναι σαν ένα παράλληλο κύκλωμα και δεν θα προκαλέσει προβλήματα στον προσομοιωτή. Σε ένα πραγματικό κύκλωμα, θα πρέπει να χρησιμοποιήσετε έναν πίνακα ή θωράκιση για να παρέχετε καλύτερη διαχείριση ισχύος και συνδέσεις.

Τώρα, ας ενημερώσουμε τον κώδικα.

Ο κωδικός του αισθητήρα θερμοκρασίας

Αυτό είναι λίγο πιο δύσκολο, αλλά μόνο επειδή πρέπει να κάνουμε κάποια μαθηματικά για να μετατρέψουμε την ανάγνωση. Δεν είναι πολύ κακό.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Ορισμός τρόπων pin pinMode (lightSensor, INPUT); // Προσθέστε τη σειριακή βιβλιοθήκη Serial.begin (9600); } void loop () {// Ο αισθητήρας θερμοκρασίας // Δημιουργία δύο μεταβλητών σε μία γραμμή - ω αποτελεσματικότητα! // Float var για αποθήκευση δεκαδικής τάσης πλωτήρα, βαθμούς C; // Διαβάστε την τιμή του πείρου και μετατρέψτε την σε ένδειξη από 0 - 5 // Ουσιαστικά τάση = (5/1023 = 0.004882814); τάση = (analogRead (tempSensor) * 0.004882814); // Μετατροπή σε βαθμούς C βαθμούς C = (τάση - 0,5) * 100; // Εκτύπωση στη σειριακή οθόνη Serial.print ("Temp:"); Serial.print (βαθμοίC); Serial.println ("oC"); // Διαβάστε τον αισθητήρα int read = analogRead (lightSensor); // Εκτυπώστε την τιμή στην οθόνη Serial.print ("Light:"); Serial.println (ανάγνωση); // καθυστέρηση του επόμενου βρόχου με καθυστέρηση 3 δευτερολέπτων (3000). }

Έχω κάνει κάποιες ενημερώσεις στον κώδικα. Ας τα περάσουμε ξεχωριστά.

Πρώτα, πρόσθεσα τη γραμμή

int tempSensor = A1;

Ακριβώς όπως το lightSensor, πρέπει να αποθηκεύσω την τιμή σε μια μεταβλητή για να την κάνω πιο εύκολη αργότερα. Εάν έπρεπε να αλλάξω τη θέση αυτού του αισθητήρα (όπως η επανασύνδεση του πίνακα), τότε πρέπει να αλλάξω μόνο τη μία γραμμή κώδικα, όχι να κάνω αναζήτηση σε ολόκληρη τη βάση κώδικα για να αλλάξω το A0 ή το A1, κ.λπ.

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

τάση πλωτήρα, βαθμοί C

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

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

τάση = (analogRead (tempSensor) * 0.004882814);

βαθμοί C = (τάση - 0,5) * 100;

Αυτές οι δύο γραμμές φαίνονται δύσκολες, αλλά στην πρώτη παίρνουμε την ανάγνωση και την πολλαπλασιάζουμε με 0,004… επειδή μετατρέπει το 1023 (η αναλογική ανάγνωση επιστρέφει αυτήν την τιμή) σε ένδειξη από 5.

Η δεύτερη γραμμή εκεί πολλαπλασιάζει αυτήν την ένδειξη με 100 για να μετακινήσει την υποδιαστολή. Αυτό μας δίνει τη θερμοκρασία. Καθαρός!

Βήμα 8: Δοκιμή και έλεγχος

Δοκιμή και Έλεγχος
Δοκιμή και Έλεγχος

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

Τα κατάφερες? Κοινοποιήστε και πείτε μας την ιστορία σας!

Αυτό είναι το τελευταίο κύκλωμα που είναι ενσωματωμένο για εσάς, ώστε να μπορείτε να παίξετε/δοκιμάσετε την τελική δημιουργία. Ευχαριστώ για την ολοκλήρωση του σεμιναρίου!

Συνιστάται: