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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Summer

BUY

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.

../_images/wiring_buzzer.jpg

2. Dashboard bearbeiten

  1. 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.

    ../_images/sp220610_104330.png
  2. Erstellen Sie auch einen weiteren Datastream des Typs Virtual Pin, um den Musiknamen anzuzeigen, und setzen Sie den DATENTYP auf String.

    ../_images/sp220610_105932.png
  3. 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.

    ../_images/sp220610_110105.png

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

  1. Öffnen Sie die Datei 4.cloud_music_player.ino unter dem Pfad 3in1-kit\iot_project\4.cloud_music_player.

  2. Ersetzen Sie die Template ID, den Device Name und den Auth Token durch Ihre eigenen Daten. Sie müssen auch die ssid und das password Ihres verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen wir auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf den Upoad-Button.

  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung wie eine erfolgreiche Verbindung.

    ../_images/2_ready.png

    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.

  5. 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.

    ../_images/sp220610_110105.png
  6. 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);
    }
}