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

Αναψε με! a Realtime Cross-platformed LED Strip Control: 5 βήματα (με εικόνες)
Αναψε με! a Realtime Cross-platformed LED Strip Control: 5 βήματα (με εικόνες)

Βίντεο: Αναψε με! a Realtime Cross-platformed LED Strip Control: 5 βήματα (με εικόνες)

Βίντεο: Αναψε με! a Realtime Cross-platformed LED Strip Control: 5 βήματα (με εικόνες)
Βίντεο: Horizon: Forbidden West (The Movie) 2024, Ιούλιος
Anonim
Αναψε με! ένα Realtime Cross-platformed LED Strip Control
Αναψε με! ένα Realtime Cross-platformed LED Strip Control
Αναψε με! ένα Realtime Cross-platformed LED Strip Control
Αναψε με! ένα Realtime Cross-platformed LED Strip Control
Αναψε με! ένα Realtime Cross-platformed LED Strip Control
Αναψε με! ένα Realtime Cross-platformed LED Strip Control

Αναψε με! είναι ένα σύστημα που εφηύρα για τον έλεγχο ενός RGB LED-Strip σε πραγματικό χρόνο, διατηρώντας παράλληλα το κόστος χαμηλό και την απόδοση υψηλή.

Ο διακομιστής είναι γραμμένος στο Node.js και ως εκ τούτου διασταυρώσιμος.

Στο παράδειγμά μου, χρησιμοποιώ ένα Raspberry Pi 3B για μακροχρόνια χρήση, αλλά τον υπολογιστή με Windows για λόγους επίδειξης και εντοπισμού σφαλμάτων.

Η ταινία 4 πείρων ελέγχεται από έναν πίνακα τύπου Arduino Nano, ο οποίος εκτελεί σειριακές εντολές για την αποστολή σημάτων PWM σε τρία τρανζίστορ που αλλάζουν το +12VDC στον αντίστοιχο χρωματικό πείρο της ταινίας.

Το LightMeUp! Το σύστημα ελέγχει επίσης τη θερμοκρασία του, όταν είναι πάνω από 60 ° C (140 ° F) ενεργοποιεί δύο ανεμιστήρες υπολογιστών 12VDC ενσωματωμένους στο περίβλημα, προκειμένου να κρυώσει για να βελτιώσει τη διάρκεια ζωής του κυκλώματος.

Ένα άλλο χαρακτηριστικό του LightMeUp! είναι να φωτίσετε ένα μπουκάλι Bombay-Sapphire Gin, αλλά αυτό δεν είναι το επίκεντρο αυτού του Instructable.

Απολαύστε την ανάγνωση:)

Προμήθειες

  • Arduino Nano (ή οποιοσδήποτε άλλος μικροελεγκτής ATmega328 / υψηλότερης βάσης)
  • Raspberry Pi 3 Model B με εγκατεστημένο το Node.js (ή οποιονδήποτε άλλο υπολογιστή)
  • 12V RGB 4-pin ταινία LED
  • Τροφοδοσία 12V 3A
  • Καλώδια βραχυκυκλωτήρων (αρσενικό-αρσενικό εάν χρησιμοποιείτε ένα breadboard, φυσικά)
  • Breadboard (προαιρετικό)
  • 2 ανεμιστήρες υπολογιστή 12V DC (προαιρετικά)
  • 3x TIP120 Darlington Transistor με ψύκτρα (4 αν θέλετε να συμπεριλάβετε ανεμιστήρες ψύξης)
  • 2 LED κατάστασης κόκκινο και πράσινο (προαιρετικό)
  • 6, 7K NTC αντίσταση με βάση τη θερμοκρασία + 6, αντίσταση 7K (προαιρετικά)
  • Καλώδιο δεδομένων USB-Mini σε USB 2.0 (για την επικοινωνία του Raspberry Pi με το Arduino)
  • USB-Hub με εξωτερική τροφοδοσία (προαιρετικό, μόνο για Raspberry Pi)

Βήμα 1: Κατανοήστε το σύστημα

Κατανοήστε το Σύστημα
Κατανοήστε το Σύστημα

Αναψε με! βασίζεται σε πολύ απλά ηλεκτρονικά κυκλώματα.

Έχουμε κάποιο είδος υπολογιστή (στην προκειμένη περίπτωση Raspberry Pi) ο οποίος επικοινωνεί σειριακά με την πλακέτα μικροελεγκτή μας. Στη συνέχεια, αυτός ο πίνακας εκτελεί συγκεκριμένες σειριακές εντολές όπως "RGB (255, 255, 255)", οι οποίες θα κάνουν το LED-Strip μας λευκό.

Μόλις λάβουμε τις τρεις τιμές μας για το RED, GREEN και BLUE που είναι απαραίτητες για το 4-pin LED-Strip, εκτελούμε το analogWrite (pin, value) για να τροφοδοτήσουμε το τρανζίστορ TIP120 με σήμα PWM.

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

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

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

Βήμα 2: Γράψιμο του WebSocketServer

Γράψιμο του WebSocketServer
Γράψιμο του WebSocketServer

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

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

Αυτό μπορεί εύκολα να επιτευχθεί χρησιμοποιώντας τη βιβλιοθήκη socket.io εάν χρησιμοποιείτε το Node.js όπως εγώ. Ωστόσο, μπορείτε πάντα να μείνετε στην αγαπημένη σας γλώσσα προγραμματισμού, φυσικά.

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

Ένα άλλο πολύ σημαντικό χαρακτηριστικό που πρέπει να έχει ο διακομιστής αλλά δεν χρειάζεται είναι μια απλή σύνδεση. Βάσα τη σύνδεσή μου από ένα απλό πεδίο ονόματος χρήστη και κωδικού πρόσβασης. Αυτά τα κομμάτια πληροφοριών δημοσιεύονται στη συνέχεια στη διαδρομή /login του διακομιστή, ο οποίος στη συνέχεια συγκρίνει το όνομα χρήστη με μια λίστα χρηστών (αρχείο.txt) και τον αντίστοιχο κωδικό πρόσβασης σε κρυπτογραφημένη μορφή SHA256. Δεν θέλετε οι γείτονές σας να μπερδεύονται με τη λωρίδα LED ενώ απολαμβάνετε το αγαπημένο σας ποτό στο πιο άνετο κάθισμά σας, σωστά;

Τώρα έρχεται η καρδιά του διακομιστή, η σειριακή επικοινωνία.

Ο διακομιστής σας πρέπει να είναι σε θέση να επικοινωνεί σειριακά - στο Node.js αυτό μπορεί να επιτευχθεί ανοίγοντας μια θύρα χρησιμοποιώντας τη βιβλιοθήκη "serialport". Αλλά πρώτα καθορίστε το όνομα της θύρας arduino στον υπολογιστή σας που φιλοξενεί τον διακομιστή. Ανάλογα με το λειτουργικό σας σύστημα, οι θύρες θα έχουν διαφορετικά ονόματα, π.χ. στα Windows αυτές οι θύρες ονομάζονται θύρες "COMx", ενώ στο linux ονομάζονται "/dev/ttyUSBx", όπου x είναι ο αριθμός της θύρας USB.

Βήμα 3: Δημιουργήστε ένα πρωτόκολλο σειριακών εντολών

Καθιέρωση πρωτοκόλλου σειριακών εντολών
Καθιέρωση πρωτοκόλλου σειριακών εντολών

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

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

Χρησιμοποίησα jscolor, έχουν εξαιρετική εφαρμογή ενός στοιχείου επιλογής χρώματος υψηλής ποιότητας, το οποίο διαθέτει ένα συμβάν που ονομάζεται "onFineChange", το οποίο επιτρέπει στα δεδομένα επεξεργασίας σας από το εργαλείο επιλογής χρώματος μόλις αλλάξουν οι τιμές του.

Συνιστάται: