Interface homme machine

Voila j'aimerai que mes sculptures animé avec moteurs 12 volt (faible puissance) soient commandés (vitesse sens de rotation) par des fréquences sonores trompette sax et autres.
bref peut on transformer des fréquences sonores en impulsions électriques ?

Voila un vidéo de mes machines

Le but c'est de faire une performance musicien machines

Selon le volume et la fréquence sonore le moteur accélère et ou change de sens

En résumé peut on commander des servos moteur ou des moteur DC avec du son ?

Oui

Il faut un micro, faire un échantillonage du bruit ambiant, extraire l’enveloppe, une FFT pour extraire les fréquences et ensuite utiliser cette info pour piloter le,moteur

Et ça peux ce faire en direct le musicien joue et le moteur change d'état ?

Oui
Plus larduino sera rapide et plus il pourra faire de l’analyse de fréquence en temps quasi réel (un teensy sera mieux quunUNO)

ca dépend de la réactivité que tu veux et la finesse des fréquences et enfin de l'Arduino que tu utilise.
Mais oui

Hello,

Dites, les spécialistes du code, vous faites durer le suspens là !

Ça m'intrigue, dans les grandes lignes, vous faites comment SVP?

En gros Vous utilisez un micro pour capturer le signal (échantillonnage numérique à une fréquence adaptée), puis vous appliquez la transformation de Fourier rapide (FFT) qui va vous donner les amplitudes des différentes fréquences dans le signal.

Il y a des bibliothèques adaptées pour la FFT

Il faut un Arduinoqui pedale assez vite et avec assez de RAM pour avoir une fenêtre d’échantillonnage correcte

1 Like

Tu peux regarder les exemples de cette librairie

2 Likes

Merci à tous
Je précise que je suis débutant
Et j'essaye d'apprendre…
Un FFT c'est quoi
Pouvez vous me faire voir à quoi ressemble le montage
Et dite moi si je m'attaque à quelque chose de très complexe pour un ignorant

Encore merci

PS je viens de voir que la réponse sur le FFT à été donnée par JML
Je regarde ça

Il y’a pas mal de tutos (en anglais sans doute) si vous cherchez arduino FFT
Certains pilotent un ruban led en fonction des fréquences, ce serait un code similaire mais au lieu d’allumer des leds vous pilotez les moteurs

Souvenirs souvenirs:

Il faut que la fréquence d’échantillonnage soit au minimum égale à 10 fois la fréquence du signal à échantillonner.

Je ne sais plus si c'est Fourrier ou Laplace qui a dit cela, ça doit être Fourrier.

Peut être qu'un électronicien bidouilleur ferait cela avec un filtre passe bande programmable...
Je m'égare

Tu te mélanges les pinceaux ici...
La fréquence d'échantillonnage doit être au moins le double de la fréquence maximale à détecter. C'est Nyquist qui l'a dit.

Oui - meme si on oublie souvent Shannon ou Edmund Taylor Whittakerdans l’histoire

comme l'indique @lesept deux points suffit, par contre il faut mettre un filtre passe bas avant l'ADC, pour éviter le repliement.

Et Dirac dans tout cela?

Tu dira que tu sais pas ...

Bon, je sors.

1 Like

Ou alors on dira, que comme la fréquence échantillonnage doit être au moins de deux fois la fréquence maximal que tu aura dans ton signal, tu peux alors prendre toutes les techniques qui respecte ce théorème.
Je ne vois pas ce qui te gêne avec ça ?

Edit:
On parle bien de faire un échantillonnage pour déterminer le spectre de fréquence du signal.
Si tu parle de déterminer la forme d'onde, il est évident que ce n'est pas adéquate.

Il dira que le chat de son copain il n'est pas mort, il n'est pas vivant il est les deux!

Seul Chuck Norris sait si le chat est vivant ou pas...

image

@jef59 : je te rejoins...

Il n'y a pas de probléme @terwal , je plaisantais et m'inclinais bien bas.

Je serais incapable de coder tout cela.

Au pire je ferais des filtres passe bandes à ampli OP centrés sur les fréquences voulues, genre quand le filtre entend la fréquence qui le chatouille, il se réveille et commande par exemple un transistor qui commande un servo ou un moteur...
Parce que je ne sais pas faire autrement
Et encore, je ne sais pas si ça marcherait.

Mais le coder, ce serait le plus simple.

@J-M-L t'a expliqué le principe dans le message numéro 2 :

  • Acquérir le signal sonore, le numériser
  • Calculer la transformée de Fourier, c'est à dire le contenu fréquentiel de ton signal (qu'on appelle le spectre sonore)
  • Pour chaque fréquence d'intérêt (à préciser) : vérifier si l'amplitude du signal à cette fréquence est supérieure à un seuil choisi au démarrage
  • Si oui, lancer l'action correspondante

Ce n'est pas forcément facile, mais l'utilisation de bibliothèques spécialisées va te simplifier le travail.

Il faut commencer par choisir le matériel : pour le calcul, je te conseille un ESP32 : plus rapide, et aussi facile à programmer qu'un Arduino. Pour le microphone, il existe plusieurs solutions. Personnellement j'ai déjà utilisé le MAX9814 et il me donnait entière satisfaction (2.16€ chez Ali).

https://fr.aliexpress.com/item/1005006233720383.html

Tu peux voir ici ce que j'en ai fait : un analyseur de son avec ESP32 et transformée de Fourier.

Tu n'es pas forcé de t'en inspirer, mais ça te montre ce qu'un ESP32 peut faire.

Je crois qu'il existe une autre transformée qui permet d'obtenir directement l'amplitude d'une fréquence unique et qui est plus rapide, mais j'ai oublié son nom. Je crois que c'était @al1fch qui en parlait dans une discussion sur le forum. Peut-être qu'il verra ce message et donnera ce nom.
Si tu veux juste faire des actions sur un petit nombre de fréquences, ce sera plus efficace.

Sinon, pour la FFT :

Bon courage !