Πίνακας περιεχομένων:
- Βήμα 1: Συγκέντρωση εξαρτημάτων
- Βήμα 2: Εγκατάσταση της βιβλιοθήκης μας
- Βήμα 3: Εγκατάσταση των απαιτούμενων βιβλιοθηκών
- Βήμα 4: Συναρμολόγηση της ενότητας
- Βήμα 5: Γράφοντας το σκίτσο της μονάδας φωτεινότητας
- Βήμα 6: Δοκιμή της ενότητας AtHome
- Βήμα 7: Δημιουργία θήκης για την ενότητα
Βίντεο: Δημιουργήστε μια μονάδα φωτεινότητας με το AtHome: 7 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Το AtHome είναι ένα πλήρως φοιτητικό έργο ανοιχτού κώδικα και ανοιχτού υλικού κατασκευασμένο από την ομάδα AtHome από το Epitech, με στόχο την ανάπτυξη μιας συνδεδεμένης λύσης αρκετών μεμονωμένων μονάδων αισθητήρων που επικοινωνούν με μια αυτο-φιλοξενούμενη βάση δεδομένων που εκθέτει ένα API που χρησιμοποιείται για τη τροφοδοσία μιας εφαρμογής smartphone και μιας διαδικτυακής εφαρμογής. Οι μονάδες παρακολουθούν το εσωτερικό περιβάλλον ενός σπιτιού και είναι σε θέση να δώσουν οπτική ανατροφοδότηση στο χρήστη, από πράσινο (καλό) σε κόκκινο (κακό) και τα μεταδιδόμενα δεδομένα είναι ορατά από τον χρήστη μέσω της σειριακής επικοινωνίας μιας μονάδας ή τις εφαρμογές μας αν τις χρησιμοποιείτε.
Παρόλο που αυτό το έργο βρίσκεται ακόμη υπό ενεργό ανάπτυξη, οι βασικές λειτουργίες των ενοτήτων μας είναι πλέον έτοιμες και δήθεν εύχρηστες για την ανάπτυξη προσαρμοσμένων ενοτήτων. Γι 'αυτό, σας προτείνω να δείτε πώς να φτιάξετε τη δική σας απλή μονάδα με αυτό το παράδειγμα μονάδας φωτεινότητας.
Αυτά τα δομοστοιχεία είναι βασικά κατασκευασμένα με έναν πίνακα συμβατό με Arduino (ένας μερικός πυρήνας Arduino πρέπει να είναι αρκετός εφόσον έχει Stream, Wire και υποστήριξη ροής UART), ένα LED (κόκκινο ή RGB) που γίνεται κόκκινο σε περίπτωση έκδοσης, αισθητήρα, τροφοδοτικό (τροφοδοτικό τοίχου ή μπαταρία) και θήκη κοπής με λέιζερ.
Ναι, σίγουρα δεν είναι καινούργιο, υπάρχουν πολλά έργα αισθητήρων, αλλά ελπίζουμε ότι άλλες δυνατότητες όπως η ανίχνευση θεμάτων υγείας, η επικοινωνία και η αποθήκευση πληροφοριών σε έναν διακομιστή που φιλοξενείται και η εφαρμογή απεικόνισης θα σας βοηθήσουν. Or αν θέλετε απλώς να παρακολουθείτε το σπίτι σας, απλά έργα ή όχι λιγότερο ενδιαφέροντα:)
Βήμα 1: Συγκέντρωση εξαρτημάτων
Για αυτό το έργο, θα χρειαστείτε μερικά στοιχεία για να δημιουργήσετε τη μονάδα AtHome:
- 1x Arduino-Compatible board: Εδώ θα χρησιμοποιήσω ένα Arduino UNO (αλλά λειτουργεί και με άλλους πίνακες, όπως TI Launchpads και ESP8266)
- 1x αισθητήρας: Θα χρησιμοποιήσω έναν αισθητήρα φωτεινότητας TSL2561 (η λίστα των υποστηριζόμενων αισθητήρων είναι διαθέσιμη στην τεκμηρίωση της βιβλιοθήκης μας)
- 1x led: Θα χρησιμοποιήσω ένα Grove Chainable RGB LED εδώ (αλλά μπορεί επίσης να είναι ένα απλό κόκκινο led ή ένα NeoPixel)
- Καλώδια Dupont
Η λίστα των συμβατών στοιχείων είναι διαθέσιμη στην τεκμηρίωση του έργου μας.
Βήμα 2: Εγκατάσταση της βιβλιοθήκης μας
Για να εγκαταστήσετε τη βιβλιοθήκη μας, θα πρέπει να κάνετε λήψη από το αποθετήριο μας (θα το δημοσιεύσουμε αργότερα στη λίστα Arduino IDE και στο PlatformIO) με αυτόν τον σύνδεσμο:
gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy
Στη συνέχεια, μεταβείτε στο Arduino IDE και επιλέξτε "Sketch> Include Library> Add. ZIP Library…". Στη συνέχεια, επιλέξτε το αρχείο zip με το όνομα "artifacts.zip" και κάντε κλικ στο "OK".
Βήμα 3: Εγκατάσταση των απαιτούμενων βιβλιοθηκών
Για να λειτουργήσει, η βιβλιοθήκη μας χρειάζεται κάποιες άλλες βιβλιοθήκες για να εγκατασταθούν στον υπολογιστή σας:
- Βιβλιοθήκη Arkhipenko TaskScheduler
- Βιβλιοθήκη SEEED Studio Grove Digital Light Sensor
- Βιβλιοθήκη SEEED Studio Grove Chainable RGB LED
- Βιβλιοθήκη Adafruit NeoPixel
Μπορείτε να τα εγκαταστήσετε μέσω του διαχειριστή βιβλιοθηκών του Arduino IDE, μεταβαίνοντας στο "Sketch"> "Include Library"> "Manage libraries …".
Στο νέο παράθυρο που θα ανοίξει, γράψτε στη λευκή γραμμή αναζήτησης το όνομα της βιβλιοθήκης που θέλετε να εγκαταστήσετε και, στη συνέχεια, κάντε κλικ στο μπλοκ της. Θα εμφανιστεί ένα κουμπί "Εγκατάσταση", απλά πρέπει να κάνετε κλικ σε αυτό και το IDE θα το κατεβάσει και θα το εγκαταστήσει για εσάς.
Βήμα 4: Συναρμολόγηση της ενότητας
Θα ξεκινήσουμε με τον αισθητήρα. Συνδέστε μέσω σύρματος τον πείρο VCC του TSL2561 στον πείρο 5V του Arduino, τον πείρο GND του αισθητήρα σε έναν από τους πείρους GND του Arduino και τους πείρους SDA και SCL του αισθητήρα σε καρφίτσες SDA και SCL του Arduino Το Τώρα τελειώσατε!
Τώρα, συνδέστε τον πείρο VCC του Grove Chainable RGB LED στον πείρο 5V του Arduino και τον πείρο GND του LED στο δεύτερο GND του Arduino. Εάν είστε Arduino ως μόνο ένας πείρος 5V, μπορείτε να χρησιμοποιήσετε ένα breadboard για να συνδέσετε τα 5v του Arduino σε μια σειρά + του breadboard και να συνδέσετε όλα τα εξαρτήματα 5V καρφίτσες σε αυτό ή να τα κολλήσετε μαζί σε ένα κομμάτι λωρίδας ή χρησιμοποιήστε συνδετήρες wago ή ό, τι προτιμάτε. Τώρα, συνδέστε τον ακροδέκτη CI του LED σας στον πείρο 7 του Arduino σας και τον πείρο DI του LED σας στον ακροδέκτη 8 του Arduino σας. Εάν δεν έχετε τέτοιο LED, μην ανησυχείτε, είναι δυνατό να χρησιμοποιήσετε το ενσωματωμένο LED της πλακέτας Arduino ή ένα κλασικό με μια μικρή αλλαγή στον κώδικα.
Βήμα 5: Γράφοντας το σκίτσο της μονάδας φωτεινότητας
Ας δημιουργήσουμε ένα νέο σκίτσο και γράψουμε τον κώδικα για την ενότητα μας.
Εάν δεν σας ενδιαφέρει η εξήγηση του σκίτσου, μπορείτε απλά να το αντιγράψετε και να το επικολλήσετε στο Arduino IDE:
#περιλαμβάνω
χρησιμοποιώντας LightModule = AtHomeModule; Ροή *streams = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; GroveChainableLED led (& grovePins); LightModule *module = LightModule:: getInstance (); void setup () {// βάλτε τον κωδικό εγκατάστασης εδώ, για να εκτελεστεί μία φορά: Serial.begin (9600); module-> setStreams (streams)? GroveDigitalLightSensor *lightSensor = new GroveDigitalLightSensor (); module-> setSensor (lightSensor)? module-> setDisplay (& led); module-> setup (); } void loop () {// βάλτε τον κύριο κωδικό σας εδώ, για να εκτελείται επανειλημμένα: module-> run (); }
Εάν θέλετε να καταλάβετε τι κάνει αυτός ο κώδικας, μπορείτε να διαβάσετε τα παρακάτω ή αν δεν σας ενδιαφέρει, μπορείτε να μεταβείτε απευθείας στο επόμενο βήμα.
Αρχικά, πρέπει να συμπεριλάβουμε τη βιβλιοθήκη μας στο σκίτσο μας γράφοντας αυτήν τη γραμμή στο επάνω μέρος του σκίτσου:
#περιλαμβάνω
Τώρα, πρέπει να δημιουργήσουμε ένα ψευδώνυμο στο αντικείμενο της μονάδας που θα χρησιμοποιήσουμε. Μπορείτε να το δείτε ως ένα πλαίσιο με πολλά κουμπιά που χρησιμοποιούνται για να αλλάξετε τα στοιχεία του, να το ξεκινήσετε, να το σταματήσετε,… κλπ. Καθώς είναι ένα κουτί που δημιουργήθηκε από ένα πρότυπο (όπως το συνηθισμένο πρότυπο που χρησιμοποιούμε για έργα ως άνθρωποι, έχει μια βάση εκκίνησης και ο μεταγλωττιστής του Arduino χτίζει τον τελικό κώδικα με βάση τις παραμέτρους που του δίνουμε) ορίζοντας τον τύπο που αντιπροσωπεύει μια τιμή αισθητήρα και αριθμός τιμών αισθητήρων που θέλουμε να διατηρούμε στη μνήμη, ορίζεται στο όνομά του και κανονικά πρέπει να επαναλαμβάνεται κάθε φορά που θέλουμε να τον χρησιμοποιήσουμε. Αυτό είναι λίγο ενοχλητικό, γι 'αυτό θα συσχετίσουμε ένα νέο όνομα, ένα ψευδώνυμο, στο πλήρες όνομα αυτού του πλαισίου.
Ας πούμε για παράδειγμα ότι θέλω αυτό το πλαίσιο να ονομάζεται "LightModule", καθώς θα χρησιμοποιηθεί για την υλοποίηση μιας μονάδας παρακολούθησης φωτεινότητας και θέλω να διατηρώ μόνο 1 τιμή κάθε φορά. Η φωτεινότητα αντιπροσωπεύεται σε lux ως αναπόσπαστο είδος από τον αισθητήρα TSL2561, ο οποίος αντιπροσωπεύεται ως uint16_t από υπολογιστές. Το ψευδώνυμό μας θα μοιάζει με αυτό:
χρησιμοποιώντας LightModule = AtHomeModule;
Η λέξη -κλειδί "χρησιμοποιώντας" σημαίνει ότι δημιουργούμε ένα ψευδώνυμο και το όνομα που της δίνουμε αμέσως μετά αντιστοιχεί στην ακολουθία μετά τον χαρακτήρα "=".
Το "AtHomeModule" είναι το πραγματικό όνομα αυτού του πλαισίου που δίνουμε ένα νέο όνομα και οι παράμετροι που καθορίζουν την αναπαράσταση της τιμής και τον αριθμό των τιμών που διατηρούνται στη μνήμη παρατίθενται μεταξύ "".
Τώρα, όταν θα χρησιμοποιήσουμε αργότερα το όνομα "AtHomeModule", το Arduino θα γνωρίζει ότι αναφέρεται στο πλήρες όνομα "AtHomeModule".
Εάν θέλετε το κουτί σας να μπορεί να διατηρεί 5 τιμές στη μνήμη αντί για 1, απλά πρέπει να αντικαταστήσετε το "1" με "5" και το Arduino θα δημιουργήσει για εσάς έναν διαφορετικό τύπο κουτιού ικανό να κάνει αυτό που θέλετε. Σημειώστε, ωστόσο, ότι εάν η μονάδα είναι προγραμματισμένη να στέλνει τις τιμές της προτού έχει το χρόνο να μετρήσει αποτελεσματικά 5 τιμές του αισθητήρα, δεν θα δείτε ποτέ 5 από αυτές να αποστέλλονται καθώς στέλνει μόνο τις νέες τιμές από την τελευταία μεταφόρτωση.
Στη συνέχεια, πρέπει να δημιουργήσουμε μια σειρά από δείκτες που περιέχουν δείκτες σε ροές Arduino που χρησιμοποιούνται από την ενότητα για επικοινωνία, που τερματίζονται πάντα από το keyworkd "nullptr". Εδώ, χρησιμοποιώ μόνο τη "Σειριακή" ροή του Arduino που επικοινωνεί με τον υπολογιστή μέσω της θύρας USB, οπότε ο πίνακας μοιάζει με αυτόν:
Ροή *streams = {& Serial, nullptr};
Ο χαρακτήρας "*" σημαίνει ότι ο τύπος είναι δείκτης (η θέση του στοιχείου και όχι το ίδιο το στοιχείο) και οι αγκύλες "" σημαίνει ότι στο Arduino είναι ένας πίνακας, οπότε μπορούμε να βάλουμε πολλαπλές τιμές.
Στη συνέχεια, πρέπει να δημιουργήσουμε το LED μας. Για να γίνει αυτό, πρέπει να γράψουμε τις ακόλουθες δύο γραμμές.
GroveChainableLED:: Pins grovePins = {7, 8};
GroveChainableLED led (& grovePins);
Εάν δεν έχετε Grove RGB LED αλλά θέλετε οπτική ανατροφοδότηση, μπορείτε να το κάνετε με μια απλή αλλαγή στο σκίτσο. Αντικαταστήστε τις δύο προηγούμενες γραμμές με αυτήν τη γραμμή:
Μονόχρωμο LED led (LED_BUILTIN).
Σε αυτήν τη διαμόρφωση, το πράσινο ενσωματωμένο LED θα ανάψει εφόσον η τιμή παρακολούθησης είναι εντάξει για την υγεία και θα σβήσει όταν είναι εκτός δεσμού. Εάν προτιμάτε να είναι ενεργοποιημένο όταν είναι εκτός σύνδεσης (επειδή χρησιμοποιείτε, για παράδειγμα, ένα κόκκινο LED αντί του πράσινου στον πείρο 13), μπορείτε να χρησιμοποιήσετε αυτήν τη γραμμή αντ 'αυτού:
Μονόχρωμο LED led (LED_BUILTIN, true).
Το επόμενο βήμα είναι να δημιουργήσουμε την ίδια τη μονάδα μας. Έγινε την πρώτη φορά που λαμβάνουμε τη θέση της στη μνήμη καλώντας τη μέθοδο "getInstance", όπως αυτή:
LightModule *module = LightModule:: getInstance ();
Στη συνέχεια, πρέπει να ορίσουμε τις παραμέτρους στη συνάρτηση "setup ()" του Arduino, ξεκινώντας με την προετοιμασία της θύρας "Serial" ως συνήθως στα σκίτσα Arduino:
Serial.begin (9600);
Δημιουργούμε τον αισθητήρα φωτός γράφοντας αυτήν τη γραμμή:
GroveDigitalLightSensor *lightSensor = new GroveDigitalLightSensor ();
Στη συνέχεια, λέμε στη μονάδα μας να χρησιμοποιήσει τη σειρά δεικτών μας στο Arduino Stream για να επικοινωνήσει μέσω αυτών:
module-> setStreams (streams)?
Λέμε επίσης στη μονάδα μας να χρησιμοποιήσει τον αισθητήρα φωτός για να παρακολουθεί την ένταση του φωτός όπου βρίσκεται η μονάδα:
module-> setSensor (lightSensor)?
Λέμε στη μονάδα μας να χρησιμοποιήσει το LED μας για να μας δώσει οπτική ανατροφοδότηση:
module-> setDisplay (& led);
Τέλος, λέμε στη μονάδα μας ότι είναι έτοιμο να κάνει οποιαδήποτε εσωτερική διαμόρφωση χρειάζεται να καλέσει καλώντας τη δική της συνάρτηση "εγκατάστασης":
module-> setup ();
Το τελευταίο μας βήμα είναι τώρα να καλέσουμε τη συνάρτηση "run ()" της μονάδας μας, η οποία έχει σχεδιαστεί για να καλείται σε κάθε επανάληψη της λειτουργίας "βρόχου" του Arduino γράφοντας αυτήν τη γραμμή μέσα στη συνάρτηση "βρόχος":
module-> run ();
Τώρα, το σκίτσο μας είναι επιτέλους έτοιμο να το ανεβάσουμε στο Arduino και να δοκιμάσουμε τη μονάδα μας!
Βήμα 6: Δοκιμή της ενότητας AtHome
Για να ανεβάσετε το σκίτσο στο Arduino, επιλέξτε τον πίνακα Arduino UNO μεταβαίνοντας στα "Εργαλεία"> "Θύρα"> "[COMx ή/dev/x] (Arduino/Genuino UNO)".
Τελευταίο πράγμα, απλώς κάντε κλικ στο κουμπί "Μεταφόρτωση" (το κουμπί κύκλου με ένα βέλος που δείχνει προς τα δεξιά, το δεύτερο εικονίδιο της γραμμής εργαλείων) για να ανεβάσετε το σκίτσο στον πίνακα σας.
Εγινε! Τώρα η ενότητα πρέπει να λειτουργεί και να στέλνει τιμές στον υπολογιστή σας ορατές στο Serial Monitor του Arduino. Μπορείτε να το ελέγξετε ανοίγοντας το "Serial Monitor" του Arduino στο μενού "Tools" και θα πρέπει να έχετε μια έξοδο που μοιάζει με τη δεύτερη εικόνα τίτλου αυτού του βήματος:)
Βήμα 7: Δημιουργία θήκης για την ενότητα
Μπορείτε να φτιάξετε μια απλή θήκη κουτιού για τη μονάδα σας κόβοντάς την με λέιζερ σε σανίδα κόντρα πλακέ 3 χιλιοστών.
Για να φτιάξουμε τις θήκες των κουτιών μας, χρησιμοποιούμε makercase για να προετοιμάσουμε ένα πρότυπο στις επιθυμητές διαστάσεις που προσαρμόζουμε αργότερα. Θα βρείτε το αρχείο svg της μονάδας φωτεινότητας προσαρτημένο σε αυτό το βήμα.
Στη συνέχεια, απλά κολλήστε τα πρόσωπα μεταξύ τους εκτός από ένα, ώστε να μπορείτε να το ανοίξετε αργότερα, βάλτε το κύκλωμά σας μέσα και κολλήστε το LED στην τρύπα της θήκης (χρησιμοποιούμε διαφανή ταινία για να γεμίσουμε την τρύπα και διαχέουμε το φως επιπλέον για να κολλήσουμε το LED μπροστά αυτού).
Τώρα προσθέστε μια μπαταρία για να τροφοδοτήσετε το Arduino σας, κλείστε τη θήκη και η μονάδα σας είναι έτοιμη και θα πρέπει να φαίνεται καλή:)
Συνιστάται:
ARUPI - μια αυτόματη μονάδα εγγραφής χαμηλού κόστους/μονάδα αυτόματης εγγραφής (ARU) για οικολόγους Soundscape: 8 βήματα (με εικόνες)
ARUPI - μια χαμηλού κόστους αυτόματη μονάδα εγγραφής/αυτόνομη μονάδα εγγραφής (ARU) για Soundscape Ecologists: Αυτό το εκπαιδευτικό γράφτηκε από τον Anthony Turner. Το έργο αναπτύχθηκε με πολλή βοήθεια από το Shed in the School of Computing, University of Kent (ο κ. Daniel Knox ήταν μια μεγάλη βοήθεια!). Θα σας δείξει πώς να φτιάξετε μια Αυτόματη Ηχογράφηση U
Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: 11 βήματα
Πώς να χρησιμοποιήσετε τη μονάδα GY511 με το Arduino [Δημιουργήστε μια ψηφιακή πυξίδα]: ΕπισκόπησηΣε ορισμένα ηλεκτρονικά έργα, πρέπει να γνωρίζουμε ανά πάσα στιγμή τη γεωγραφική θέση και να κάνουμε μια συγκεκριμένη λειτουργία ανάλογα. Σε αυτό το σεμινάριο, θα μάθετε πώς να χρησιμοποιείτε τη μονάδα πυξίδας LSM303DLHC GY-511 με το Arduino για να δημιουργήσετε ψηφιακές πυξίδες
Δημιουργήστε μια συσκευή Apple HomeKit Temperature Sensor (DHT22) χρησιμοποιώντας μια RaspberryPI και μια DHT22: 11 βήματα
Δημιουργήστε μια συσκευή Apple HomeKit Temperature Sensor (DHT22) χρησιμοποιώντας μια RaspberryPI και μια DHT22: Έψαχνα για έναν χαμηλού κόστους αισθητήρα θερμοκρασίας / υγρασίας που θα μπορούσα να χρησιμοποιήσω για να παρακολουθήσω τι συμβαίνει στον ανιχνευτικό μου χώρο, καθώς διαπίστωσα ότι αυτή την άνοιξη ήταν πολύ υγρό , και είχε πολύ υγρασία. Έτσι έψαχνα έναν αισθητήρα σε λογικές τιμές που θα μπορούσα να
Φτιάξτε μια σωστή μονάδα έκθεσης PCB από μια φτηνή λάμπα θεραπείας UV νυχιών: 12 βήματα (με εικόνες)
Φτιάξτε μια σωστή μονάδα έκθεσης PCB από μια φτηνή λάμπα θεραπείας UV νυχιών: Τι κοινό έχουν η παραγωγή PCB και τα ψεύτικα νύχια; Και οι δύο χρησιμοποιούν πηγές υπεριώδους φωτός υψηλής έντασης και, όπως θα είχε η τύχη, αυτές οι πηγές φωτός έχουν ακριβώς το ίδιο μήκος κύματος. Μόνο αυτά για την παραγωγή PCB είναι συνήθως αρκετά δαπανηρά
Δημιουργήστε μια μονάδα USB με θέμα την κάρτα παιχνιδιού: 7 βήματα
Φτιάξτε μια μονάδα USB με θέμα την κάρτα παιχνιδιού: Να είστε ευγενικοί, αυτή είναι η πρώτη μου οδηγία. Απολαύστε! :) Έχετε βαρεθεί τη βαρετή, παλιά μονάδα USB σας; Τα περισσότερα από αυτά δεν είναι τόσο δημιουργικά χρωματισμένα. το ασπρόμαυρο είναι τα συνηθισμένα χρώματα που χρησιμοποιούνται για το σχεδιασμό αυτών των εύχρηστων συσκευών. Μην κουράζεσαι άλλο! Σε αυτό το εύκολο tutoria