Schreiben Sie auf, was Sie bei der Musikausgabe mit einem Mikrocomputer neu gelernt haben
Bei der Realisierung der Technologie habe ich auf den folgenden Artikel von "Mr. Chikuwa" verwiesen. http://nn-hokuson.hatenablog.com/entry/2017/09/01/092945
Vorläufig wusste ich, dass der Klang aus Sinuskurven verschiedener Frequenzen zusammengesetzt war. Ich habe es zunächst in Python überprüft.
Irgendwie sieht es aus wie ein Sprachsignal.
Der realisierte Code wird unten gezeigt.
import numpy as np
import matplotlib.pyplot as plt
#Frequenz[Hz]
f1 = 100
f2 = 500
f3 = 1000
f4 = 10000
f = [f1,f2,f3,f4]
#Amplitude[V]
A1 = 5
A2 = 3
A3 = 1
A4 = 0.1
A = [A1,A2,A3,A4]
#Zeit
t = np.arange(0,0.01,0.00001)
#Funktion
fig = plt.figure()
#Achsen hinzufügen
ax = fig.add_subplot(111)
y = []
for i in range(4):
y.append(A[i]*np.sin(2*np.pi*f[i]*t))
plt.plot(t,y[i])
#Ausführung zeichnen
#Einstellungen für die Achsenbeschriftung
ax.set_xlabel("time[s]", size = 14, weight = "light")
ax.set_ylabel("Volatage[V]", size = 14, weight = "light")
plt.show()
Die Wellensynthese wird durch die Summe der Sinuswellen jeder Frequenz realisiert
plt.plot(t,sum(y))
Wenn Sie die Luft mit einem Signal vibrieren lassen, sollte dies als ein Geräusch erkannt werden.
Wir verwenden einen Lautsprecher als Methode, um die Luft zu vibrieren. (Es scheint, dass dieser Lautsprecher elektrische Signale in Vibrationen umwandelt.)
Ein PWM-Signal wird im Allgemeinen verwendet, um einem Lautsprecher ein elektrisches Signal zu geben.
** Bild einer zusammengesetzten Welle, die als Eingang für den Lautsprecher verwendet wird **
Dieses Mal wollten wir MP3-Dateien als Audio ausgeben. Ich habe M5STACK als Mikrocomputer für die Sprachsteuerung verwendet.
** 1. MP3-Dateiformat konvertieren ** Bei dieser Arbeit habe ich auf die folgende Seite verwiesen. http://nn-hokuson.hatenablog.com/entry/2017/09/01/092945
Ich habe die MP3-Datei, die ich abspielen möchte, vorbereitet und auf der nächsten Site konvertiert. https://audacity.softonic.jp/
Ändern Sie hier das Dateiformat der Originaldaten (vorbereitete MP3-Datei) und Es ist möglich, eine beliebige Abtastfrequenz zu bestimmen und Daten mit einer geringeren Kapazität als die Originaldaten zu erstellen. Weil die Speicherkapazität bei der Montage auf einem Mikrocomputer wie M5STACK begrenzt ist Es ist notwendig, die Wiedergabezeit und die Abtastfrequenz zu konsultieren.
** 2. In Textdatei konvertieren **
Am Beispiel von gesampelter Musik Speichern Sie im folgenden Speicherformat
Dann wird der Dateiname .raw generiert. Legen Sie es auf das Linux-Terminal
xxd -Ich Dateiname.raw
(Benennen Sie vorläufig die Datei sound.raw)
unsigned char sound_raw[] ={
//Das Ergebnis des Samplings von Musik
}
unsigned int sound_raw_len = xx
Es wird ausgegeben mit. Verwandeln Sie dieses Ergebnis in ein Arduino-Skript Durch das Kopieren wird die Audiodatei im Speicher von Arduino gespeichert. Sie können es jetzt speichern.
** 3. Implementiert in M5 STACK **
Mit M5STACK war es möglich, mit dem folgenden Code zu realisieren.
#include <M5Stack.h>
unsigned char sound_raw[] ={
//Geben Sie das Ergebnis des Samplings von Musik ein
}
unsigned int sound_raw_len = xx; //Anzahl von Beispielen
unsigned char pwm;
void play() {
for (int i = 0; i < sound_raw_len; i++) {
pwm = sound_raw[i];
dacWrite(25, pwm); //Bei M5STACK ist 25PIN an den Lautsprecher angeschlossen.
delayMicroseconds(xx);// xx:Hängt von der Abtastfrequenz ab
}
dacWrite(25, 0); //speakeroff
}
void setup() {
M5.begin();
delay(500);
M5.Lcd.fillScreen(WHITE);
}
void loop()
{
if(M5.BtnA.wasPressed())//Ton, wenn Taste A gedrückt wird
{
play();
}
M5.update();
}
** Ergänzung ** Ich habe diesen Code auf Arduino Nano ausgeführt und es hat nicht funktioniert. Einfach ausgedrückt war es, wie die Trägerfrequenz und die Sequenz von pwm definiert werden. Ich hoffe, ich kann darüber in einem anderen Artikel schreiben.