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

Weather Based Music Generator (ESP8266 Based Midi Generator): 4 βήματα (με εικόνες)
Weather Based Music Generator (ESP8266 Based Midi Generator): 4 βήματα (με εικόνες)

Βίντεο: Weather Based Music Generator (ESP8266 Based Midi Generator): 4 βήματα (με εικόνες)

Βίντεο: Weather Based Music Generator (ESP8266 Based Midi Generator): 4 βήματα (με εικόνες)
Βίντεο: Weather Generated Music On A Budget (Volca Bass + ESP8266) 2024, Νοέμβριος
Anonim
Weather Based Music Generator (ESP8266 Based Midi Generator)
Weather Based Music Generator (ESP8266 Based Midi Generator)
Weather Based Music Generator (ESP8266 Based Midi Generator)
Weather Based Music Generator (ESP8266 Based Midi Generator)

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

Βασίζεται σε ένα ESP8266, το οποίο είναι σαν το Arduino και ανταποκρίνεται στη θερμοκρασία, τη βροχή και την ένταση του φωτός.

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

Προμήθειες

ESP8266 (Χρησιμοποιώ το Feather Huzzah ESP8266 από το Adafruit)

BME280 Αισθητήρας θερμοκρασίας, υγρασίας και βαρομετρικής πίεσης (η έκδοση I2C)

Αισθητήρας βροχής Arduino

25K LDR (Αντίσταση εξαρτώμενη από το φως)

Μερικές αντιστάσεις (δύο 47, μία 100, μία 220 και μία 1k Ohm)

Θηλυκός συνδετήρας Midi (5 Pin Din) κατάλληλος για τοποθέτηση PCB

Jumper Wires

Breadboard ή κάποιο είδος πρωτοτύπου

Υπολογιστής, θα χρησιμοποιήσω ένα με Windows 8.1, αλλά θα πρέπει να λειτουργεί σε οποιοδήποτε λειτουργικό σύστημα από όσο γνωρίζω.

Προαιρετικά: Μπαταρία LiPo 1250 mAh με υποδοχή JST από την Adafruit (συμβατή μόνο με ορισμένα ESP)

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

Πρώτα απ 'όλα χρειάζεστε το Arduino IDE.

Στη συνέχεια, χρειάζεστε το πρόγραμμα οδήγησης SiLabs CP2104 και το πακέτο πλακέτας ESP8266.

Αυτό επιτρέπει στον υπολογιστή σας να προγραμματίσει το ESP μέσω του ενσωματωμένου UART και επιτρέπει στο Arduino IDE να προγραμματίσει το ESP.

Μπορείτε να βρείτε όλες τις πληροφορίες σχετικά με το πακέτο IDE, Driver and Board σε αυτήν τη σελίδα στον ιστότοπο του Adafruit.

Θα χρειαστείτε επίσης τη Arduino Midi Library για να μπορέσετε να στείλετε δεδομένα Midi. Μπορεί να γίνει χωρίς, αλλά αυτό απλώς κάνει τα πάντα πολύ πιο εύκολα.

Για να επικοινωνήσω με το BME280 χρησιμοποίησα αυτήν τη βιβλιοθήκη BME280-I2C-ESP32. (Αυτό ισχύει για την έκδοση I2C του BME280)

Και αυτή η βιβλιοθήκη με τη σειρά της απαιτεί Adafruit Unified Sensor Driver. Δεν είναι η πρώτη φορά που χρειάζομαι αυτήν τη βιβλιοθήκη για να χρησιμοποιήσω μια διαφορετική βιβλιοθήκη χωρίς προβλήματα, οπότε πάντα έχω αυτή τη Βιβλιοθήκη σελιδοδείκτη κάπου.

Βήμα 2: Βήμα 2: Υλικό

Βήμα 2: Υλικό
Βήμα 2: Υλικό
Βήμα 2: Υλικό
Βήμα 2: Υλικό
Βήμα 2: Υλικό
Βήμα 2: Υλικό

Εντάξει, φτάνουμε επιτέλους στα καλά πράγματα, το υλικό.

Όπως αναφέρθηκε, χρησιμοποίησα αυτό το Adafruit ESP, αλλά θα πρέπει να λειτουργεί καλά με ένα NodeMCU. Προτείνω την έκδοση V2 καθώς πιστεύω ότι ταιριάζει πολύ καλύτερα σε ένα breadboard και μπορείτε να τα πάρετε πολύ φθηνά από το eBay ή το AliExpress. Μου αρέσει το γεγονός ότι το Adafruit ESP έχει ταχύτερη CPU, έρχεται με θηλυκό JST βύσμα για LiPo και κύκλωμα φόρτισης. Είναι επίσης λίγο πιο εύκολο να καταλάβετε τι Pin χρησιμοποιείτε. Πιστεύω ότι σε ένα NodeMCU η καρφίτσα με την ετικέτα D1 είναι στην πραγματικότητα GPIO5, οπότε χρειάζεστε πάντα ένα διάγραμμα Pinout χρήσιμο. Δεν είναι καθόλου μεγάλο ζήτημα, αλλά απλώς βολικό για αρχάριους χαρακτήρισαν τόσο καθαρά το Adafruit.

Αρχικά ας συνδέσουμε το BME280, γιατί υπάρχουν κάποιες παραλλαγές σε αυτό το μοντέλο. Όπως μπορείτε να δείτε από τις εικόνες, το δικό μου έχει τη μεγάλη τρύπα, αλλά υπάρχουν και μερικές με 2 τρύπες. Μπορείτε να δείτε ότι έχει 4 εισόδους και εξόδους, 1 για ισχύ, μία για γείωση και SCL και SDA. Αυτό σημαίνει ότι επικοινωνεί μέσω I2C. Πιστεύω ότι άλλα μοντέλα επικοινωνούν μέσω SPI. Και σε μερικά μπορείτε να επιλέξετε είτε SPI είτε I2C. Το SPI μπορεί να απαιτεί διαφορετική Βιβλιοθήκη ή τουλάχιστον διαφορετικό κώδικα και διαφορετική καλωδίωση. Πιστεύω επίσης ότι το S in SPI σημαίνει Serial και δεν μπορώ να πω αν αυτό θα επηρεάσει το τμήμα Midi αυτού του έργου, καθώς λειτουργεί επίσης μέσω σειριακής σύνδεσης.

Η σύνδεση αυτού του BME είναι αρκετά απλή. Στο ESP8266 μπορείτε να δείτε τα pin 4 και 5 να φέρουν ετικέτα SDA και SCL αντίστοιχα. Απλώς συνδέστε αυτές τις ακίδες απευθείας στον πείρο SDA και SCL στο BME. Φυσικά, συνδέστε επίσης το VIN στο Positive Rail of the Breadboard και το GND στο Negative Rail. Αυτά με τη σειρά τους συνδέονται με τον ακροδέκτη 3V3 και GND του ESP.

Στη συνέχεια θα συνδέσουμε το LDR. Στο παράδειγμα Fritzing μπορείτε να δείτε τα 3,3 βολτ να περνούν από μια αντίσταση, στη συνέχεια να χωρίζεται στο LDR και σε άλλη αντίσταση. Στη συνέχεια, μετά το LDR, χωρίζεται ξανά σε αντίσταση και σε ADC.

Αυτό γίνεται για να προστατεύσει το ESP από πολύ υψηλές τάσεις και για να βεβαιωθείτε ότι παίρνει αναγνώσιμες τιμές. Το ADC μπορεί να χειριστεί 0-1 Volts, αλλά το 3V3 αποδίδει 3,3 volt. Πιθανότατα δεν θα ανατινάξει τίποτα αν πάτε πάνω από 1 βολτ, αλλά δεν θα λειτουργήσει καλά.

Έτσι, πρώτα χρησιμοποιούμε έναν διαχωριστή τάσης χρησιμοποιώντας αντιστάσεις 220 και 100 ohm για να μειώσουμε την τάση από 3,3 σε 1,031 βολτ. Στη συνέχεια, το LDR 25k ohm και η αντίσταση 1k ohm σχηματίζουν ένα άλλο Voltage Devider που μειώνει την τάση από οπουδήποτε μεταξύ 1.031 και 0 volts, ανάλογα με την ποσότητα φωτός που λαμβάνει το LDR.

Στη συνέχεια, έχουμε τον αισθητήρα βροχής. Το ένα μέρος λέει FC-37, το άλλο μέρος λέει HW-103. Αγόρασα μόλις το πρώτο που βρήκα στο Ebay που έλεγε ότι μπορεί να χειριστεί 3,3 á και 5 βολτ. (Νομίζω ότι μπορούν όλοι).

Αυτό είναι αρκετά απλό, θα μπορούσαμε να χρησιμοποιήσουμε μια αναλογική έξοδο, αλλά μπορούμε απλά να γυρίσουμε το μικροσκοπικό Trimpot για να κάνουμε τον αισθητήρα να είναι τόσο ευαίσθητος όσο θέλουμε (και χρησιμοποιήσαμε ήδη έναν αναλογικό μας πείρο στο ESP). Όπως και με τους άλλους αισθητήρες, πρέπει να τροφοδοτούμε την ισχύ από τη θετική ράγα και να τη συνδέουμε με τη ράγα εδάφους. Μερικές φορές η σειρά των ακίδων ποικίλλει όμως. Στο δικό μου είναι VCC, Ground, Digital, Analog, αλλά στην εικόνα Fritzing είναι διαφορετικό. Αλλά αν δώσετε μόνο προσοχή, αυτό θα πρέπει να είναι εύκολο να γίνει σωστό.

Και τέλος, το Midi Jack. Στο Breadboard μου δεν μπορεί να καθίσει στην άκρη του breadboard, καθώς οι καρφίτσες δεν ευθυγραμμίζονται όλες. Εάν αυτό σας ενοχλεί, θα προσπαθούσα να πάρω ένα breadboard σε ένα φυσικό κατάστημα. Or επιθεωρήστε τις εικόνες πολύ καλά.

Όπως μπορείτε να δείτε από το σχηματικό σχήμα, η θετική τάση και το σειριακό σήμα περνούν και τα δύο μέσω αντίστασης 47 ohm.

Αν κάνετε αυτό το έργο με Arduino Uno για παράδειγμα, βεβαιωθείτε ότι χρησιμοποιείτε αντιστάσεις 220 ohm !! Αυτά τα ESP λειτουργούν με λογική 3,3 V, αλλά τα περισσότερα Arduino χρησιμοποιούν 5,0 V, οπότε πρέπει να περιορίσετε περισσότερο το ρεύμα που περνάει από το καλώδιο Midi.

Και τέλος συνδέστε τον μεσαίο πείρο στη ράγα Ground. Οι άλλες 2 ακίδες από το 5 Pin Din δεν χρησιμοποιούνται.

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

Και τελικά έχουμε τον κωδικό!

Σε αυτό το αρχείο Zip έβαλα 2 σκίτσα. Το "LightRainTemp" απλώς δοκιμάζει όλους τους αισθητήρες και στέλνει πίσω τις τιμές τους. (Βεβαιωθείτε ότι έχετε ανοίξει το τερματικό παράθυρο!)

Και φυσικά έχουμε το σκίτσο LRTGenerativeMidi (LRT σημαίνει Light, Rain, Temperature).

Μέσα μπορείτε να βρείτε μια δέσμη εξηγήσεων στα σχόλια για το τι συμβαίνει. Δεν πρόκειται να ασχοληθώ με το πώς έγραψα το όλο θέμα, αυτό θα χρειαζόταν ώρες. Αν θέλετε να μάθετε από πού να ξεκινήσετε με κάτι τέτοιο έχω στο μυαλό μου κάποια άλλα έργα. Μια μικρή γεννήτρια Random Riff με μερικά κουμπιά και ένα Sequencer με μια δέσμη χαρακτηριστικών που δεν μπορώ να βρω σε άλλα μοντέλα.

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

Βήμα 4: Βήμα 4: Συνδέστε το και δοκιμάστε το

Και τώρα ήρθε η ώρα να το δοκιμάσετε!

Απλώς συνδέστε ένα καλώδιο Midi, βεβαιωθείτε ότι έχετε ρυθμίσει το Synth/Keyboard σας ώστε να ανταποκρίνεται στο κανάλι 1 ή αλλάξτε το κανάλι στον κώδικα Arduino και δείτε αν λειτουργεί!

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

Είμαι επίσης περίεργος να δω αν λειτουργεί καλά με όλα τα Synthesizer. Στο Volca Bass μου λειτουργεί τέλεια, αλλά στο Neutron μου το LFO κολλάει μόλις στείλω ένα Midi Note. Είναι μια χαρά όταν το κάνω επανεκκίνηση, αλλά είναι περίεργο. Δεν είμαι σίγουρος αν υπάρχει κάτι στη βιβλιοθήκη Midi ή στον κωδικό μου, ίσως προσπαθήσω να το κάνω χωρίς βιβλιοθήκη σύντομα και να δω αν θα βελτιωθεί.

Ευχαριστώ για την ανάγνωση και την παρακολούθηση και καλή επιτυχία !!

Συνιστάται: