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

TfCD - Plus: 7 βήματα
TfCD - Plus: 7 βήματα

Βίντεο: TfCD - Plus: 7 βήματα

Βίντεο: TfCD - Plus: 7 βήματα
Βίντεο: TFCD Arduino face tracking device 2024, Ιούλιος
Anonim
Image
Image
Συστατικά
Συστατικά

Το Plus είναι ένα ελάχιστο έξυπνο φως, το οποίο όχι μόνο ειδοποιεί τους ανθρώπους για τις καιρικές συνθήκες, αλλά δημιουργεί επίσης μια ευχάριστη εμπειρία για τους χρήστες από τις αλλαγές που γίνονται στο χρώμα του φωτός περιστρέφοντας το συν. Το σχήμα του δίνει στον χρήστη την ευκαιρία να συνδυάσει πολλά modules plus ή να δημιουργήσει μια τεράστια λάμπα με πολλά plus κομμάτια τοποθετημένα από φίλους. Αυτό το έργο φωτισμού είναι μέρος του μαθήματος Advanced Concept Design (ACD) στο πανεπιστήμιο TU Delft και της τεχνολογίας που εφαρμόζεται χρησιμοποιώντας το πρακτικό TfCD ως πηγή έμπνευσης.

Βήμα 1: Συστατικά

Συστατικά
Συστατικά
Συστατικά
Συστατικά

1 Raspberry pi zero w

1 επιταχυνσιόμετρο Groove Adxl345

4 LED Ws2812b

1 σανίδα πρωτοτύπων

Τρισδιάστατα εκτυπωμένα και περικοπές με λέιζερ

Βήμα 2: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

LED

Τα LED Neopixel έχουν 4 ακίδες με όνομα: +5V, GND, Data In και Data out.

  1. Το pin 4 του raspberry pi συνδέεται με το +5V όλων των LED
  2. Το pin 6 του raspberry pi συνδέεται με το GND όλων των LEDS
  3. Δεδομένα Στο pin του πρώτου LED συνδέεται με τον πείρο 12 στο raspberry pi.
  4. Το pin out του πρώτου LED συνδέεται με το Data in του δεύτερου και ούτω καθεξής.

Ρίξτε μια ματιά στο διάγραμμα καλωδίωσης για καλύτερη κατανόηση.

Επιταχυνσιόμετρο

Το επιταχυνσιόμετρο έχει 4 ακίδες που ονομάζονται: VCC, GND, SDA και SCL.

  1. Η ακίδα 1 του raspberry pi συνδέεται με το VCC.
  2. Το pin 3 του raspberry pi συνδέεται με το SCL.
  3. Το pin 5 του raspberry pi συνδέεται με το SDA.
  4. Το pin 9 του raspberry pi συνδέεται με το GND.

Χτίζω

  1. Για ευκολία, τα LED μπορούν να κολληθούν σε έναν πίνακα πρωτοτύπων. Αποφασίσαμε να κόψουμε τον πίνακα σε σχήμα συν, ώστε να ταιριάζει καλά στην τρισδιάστατη θήκη.
  2. Μόλις συγκολλήσουμε τις λυχνίες LED στον πίνακα, συγκολλήσαμε καλώδια βραχυκυκλωμάτων για να κάνουμε τις συνδέσεις μεταξύ σύνδεσης κεφαλίδας 0,1 "και των LED. Ο σύνδεσμος κεφαλίδας χρησιμοποιείται για να επιτρέψει στο raspberry pi να αποσυνδεθεί και να χρησιμοποιηθεί ξανά για μελλοντικό έργο.

Βήμα 3: Λογισμικό

Λογισμικό
Λογισμικό

Εικόνα λειτουργικού συστήματος Raspberry Pi

Πρέπει πρώτα να θέσουμε σε λειτουργία το Raspberry Pi. Για να το κάνουμε αυτό ακολουθούμε τα εξής βήματα:

  1. Κατεβάστε την τελευταία έκδοση του Raspbian από εδώ. Μπορείτε να το κατεβάσετε απευθείας ή μέσω των torrents. Θα χρειαστείτε έναν συντάκτη εικόνας για να γράψετε το ληφθέν λειτουργικό σύστημα στην κάρτα SD (κάρτα micro SD σε περίπτωση μοντέλου Raspberry Pi B+ και Raspberry Pi Zero).
  2. Κατεβάστε λοιπόν το "win32 disk imager" από εδώ. Τοποθετήστε την κάρτα SD στον φορητό υπολογιστή/υπολογιστή και εκτελέστε το πρόγραμμα εγγραφής εικόνας. Μόλις ανοίξει, περιηγηθείτε και επιλέξτε το αρχείο εικόνας Raspbian που έχετε κατεβάσει. Επιλέξτε τη σωστή συσκευή, δηλαδή τη μονάδα δίσκου που αντιπροσωπεύει την κάρτα SD. Εάν η επιλεγμένη μονάδα δίσκου (ή συσκευή) είναι διαφορετική από την κάρτα SD, τότε η άλλη επιλεγμένη μονάδα θα καταστραφεί. Οπότε να προσέχεις.
  3. Στη συνέχεια, κάντε κλικ στο κουμπί "Γράψτε" στο κάτω μέρος. Για παράδειγμα, δείτε την παρακάτω εικόνα, όπου η μονάδα κάρτας SD (ή micro SD) αντιπροσωπεύεται από το γράμμα "G: \" Το λειτουργικό σύστημα είναι τώρα έτοιμο για κανονική χρήση. Ωστόσο, σε αυτό το σεμινάριο θα χρησιμοποιήσουμε το Raspberry Pi σε ακέφαλη λειτουργία. Αυτό σημαίνει χωρίς φυσική οθόνη και πληκτρολόγιο προσαρτημένο σε αυτό!
  4. Αφού κάψετε την κάρτα SD, μην την αποβάλλετε από τον υπολογιστή σας! Χρησιμοποιήστε έναν επεξεργαστή κειμένου για να ανοίξετε το αρχείο config.txt που βρίσκεται στην κάρτα SD. Μεταβείτε στο κάτω μέρος και προσθέστε dtoverlay = dwc2 ως τελευταία γραμμή:
  5. Αποθηκεύστε το αρχείο config.txt ως απλό κείμενο και, στη συνέχεια, ανοίξτε το cmdline.txt Μετά το rootwait (η τελευταία λέξη στην πρώτη γραμμή) προσθέστε ένα κενό και, στη συνέχεια, modules-load = dwc2, g_ether.
  6. Τώρα αφαιρέστε την κάρτα SD από τον υπολογιστή σας και τοποθετήστε την στο Raspberry Pi και συνδέστε την στον υπολογιστή σας χρησιμοποιώντας ένα καλώδιο USB. Μόλις εκκινήσει το λειτουργικό σύστημα, θα πρέπει να δείτε μια νέα συσκευή Ethernet Gadget να ανακαλύπτεται.
  7. Μπορείτε να χρησιμοποιήσετε το ssh [email protected] για να συνδεθείτε στον πίνακα και να τον ελέγξετε από απόσταση. Για πιο λεπτομερείς οδηγίες σχετικά με τη λειτουργία ακέφαλου πηγαίνετε εδώ. Neopixel Driver

Η βιβλιοθήκη rpi_ws281x είναι το κλειδί που καθιστά δυνατή τη χρήση NeoPixels με το Raspberry Pi.

Πρώτα πρέπει να εγκαταστήσουμε τα εργαλεία που απαιτούνται για τη μεταγλώττιση της βιβλιοθήκης. Στην εκτέλεση του Raspberry Pi: sudo apt-get update && sudo apt-get install build-essential python-dev git scons swig Τώρα εκτελέστε αυτές τις εντολές για λήψη και μεταγλώττιση της βιβλιοθήκης:

git clone https://github.com/jgarff/rpi_ws281x.git && cd rpi_ws281x && scons Τέλος, μετά την επιτυχημένη σύνταξη της βιβλιοθήκης, μπορούμε να την εγκαταστήσουμε για python χρησιμοποιώντας:

cd python && sudo python setup.py install Τώρα έρχεται ο κώδικας python που οδηγεί τα LED. Ο κώδικας είναι αρκετά απλός με κάποια σχόλια που θα σας βοηθήσουν. από εισαγωγή neopixel * # Διαμορφώσεις NeoPixel LED_PIN = 18 # Ο καρφίτσα GPIO του Raspberry Pi συνδέεται με τα εικονοστοιχεία LED_BRIGHTNESS = 255 # Ορίζεται σε 0 για τα πιο σκούρα και 255 για τα πιο φωτεινά LED_COUNT = 4 # Αριθμός λωρίδας εικονοστοιχείων LED = Adafruit_NeoPixel (LED_COUNT, LED_PIN, 5, False, LED_BRIGHTNESS, 0, ws. WS2811_STRIP_GRB) # Αρχικοποιήστε τη βιβλιοθήκη strip.begin () strip.setPixelColor (0, Color (255, 255, 255)) strip.show ()

Πρόγραμμα οδήγησης ADXL345

Ο αισθητήρας επιταχυνσιόμετρου που επιλέξαμε έχει μια ενδιάμεση σύνδεση I2C για επικοινωνία με τον έξω κόσμο. Ευτυχώς για εμάς, το Raspberry Pi διαθέτει επίσης διεπαφή I2C. Απλώς πρέπει να του επιτρέψουμε να το χρησιμοποιήσει στον δικό μας κώδικα.

Καλέστε το εργαλείο διαμόρφωσης Raspbian χρησιμοποιώντας το sudo raspi-config. Μόλις εκτελεστεί, μεταβείτε στις Επιλογές διασύνδεσης, Επιλογές για προχωρημένους και, στη συνέχεια, ενεργοποιήστε το I2C. Εγκαταστήστε τις σχετικές ενότητες python, ώστε να μπορούμε να χρησιμοποιήσουμε τη διεπαφή I2C σε python:

sudo apt-get install python-smbus i2c-tools Ο ακόλουθος κώδικας python μας επιτρέπει να επικοινωνούμε με τον αισθητήρα επιταχυνσιόμετρου και να διαβάζουμε τις τιμές καταχωρητή του για δικούς μας σκοπούς. import smbus import struct # Επιταχυνσιόμετρο διαμορφώσεις bus = smbus. SMBus (1) διεύθυνση = 0x53 κέρδος = 3.9e-3 bus.write_byte_data (διεύθυνση, 45, 0x00) # Μετάβαση σε κατάσταση αναμονής bus.write_byte_data (διεύθυνση, 44, 0x06) # Εύρος ζώνης 6.5Hz bus.write_byte_data (διεύθυνση, 45, 0x08) # Μετάβαση στη λειτουργία μέτρησης # Ανάγνωση δεδομένων από τον αισθητήρα buf = bus.read_i2c_block_data (διεύθυνση, 50, 6) # Αποσυσκευασία δεδομένων από int16_t σε ακέραια δεδομένα python = struct.unpack_from ("> hhh", buffer (bytearray (buf)), 0)

x = float (δεδομένα [0]) * κέρδος

y = float (δεδομένα [1]) * κέρδος

z = float (δεδομένα [2]) * κέρδος

Ανιχνευτής κίνησης

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

accel = getAcceleration ()

dx = abs (prevAccel [0] - accel [0])

dy = abs (prevAccel [1] - accel [1])

dz = abs (prevAccel [2] - accel [2])

εάν dx> moveThreshold ή dy To> moveThreshold ή dz> moveThreshold:

εκτύπωση 'μετακινήθηκε'

μετακινήθηκε = Αλήθεια

αλλού:

μετακινήθηκε = Λάθος

Καιρός API

Για να λάβετε πρόγνωση καιρού μπορούμε να χρησιμοποιήσουμε το Yahoo Weather. Αυτό περιλαμβάνει συνομιλία με το Yahoo Weather Rest API, το οποίο μπορεί να είναι αρκετά περίπλοκο. Ευτυχώς για εμάς, το δύσκολο κομμάτι έχει ήδη φροντιστεί με τη μορφή της μονάδας καιρού-api για τον python.

  1. Πρώτα πρέπει να εγκαταστήσουμε αυτήν την ενότητα χρησιμοποιώντας: sudo apt install python-pip && sudo pip install weather-api
  2. Επισκεφθείτε τον ιστότοπο του συγγραφέα για περισσότερες πληροφορίες σχετικά με αυτήν την ενότητα.

Μόλις εγκαταστήσετε, ο ακόλουθος κώδικας λαμβάνει τις καιρικές συνθήκες για αυτήν τη στιγμή

από εισαγωγή καιρού Weatherweather = Καιρός ()

τοποθεσία = weather.lookup_by_location ('dublin')

condition = location.condition ()

εκτύπωση (condition.text ())

Το βάζουμε όλα μαζί

Ολόκληρος ο κώδικας για το έργο που συνδέει όλα τα παραπάνω κομμάτια μπορείτε να τον βρείτε εδώ.

Αυτόματη εκκίνηση του σεναρίου python κατά την εκκίνηση

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

  1. Πρώτα καλέστε το εργαλείο cron χρησιμοποιώντας: sudo crontab -e
  2. Τα προηγούμενα βήματα θα ανοίξουν ένα αρχείο διαμόρφωσης, στο οποίο προσθέτουμε την ακόλουθη γραμμή:

    @reboot python /home/pi/light.py &

Βήμα 4: Μοντελοποίηση και τρισδιάστατη εκτύπωση

Μοντελοποίηση και τρισδιάστατη εκτύπωση
Μοντελοποίηση και τρισδιάστατη εκτύπωση
Μοντελοποίηση και τρισδιάστατη εκτύπωση
Μοντελοποίηση και τρισδιάστατη εκτύπωση

Το τρισδιάστατο μοντέλο του Plus έχει δημιουργηθεί σε Solidworks και έχει αποθηκευτεί ως μορφή. Stl. Στη συνέχεια, για τρισδιάστατη εκτύπωση του μοντέλου, το αρχείο. Stl εισήχθη στο λογισμικό Cura. Κάθε πλευρά του συν χρειάστηκε 2:30 ώρες για την παραγωγή. έτσι κάθε πλήρες Plus χρειάστηκε περίπου 5 ώρες για να εκτυπωθεί. Και για τις διαφανείς πλευρές, το πλεξιγκλάς κόπηκε με λέιζερ.

Βήμα 5: Συναρμολόγηση

Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση
Συνέλευση

Με το τρισδιάστατο κομμάτι, τα ηλεκτρονικά και το λογισμικό που διαθέτουμε, μπορούμε επιτέλους να συναρμολογήσουμε το τελικό προϊόν.

  1. Οι τρισδιάστατες εκτυπωμένες πλάκες πάνω και κάτω, διαπιστώσαμε ότι ήταν πιο διαφανείς από το αναμενόμενο. Ένα στρώμα αλουμινόχαρτου έλυσε το πρόβλημα διαρροής φωτός.
  2. Ωστόσο, αυτά τα φύλλα είναι αγώγιμα και μπορούν να προκαλέσουν σορτς στο απροστάτευτο κύκλωμά μας. Έτσι, ένα άλλο στρώμα από χαρτόνι λευκής κάρτας είναι κολλημένο από πάνω.
  3. Τα διάχυτα τμήματα πλεξιγκλάς είναι κολλημένα σε μία από τις πλευρικές πλάκες.
  4. Μια τρύπα ανοίγει σε ένα από τα πλαϊνά τρισδιάστατα πάνελ. Αυτό γίνεται για να μπορέσουμε να περάσουμε από το καλώδιο τροφοδοσίας.
  5. Μόλις το καλώδιο τροφοδοσίας τοποθετηθεί μέσα από την τρύπα, το κολλάμε πάνω στον πίνακα πρωτοτύπων μας.
  6. Συνδέουμε τον αισθητήρα στο βατόμουρο pi και στη συνέχεια τον συνδέουμε στον σύνδεσμο.
  7. Συνδέουμε τα 2 κομμάτια μαζί για να πάρουμε το τελικό μας προϊόν.
  8. Προαιρετικά μπορείτε να κολλήσετε το 2 κομμάτι για να κάνετε μια πιο μόνιμη σύνδεση. Ωστόσο, να γνωρίζετε ότι ίσως είναι δύσκολο να μπείτε στο κουτί μετά το κλείσιμο, εάν θέλετε να αλλάξετε τον κώδικα αργότερα.

Συνιστάται: