2016年8月29日月曜日

電子工作 - ミンティアブリーズ MP3プレーヤー

パーツリスト
Arduino Pro min 3.3V()
1
1
1
1
1
1
3
1
1
ミンティアブリーズケース
1

Arduino Pro minは、互換品など多種ありますが、動作電圧が3.3Vのものであれば、なんでも可です。

その他、配線用ワイヤー、ホットボンドなど。

○ケースの加工
 ヘッドフォン、電源スイッチ、充電USB端子用の穴を開けます。
 

 MP3SDカードを出し入れするために、ミンティアの取り出し口を少し広げます。
 

 合わせるとこんな感じです。(加工が荒いのは・・(´・ω・`))

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に次のスケッチを書込みます。
#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;
}
}
}
}
view raw mp3.ino hosted with ❤ by GitHub

 Catalex MP3 Boardは、GroveMP3 v2.0とほぼ同じなので、Groveライブラリが使えます。


○配線


配線後、各パーツをホットボンドで固定します。


○完成
 タクトスイッチ用の穴は開いていませんが、ケースがしなるので、ケースの上から押せます。

スイッチの機能は、次のようになっています。

中央:プレイ/ポーズ
左 :ボリュームダウン、長押しで前の曲へ
右 :ボリュームダウン、長押しで次の曲へ





充電中



2016年8月25日木曜日

TensorFlowをWindows 10(Anniversary Update)にインストールしてみる

TensorFlow(GPUを使わないほうのバージョン)を、Windows 10(Anniversary Update)Windows Subsystem for Linuxにインストールする手順です。


○開発者モードの設定
[スタート]ボタンをクリックし、[設定]をクリックします。
②「Windowsの設定」の「更新とセキュリティ」をクリックします。
③「開発者向け」をクリックし、[開発者モード]をオンにします。


Windows Subsystem for Linux(Bate)のインストール
[スタート]ボタンを右クリックし、[プログラムと機能]を選択します。
②「Windowsの機能の有効化または無効化」をクリックします。
③「Windows Subsystem for Linux(Bate)」のチェックをオンにし、[OK]ボタンをクリックします。
④変更が完了したら、[今すぐ再起動]をクリックし、PCを再起動します。


Bashのインストール
[スタート]ボタンを右クリックし、[コマンドプロンプト]をクリックします。
②コマンドプロンプトから、「bash[Enter]」と入力します。
③「続行するには、"y"を入力してください。」と表示されたら「y[Enter]」と入力します。
④ユーザー名、パスワードの入力が求められたら、ユーザー名とパスワードを入力します。
⑤「インストールが正常に終了しました。」と表示されたら。コマンドプロンプトを閉じます([×]ボタンをクリック)


Bashの起動
[スタート]ボタンをクリックし、[Bash on Ubuntu on Windows]をクリックします。
 


○パッケージのアップグレード
Bashを起動します。
②次のコマンドを入力し、パッケージリストを取得します。
$ sudo apt-get update[Enter]
※コマンド実行後、パスワードの入力が求められるので、パスワードを入力します。
③次のコマンドを入力し、パッケージをアップグレードします。
$ sudo apt-get upgrade[Enter]
※コマンド実行後、パスワードの入力が求められるので、パスワードを入力します。


PIPpython-devのインストール
Bashから、次のコマンドを入力します。
$ sudo apt-get install python-pip python-dev[Enter]
※コマンド実行後、パスワードの入力が求められるので、パスワードを入力します。

TensorFlowのインストール
Bashから次のコマンドを入力します。
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl[Enter]

$ sudo pip install --upgrade $TF_BINARY_URL[Enter]


TensorFlowのテスト(コマンドライン)
Bashから、次のように入力します。
$ python[Enter]
...
>>> import tensorflow as tf[Enter]
>>> hello = tf.constant('Hello, TensorFlow!') [Enter]
>>> sess = tf.Session()[Enter]
>>> print(sess.run(hello)) [Enter]
Hello, TensorFlow!
>>> a = tf.constant(10) [Enter]
>>> b = tf.constant(32) [Enter]
>>> print(sess.run(a + b)) [Enter]
42


MNISTデータセットから手書きの数字を分類するための簡単なデモモデルの実行
 Bashから、次のように入力します。
$ python -m tensorflow.models.image.mnist.convolutional




kindle本:Johnny-Fiveでマイコン制御

Johnny-Fiveの基本的な使い方を解説した書籍をkindeで出版しました。

   
 
 Arduino偏Raspberry Pi偏の2冊です。