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

Διαδραστικό φως χωρίς άγγιγμα: 7 βήματα (με εικόνες)
Διαδραστικό φως χωρίς άγγιγμα: 7 βήματα (με εικόνες)

Βίντεο: Διαδραστικό φως χωρίς άγγιγμα: 7 βήματα (με εικόνες)

Βίντεο: Διαδραστικό φως χωρίς άγγιγμα: 7 βήματα (με εικόνες)
Βίντεο: Τρομακτικές ιστορίες για καληνύχτα | Συλλογή #7 2024, Νοέμβριος
Anonim
Διαδραστικό φως χωρίς επαφή
Διαδραστικό φως χωρίς επαφή

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

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

Μερικά προβλήματα που αντιμετώπισα από νωρίς προκλήθηκαν από παρεξήγηση του τι συμβαίνει στην πραγματικότητα. Μια σύντομη εισαγωγή από το πώς το καταλαβαίνω:

Ένας χωρητικός αισθητήρας χρησιμοποιεί πολλά στοιχεία, κυρίως:

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

και μια αντίσταση, οτιδήποτε κάτω από 10 MOhm είναι πολύ μικρή αντίσταση για περισσότερο από άμεσο άγγιγμα.

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

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

Έτσι, τώρα είναι εκτός δρόμου, μπορούμε να ξεκινήσουμε την απογραφή όλων των υλικών που χρειαζόμαστε:

Βήμα 1: Τι χρειαζόμαστε;

ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ:

1. 2 αντιστάσεις 22 x Ohm + (όσο μεγαλύτερη είναι η τιμή αντίστασης όσο πιο μακριά αντιδρά ο αισθητήρας σας, προσωπικά χρησιμοποίησα 22M Ohm, το ελάχιστο για να λάβω χρησιμοποιήσιμα δεδομένα που βίωσα ήταν 10M Ohm)

2. Αντιστάσεις 3x 330 Ohm

3. Σύρματα

4. Breadboard

5. Πλακέτα κυκλώματος (το δικό μου είχε ταινίες χαλκού Continouos)

6. Πολλαπλές κοινές λυχνίες RGB Cathode (χρησιμοποίησα 8, αλλά μπορείτε να έχετε περισσότερο ή λιγότερο εξαρτάται από το πόσο φως θέλετε)

7. Αλουμινόχαρτο

8. Κολλήστε το περιτύλιγμα

9. Arduino Uno

10. Ταινία

Η υπόθεση:

1. Ξύλο Χρησιμοποίησα MDF 50 x 50 x 1.8 CM (μπορείτε να χρησιμοποιήσετε οτιδήποτε πραγματικά. Εξαρτάται από το αποτέλεσμα που θέλετε και τα εργαλεία που έχετε στη διάθεσή σας)

2. Ακρυλικό πλεξιγκλάς χρησιμοποίησα 50 x 50 x 0,3 CM (ή οποιοδήποτε άλλο διαφανές/ημιδιαφανές υλικό όπως ρυζόχαρτο)

3. Γυαλόχαρτο (λεπτό γυαλόχαρτο)

4. Ξύλο-κόλλα

5. καπλαμά (προαιρετικό)

6. Ακρυλική κόλλα

Εργαλεία:

Απογυμνωτής καλωδίων

Συγκολλητικό σίδερο + κασσίτερος

Μαχαίρι Stanley

τρυπάνι

Πριόνι (χρησιμοποίησα επιτραπέζιο πριόνι)

Βήμα 2: Πρωτότυπο:

Πρωτότυπο
Πρωτότυπο
Πρωτότυπο
Πρωτότυπο

Τώρα έχουμε τα πάντα και μπορούμε να ξεκινήσουμε να φτιάχνουμε ένα πρωτότυπο για να δούμε πώς λειτουργεί:

Προετοιμασία:

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

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

Στη συνέχεια, ρυθμίστε το κύκλωμα όπως φαίνεται στην εικόνα.

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

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

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

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

Για να χρησιμοποιήσετε τον κωδικό μου θα πρέπει να κατεβάσετε τη βιβλιοθήκη χωρητικής ανίχνευσης από το Arduino και να την εγκαταστήσετε σύμφωνα με τις οδηγίες που δίνονται από τη σελίδα αναφοράς: Κάντε κλικ σε εμένα

Ο κωδικός: (Δεν είμαι καλός στην κωδικοποίηση, οπότε αν ξέρετε πώς να το κάνετε καλύτερα, κάντε το)

#include // εισαγωγή της βιβλιοθήκης κωδικών

CapacitiveSensor cs_4_2 = CapacitiveSensor (4, 2); // Αποστολή pin = 4, η λήψη είναι 2 και 5 CapacitiveSensor cs_4_5 = CapacitiveSensor (4, 5); const int redPin = 11; const int greenPin = 10; const int bluePin = 9; const int numIndexR = 10; // μέγεθος πίνακα const int numIndexG = 10; int χρώμαR = 0; int χρώμαG = 0; float colorB = 0; int indexR [numIndexR]; int posIndexR = 0; μακρύ σύνολοR = 0; // πρέπει να είναι μακρύ γιατί το σύνολο του πίνακα μου ήταν μεγάλο για έναν ακέραιο. int μέσο R = 0; int indexG [numIndexG]; int posIndexG = 0; μακρύ σύνολο G = 0; int μέσο όροG = 0; void setup () {pinMode (redPin, OUTPUT); pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); για (int thisIndexR = 0; thisIndexR <numIndexR; thisIndexR ++) {// ορίζει τον πίνακα σε 0 indexR [thisIndexR] = 0; } για (int thisIndexG = 0; thisIndexG = 4500) {// οριοθετήστε τις τιμές του αισθητήρα στο μέγιστο που μπορεί να χρησιμοποιηθεί, αυτό δεν είναι το ίδιο για κάθε τιμή αντίστασης και μπορεί επίσης να διαφέρει λίγο από περιβάλλον σε περιβάλλον, ίσως χρειαστεί να το αλλάξετε τις δικές σας ανάγκες. σύνολο1 = 4500; } if (total2> = 4500) {total2 = 4500; } totalR = totalR - indexR [posIndexR]; // αυτό εδώ δημιουργεί έναν πίνακα που προσθέτει συνεχώς μια έξοδο αισθητήρα και παράγει τον μέσο όρο. indexR [posIndexR] = total1; totalR = totalR + indexR [posIndexR]; posIndexR = posIndexR + 1; εάν (posIndexR> = numIndexR) {posIndexR = 0; } averageR = totalR / numIndexR; // χρησιμοποιούμε τον μέσο όρο αντί για τα ακατέργαστα δεδομένα για να εξομαλύνουμε την έξοδο, επιβραδύνει ελαφρώς τη διαδικασία, αλλά δημιουργεί επίσης μια πραγματικά ωραία ομαλή ροή. totalG = totalG - indexG [posIndexG]; indexG [posIndexG] = σύνολο2; totalG = totalG + indexG [posIndexG]; posIndexG = posIndexG + 1; εάν (posIndexG> = numIndexG) {posIndexG = 0; } averageG = totalG / numIndexG; εάν (averageR> = 2000) {// δεν θέλουμε τα led να αλλάζουν συνεχώς την αξία τους, εκτός εάν υπάρχει εισροή από το χέρι σας, οπότε αυτό διασφαλίζει ότι δεν λαμβάνονται υπόψη όλες οι χαμηλότερες περιβαλλοντικές μετρήσεις. χρώμαR = χάρτης (μέσος όροςR, 1000, 4500, 255, 0); analogWrite (redPin, colorR); } else if (averageR = 1000) {colorG = χάρτης (averageG, 1000, 4500, 255, 0); analogWrite (greenPin, colorG); } else if (averageG <= 1000) {colorG = 255; analogWrite (greenPin, colorG); } if (colorR <= 125 && colorG <= 125) {// B λειτουργεί λίγο διαφορετικά γιατί χρησιμοποίησα μόνο 2 αισθητήρες, οπότε χαρτογράφησα το Β και στους δύο αισθητήρες colorB = map (colorR, 255, 125, 0, 127.5) + map (χρώμαG, 255, 125, 0, 127.5); analogWrite (bluePin, colorB); } else {colorB = map (colorR, 255, 125, 127.5, 0) + map (colorG, 255, 125, 127.5, 0); εάν (χρώμαΒ> = 255) {χρώμαΒ = 255; } if (colorB <= 0) {colorB = 0; } analogWrite (bluePin, colorB); } Serial.print (millis () - έναρξη); // αυτό είναι για σκοπούς εντοπισμού σφαλμάτων Serial.print ("\ t"); Serial.print (colorR); Serial.print ("\ t"); Serial.print (colorG); Serial.print ("\ t"); Serial.println (χρώμαB); καθυστέρηση (1)? }

Αυτό που κάνει αυτός ο κώδικας είναι η εξαγωγή των ακατέργαστων δεδομένων από τον αισθητήρα (αυτά τα δεδομένα θα είναι πάντα ελαφρώς ακανόνιστα λόγω όλων των διαφορετικών παραγόντων που επηρεάζουν τον αισθητήρα) και τα βάζει συνεχώς τα ακατέργαστα δεδομένα σε έναν πίνακα, όταν ο πίνακας φθάνει σε μέγιστη τιμή (στην περίπτωσή μου 10) καθαρίζει την τελευταία τιμή και προσθέτει μια νέα. Κάθε φορά που προστίθεται μια τιμή υπολογίζει τη μέση τιμή και την τοποθετεί σε μια νέα μεταβλητή. Αυτή η μέση μεταβλητή χρησιμοποιείται για να αντιστοιχίσει μια τιμή σε μια τιμή από 0 έως 255, αυτή είναι η τιμή που γράφουμε στις ακίδες RGB για να αυξήσουμε τη φωτεινότητα κάθε καναλιού (τα κανάλια είναι R G και B).

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

Βήμα 4: Τώρα για την υπόθεση:

Τώρα για την υπόθεση
Τώρα για την υπόθεση
Τώρα για την υπόθεση
Τώρα για την υπόθεση
Τώρα για την υπόθεση
Τώρα για την υπόθεση

Περίπτωση: Έκανα την υπόθεση χρησιμοποιώντας εργαλεία διαθέσιμα μέσω του πανεπιστημίου μου, οπότε αυτή η ροή εργασίας δεν ισχύει για όλους. Ωστόσο, δεν υπάρχει τίποτα πολύ ιδιαίτερο σε αυτό, χρειάζεται μια τρύπα στη μία πλευρά για να χωρέσει η θύρα USB, αλλά εκτός από αυτό είναι ένα ανοιχτό κουτί.

Οι διαστάσεις έχουν ως εξής:

15 x 15 CM για τη διαφανή κορυφή

και

15 x 8 CM για την ξύλινη βάση (το πάχος του ξύλου ήταν 1,8 CM για μένα).

Χρησιμοποίησα ένα επιτραπέζιο πριόνι για να κόψω μια πλάκα από MDF στις σωστές διαστάσεις που χρειαζόμουν (που είναι 4 πάνελ 15 x 8 CM και 1 15 x 15 CM), μετά την οποία έκοψα τις γωνίες σε γωνία 45 μοιρών. Όλα τα μέρη που κόλλησα μαζί χρησιμοποιώντας κόλλα ξύλου και σφιγκτήρες (αφήστε το να στεγνώσει τουλάχιστον 30 λεπτά), χρησιμοποίησα την ίδια διαδικασία για το πλεξιγκλάς αλλά με ειδική λεπίδα πριονιού.

1 από τις ξύλινες πλευρές θα πρέπει να έχει μια τρύπα στο κέντρο στο ύψος του βύσματος USB arduino για να επιτρέπεται η σύνδεση του arduino.

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

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

Το καπάκι που κόλλησα μαζί χρησιμοποιώντας μια κόλλα ειδική για το Acryl που ονομάζεται Acryfix.

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

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

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

Βήμα 5: Το τελικό αποτέλεσμα πρέπει να μοιάζει με αυτό:

Το τελικό αποτέλεσμα πρέπει να φαίνεται κάπως έτσι
Το τελικό αποτέλεσμα πρέπει να φαίνεται κάπως έτσι

Βήμα 6: Συγκόλληση

Συγκόλληση!
Συγκόλληση!
Συγκόλληση!
Συγκόλληση!

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

Η πλακέτα μου έχει συνεχείς ταινίες χαλκού για ευκολία στη χρήση.

Για κάθε αισθητήρα έκοψα ένα μικρό τετράγωνο για να κολλήσω τις αντιστάσεις και τα καλώδια.

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

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

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

Timeρα να τοποθετήσετε τα πάντα στη βάση: Αυτό είναι σχεδόν το πιο εύκολο βήμα, το arduino πρέπει να τοποθετηθεί πρώτα με τη θύρα USB μέσα από την τρύπα στο πίσω μέρος της θήκης. Τώρα προσθέστε τους αισθητήρες, βεβαιωθείτε ότι το φύλλο αισθητήρα ταιριάζει με το ξύλο και από τις δύο πλευρές, με το έδαφος να είναι ίσιο απέναντί του. Όταν όλα ταιριάζουν καλά, συνδέστε τα led RGB στις σωστές ακίδες (9, 10, 11) και αφήστε το να ακουμπήσει στις άκρες της βάσης.

Βήμα 7: Τελειώσαμε

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

Συνιστάται: