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

SONIC LED FEEDBACK: 7 βήματα (με εικόνες)
SONIC LED FEEDBACK: 7 βήματα (με εικόνες)

Βίντεο: SONIC LED FEEDBACK: 7 βήματα (με εικόνες)

Βίντεο: SONIC LED FEEDBACK: 7 βήματα (με εικόνες)
Βίντεο: Η γκουγκου δεν σεβεται τον πατερα της 2024, Ιούλιος
Anonim
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK
SONIC LED FEEDBACK

Γεια και πάλι, Μισείτε που το ρομπότ σας αντιμετωπίζει τα πάντα; Αυτό θα διορθώσει αυτό το πρόβλημα. Με 8 ηχητικούς αισθητήρες αυτό φαίνεται περίπλοκο… αλλά στην πραγματικότητα το έκανα πολύ εύκολο. Προσπαθώ να δημοσιεύσω έργα που θα σας βοηθήσουν να μάθετε για το Arduino και να δείξω μια ιδέα «εκτός κουτιού». Αυτή η ανάρτηση θα σας βοηθήσει να κατανοήσετε την αλλαγή 595, το pro-minis ως προγραμματιζόμενο αισθητήρα και τη μεγάλη χρήση των ανατροφοδότησης σε πραγματικό χρόνο. Αν σας αρέσει το Arduino ως "αντιγραφή και επικόλληση και προσθήκη", μπορείτε απλώς να το παραλείψετε.

Μου αρέσει να χρησιμοποιώ pro-minis. Είναι περίπου 2,50 δολάρια, λειτουργούν ως uno πλήρους ανάπτυξης και η εγκατάσταση κεφαλίδων τα καθιστά πολύ ευέλικτα. Χρησιμοποιείται ως μικροϋπολογιστής αισθητήρα, μπορείτε να το κάνετε «να κάνει ό, τι θέλετε» αντί για αυτό που υπαγορεύει ένας αγορασμένος αισθητήρας. Με το I2C που χρησιμοποιεί μόνο 2 καλώδια μπορούν να συνδεθούν μεταξύ τους όλα σε μία γραμμή. Προχωρήστε λοιπόν πάνω από το MEGA μπορώ να έχω 4 μίνι που τρέχουν 4 ξεχωριστές γραμμές κώδικα όλα ταυτόχρονα, με μόλις 10,00 $. Εδώ χρησιμοποιώ ένα μίνι για να σκάσω τους ηχητικούς αισθητήρες μέσω ενός 595 και να δείξω την απόσταση οδήγησης σε πραγματικό χρόνο. Στη συνέχεια, απλώς μοιραστείτε 8 bit δεδομένων με τη μητρική πλακέτα. Αυτό αφαιρεί το φορτίο από τη μητρική πλακέτα και καθιστά τον κωδικό της πολύ απλό.

Υπάρχει πρόβλημα με τους ηχητικούς αισθητήρες … χωρίς οπτική ανατροφοδότηση. Ποτέ δεν ξέρεις αν ο αισθητήρας είναι απλά ένα νεκρό βάρος ή λειτουργεί! Πιστεύω ότι όποιος βρήκε το "BLINK" είναι πιο έξυπνος από τον Einstine. Μόνο ένα led και ένας κόσμος πληροφοριών μεταδίδεται από το αναβοσβήνει. Έτσι, ένας ηχητικός αισθητήρας χρειάζεται ανατροφοδότηση σε πραγματικό χρόνο. Εδώ χρησιμοποίησα μια σειρά led για την παρακολούθηση κάθε αισθητήρα. Δεν τα χρειάζεστε, απλά φτιάξτε τους αισθητήρες χωρίς τα led. Αλλά το να έχετε τα led στο PCB είναι χρήσιμο.

Βήμα 1: ΚΑΤΑΣΚΕΥΑΣΤΕ PCB

ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB
ΚΑΤΑΣΚΕΥΑΣΤΕ PCB

κάντε PCB και συμπληρώστε. ΠΡΟΣΟΧΗ… Έκανα ένα λάθος στο PCB στις συνδέσεις 4 ακίδων για να συνδεθούν οι ηχητικοί αισθητήρες. Το ECHO και το TRIGGER Vcc και οι βάσεις επρόκειτο να συνδεθούν στο pcb. Δεν υπάρχει αρκετός χώρος για υποδοχές, οπότε έκανα το PCB με pin-outs. Έτσι, μπορείτε να κολλήσετε ένα καλώδιο σύνδεσης στο PCB και να το συνδέσετε στους πραγματικούς ηχητικούς αισθητήρες. Όσο για τα led, έβαλα κίτρινα led στο εσωτερικό άκρο και κόκκινα στο εξωτερικό. Αυτό σας βοηθά να δείτε από απόσταση εάν οι αισθητήρες μετρούν σωστά.

Αυτό είναι ένα από τα ΜΕΓΑΛΑ pcb 2 πλευρών που έφτιαξα ποτέ. Θα προτιμούσα να κάνω 2 ea μονή πλευρά και να τρέχω άλτες. Αλλά για να αποκτήσετε την οθόνη led χρειάζεστε τουλάχιστον το κορυφαίο pcb. Ξεχώρισα τη διάταξη στη λήψη.

Το PCB είναι για ένα pro-mini με A4-A5 στο εσωτερικό της κεφαλίδας. Είτε έτσι είτε αλλιώς συνδέστε το A4-A5 με το Master A4-A5. Μην ξεχάσετε επίσης το Vcc και το Grounds.

Βήμα 2: ΠΟΛΛΑ ΛΑΘΗ

ΠΟΛΛΑ ΛΑΘΗ
ΠΟΛΛΑ ΛΑΘΗ

Τώρα για τα λάθη μου… Προσπάθησα να σκάσω τα Triggers ταυτόχρονα (όλα δεμένα μεταξύ τους) και αυτό το είδος λειτούργησε καλά, αλλά έγιναν κάποιες αλληλεπιδράσεις. Έτσι, τώρα όλα τα ECHOS πηγαίνουν στο micro (8) και τα TRIGGERS ρυθμίζονται από ένα 595. Τρεις ακόμη ακίδες (3). Όσον αφορά τα led, η πολυπλεξία δεν θα λειτουργήσει. Χρειάζεστε έναν πλήρη χρόνο ON για κάθε led. Αυτό σημαίνει ότι κάθε σειρά από 7 led πρέπει να έχει τη δική της 595. Μόλις ενημερώσετε το 595, τα led παραμένουν αναμμένα μέχρι την επόμενη ενημέρωση. Όπου η πολυπλεξία του led ανάβει μόνο για το δέκατο του δευτερολέπτου. Αυτό λειτουργεί καλά στους αναγνώστες μου και χρειάζεται ένα ειδικό μικρόφωνο. Δεν υπάρχει χρόνος για σάρωση 8 ηχητικών αισθητήρων και μέτρηση αποστάσεων. Προσπάθησα και είχα πολύ άσχημα αποτελέσματα. Η πολυπλεξία των led θα σημαίνει επίσης ένα πλέγμα γραμμής + στήλης και αυτό σημαίνει περίπου 64+ τροφοδοσίες στο PCB.

Χρησιμοποίησα μόνο 7 εξόδους από το 595 λόγω ακαταστασίας στο PCB. Σε απόσταση δεν μπορείτε να καταλάβετε αν υπάρχουν 7 ή 8 led μόνο η κίνησή τους. Μπορεί να μπείτε στον πειρασμό να συνδέσετε όλα τα led σε μία μόνο αντίσταση και αυτό λειτουργεί, αλλά η φωτεινότητα του πίνακα αλλάζει με την ποσότητα των led που είναι lite. Οπότε μία αντίσταση ανά led είναι η καλύτερη. Αγαπώ απλώς το 595, αλλά αν μετακινούσαν τις καρφίτσες Vcc και 0-out ή έκαναν ένα εικονίδιο 18 ακίδων με ΟΛΕΣ τις εξόδους στην ίδια πλευρά… η σύνδεση και των οκτώ εξόδων θα ήταν τόσο εύκολη. Αλλά τότε δεν θα πουλήθηκε για λιγότερο από 30 λεπτά.

Βήμα 3: ΑΝΟΙΞΗ ΑΝΟΙΞΗΣ

ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ
ΟΡΘΟΙ ΑΙΣΘΗΤΗΡΕΣ

Κολλήστε ηχητικούς αισθητήρες στο καπάκι του καφέ. ο αρσενικός γρύλος πρέπει να είναι λυγισμένος προς τα μέσα σε κάθε αισθητήρα. Αυτό λειτουργεί καλύτερα αν λυγίζετε μία καρφίτσα κάθε φορά. Χρησιμοποίησα 2 πλευρικές ταινίες αφρού έτσι ώστε οι δονήσεις να είναι λιγότερες. Οι αισθητήρες μου είναι πολύ κοντά και χρειάζονται χώρο 1/4 ίντσας για να ταιριάζουν καλύτερα με το PCB. Έχω χρησιμοποιήσει ηχητικούς αισθητήρες στο παρελθόν και μερικές φορές κάποιος δεν μπορεί να μετρήσει με ακρίβεια και πρέπει να το έχετε υπόψη σας. Μην τους κολλάτε λοιπόν όλους μόνιμα.

Βοηθά επίσης να εκτελέσετε μια γρήγορη δοκιμή απόστασης σε καθένα από αυτά πριν τα χρησιμοποιήσετε. Παίρνω περίπου έναν αισθητήρα με κακή ανάγνωση σε μια παρτίδα 20. Δεν είναι κακό για την τιμή που πλήρωσα.

Βήμα 4: HARD WIRE

HARD WIRE
HARD WIRE

Νόμιζα ότι θα υπήρχε χώρος για βύσματα και βύσματα από τον υπολογιστή στο

ηχητικές καρφίτσες αλλά έφυγα από το δωμάτιο. Έτσι καλωδίωσα το άκρο του pcb και απλά έκανα καλώδια ηχώ και σκανδάλης με θηλυκές υποδοχές (8ea). Έδεσα τους χώρους 8ea Vcc και 8ea των αισθητήρων μαζί, έτσι αυτό έκανε μόνο 2 συνδέσεις στο PCB γι 'αυτούς.

Με 8 αισθητήρες και 8 595s ένα uno ή pro-mini ΔΕΝ μπορεί να τροφοδοτήσει αυτό. Πρέπει να υπάρχει μια ρυθμισμένη πηγή 5v ως μέρος αυτού του έργου. Το ρομπότ μου έχει ένα απλό 7805 @ 1amp από τις μπαταρίες. Αυτό συνδέεται με όλα τα 5v Vcc για όλες τις συσκευές. το 7805 πέφτει περίπου ένα βολτ οπότε χρειάζεστε τουλάχιστον 6,5 βολτ για να το τροφοδοτήσετε. Δηλαδή 2 μπαταρίες λιθίου στα 3.3v. Το ρομπότ μου έχει παλιά nicads από χρησιμοποιημένα πακέτα τρυπανιών και 8 nicads τρέχουν τον τυπικό κινεζικό κινητήρα 12v στο σασί τύπου δεξαμενής $ 20.

Βήμα 5: ΛΗOWΗ ΛΟΓΙΚΟΥ ΣΧΕΔΙΟΥ

ΛΗOWΗ ΛΟΓΙΚΟΥ ΣΧΕΔΙΟΥ
ΛΗOWΗ ΛΟΓΙΚΟΥ ΣΧΕΔΙΟΥ

Κατεβάστε το σκίτσο και εγκαταστήστε. Υπάρχουν πολλοί τρόποι για να μιλήσετε

άλλο uno αλλά μου αρέσει το I2c. η σύγχυση είναι η διεύθυνση και ο κύριος/ ο σκλάβος. Όπως συμβαίνει με τους περισσότερους αισθητήρες (σκεφτείτε το 2ο mini ως αισθητήρα) απευθύνεστε στον αισθητήρα και ζητάτε x ποσότητα byte. το ιδιο και εδω. Στο 2ο mini αφήνετε στην άκρη x ποσότητα byte που θέλετε να στείλετε. Η σύγχυση είναι ότι τα ονόματα δεν έχουν σημασία. Σας βοηθά να θυμάστε μόνο αν μοιράζεστε τα ονόματα. Έτσι στο σκίτσο στέλνω τις 8 ηχητικές μετρήσεις απόστασης σε cm ως sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. Ο κύριος παίρνει μόλις 8 byte εάν υπάρχουν δεδομένα και μπορείτε να ονομάσετε αυτά τα bytes όπως θέλετε. Τα διάβασα ως gotR1, gotR2, got….. Η αποστολή των byte είναι η ίδια. Byte A, B, C….. μην νομίζετε ότι αλλάζοντας το όνομα θα σας δώσει διαφορετικά δεδομένα. Και το άλλο αλίευμα, μπορείτε να λάβετε μόνο δεδομένα που λένε ότι θα σταλούν. Έτσι, εάν θέλετε άλλα δεδομένα, πρέπει να αλλάξετε και τους δύο κύριους και υποτελείς.

Βήμα 6: ΕΠΙΚΟΙΝΩΝΙΑ

ΕΠΙΚΟΙΝΩΝΙΑ
ΕΠΙΚΟΙΝΩΝΙΑ

Μπορείτε να το παραλείψετε αν γνωρίζετε πώς να ρυθμίσετε 2 Uno's για να μιλήσετε μεταξύ τους. Έχω ορισμένες πληροφορίες στο τέλος. Για να το διευκολύνω θα ονομάσω το uno στη βάση ρομπότ Μ1 και τον ηχητικό αισθητήρα ως S2. Συνδέστε Vcc, γείωση, A4, A5 μεταξύ τους.

Στο σκίτσο για το S2 ξεκινάει με #Include

Στη συνέχεια, δημιουργήστε τα 8 byte για αποστολή. byte R1, byte R2, byte L1 κ.λπ. Το Uno είναι ένα micro 8bit οπότε στέλνουν 1 byte κάθε φορά χρησιμοποιώντας το "byte" αντί για το "int" είναι σωστό.

Στο 'setup ()' add 'Wire.begin (διεύθυνση)' αυτό λέει στον I2c ποια συσκευή είναι αυτή. Η διεύθυνση είναι συνήθως οποιοσδήποτε αριθμός σας αρέσει μεταξύ 4 - 200. το μέγεθος ενός byte. Εδώ χρησιμοποίησα τον αριθμό 10. Έτσι, για να μιλήσω με αυτόν τον αισθητήρα S2, ο κύριος πρέπει να καλέσει το Wire.requestΑπό (10, 8). Αυτή είναι η διεύθυνση 10 και το 8 είναι πόσα bytes ήθελαν. Επίσης στο 'setup ()' προσθέστε το Wire.onRequest (isr anyName). Όταν το Μ1 καλεί το αίτημα, ο αισθητήρας S2 αντιδρά με τη διακοπή. Αυτό απλώς καλεί τη συνάρτηση anyName. Αυτή η συνάρτηση anyName πρέπει να δημιουργηθεί. Κοιτάξτε το σκίτσο και δείτε τη συνάρτηση 'sendThis ()' Εδώ στέλνονται τα byte στην M1. Πάνε μόνο τα byte και ΟΧΙ τα ονόματα και με τη σειρά που αποστέλλεται. Από εδώ ξεκινά το μέγεθος και ο όγκος των δεδομένων προς αποστολή. Σε αυτήν την εύκολη μορφή byte, η αποστολή και λήψη πρέπει να ταιριάζουν. Εδώ αποστέλλονται 8 byte και λαμβάνονται 8 byte. Μια σημείωση εδώ είναι η κλήση μιας συνάρτησης απαιτεί το (). Όπως καθυστέρηση (), millis (), Serial.print (). Όταν χρησιμοποιείτε ISR (διακοπή ρουτίνας υπηρεσίας), η κλήση της λειτουργίας μειώνει το (). Έτσι το Wire.onRequest (sendThis) όχι το Wire.onRequest (sendThis ()).

Η σύγχυση που είχα ήταν το κύριο/σκλαβικό πράγμα. Στην αρχή νόμιζα ότι ο κύριος ήταν ΠΑΝΤΑ ο κύριος. Αλλά μέσα στο σκίτσο μπορείτε να αλλάξετε κύρια/υποτελή σε αίτημα από άλλα μικρότερα ή να στείλετε σε άλλα μικρό. Αρκεί να ακολουθήσετε τη βασική μορφή που περιγράφεται παραπάνω. Θυμηθείτε… μοιράζεστε ΜΟΝΟ τα δεδομένα που έχουν εκχωρηθεί.

Δύο από τα καθαρά κομμάτια του τοίχου. Η διακοπή isr διακόπτει μόνο μεταξύ των γραμμών σκίτσου. Εάν είστε κλειδωμένοι σε ένα βρόχο 'while or for', τίποτα δεν συμβαίνει μέχρι να βγει ο βρόχος. ΟΧΙ μεγάλη υπόθεση καθώς αυτό μπορεί να είναι λίγα μικροδευτερόλεπτα και τα δεδομένα είναι παλιά.

Το άλλο πρόβλημα είναι ότι «μέσα» σε έναν μικροϋπολογιστή υπάρχει 100% υπολογισμός χωρίς σφάλματα. Οποιαδήποτε επικοινωνία «έξω» (καλώδια) υπόκειται σε σφάλματα. Υπάρχουν πολλοί τρόποι για να ελέγξετε ότι τα δεδομένα που παραδίδονται είναι χωρίς σφάλματα και ταιριάζουν με την πηγή. Ο ευκολότερος τρόπος είναι με το άθροισμα ελέγχου. Απλώς προσθέστε τα σύνολα των byte αποστολής (πραγματικές τιμές) και στείλτε τα σύνολα και στο τέλος λήψης προσθέστε τα σύνολα και δείτε αν ταιριάζουν. Εάν ταιριάζουν εντάξει ή πετάξουν αυτό το σύνολο δεδομένων, αν δεν ταιριάζουν. Φυσικά αυτό περιλαμβάνει την αποστολή μιας ακέραιης τιμής και όχι byte. Έτσι, απλώς χωρίζετε τον ακέραιο σε byte HI και LO byte και στέλνετε ως ξεχωριστά byte. Στη συνέχεια, τοποθετήστε το στον δέκτη.

ΑΝΕΤΑ:

int x = 5696; (οποιαδήποτε έγκυρη τιμή int, το μέγιστο είναι 65k ή 32k αρνητικό)

byte hi = x >> 8; (22)

byte lo = x; (64)

στείλτε τα byte και συνδυάστε στο άλλο άκρο….

byte hi = Wire.read ();

byte lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

Βήμα 7: ΚΛΕΙΣΙΜΟ

ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ
ΚΛΕΙΣΙΜΟ

Για να κλείσει, αυτός ο ηχητικός αισθητήρας δίνει στη μητρική πλακέτα ακατέργαστα δεδομένα απόστασης σε πραγματικό χρόνο. Αυτό απελευθερώνει το μικρό και καθιστά το σκίτσο πολύ λιγότερο περίπλοκο. Το micro μπορεί τώρα να κάνει μια καλή απόφαση να επιβραδύνει, να στρίψει, να σταματήσει ή να αντιστραφεί με βάση καλά δεδομένα αντί για τυχαίες εικασίες. Δείτε την άλλη μου ανάρτηση σχετικά με το bluetooth IDE για να ανεβάζετε σκίτσα χωρίς καλώδια και να χρειάζεται να συνδέετε συνεχώς το ρομπότ σας για μια γρήγορη αλλαγή στο σκίτσο σας. Ευχαριστώ που το είδατε. oldmaninsc.

Συνιστάται: