Arduino-WebベースのMP3プレーヤー
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
ここにPHPoCのみを使用した同様のプロジェクトがあります。
MP3プレーヤーは、美術館や展示会で、訪問者に音声ベースの情報をオンデマンドで提供するのに役立つ場合があります。このプロジェクトは、ArduinoUnoを使用してWebページからMP3を制御する方法を示しています。
初心者の方は、ここでArduinoについて学ぶことができます。
シリアルMP3プレーヤー <図>
シリアルMP3プレーヤーには2つのインターフェースがあります:
- スピーカーにジャック
- マイクロコントローラーへのインターフェース(このプロジェクトではArduinoです)
マイクロコントローラーからコマンド(PLAY、PAUSE、VOLUME UPなど)を受信すると、MP3プレーヤーはSDカードから.mp3ファイルを読み取り、コマンドに基づいてアクションを実行します。
使用する前に、.mp3ファイルをSDカードにコピーし、MP3プレーヤーにマウントする必要があります。
配線
- ArduinoにPHPoCシールドをスタックする
- MP3プレーヤーのGNDピン、VCC TXピン、RXピンをそれぞれArduinoのGND、5V、8ピン、9ピンに接続します。
データフロー
Webブラウザ---> PHPoCWiFiシールド---> Arduino
Webブラウザ上のWebアプリは、タッチイベントまたはクリックイベントに基づいてコマンドとデータをWebSocket経由でPHPoCシールドに送信します。コマンドを受信すると、PHPoCシールドはそれをArduinoに渡します。 Arduinoは、PHPoCシールドから受信したコマンドに従ってMP3プレーヤーにコマンドを送信します。
コマンドセット
<図>ここで、XXはボリューム値です。
注意: PHPoCシールドには、WebブラウザからArduinoにデータを渡すための組み込みプログラムがあります。したがって、気にする必要はありません。
私たちがしなければならないこと
- PHPoCシールドのWifi情報(SSIDとパスワード)を設定します
- 新しいUIをPHPoCシールドにアップロードする
- Arduinoコードを書く
PHPoCシールドのWifi情報を設定する
この手順を参照してください。
新しいWebUIをPHPoCシールドにアップロードする
- PHPoCソースコードremote_mp3.phpをダウンロードします(コードセクションにあります)。
- この手順に従って、PHPoCデバッガーを使用してPHPoCシールドにアップロードします。
注意: このWebUIには、Arduinoに送信するコマンドセットが含まれています。
Arduinoコードを書く
- Arduino IDEにArduinoのライブラリをインストールし(手順を参照)、ArduinoIDEを再起動します。
- Arduino IDEで、[ファイル]-> [例]-> [Phpoc]-> [WebRemoteSlide]に移動します。
- 例を変更しました(コードセクションのソースコードを参照してください)。
テスト
- Arduino IDEのシリアルボタンをクリックして、IPアドレスを確認します。
- Webブラウザを開き、
http://
と入力しますreplace_ip_address
/remote_mp3.php
- 接続ボタンをクリックしてテストします。
初心者のための最高のArduinoスターターキット
初心者向けの最高のArduinoキットをご覧ください
関数リファレンス
- Serial.begin()
- Serial.println()
- delay()
- millis()
- forループ
- whileループ
- その他の場合
- loop()
- setup()
- String.toInt()
- String.substring()
- String.indexOf()
- String.remove()
- String.equals()
コード
- Arduinoコード
- Web IU(remote_mp3.php)
Arduinoコード Arduino
#include "SPI.h" #include "Phpoc.h" #include#define ARDUINO_RX 8 //シリアルMP3プレーヤーモジュールのTXに接続する必要があります#defineARDUINO_TX 9 // moduleAltSoftSerial mySerial(ARDUINO_RX、ARDUINO_TX); static int8_t Send_buf [8] ={0}; #define CMD_PLAY_NEXT 0x01#define CMD_PLAY_PREV 0x02#define CMD_PLAY_W_INDEX 0x03#define CMD_SET_VOLUME 0x06#define CMD_SEL_DEV 0x09#define CMD_PLAY_W_VOL 0x 0x02#define SINGLE_CYCLE_ON 0x00#define SINGLE_CYCLE_OFF 0x01 // ArduinoWebサーバーPhpocServerserver(80); char name; int value; void setup(){mySerial.begin(9600); delay(500); //チップの初期化が完了するのを待ちますsendCommand(CMD_SEL_DEV、DEV_TF); // TFカードdelay(200);を選択します// 200ミリ秒待つSerial.begin(9600); while(!Serial); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); //Phpoc.begin(); server.beginWebSocket( "remote_slide"); Serial.print( "WebSocketサーバーアドレス:"); Serial.println(Phpoc.localIP());} void loop(){//新しいクライアントを待つ:PhpocClient client =server.available(); if(client){String slideStr =client.readLine(); if(slideStr){name =slideStr.charAt(0);値=slideStr.substring(1).toInt(); if(name =='P'){Serial.println( "Play mp3"); sendCommand(CMD_PLAY、0x0000); } if(name =='S'){Serial.println( "Pause mp3"); sendCommand(CMD_PAUSE、0x0000); } if(name =='N'){Serial.println( "Play next mp3"); sendCommand(CMD_PLAY_NEXT、0x0000); } if(name =='B'){Serial.println( "Play previous mp3"); sendCommand(CMD_PLAY_PREV、0x0000); } if(name =='V'){Serial.print( "ボリュームを"に変更); Serial.println(value); sendCommand(CMD_SET_VOLUME、value); }}}} void sendCommand(int8_t command、int16_t dat){delay(20); Send_buf [0] =0x7e; //開始バイトSend_buf [1] =0xff; //バージョンSend_buf [2] =0x06; //開始バイトと終了バイトがないコマンドのバイト数Send_buf [3] =command; // Send_buf [4] =0x00; // 0x00 =フィードバックなし、0x01 =フィードバックSend_buf [5] =(int8_t)(dat>> 8); // datah Send_buf [6] =(int8_t)(dat); // datal Send_buf [7] =0xef; //終了バイトfor(uint8_t i =0; i <8; i ++){mySerial.write(Send_buf [i]); }}
Web IU(remote_mp3.php) PHP
<!DOCTYPE html>PHPoC Shield-IoTMP3プレーヤー
Webリモートコントロール/ IoTMP3プレーヤー
WebSocket: null
回路図
製造プロセス