Table des matières:

Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)

Vidéo: Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)

Vidéo: Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Vidéo: Pierre-Gilles - Gladys Assistant (Opensource Assistant) 2024, Juillet
Anonim
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266)

Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo.

Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et à l'intensité lumineuse.

Ne vous attendez pas à ce qu'il fasse des chansons entières ou des progressions d'accords. C'est plus comme la musique générative que les gens font parfois avec des synthétiseurs modulaires. Mais c'est un peu moins aléatoire que ça, ça colle à certaines échelles par exemple.

Fournitures

ESP8266 (j'utilise le Feather Huzzah ESP8266 d'Adafruit)

Capteur de température, d'humidité et de pression barométrique BME280 (version I2C)

Capteur de pluie Arduino

25K LDR (résistance dépendante de la lumière)

Quelques Résistances (deux 47, une 100, une 220 et une 1k Ohm)

Connecteur Midi femelle (5 broches Din) adapté au montage sur PCB

Fils de cavalier

Planche à pain ou une sorte de planche de prototypage

Ordinateur, j'en utiliserai un sous Windows 8.1, mais il devrait fonctionner sur n'importe quel système d'exploitation pour autant que je sache.

En option: batterie LiPo 1250 mAh avec connecteur JST d'Adafruit (compatible uniquement avec certains ESP)

Étape 1: Étape 1: Logiciel

Tout d'abord, vous avez besoin de l'IDE Arduino.

Ensuite, vous avez besoin du pilote SiLabs CP2104 et du package de carte ESP8266.

Cela permet à votre ordinateur de programmer l'ESP via l'UART intégré et permet à l'IDE Arduino de programmer l'ESP.

Vous pouvez trouver toutes les informations sur l'IDE, le pilote et la carte sur cette page du site Web d'Adafruit.

Vous aurez également besoin de la bibliothèque Arduino Midi pour pouvoir envoyer des données Midi. Cela peut être fait sans, mais cela rend tout beaucoup plus facile.

Pour communiquer avec le BME280 j'ai utilisé cette librairie BME280-I2C-ESP32. (C'est pour la version I2C du BME280)

Et cette bibliothèque nécessite à son tour le pilote de capteur unifié Adafruit. Ce n'est pas la première fois que j'ai besoin de cette bibliothèque pour utiliser une bibliothèque différente sans problème, j'ai donc toujours cette bibliothèque en signet quelque part.

Étape 2: Étape 2: Matériel

Étape 2: Matériel
Étape 2: Matériel
Étape 2: Matériel
Étape 2: Matériel
Étape 2: Matériel
Étape 2: Matériel

D'accord, nous arrivons enfin aux bonnes choses, le matériel.

Comme mentionné, j'ai utilisé cet ESP Adafruit, mais cela devrait fonctionner correctement avec un NodeMCU. Je recommande la version V2 car je pense qu'elle s'adapte beaucoup mieux sur une maquette et vous pouvez les obtenir à très bas prix sur eBay ou AliExpress. J'aime le fait que l'Adafruit ESP ait un processeur plus rapide, est livré avec un connecteur JST femelle pour un LiPo et un circuit de charge. Il est également un peu plus facile de déterminer quelle épingle vous utilisez. Je crois que sur un NodeMCU, la broche étiquetée D1 est en fait GPIO5 par exemple, vous avez donc toujours besoin d'un tableau de brochage à portée de main. Pas un gros problème du tout, mais juste pratique pour les débutants, ils ont si clairement étiqueté celui d'Adafruit.

Tout d'abord, connectons le BME280, car il existe quelques variantes dans ce modèle. Comme vous pouvez le voir sur les photos, le mien a un seul gros trou, mais il y en a aussi avec 2 trous. Vous pouvez voir qu'il dispose de 4 entrées et sorties, 1 pour l'alimentation, une pour la masse et un SCL et un SDA. Cela signifie qu'il communique via I2C. Je crois que d'autres modèles communiquent via SPI. Et dans certains cas, vous pouvez choisir soit SPI, soit I2C. SPI peut nécessiter une bibliothèque différente ou au moins un code différent et un câblage différent. Je crois également que le S dans SPI signifie Serial et je ne peux pas dire si cela interférera avec la partie Midi de ce projet car cela fonctionne également via une connexion série.

Brancher ce BME est assez simple. Sur l'ESP8266, vous pouvez voir les broches 4 et 5 étiquetées respectivement SDA et SCL. Connectez simplement ces broches directement aux broches SDA et SCL du BME. Bien sûr, connectez également VIN au rail positif de la planche à pain et GND au rail négatif. Ceux-ci sont à leur tour connectés aux broches 3V3 et GND de l'ESP.

Ensuite, nous allons connecter le LDR. Dans l'exemple de Fritzing, vous pouvez voir les 3,3 volts traverser une résistance, puis ils sont divisés en LDR et une autre résistance. Ensuite, après le LDR, il est à nouveau divisé en une résistance et en l'ADC.

Cela permet de protéger l'ESP des tensions trop élevées et de s'assurer qu'il obtient des valeurs lisibles. L'ADC peut gérer 0-1 volts mais le 3V3 délivre 3,3 volts. Cela ne fera probablement rien exploser si vous dépassez 1 volt, mais cela ne fonctionnera pas bien.

Nous utilisons donc d'abord un diviseur de tension utilisant des résistances de 220 et 100 ohms pour réduire la tension de 3,3 à 1,031 volts. Ensuite, le LDR de 25k ohms et la résistance de 1k ohms forment un autre Voltage Devider qui abaisse la tension de n'importe où entre 1,031 et 0 volts en fonction de la quantité de lumière que le LDR reçoit.

Ensuite, nous avons le capteur de pluie. Une partie dit FC-37, l'autre partie dit HW-103. Je viens d'acheter le premier que j'ai trouvé sur Ebay qui disait qu'il pouvait supporter 3,3 et 5 volts. (Je pense qu'ils le peuvent tous).

C'est assez simple, nous pourrions utiliser une sortie analogique, mais nous pouvons simplement tourner le minuscule Trimpot pour que le capteur soit aussi sensible que nous le souhaitons (et nous avons déjà utilisé notre seule broche analogique sur l'ESP). Comme pour les autres capteurs, nous devons alimenter le rail positif et le connecter au rail de terre. Parfois, l'ordre des broches varie cependant. Sur le mien c'est VCC, Ground, Digital, Analog, mais sur la photo Fritzing c'est différent. Mais si vous faites juste attention, cela devrait être facile à obtenir.

Et enfin, le Midi Jack. Sur ma planche à pain, il ne peut pas s'asseoir sur le bord de la planche à pain, car les broches ne s'alignent pas toutes. Si cela vous dérange, j'essaierais de me procurer une planche à pain dans un magasin physique. Ou inspectez très bien les images.

Comme vous pouvez le voir sur le schéma, la tension positive et le signal série passent tous deux par une résistance de 47 ohms.

Si vous faites ce projet avec un Arduino Uno par exemple, assurez-vous d'utiliser des résistances de 220 ohms !! Ces ESP fonctionnent sur une logique 3,3 V, mais la plupart des Arduino utilisent 5,0 V, vous devez donc limiter davantage le courant qui traverse le câble Midi.

Et enfin, connectez la broche du milieu au rail au sol. Les 2 autres broches du Din 5 broches ne sont pas utilisées.

Étape 3: Étape 3: Coder

Et enfin nous avons le code !

Dans ce fichier Zip j'ai mis 2 croquis. 'LightRainTemp' teste simplement tous les capteurs et renvoie leurs valeurs. (Assurez-vous d'ouvrir la fenêtre du terminal !)

Et bien sûr, nous avons le croquis LRTGenerativeMidi (LRT signifie Light, Rain, Temperature).

À l'intérieur, vous pouvez trouver un tas d'explications dans les commentaires sur ce qui se passe. Je ne vais pas expliquer comment j'ai écrit le tout, cela prendrait des heures. Si vous voulez savoir par où commencer avec quelque chose comme ça, j'ai d'autres projets en tête. Un petit générateur de Riff aléatoire avec quelques boutons et un séquenceur avec un tas de fonctionnalités que je ne trouve pas sur d'autres modèles.

Mais ceux que je devrai finir de concevoir et de coder en premier. Faites-moi savoir si vous souhaitez être tenu au courant des autres projets. Je n'ai pas décidé si je ferais plus d'instructables ou si je ferais une série de vidéos.

Étape 4: Étape 4: Branchez-le et testez-le

Et maintenant il est temps de le tester !

Connectez simplement un câble Midi, assurez-vous de régler votre synthétiseur/clavier pour qu'il réponde au canal 1 ou changez le canal dans le code Arduino et voyez si cela fonctionne !

Je suis vraiment curieux de voir et d'entendre ce que vous en faites. Si vous apportez des modifications, des mises à niveau, des ajustements (comme les valeurs du capteur de lumière et de la température. À l'extérieur, cela peut fonctionner mieux ou pire qu'à l'intérieur) n'importe quoi.

Je suis également curieux de voir si cela fonctionne bien avec tous les synthétiseurs. Sur ma Volca Bass ça marche parfaitement, mais sur mon Neutron le LFO se bloque dès que j'envoie une Midi Note. C'est bien quand je le redémarre, mais c'est étrange. Je ne sais pas s'il y a quelque chose dans la bibliothèque Midi ou dans mon code, je pourrais essayer de le faire sans bibliothèque bientôt et voir si ça s'améliore.

Merci d'avoir lu et regardé et bonne chance !!

Conseillé: