4. Cloud-Musikplayer¶
Das Ziel dieses Projekts ist es, einen Musikplayer mit Blynk zu erstellen. Die Musik wird genauso abgespielt wie in 5.7 Tone() oder noTone(), indem man das Lied im Programm schreibt und es mit einem passiven Buzzer abspielt. In diesem Beispiel können wir jedoch den Schalter klicken, um die Wiedergabe zu starten/anhalten und den Schieberegler verschieben, um den Wiedergabefortschritt zu ändern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
1. Schaltung aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.
2. Dashboard bearbeiten
Erstellen Sie einen Datastream des Typs Virtual Pin auf der Datastream-Seite als den später vom Slider-Widget oder Code geänderten Wert. Setzen Sie den DATENTYP auf Integer und MIN und MAX auf 0 und 30.
Erstellen Sie auch einen weiteren Datastream des Typs Virtual Pin, um den Musiknamen anzuzeigen, und setzen Sie den DATENTYP auf
String
.Gehen Sie zur Wed Dashboard-Seite, ziehen Sie ein Switch-Widget und setzen Sie Datastream auf V0 (V0 ist bereits in 2. Daten von Blynk abrufen gesetzt); ziehen Sie ein Label-Widget und setzen Sie es auf V3; ziehen Sie ein Slider-Widget und setzen Sie es auf V2.
Bemerkung
Ihre virtuellen Pins könnten sich von meinen unterscheiden, Ihre gelten. Sie müssen jedoch die entsprechende Pinnummer im Code ändern.
3. Den Code ausführen
Öffnen Sie die Datei
4.cloud_music_player.ino
unter dem Pfad3in1-kit\iot_project\4.cloud_music_player
.Ersetzen Sie die
Template ID
, denDevice Name
und denAuth Token
durch Ihre eigenen Daten. Sie müssen auch diessid
und daspassword
Ihres verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen wir auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf den Upoad-Button.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung wie eine erfolgreiche Verbindung.
Bemerkung
Wenn die Nachricht
ESP reagiert nicht
beim Verbinden erscheint, folgen Sie bitte diesen Schritten.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden und dann trennen.
Drücken Sie den Reset-Button auf dem R3-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen, bitte haben Sie Geduld.
Nun können Sie mit Blynks Button-Steuerwidget die Musik starten/anhalten und mit dem Schieberegler den Wiedergabefortschritt anpassen, und Sie sehen auch den Namen des Musikstücks.
Wenn Sie Blynk auf mobilen Geräten nutzen möchten, verweisen wir auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert es?
Der Datenstrom V0 wird verwendet, um den Status des Switch-Widgets zu erhalten und der Variablen musicPlayFlag zuzuweisen, die das Pausieren und Abspielen der Musik steuert.
int musicPlayFlag=0;
BLYNK_WRITE(V0)
{
musicPlayFlag = param.asInt(); // MUSIK STARTEN/PAUSIEREN
}
Der Datenstrom V2 wird verwendet, um den Wert des Schieberegler-Widgets zu erhalten und ihn der Variablen scrubBar zuzuweisen, wenn der Schieberegler verschoben wird.
int scrubBar=0;
BLYNK_WRITE(V2)
{
scrubBar=param.asInt();
}
Wenn das Gerät mit dem Blynk Cloud verbunden ist, schreiben Sie den Musiknamen für den V3 Datenstrom und zeigen Sie ihn dann mit dem Label-Widget an.
BLYNK_CONNECTED() {
String songName = "Ode an die Freude";
Blynk.virtualWrite(V3, songName);
}
Der Blynk Timer wird jede Sekunde ausgeführt. Die Musik wird abgespielt, wenn musicPlayFlag nicht 0 ist, d.h. das Switch-Widget ist EIN.
Sobald zwei Noten gespielt werden, wird die Fortschrittsbalkenvariable scrubBar
um 2 erhöht, und der Wert wird dann an die Blynk Cloud geschrieben, die den Wert des Slider-Widgets synchronisiert.
void myTimerEvent()
{
if(musicPlayFlag!=0)
{
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
delay(500);
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
Serial.println(scrubBar);
Blynk.virtualWrite(V2, scrubBar);
}
}