パーツリスト
Arduino Pro min 3.3V(※)
|
1
|
1
|
|
1
|
|
1
|
|
1
|
|
1
|
|
3
|
|
1
|
|
1
|
|
ミンティアブリーズケース
|
1
|
※Arduino Pro minは、互換品など多種ありますが、動作電圧が3.3Vのものであれば、なんでも可です。
その他、配線用ワイヤー、ホットボンドなど。
○ケースの加工
ヘッドフォン、電源スイッチ、充電USB端子用の穴を開けます。
MP3のSDカードを出し入れするために、ミンティアの取り出し口を少し広げます。
合わせるとこんな感じです。(加工が荒いのは・・(´・ω・`))
・SDカード(左)、電源スイッチ(右)
・充電USB
・ヘッドフォン端子
○TP4056の改造
充電電流を調整できるように、RPROGを半固定ボリュームに変更します。
RPROG(kΩ)
|
IBAT(mA)
|
30
|
50
|
20
|
70
|
10
|
130
|
5
|
250
|
4
|
300
|
3
|
400
|
2
|
580
|
1.5
|
780
|
1.2
|
1000
|
この例では、抵抗10kΩと半固定ボリューム10kΩを使用しています。20kΩ~30kΩの半固定ボリュームがあれば、すべての充電電流をカバーできます。
改造が終わったら、使用するlipoバッテリーの充電電流に合わせて、抵抗値を調整します。
○タクトスイッチ(プッシュボタン)と電源スイッチ基板の作成
操作ボタン(タクトスイッチ)はできるだけ少なくということで、3つとしました。
タクトスイッチと電源スイッチは、ユニバーサル基板の半田付け面に実装します。
タクトスイッチは、片側の足をカットします。
基板の挿入後、足が基板がはみ出さないようにカットします。
もう一方も同様にカットします。
○レイアウト
各パーツは、次のようにレイアウトします。
○回路図
○プログラム
Arduinoに次のスケッチを書込みます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <SoftwareSerial.h> | |
#include <MP3Player_KT403A.h> | |
SoftwareSerial mp3(2, 3); | |
bool start = 0; | |
bool pause = 0; | |
bool rep = 0; | |
uint8_t mode = 0; | |
unsigned int pcount; | |
unsigned int wait=12000; | |
int key=-1; | |
int oldkey=-1; | |
int get_key() { | |
pcount = 0; | |
if(digitalRead(4)==LOW) { | |
delay(50); | |
while(digitalRead(4)==LOW){ | |
pcount++; | |
if(pcount > wait){ | |
digitalWrite(13,HIGH); | |
} | |
} | |
if(pcount > wait) { | |
return 0; | |
} else return 2; | |
} | |
if(digitalRead(5)==LOW) { | |
delay(50); | |
while(digitalRead(5)==LOW){} | |
return 4; | |
} | |
if(digitalRead(6)==LOW) { | |
delay(50); | |
while(digitalRead(6)==LOW){ | |
pcount++; | |
if(pcount > wait){ | |
digitalWrite(13,HIGH); | |
} | |
} | |
if(pcount > wait) { | |
return 1; | |
} else return 3; | |
} | |
return -1; | |
} | |
void setup() { | |
mp3.begin(9600); | |
Serial.begin(9600); | |
pinMode(4, INPUT_PULLUP); | |
pinMode(5, INPUT_PULLUP); | |
pinMode(6, INPUT_PULLUP); | |
pinMode(13, OUTPUT); | |
delay(100); | |
SelectPlayerDevice(0x02); // Select SD card as the player device. | |
SetVolume(0x0E); // Set the volume, the range is 0x00 to 0x1 | |
} | |
void loop() { | |
delay(100); | |
digitalWrite(13,LOW); | |
int key = get_key(); | |
Serial.println(key); | |
if (key != oldkey) { | |
oldkey = key; | |
if (key >=0) { | |
switch(key) | |
{ | |
case 0:Serial.println("Prev"); | |
PlayPrevious(); | |
break; | |
case 1:Serial.println("Next"); | |
PlayNext(); | |
break; | |
case 2:Serial.println("Vol Down"); | |
DecreaseVolume(); | |
break; | |
case 3:Serial.println("Vol Up"); | |
IncreaseVolume(); | |
break; | |
case 4:Serial.println(""); | |
if ( start == 0) { | |
SpecifyMusicPlay(1); | |
start = 1; | |
} | |
if ( start == 1) { | |
if (pause == 0){ | |
PlayPause(); | |
pause = 1; | |
} else { | |
PlayResume(); | |
pause = 0; | |
} | |
} | |
break; | |
} | |
} | |
} | |
} |
配線後、各パーツをホットボンドで固定します。
○完成
タクトスイッチ用の穴は開いていませんが、ケースがしなるので、ケースの上から押せます。
スイッチの機能は、次のようになっています。
中央:プレイ/ポーズ
左 :ボリュームダウン、長押しで前の曲へ
右 :ボリュームダウン、長押しで次の曲へ