4. Cloud-Musikspieler

Das Ziel dieses Projekts ist es, einen Musikspieler mit Blynk zu erstellen. Die Musik wird auf dieselbe Weise wie in 5.7 Tone() oder noTone() abgespielt, indem das Lied im Programm geschrieben und mit einem passiven Summer abgespielt wird. 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 Kit 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 separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

Arduino Uno R4 Minima

-

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Summer

BUY

1. Schaltkreis aufbauen

Bemerkung

Das ESP8266-Modul erfordert einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.

../_images/iot_4_bb.png

2. Dashboard bearbeiten

  1. Erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite als den vom später hinzugefügten 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 anderen Datastream vom Typ 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 eingestellt); 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 haben Vorrang, aber Sie müssen die entsprechende Pin-Nummer im Code ändern.

3. 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, Device Name und Auth Token durch Ihre eigenen Angaben. Sie müssen auch die ssid und das password des von Ihnen verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R4-Boards mit Blynk herstellen.

  3. Wählen Sie das richtige Board und den Port aus und klicken Sie auf die Upoad-Taste.

  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 Meldung ESP is not responding beim Verbinden erscheint, befolgen Sie bitte diese Schritte.

    • Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.

    • Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST 1 Sekunde lang auf GND legen und dann abziehen.

    • Drücken Sie die Reset-Taste auf dem R4-Board.

    Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen. Bitte haben Sie Geduld.

  5. Nun können Sie Blynks Button Control Widget verwenden, um die Musik zu starten/pausieren und den Slider, um den Wiedergabefortschritt anzupassen. Sie sehen auch den Namen des Musikstücks.

    ../_images/sp220610_110105.png
  6. Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem Mobilgerät?.

Wie funktioniert das?

Der Datenstrom V0 wird verwendet, um den Status des Switch-Widgets abzurufen und der Variable musicPlayFlag zuzuweisen, die das Pausieren und Abspielen der Musik steuert.

int musicPlayFlag=0;

BLYNK_WRITE(V0)
{
    musicPlayFlag = param.asInt(); // START/PAUSE MUSIC
}

Der Datenstrom V2 wird verwendet, um den Wert des Slider-Widgets abzurufen und ihn der Variable scrubBar zuzuweisen, wenn der Slider verschoben wird.

int scrubBar=0;

BLYNK_WRITE(V2)
{
    scrubBar=param.asInt();
}

Wenn das Gerät mit der Blynk Cloud verbunden ist, schreiben Sie den Musiknamen für den Datenstrom V3 und zeigen Sie ihn dann mit dem Label-Widget an.

BLYNK_CONNECTED() {
    String songName = "Ode to Joy";
    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 Variable für die Fortschrittsleiste scrubBar um 2 erhöht, und der Wert wird dann in 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);
    }
}