2016年9月18日日曜日

Windows 10 IoT Core Blocklyで遊んでみる

 Windows 10 IoT CoreにBlockly(Googleが提供するビジュアルプログラミング言語)のサンプルが追加されていたので、遊んでみました。
 
 Windows 10 IoT Coreのインストール手順については、以下のページなどを参照してください。

 https://developer.microsoft.com/en-us/windows/iot/GetStarted


必要なもの
Raspberry Pi
Sence HAT


○IoT Core Blocklyyの展開と実行
 IoT Core Dashboardの「サンプルを試す」から、「IoT Core Blocklyy」を展開します。



○サンプルの実行
 メニューからサンプルを選択し、[Run]をクリックします。[Stop]で停止します。続けて別のサンプルを実行する場合は、[Stop]で止めてから、しばらく時間を置かないと上手く動かない場合があります。時間を置いても動かない場合は、ページをリロードして、、[Run]をクリックしてみてください。

・Hartbert


 ジョイスティックを動かうと、「Hello from IoT Core」という文字列がスクロール表示されいます。


・Random bars



・Gravity ball


 重力の方向にボールを移動します。


・Sensor

 温度、コンパス、湿度、圧力センサーの取得値をスクロールで表示します。

・Pong


 ジョイスティックでラケットを移動し、ボールを打ち返すゲームです。


○GIPOの制御
 IoT Core Blocklyyの「Pins」には、GIPOを制御するための「digital write」ブロックがありますが、現状では、動作しないようです。


○補足
 IoT Core Blocklyyは、一度展開すると、スタートアップで自動的に起動されます。Windows 10 IoT Coreを再起動後にブロックエディタを表示するには、ブラウザから「http://your-rpi-name:8000」(your-rpi-nameはIPアドレスでも良い)にアクセスします。
 ただし、ブロックエディタが正しく表示されない場合があります。この場合は、「Device Portal」を開き、「Apps」メニューから「IoTBlocklyBackgroundApp」を削除し、再度、IoT Core DashboardからIoT Core Blocklyyを展開します。

 

2016年9月6日火曜日

DigisparkとPCのシリアル通信

DigisparkPC間でシリアル通信を行うには、DigiUSBライブラリを使います。

ライブラリのインクルード
#include <DigiUSB.h>

DigiUSBライブラリの関数は、次のとおりです。

DigiUSB.begin()
 シリアル通信を初期化します。

DigiUSB.available()
シリアルバッファにあるデータのバイト数を返します。

DigiUSB.read()
 受信データを読み込みます。

DigiUSB.write(byte)
 指定した1バイトのデータを送信します。

DigiUSB.refresh()
 受信バッファをクリアします。

DigiUSB.delay(ms)
 指定時間後に受信バッファをクリアします。

DigiUSB.println(string)
 改行コードを付けて指定した文字列を出力します。

DigiUSB.print(string)
 指定した文字列を出力します。

 DigiUSBライブラリの使用例は、サンプル([ファイル][スケッチの例][DigisparkUSB
])を参照してください。


PC側でデータを送受信するには、DigisparkExampleProgramsに含まれツールを使います。Windowsでは以下のツールを使用できます。

monitor
データの送受信とモニターするためのGUIツール

通信例(サンプルプログラム「Echo)
 

digiscope
 DigisparkからのデータをプロットするGUIツール

 プロットの例(サンプルプログラム「DigiScope)
 
 ※サンプルプログラム中の「float value = analogRead(1);」の記述をfloat value = analogRead(0);」に変更して実行しています。

read
 Digisparkからのデータを受信するコマンドラインツール

write
 Digisparkにデータを送信するコマンドラインツール

receive
 Digisparkからのデータを1度だけ受信するコマンドラインツール

send
 Digisparkにデータを1度だけ送信するコマンドラインツール



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に次のスケッチを書込みます。

 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