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

Arduino Cradle Rocker: 19 βήματα (με εικόνες)
Arduino Cradle Rocker: 19 βήματα (με εικόνες)

Βίντεο: Arduino Cradle Rocker: 19 βήματα (με εικόνες)

Βίντεο: Arduino Cradle Rocker: 19 βήματα (με εικόνες)
Βίντεο: Automatic Baby Cradle | Automatic E-Baby Cradle Cry (Sound Sensor) Bed Using Arduino 2024, Ιούλιος
Anonim
Image
Image

Συγγνώμη, δεν μπορούσα να αντισταθώ στην έντονη μουσική που μου πρότεινε η επεξεργασία βίντεο.

Πρόσφατα είχα το πρώτο μου παιδί και είχα ήδη μια ξύλινη κούνια που έφτιαξε ο θείος μου (ο οποίος είναι φοβερός ξυλουργός) για τον ανιψιό μου. Ο ανιψιός μου το είχε ξεπεράσει από καιρό, έτσι ήμουν ευτυχής να το πάρω και να αποφύγω να ξοδέψω ΟΛΑ ΤΑ ΧΡΗΜΑΤΑ σε όποιο λίκνο/μπαστούνι οι μαμά μπλόγκερ είχαν ζητήσει από τη γυναίκα μου. Το λίκνο είναι ένα αρκετά απλό σχέδιο, βασικά δύο ορθοστάτες με μπουλόνια μέσα τους που υποστηρίζουν το σώμα της κούνιας. Υπάρχει ένα αφαιρούμενο μανταλάκι για να το κλειδώσετε στη θέση του.

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

Το πρωί μετά από αυτό, άρχισα να σκέφτομαι έναν τρόπο για να έχω ένα ρομπότ να ροκάρει αυτό το παιδί για μένα. Εισαγάγετε το Arduino…

Προμήθειες

Εντάξει, αυτό ήταν το πρώτο μου έργο Arduino ποτέ, οπότε έκανα κάποιους πειραματισμούς και δοκιμές και λάθη και είμαι σίγουρος ότι υπάρχει περιθώριο βελτίωσης στο σχεδιασμό μου, αλλά εδώ είναι η λίστα με τα μέρη μου: Arduino Uno ($ 13) για τον έλεγχο των πάντων κιτ ($ 10) για τη σύνδεση καλωδίων

Ο βηματικός κινητήρας ($ 14) Αυτό είναι το πιο διασκεδαστικό κομμάτι, γιατί είναι αυτό που κάνει όλη τη δουλειά. Ξεκίνησα με έναν ελαφρώς χαμηλότερο οδηγό ροπής, αλλά στη συνέχεια πήρα αυτόν και λειτουργεί αρκετά καλά. Μη διστάσετε να αποκτήσετε ένα ακόμη πιο ισχυρό. Προγράμματα οδήγησης Stepper ($ 10-30) Αυτό βρίσκεται μεταξύ του Arduino και του κινητήρα. Αυτό το συγκεκριμένο είναι προφανώς ικανό να κινεί τον κινητήρα πιο αθόρυβα από κάποιους άλλους, οπότε πήγα με αυτό αφού ο κινητήρας θα είναι λίγα πόδια από το κεφάλι μου (και του γιου μου) ενώ κοιμόμαστε. Αρχικά αγόρασα ένα πρόγραμμα οδήγησης TMC2209 για ~ 10 $, αλλά κατέληξα να αγοράσω ένα πακέτο των 4 επειδή είχα κάποια δυσκολία στην αρχή και ήθελα να βεβαιωθώ ότι δεν είχα τηγανίσει το χαρτόνι κάποια στιγμή. Τελικά κατέληξα να σκοτώσω 3 σανίδες, κάτι που με φέρνει στο επόμενο στοιχείο… Πυκνωτές! (10 $) Χρειάζεστε πραγματικά μόνο 1 πυκνωτή 1 47 uF 50V, οπότε αυτό το κουτί των 240 ήταν υπερβολικό. Ένα τροφοδοτικό 36V (17 $) Αγόρασα αρχικά μια παροχή 12V, και έμαθα ότι αυτή ήταν η πηγή όλων των προβλημάτων μου και πήρα ένα που ήταν πιο κοντά στη μέγιστη τάση που μπορούσε να χειριστεί το βηματικό μοτέρ μου. Εάν χρησιμοποιείτε διαφορετικό πρόγραμμα οδήγησης κινητήρα ή stepper, βεβαιωθείτε ότι μπορεί να χειριστεί την τάση (V) και ότι το Amperage (A) της παροχής είναι τουλάχιστον τόσο υψηλό όσο τα κορυφαία ενισχυτικά που τραβάει ο κινητήρας. Γυναικείες πρίζες ($ 8) Αυτό συνδέεται με το τροφοδοτικό. Θα χρειαστεί να τα κολλήσετε σε μερικά καλώδια για να κολλήσετε στο ψωμί σας. Ένα μεγάλο πακέτο άλτες ($ 9) για να μπορέσω να βάλω τα χειριστήρια όπου ήθελα στο δωμάτιο.

Κουμπιά ($ 8) για ενεργοποίηση/απενεργοποίηση κ.λπ

Ενισχυτής μικροφώνου ($ 11) Ω, δεν ήξερες ότι ήταν ενεργοποιημένος και ο ήχος;

Κάποιες μικρές τροχαλίες τροχαλίας ($ 8) κατέληξα να τις χρησιμοποιώ, αλλά μπορεί να υπάρχουν καλύτερες εναλλακτικές λύσεις. Περισσότερα για αυτό αργότερα. Θα χρειαστείτε επίσης σίγουρα ένα συγκολλητικό σίδερο και ό, τι θέλετε να χρησιμοποιήσετε για να τοποθετήσετε τον κινητήρα. Εγώ προσωπικά έφτιαξα ένα τραχύ κουτί από 4 βιδωμένα κομμάτια ξύλου και μετά τα έβγαλα σε ένα άλλο κομμάτι ξύλου που έχει περίπου το πλάτος του λαιμού μου. Προς το παρόν το έχω σφίξει γιατί δεν ξέρω αν θέλω να αμαυρώσω το λίκνο του θείου μου.

Βήμα 1: Εξοικειωθείτε με το Pinout οδηγού Stepper

Συνδέστε το Arduino 5V/GND στο Breadboard σας
Συνδέστε το Arduino 5V/GND στο Breadboard σας

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

Βήμα 2: Συνδέστε το Arduino 5V/GND στο Breadboard σας

Συνδέστε ένα καλώδιο από το Arduino 5V στη ράγα "+" στη μία πλευρά του breadboard σας Συνδέστε ένα καλώδιο από ένα από τα Arduino GND στη ράγα "-" στην ίδια πλευρά του breadboard

(αγνοήστε το

Βήμα 3: Συνδέστε τις ράγες +/- στο VIO/GND

Συνδέστε τις ράγες +/- στο VIO/GND
Συνδέστε τις ράγες +/- στο VIO/GND

Συνδέστε ένα καλώδιο από τη ράγα "-" στο GND στο κάτω αριστερό μέρος της πλακέτας οδηγού stepper. Συνδέστε ένα καλώδιο από τη ράγα "+" στο VIO

Βήμα 4: Συνδέστε το DIR/STEP με τις ψηφιακές ακίδες στο Arduino

Συνδέστε το DIR/STEP με τις ψηφιακές ακίδες στο Arduino
Συνδέστε το DIR/STEP με τις ψηφιακές ακίδες στο Arduino

Συνδέστε τους ακροδέκτες DIR και STEP από την πλακέτα προγράμματος οδήγησης stepper σε δύο από τις ψηφιακές ακίδες του Arduino. Χρησιμοποίησα τις καρφίτσες 2 & 3, αντίστοιχα, αλλά δεν έχει σημασία αρκεί να ορίσετε τις καρφίτσες στον κώδικά σας αργότερα.

Βήμα 5: Ας πάμε μπροστά και προσθέστε αυτόν τον πυκνωτή…

Ας πάμε μπροστά και προσθέστε αυτόν τον πυκνωτή…
Ας πάμε μπροστά και προσθέστε αυτόν τον πυκνωτή…

Έκαψα 2 πίνακες οδηγών stepper επειδή δεν είχα πυκνωτή στη θέση του, οπότε προχωράμε και προσθέτουμε τον πυκνωτή 47uF 50V στις καρφίτσες VM/GND στην πλακέτα οδηγού. Βεβαιωθείτε ότι ο πείρος "-" στον πυκνωτή βρίσκεται στην καρφίτσα GND στο ψωμί (θα υπάρχει ένα "-" στην αντίστοιχη πλευρά του πυκνωτή)

Βήμα 6: Και προχωρήστε και συνδέστε αυτό το GND

Και προχωρήστε και συνδέστε αυτό το GND
Και προχωρήστε και συνδέστε αυτό το GND

Στο GND στο οποίο μόλις προσθέσατε τον πυκνωτή, προχωρήστε και συνδέστε το στην ίδια "-" ράγα με το άλλο GND.

Βήμα 7: Συνδέστε το μοτέρ στο πρόγραμμα οδήγησης

Συνδέστε το μοτέρ στο πρόγραμμα οδήγησης
Συνδέστε το μοτέρ στο πρόγραμμα οδήγησης

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

Για το μοτέρ μου -

Συνδέστε το Green & Black στο M2B & M2A

Σύνδεση Red & Blue με M1A & M1BΣημείωση: Εάν για οποιονδήποτε λόγο ο κινητήρας σας δεν έχει διάγραμμα, μπορείτε εύκολα να καταλάβετε ποια καλώδια σχηματίζουν ένα κύκλωμα εάν έχετε πολύμετρο. Ρυθμίστε το πολύμετρό σας σε ρύθμιση χαμηλού ενισχυτή και αποσυνδέστε τον κινητήρα σας. Αγγίξτε ένα από τα καλώδια του πολύμετρου σε ένα από τα καλώδια του κινητήρα και, στη συνέχεια, δοκιμάστε καθένα από τα άλλα καλώδια με το άλλο καλώδιο. Εάν λάβετε ένδειξη αντίστασης, τότε αυτά τα δύο καλώδια σχηματίζουν 1 κύκλωμα και τα άλλα δύο σχηματίζουν το άλλο.

Βήμα 8: Συνδέστε τα EN, MS1 και MS2 σε "-"

Συνδέστε τα EN, MS1 και MS2 σε
Συνδέστε τα EN, MS1 και MS2 σε

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

Βήμα 9: Κολλήστε έναν θηλυκό συνδετήρα ρεύματος σε δύο καλώδια

Συγκολλήστε έναν θηλυκό συνδετήρα ρεύματος σε δύο καλώδια
Συγκολλήστε έναν θηλυκό συνδετήρα ρεύματος σε δύο καλώδια

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

Βήμα 10: Συνδέστε το θηλυκό συνδετήρα που προσκολλήθηκε πρόσφατα

Συνδέστε το θηλυκό συνδετήρα που προσκολλήθηκε πρόσφατα
Συνδέστε το θηλυκό συνδετήρα που προσκολλήθηκε πρόσφατα

Μην συνδέσετε το πραγματικό τροφοδοτικό σας ακόμα. Κόκκινο σύρμα σε "+", μαύρο σε "-"

Βήμα 11: Συνδέστε αυτά στο VM/GND

Συνδέστε αυτά στο VM/GND
Συνδέστε αυτά στο VM/GND

Συνδέστε αυτές τις ράγες "+" και "-" με το VM και το GND δίπλα του. Αυτά με τον πυκνωτή πάνω του.

Βήμα 12: Θαυμάστε το έργο σας

Θαυμάστε το έργο σας
Θαυμάστε το έργο σας

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

  • Εάν έχετε αποσυνδέσει το πρόγραμμα οδήγησης για οποιονδήποτε λόγο, μην προσπαθήσετε να το συνδέσετε ενώ είναι συνδεδεμένο το ρεύμα 36V. Σκότωσα τον 3ο πίνακα οδηγού μου έτσι.
  • Συνδέστε την τροφοδοσία 36V πριν συνδέσετε την τροφοδοσία Arduino. Προσωπικά δεν τηγάνισα ένα Arduino, αλλά στην πορεία είδα πολλές προειδοποιήσεις για αυτό.

Βήμα 13: Προαιρετικό - Ελέγξτε το VREF

Το TMC2209 διαθέτει ποτενσιόμετρο που ελέγχει το ρεύμα στον κινητήρα. Αν έχετε τον ίδιο οδηγό που είχα εγώ, μπορείτε να διαβάσετε για αυτό εδώ. Εάν θέλετε να προσαρμόσετε τη ρύθμιση:

  • Αποσυνδέστε όλη την τροφοδοσία και αποσυνδέστε τα καλώδια του κινητήρα από τον οδηγό.
  • Αποσυνδέστε το καλώδιο στην καρφίτσα EN (ενεργοποίηση) του προγράμματος οδήγησης. Αυτή είναι η καρφίτσα στην επάνω αριστερή γωνία.
  • Συνδέστε το τροφοδοτικό του κινητήρα σας (το 36V)
  • Χρησιμοποιώντας ένα πολύμετρο ρυθμισμένο σε 20V, αγγίξτε το ένα καλώδιο σε μια πηγή GND (χρησιμοποίησα ένα καλώδιο σύνδεσης στη ράγα μου "-") και αγγίξτε το άλλο καλώδιο στον πείρο VREF. Μην αγγίζετε το καλώδιο για οτιδήποτε άλλο, ΜΠΟΡΕΙΤΕ να βραχυκυκλώσετε τον οδηγό σας αν το κάνετε.
  • Χρησιμοποιήστε ένα μικρό κατσαβίδι για να ρυθμίσετε απαλά τη βίδα του ποτενσιόμετρου. Για τον πίνακα μου, αριστερόστροφα = περισσότερη ισχύς. Το VREF μου διαβάζει προσωπικά 6 0,6V.

Βήμα 14: Κουμπιά

Κουμπιά!
Κουμπιά!

Στη συνέχεια, συνδέστε τα κουμπιά σας έτσι. Δεν χρειάζονται δύναμη.

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

Χρησιμοποίησα 4 κουμπιά: Ενεργοποίηση/απενεργοποίηση κινητήρα

Ο κινητήρας συνεχίζεται

Μικρόφωνο ενεργοποιημένο

Το μικρόφωνο είναι απενεργοποιημένο

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

Βήμα 15: Προσθέστε την πλακέτα μικροφώνου

Προσθέστε την πλακέτα μικροφώνου
Προσθέστε την πλακέτα μικροφώνου

Αυτό είναι απλό και το Adafruit έχει καλές οδηγίες (και βασικά για συγκόλληση!) Εδώ.

  • Συνδέστε "-" σε GND
  • Συνδέστε το GND στην πλακέτα μικροφώνου στο "-" (μπορείτε να συνδέσετε απευθείας το GND με το GND και να παραλείψετε το προηγούμενο βήμα, πραγματικά)
  • Συνδέστε το VCC στην τροφοδοσία 3,3V στο Arduino. Αυτό είναι σημαντικό καθώς αυτό το τροφοδοτικό είναι λιγότερο «θορυβώδες» από το 5V, με αποτέλεσμα καλύτερες ενδείξεις μικροφώνου
  • Συνδέστε το OUT σε μια καρφίτσα ANALOG IN στο Arduino. Χρησιμοποίησα το A0.

Βήμα 16: Αυτό πρέπει να είναι το τελικό αποτέλεσμα

Αυτό πρέπει να είναι το τελικό αποτέλεσμα!
Αυτό πρέπει να είναι το τελικό αποτέλεσμα!
Αυτό πρέπει να είναι το τελικό αποτέλεσμα!
Αυτό πρέπει να είναι το τελικό αποτέλεσμα!

Όλα πρέπει να είναι έτοιμα τώρα. Εδώ είναι μια εικόνα του τελικού διαγράμματος και το μπέρδεμά μου από καλώδια στην πραγματικότητα. Ας δούμε λίγο κώδικα!

Βήμα 17: Κωδικός

Εντάξει ας δούμε τον κώδικα! Αυτή δεν είναι η καθαρότερη δουλειά μου, αλλά κάνει τη δουλειά. Έχω προσθέσει σχόλια για να τα εξηγήσω όλα εδώ, αλλά αντέξτε με. Χρησιμοποίησα το Arduino IDE για όλα αυτά (διατίθεται δωρεάν σε Windows και Mac)

Ορίστε έναν αριθμό βράχων (κούνιες) για να κάνετε.

Γυρίστε την καθορισμένη απόσταση για 1 περιστροφή. Περιστρέψτε έναν ορισμένο αριθμό φορών.

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

#include // "τυπική" βιβλιοθήκη stepper motor

//#define DEBUG 1 // μην το σχολιάζετε όταν θέλετε να προσαρμόσετε τα επίπεδα μικροφώνου // Ρύθμιση κουμπιού - αυτά αντιστοιχούν στο σημείο όπου οι ψηφιακές ακίδες που συνδέσατε με τα κουμπιά αποτελούνται από την ενότητα motorEnablePin = 10; const int continuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Ρύθμιση μικροφώνου - A0 εδώ είναι το αναλογικό για το μικρόφωνο. Το παράθυρο δείγματος είναι σε millis const int micPin = A0; const int sampleWindow = 1000; ανυπόγραφο δείγμα int? bool micEnabled = false; διπλό μικρό Ευαισθησία = 0,53; // μάλλον θα χρειαστεί να το αλλάξετε αυτό // Για μένα, το.5 ήταν αρκετά καλό για να μην πυροβολεί σε μικρές γκρίνιες // αλλά θα πυροβολεί για μικρές κραυγές στα βήματαPerRevolution = 3200; // αλλάξτε αυτό για να ταιριάζει στον αριθμό των βημάτων ανά περιστροφή για τον κινητήρα σας // Ο κινητήρας μου είναι 200 βήματα/περιστροφή // Αλλά έβαλα το πρόγραμμα οδήγησης σε 1/16 μικροβήματα // έτσι 200*16 = 3200… ειλικρινά δεν έχω ιδέα αν αυτό είναι ο σωστός τρόπος // για να το κάνετε αυτό το Stepper myStepper (βήματαPerRevolution, 2, 3). // 2 & 3 είναι οι ακίδες DIR & STEP int stepCount = 0; int motorSpeed = 95; // θα χρειαστεί να το προσαρμόσετε σύμφωνα με το βάρος της κούνιας & του μωρού σας int numSteps = 90; // Η απόσταση που θα κινηθεί ο κινητήρας. // Θα πρέπει να το προσαρμόσετε με βάση την ακτίνα του τροχού που συνδέετε // στον κινητήρα σας. Αυτό και η ταχύτητα θα είναι πιθανώς δοκιμή και λάθος. // Σημείωση - υψηλότερη ταχύτητα σε βηματικούς κινητήρες = χαμηλότερη αποτελεσματική ροπή // Εάν δεν έχετε αρκετή ροπή, ο κινητήρας σας θα παραλείψει βήματα (δεν θα κινηθεί) στο oldmotorButtonValue = HIGH; bool enabled = false; // κινητήρας ενεργοποιημένος; int loopStartValue = 0; int maxRocks = 100; // πόσες φορές θέλετε να ροκάρει πριν απενεργοποιήσετε το int rockCount = 0; void setup () {#ifdef DEBUG Serial.begin (9600); // για καταγραφή σφαλμάτων #endif pinMode (motorEnablePin, INPUT_PULLUP); // Αυτή είναι μια ρύθμιση για να λειτουργούν τα κουμπιά χωρίς powerMode (συνέχειαPin, INPUT_PULLUP). pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // ρυθμίζει την ταχύτητα του κινητήρα σε αυτό που καθορίσατε νωρίτερα} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead απλώς διαβάζει τις τιμές του κουμπιού int continueValue = digitalRead (continuePin); // Αυτό ανιχνεύει το πάτημα του κουμπιού κινητήρα και το εμποδίζει να πυροδοτεί περισσότερες από μία φορές ανά κλικ εάν (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {ενεργοποιημένο =! Ενεργοποιημένο; } micCheck (); // Εάν ο κινητήρας είναι απενεργοποιημένος και το μικρόφωνο είναι ενεργοποιημένο, ακούστε το κλάμα του μωρού εάν (! Ενεργοποιήθηκε && micEnabled) {if (getMicReading ()> = micSensitivity) ενεργοποιήθηκε = true; } if (ενεργοποιημένο) {stepsPerRevolution = stepsPerRevolution * -1; // αντίστροφη κατεύθυνση // Με τη ρύθμισή μου είναι πιο αποτελεσματικό να αντιστρέφεται // στην πρώτη κούνια. Μπορείτε να το βάλετε μετά τον βρόχο // αν αυτό δεν ισχύει για το δικό σας // περιστρέψτε τον κινητήρα την απόσταση που καθορίστηκε παραπάνω για (int i = loopStartValue; i <numSteps; i ++) {// ελέγξτε για απενεργοποίηση int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Αυτές οι δύο επόμενες γραμμές "σώζουν" τη θέση του κινητήρα, έτσι ώστε την επόμενη φορά που θα τον ενεργοποιήσετε // θα συνεχίσει να ταξιδεύει σαν να μην τον είχατε απενεργοποιήσει. Αυτό αποτρέπει την απόρριψη // τις αποστάσεις κίνησης σας loopStartValue = i; // αποθήκευση θέσης βήματαPerRevolution = βήματαPerRevolution * -1; // διατηρεί την κατεύθυνση oldmotorButtonValue = tempmotorButtonValue; Διακοπή; } checkContinue (continueValue); // ελέγξτε αν πατήθηκε το κουμπί συνέχισης micCheck (); myStepper.step (stepsPerRevolution / 50); // πόσα βήματα πρέπει να κάνετε ανά βρόχο, // μπορεί να χρειαστεί να το προσαρμόσετε // βεβαιωθείτε ότι συνεχίζουμε την πλήρη απόσταση βρόχου εάν τελειώσει ο βρόχος // αυτό παίζει αν απενεργοποιήσετε τον κινητήρα μόνοι σας και "σώσει" θέση εάν (i == numSteps - 1) {loopStartValue = 0; }}} καθυστέρηση (100); // παύση 100 millis πριν κάνετε το επόμενο ροκ. Θα πρέπει να το προσαρμόσετε αυτό. εάν (ενεργοποιημένο) τσεκάρετε Ολοκλήρωση (); oldmotorButtonValue = motorButtonValue; // αυτό χρησιμοποιείται για την αποτροπή διπλών κλικ} // Αυτός ο κώδικας προέρχεται απευθείας από το Adafruit. διπλό getMicReading () {unsigned long startMillis = millis (); ανυπόγραφο int peakToPeak = 0; // επίπεδο κορυφής σε κορυφή χωρίς υπογραφή int signalMax = 0; ανυπόγραφο int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); εάν (digitalRead (motorEnablePin) == LOW) ενεργοποιημένο = true δείγμα = analogRead (micPin); εάν (δείγμα signalMax) {signalMax = δείγμα? // αποθηκεύστε μόνο τα μέγιστα επίπεδα} else if (δείγμα = maxRocks) {enabled = false; rockCount = 0; // επιστροφή στη μέση θέση

για (int i = loopStartValue; i <numSteps/2; i ++) {

myStepper.step (stepsPerRevolution * -1 / 50); // βήμα 1/100 μιας επανάστασης:

}

} }

Βήμα 18: Τοποθέτηση & ρύθμιση τροχού

Τοποθέτηση & Ρύθμιση τροχού
Τοποθέτηση & Ρύθμιση τροχού

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

  • Βάλτε ένα σφιγκτήρα για να λειτουργήσει ως βραχίονας που βγαίνει από την κούνια, έτσι ώστε ο τροχός μου να μπορεί να τραβήξει σε ευθεία γραμμή
  • Βιδώσαμε μαζί ένα ακατέργαστο κουτί για να βάλουμε τον κινητήρα και το βιδώσαμε σε μια πλάκα βάσης, την οποία έσφιξα στο πόδι της κούνιας
  • Κατασκεύασε έναν προσαρμοσμένο ξύλινο τροχό τροχαλίας με μια τρύπα για να χωρέσει το μικρό stepper τροχαλία τροχού μέσα. Έκανα την κεντρική τρύπα πολύ σφιχτή και μόλις έφυγα στο τροχό τροχαλίας stepper. Άνοιξα μια τρύπα στον τροχό στη μέση, ώστε να έχω πρόσβαση στη βίδα στον μεταλλικό τροχό τροχαλίας για να τη σφίξω στον βηματικό κινητήρα.
  • Τρέξτε μια χορδή από το "βραχίονα" της κούνιας στον τροχό. Ασφάλισα το κορδόνι περνώντας το μέσα από την τρύπα που είχα ανοίξει και απλά το χτύπησα στη θέση του.

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

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

Βήμα 19: Τελική ρύθμιση

Τελική ρύθμιση
Τελική ρύθμιση

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

Συνιστάται: