Πίνακας περιεχομένων:
- Βήμα 1: Βίντεο αλληλεπίδρασης
- Βήμα 2: Δήλωση προβλήματος
- Βήμα 3: Επισκόπηση του τρόπου λειτουργίας
- Βήμα 4: Λίστα υλικών και εργαλείων
- Βήμα 5: Ξεκινήστε να χτίζετε με το Breadboard
- Βήμα 6: Εκκίνηση του κώδικα
- Βήμα 7: Τελειώνοντας τις πινελιές
Βίντεο: Χρονόμετρο Αίθουσας Μελέτης: 7 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Οδηγίες για το πώς να δημιουργήσετε ένα χρονόμετρο για μια αίθουσα μελέτης.
Βήμα 1: Βίντεο αλληλεπίδρασης
drive.google.com/file/d/12z5zQR52AXILX2AGb3EplfbmZWANZiCl/view?usp=drivesdk
Βήμα 2: Δήλωση προβλήματος
Τις περισσότερες φορές, οι αίθουσες μελέτης λαμβάνονται πάντα. Αυτό συμβαίνει επειδή στους ανθρώπους αρέσει να μένουν στο δωμάτιο για πολύ περισσότερο από όσο χρειάζονται. Έχουμε σχεδιάσει ένα χρονόμετρο που επιτρέπει σε κάθε άτομο συνολικά 2 ώρες και σε άτομα που περιμένουν τη δυνατότητα να ζητήσουν από το δωμάτιο να είναι η επόμενη ομάδα. Η χρήση RGB στα Neopixels θα εκφράσει τον χρόνο που απομένει.
Βήμα 3: Επισκόπηση του τρόπου λειτουργίας
Ο χρονοδιακόπτης αποτελείται από μέρη που κόβονται από τον κόφτη λέιζερ, 3 κουμπιά, 1 LED, 1 ποτενσιόμετρο.
Το Neopixels και το ποτενσιόμετρο είναι συνδεδεμένα στο NodeMCU. Το NodeMCU έχει προγραμματιστεί να επανασυντονίζει πόσο μακριά είναι το ποτενσιόμετρο για να αλλάξει την ποσότητα των LED που ανάβουν στην κυκλική ταινία Neopixel. Το κουμπί Αίτηση σταματά τη λειτουργία της λειτουργίας Έναρξη, Διακοπή και Ρύθμιση ώρας. Το χρώμα των LED στο χρονόμετρο μέσα στο δωμάτιο είναι το ίδιο χρώμα με το LED που ανάβει στο πλάι του κουτιού. Το neopixel στο πλάι του κουτιού αντιπροσωπεύει την οθόνη στο λόμπι του κτιρίου για να γνωρίζετε ποιο δωμάτιο έχει ληφθεί και πόσος χρόνος απομένει. Για κάθε δωμάτιο συνταγογραφούνται 2 LED, το ένα LED αντιπροσωπεύει εάν το δωμάτιο έχει ληφθεί και το άλλο led καθρεφτίζει το χρώμα των LED στο χρονόμετρο (το πράσινο είναι περισσότερος χρόνος, μετά το κίτρινο και μετά το κόκκινο για λιγότερο χρόνο).
Βήμα 4: Λίστα υλικών και εργαλείων
-Καθαρό ακρυλικό
-Καλώδιο MicroUSB
www.digikey.com/product-detail/en/stewart-…
-Breadboard
www.amazon.com/gp/product/B01EV6LJ7G/ref=o…
-Ποτενσιόμετρο
www.alliedelec.com/honeywell-380c32500/701…
-3 κουμπιά
www.digikey.com/product-detail/en/te-conne…
-NodeMCU
www.amazon.com/gp/product/B07CB4P2XY/ref=o…
- 2 ταινίες Neopixel
www.amazon.com/Lighting-Modules-NeoPixel-W…
-Αντιστάσεις
www.digikey.com/product-detail/en/te-conne…
- Σύρματα
www.digikey.com/product-detail/en/sparkfun…
-1 LED
www.mouser.com/ProductDetail/Cree-Inc/C512…
-Καυτό όπλο κόλλας
www.walmart.com/ip/AdTech-Hi-Temp-Mini-Hot…
-Κολλώδεις λωρίδες Velcro
www.amazon.com/VELCRO-Brand-90076-Fastener…
Βήμα 5: Ξεκινήστε να χτίζετε με το Breadboard
A0 έως μεσαία καρφίτσα στο Ποτενσιόμετρο
Vin to Power on Neopixel ring
3v3 στη μία πλευρά του Ποτενσιόμετρου
Όλοι οι λόγοι για τη γείωση στο NodeMCU
D1 Κουμπί αίτησης
D2 για να ζητήσετε LED
Κουμπί D3 to Start (Έναρξη)
Κουμπί D4 to Stop
D5 σε αντίσταση σε Neopixel Είσοδος στον δακτύλιο
D6 στην αντίσταση στην ταινία εισόδου Neopixel
Βήμα 6: Εκκίνηση του κώδικα
Αυτός είναι ο κώδικας για να βεβαιωθείτε ότι το έργο σας λειτουργεί μέχρι τώρα. Ο χρονοδιακόπτης πρέπει να είναι μόνο μερικά δευτερόλεπτα ανά LED στο δαχτυλίδι Neopixel. Μόλις γνωρίζετε ότι λειτουργεί μέχρι αυτό το σημείο, το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε την ώρα εάν οι παρακάτω προτάσεις στο καθορισμένο εύρος σας. Θα βάζω "#Αλλαγή χρόνου" σε κάθε φορά, εάν δηλώσεις που πρέπει να αλλάξετε για την κατανομή του χρόνου σας.
Δοκιμάζοντας τον Κώδικα:
εισαγωγή ωφέλιμου χρόνου
χρόνο εισαγωγής
από εισαγωγή μηχανής ADC
μηχανή εισαγωγής
εισαγωγή neopixel
adc = ADC (0)
pin = machine. Pin (14, machine. Pin. OUT)
np = neopixel. NeoPixel (pin, 12)
pin2 = machine. Pin (12, machine. Pin. OUT)
np2 = neopixel. NeoPixel (pin2, 8)
l1 = μηχάνημα. Pin (4, machine. Pin. OUT)
b1 = machine. Pin (5, machine. Pin. IN, machine. Pin. PULL_UP)
b3 = machine. Pin (2, machine. Pin. IN, machine. Pin. PULL_UP)
b2 = machine. Pin (0, machine. Pin. IN, machine. Pin. PULL_UP)
l1.τιμή (0)
def tglled (): # εναλλαγή της λειτουργίας "αίτησης" LED
αν l1.value () == 0:
l1. αξία (1)
αλλού:
l1.τιμή (0)
x = 0
b1temp1 = 0
b1temp2 = 0
t = 0
b2temp1 = 0
b2temp2 = 0
b3temp1 = 0
b3temp2 = 0
s = 0
ενώ True:
# Αυτό είναι το κουμπί που αλλάζει τη λυχνία LED "αίτησης"
b1temp2 = b1.τιμή ()
εάν b1temp1 και όχι b1temp2:
tglled ()
ώρα. ύπνος (0,05)
b1temp1 = b1temp2
# Αυτό είναι το πλέγμα
np2 [0] = np [11]
αν l1.value () == 1:
np2 [1] = (30, 0, 0)
αλλού:
np2 [1] = (0, 0, 30)
np2.write ()
# Εδώ επιλέγουμε πόσο χρόνο χρειαζόμαστε
αν t == 0:
για i στην περιοχή (-1, 12):
εάν (l1.τιμή () == 0):
εάν (adc.read ()> = (85.34 * (i+1))):
np = (0, 0, 0)
np [11] = (0, 0, 30)
s = (i + 1)
αλλού:
np = (0, 0, 30)
np.write ()
αλλού:
np = (0, 0, 0)
np.write ()
# Αυτό είναι το κουμπί για την εκκίνηση του χρονοδιακόπτη
εάν (l1.τιμή () == 0) και (t == 0):
b2temp2 = b2.value ()
εάν b2temp1 και όχι b2temp2:
x += 1
t += (s * 100)
ώρα. ύπνος (0,05)
b2temp1 = b2temp2
# Αυτό το κουμπί τελειώνει το χρονόμετρο
εάν (l1.τιμή () == 0):
b3temp2 = b3.τιμή ()
εάν b3temp1 και όχι b3temp2:
x = 0
t = 0
ώρα. ύπνος (0,05)
b3temp1 = b3temp2
# Αυτό είναι το χρονόμετρο
αν x> 0:
t += 1
εάν (t> 0) και (t <= 100): #Αλλαγή χρόνου
np [0] = (5, 30, 0)
np [1] = (5, 30, 0)
np [2] = (5, 30, 0)
np [3] = (5, 30, 0)
np [4] = (5, 30, 0)
np [5] = (5, 30, 0)
np [6] = (5, 30, 0)
np [7] = (5, 30, 0)
np [8] = (5, 30, 0)
np [9] = (5, 30, 0)
np [10] = (5, 30, 0)
np [11] = (5, 30, 0)
np.write ()
εάν (t> 100) και (t <= 200): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (10, 30, 0)
np [2] = (10, 30, 0)
np [3] = (10, 30, 0)
np [4] = (10, 30, 0)
np [5] = (10, 30, 0)
np [6] = (10, 30, 0)
np [7] = (10, 30, 0)
np [8] = (10, 30, 0)
np [9] = (10, 30, 0)
np [10] = (10, 30, 0)
np [11] = (10, 30, 0)
np.write ()
εάν (t> 200) και (t <= 300): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (15, 30, 0)
np [3] = (15, 30, 0)
np [4] = (15, 30, 0)
np [5] = (15, 30, 0)
np [6] = (15, 30, 0)
np [7] = (15, 30, 0)
np [8] = (15, 30, 0)
np [9] = (15, 30, 0)
np [10] = (15, 30, 0)
np [11] = (15, 30, 0)
np.write ()
εάν (t> 300) και (t <= 400): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (20, 30, 0)
np [4] = (20, 30, 0)
np [5] = (20, 30, 0)
np [6] = (20, 30, 0)
np [7] = (20, 30, 0)
np [8] = (20, 30, 0)
np [9] = (20, 30, 0)
np [10] = (20, 30, 0)
np [11] = (20, 30, 0)
np.write ()
εάν (t> 400) και (t <= 500): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (25, 30, 0)
np [5] = (25, 30, 0)
np [6] = (25, 30, 0)
np [7] = (25, 30, 0)
np [8] = (25, 30, 0)
np [9] = (25, 30, 0)
np [10] = (25, 30, 0)
np [11] = (25, 30, 0)
np.write ()
εάν (t> 500) και (t <= 600): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (30, 30, 0)
np [6] = (30, 30, 0)
np [7] = (30, 30, 0)
np [8] = (30, 30, 0)
np [9] = (30, 30, 0)
np [10] = (30, 30, 0)
np [11] = (30, 30, 0)
np.write ()
εάν (t> 600) και (t <= 700): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (30, 25, 0)
np [7] = (30, 25, 0)
np [8] = (30, 25, 0)
np [9] = (30, 25, 0)
np [10] = (30, 25, 0)
np [11] = (30, 25, 0)
np.write ()
εάν (t> 700) και (t <= 800): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (30, 20, 0)
np [8] = (30, 20, 0)
np [9] = (30, 20, 0)
np [10] = (30, 20, 0)
np [11] = (30, 20, 0)
np.write ()
εάν (t> 800) και (t <= 900): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (30, 15, 0)
np [9] = (30, 15, 0)
np [10] = (30, 15, 0)
np [11] = (30, 15, 0)
np.write ()
εάν (t> 900) και (t <= 1000): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (30, 10, 0)
np [10] = (30, 10, 0)
np [11] = (30, 10, 0)
np.write ()
εάν (t> 1000) και (t <= 1100): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (30, 5, 0)
np [11] = (30, 5, 0)
np.write ()
εάν (t> 1100) και (t <= 1200): #Αλλαγή χρόνου
np [0] = (0, 0, 0)
np [1] = (0, 0, 0)
np [2] = (0, 0, 0)
np [3] = (0, 0, 0)
np [4] = (0, 0, 0)
np [5] = (0, 0, 0)
np [6] = (0, 0, 0)
np [7] = (0, 0, 0)
np [8] = (0, 0, 0)
np [9] = (0, 0, 0)
np [10] = (0, 0, 0)
np [11] = (30, 0, 0)
np.write ()
αν t> = 1300: #Αλλαγή χρόνου
t = 0
x = 0
Βήμα 7: Τελειώνοντας τις πινελιές
Τώρα, όταν είστε τόσο μακριά, θα πρέπει να έχετε ανεβάσει τον κωδικό εργασίας στο NodeMCU και όλα τα μέρη να είναι συνδεδεμένα στο breadboard. Αφού δοκιμάσετε τον κώδικα και κόψετε όσα κομμάτια έχετε για το εξωτερικό, δηλαδή περίβλημα με λέιζερ, μπορείτε τώρα να κολλήσετε τα καλώδια στο NodeMCU. Η συγκόλληση είναι προαιρετική, αλλά μπορεί να την κάνει πιο ασφαλή και μικρότερη για το περίβλημα σας. Εδώ είναι μερικά από τα μέρη κοπής με λέιζερ που φτιάξαμε.
Συνιστάται:
Φίλε Μελέτης: 10 Βήματα
Study Buddy: Αυτό το διδάξιμο εξηγεί πώς να φτιάξετε έναν φίλο με φίλους Η λειτουργία αυτού του φίλου μελέτης είναι να βοηθήσει τους εφήβους μεταξύ 14 και 18 ετών να μάθουν πώς να σχεδιάζουν και να μελετούν. Ο στόχος είναι ότι το ρομπότ θα μπορούσε να μάθει με τους μαθητές. Το εξώφυλλο είναι βαμμένο σε
Όλα σε ένα ψηφιακό χρονόμετρο (ρολόι, χρονόμετρο, ξυπνητήρι, θερμοκρασία): 10 βήματα (με εικόνες)
All in One Digital Chronometer (Ρολόι, Χρονόμετρο, Ξυπνητήρι, Θερμοκρασία): Σχεδιάζαμε να φτιάξουμε χρονόμετρο για κάποιον άλλο διαγωνισμό, αλλά αργότερα εφαρμόσαμε επίσης ένα ρολόι (χωρίς RTC). Καθώς μπήκαμε στον προγραμματισμό, ενδιαφερθήκαμε να εφαρμόσουμε περισσότερες λειτουργίες στη συσκευή και καταλήξαμε να προσθέσουμε DS3231 RTC, ως
Δείκτης περιοχής μελέτης (SAI): 8 βήματα
Δείκτης περιοχής μελέτης (SAI): Θέλετε να διευκολύνετε την εύρεση ενός τόπου μελέτης κατά τη διάρκεια της εβδομάδας των τελικών; Εξετάστε το ενδεχόμενο δημιουργίας δεικτών περιοχής μελέτης! Το πιο απλό, το σύστημα είναι μια συλλογή δεικτών περιοχής μελέτης (SAI) που συνδέονται με μια κύρια πηγή ενέργειας που υποδεικνύουν τη διαθεσιμότητα
Παρακολούθηση αίθουσας συνεδριάσεων με χρήση φωτονίου σωματιδίων: 8 βήματα (με εικόνες)
Παρακολούθηση αίθουσας συνεδριάσεων με τη χρήση Parton Photon: Εισαγωγή Σε αυτό το σεμινάριο πρόκειται να φτιάξουμε οθόνη αίθουσας συνεδριάσεων χρησιμοποιώντας Parton Photon. Σε αυτό το Particle είναι ενσωματωμένο με το Slack χρησιμοποιώντας Webhooks για λήψη ενημερώσεων σε πραγματικό χρόνο σχετικά με το εάν ένα δωμάτιο είναι διαθέσιμο ή όχι. Οι αισθητήρες PIR χρησιμοποιούνται για να
Συναγερμός πόρτας χρησιμοποιώντας μαγνητικό αισθητήρα αίθουσας: 5 βήματα
Συναγερμός πόρτας χρησιμοποιώντας μαγνητικό αισθητήρα αίθουσας: Ο συναγερμός πόρτας είναι μια πολύ συνηθισμένη και χρήσιμη συσκευή για λόγους ασφαλείας. Χρησιμοποιούνται για τον εντοπισμό αν η πόρτα είναι ανοιχτή ή κλειστή. Συχνά έχουμε δει κάποιο συναγερμό πόρτας στο ψυγείο που έβγαζε διαφορετικό ήχο όταν ενεργοποιούνταν. Πόρτα συναγερμού Pro