elefine のすべての投稿

Arduinoの入出力を拡張増設するIOエキスパンダーシールドの使い方

「IOエキスパンダーシールド(Arduino I/O増設 デジタル28点 アナログ16点)」を使うと、比較的簡単にArduinoにデジタル入出力、アナログ入力を拡張増設することができます。

お求めは、下記のサイトでどうぞ。

http://www.elefine.jp/SHOP/IOEXPANDERSHLD.html

Arduinoとの通信は、I2Cを利用しますので、A4(SDA)、A5(SCL)、およびアナログ入力としてA0を使い、合計3点のI/Oを使うだけで済みます。

I2Cで通信を行うデジタル入出力用デバイスMCP23017が2個搭載されています。その各MCP23017のI2Cアドレスは、基板上のジャンパーピンで設定します。

アドレスの上位4ビットは、0x20(16進数) で固定されていますので、下位3ビットをジャンパーピンで設定します。
AD1、AD2、AD3はU2用、AD4、AD5、AD6はU4用です。
AD3、AD2、AD1の順でそれぞれ1、2、4の重みです。同様にAD6、AD5、AD4の順でそれぞれ1、2、4の重みです。
よって、AD1、AD2、AD3のジャンパーをすべて0側(真ん中と0をまたぐようにジャンパーピンを挿す)に挿すとU2のアドレスは、0x20になります。また、AD4、AD5を0側、AD6を1側に挿すとU4のアドレスは、0x21になります。

デジタル入出力ピンとMCP23017のピンの対応

MCP23017の入出力ピンとIOエキスパンダーシールドのピンの対応は、以下のとおりです。

0 – U2 PORT B ビット0
1 – U2 PORT B ビット1
2 – U2 PORT B ビット2
3 – U2 PORT B ビット3
4 – U2 PORT B ビット4
5 – U2 PORT B ビット5
6 – U2 PORT B ビット6
7 – U2 PORT B ビット7

8 – U2 PORT A ビット0
9 – U2 PORT A ビット1
10 – U2 PORT A ビット2
11 – U2 PORT A ビット3
12- U2 PORT A ビット 4
13 – U2 PORT A ビット5
14 – U2 PORT A ビット6
15 – U2 PORT A ビット7

16 – U4 PORT B ビット0
17 – U4 PORT B ビット1
18 – U4 PORT B ビット2
19 – U4 PORT B ビット3
20 – U4 PORT B ビット4
21 – U4 PORT B ビット5
22 – U4 PORT B ビット6
23 – U4 PORT B ビット7

24- U4 PORT A ビット 4
25 – U4 PORT A ビット5
26 – U4 PORT A ビット6
27 – U4 PORT A ビット7

U4 PORT Aの下位4ビットは、アナログマルチプレクサのアナログ入力切替に使用しているため、デジタル入出力としては使用できません。

デジタル入力

サンプルスケッチhttps://github.com/numato/samplecode/blob/master/Arduino/shields/IOExpander/DigitalIn.ino

このサンプルでは、ジャンパーピンをAD6のみ1にして、ほかはすべて0に設定して使用します。よって、U2のI2Cアドレスは0x20、U4は0x21です(7ビット表記アドレス)。

 

入出力の方向設定

setup()内で各MCP23017の入出力の方向を設定しています。
MCP23017には、8ビットのポートが二つあり、PORT A、PORT Bの名称がつけられています。

下記の部分でU2(アドレス0x20)の設定を行っています。
初めの0x00は、MCP23017の内部アドレスで0x00は、PORT Aの入出力方向設定のためのレジスターです。
次の行の0xFFは、入出力の方向を設定しています。8ビットの各ビットが入出力ピンに対応し、0で出力、1で入力です。Outなので0、Inなので1と覚えると覚えやすいです(Z80で8255を使っていた頃の覚え方)。
よって、0xFFは、すべて入力です。

Wire.beginTransmission(0x20);
Wire.write(0x00);
Wire.write(0xFF);
Wire.endTransmission();

同様に次の行で内部アドレス指定を0x01にして、U2のPORT Bの設定を行っています。

Wire.beginTransmission(0x20);
Wire.write(0x01);
Wire.write(0xFF);
Wire.endTransmission();

さらに次の行でI2Cアドレスを0x21にして、U4のPORT A、PORT B の設定を行っています。

U4のPORT Aの設定

Wire.beginTransmission(0x21);
Wire.write(0x00);
Wire.write(0xFF);
Wire.endTransmission();

厳密には、U4のPORT Aの下位4ビットは、アナログ入力のマルチプレクサーの切り替えに使用しているため、0xFFではなく、0xF0のほうがいいでしょう。

U4のPORT Bの設定

Wire.beginTransmission(0x21);
Wire.write(0x01);
Wire.write(0xFF);
Wire.endTransmission();

デジタル入力値の取得

デジタル入力の読み出しは、loop() 内で行っています。
下記は、U2のPORT Aを読み出す例です。8ビット分まとめて読み出されます。

Wire.beginTransmission(0x20); //I2CのアドレスでU2を指定
Wire.write(0x12);     // MCP23017の内部アドレスの指定
Wire.endTransmission();
Wire.requestFrom(0x20, 1);     // 読み出すアドレスを指定する
U2PortA=Wire.read();     // 読み出す

上記の0x20を0x21にするとU4、0x12を0x13にするとPORT Bのデータを読み出すことができます。
読み出した値は、8ビットをまとめた数値ですので、ビットごと、例えばビット0のH,L を確認したい場合は、下記のように &でマスク(対象以外を0にする)して、0以外かどうかを確認します。1がビットを表し、2進数の重みです。
つまり、ビット0からビット7まで、それぞれ1, 2, 4, 8 ,16, 32, 64, 128 です。

if ((U2PortA & 1) != 0) {
    // true (H)の処理
}
else {
// false (L)の処理
}

入力のプルアップ

サンプルスケッチには、記述されておりませんが、MCP23017には、入力を内部の抵抗でプルアップする機能があります。これを使うと、スイッチ入力時、外部でプルアップ抵抗を接続する必要がなく、配線の手間が省けます。プルアップ設定のレジスターのアドレスは、PORT Aが0x0C、PORT Bが0x0Dです。8ビットのビットを1にするとそれに対応したピンがMCP23017の内部の抵抗100kΩでVDD(5V)にプルアップされます。

U2のPORT Aの全端子をプルアップする例

Wire.beginTransmission(0x20);
Wire.write(0x0C);
Wire.write(0xFF);
Wire.endTransmission();

これをsetup()内に入れるとよいでしょう。

デジタル出力

サンプルスケッチhttps://github.com/numato/samplecode/blob/master/Arduino/shields/IOExpander/DigitalOut.ino

このサンプルでは、ジャンパーピンをAD6のみ1にして、ほかはすべて0に設定して使用します。よって、U2のI2Cアドレスは0x20、U4は0x21です(7ビット表記アドレス)。

 

入出力方向設定

デジタル入力と同様、setup()内で各ポートの入出力方向を設定しています。

Wire.beginTransmission(0x20);   // I2Cアドレス U2のアドレス
Wire.write(0x00);      //内部アドレス 入出力方向方向設定レジスター
Wire.write(0x00);     // 入出力方向方向設定
Wire.endTransmission();

1番目の0x00でPORT Aの入出力設定レジスターのアドレスを設定しています。PORT Bの場合は、0x01です。
2番目の0x00で入出力方向を設定しています。出力の場合は、0です。

デジタル出力を行う

loop() 内でデジタル出力を行いますが、サンプルスケッチでは、
DigitalIO(255);
と、関数を介して行っています。
サンプルスケッチでは、全ポート同じ状態を出力しています。
そのDigitalIOの定義を見ると、実際に出力する方法がわかります。
下記は、U2のPORT Aの例です。

Wire.beginTransmission(0x20);
Wire.write(0x12);
Wire.write(i);
Wire.endTransmission();

0x12 でPORT A のデジタル出力レジスターを指定しています。PORT Bの場合は、0x13 です。
Wire.write(i);  が実際に出力するところです。8ビット分まとめて、出力します。8ビットのうち、1ビットのみ変化させたい場合は、前回の状態を保持しておき、その値との | (OR、論理和)、^ (ExOR、排他的論理和)を行います。

OFFにする場合、対象以外を1にして(上記の場合だと、0xf7)、ANDでマスクする方法もあります(この方が正当な方法)が、上記の方が計算が楽です。

ArduinoでMP3ファイルを再生する Cytron Easy MP3シールドの使い方

Cytron SHILD-EZMP3 (Easy MP3シールド)を使うと、マイクロSDカードに記録されている、MP3ファイルを簡単にArduinoで再生させることができます。
従来品に比べ、ボタン処理はプログラムを介さずに処理可能なボタンの搭載、WAVファイルに対応、USBメモリーに対応等の利点があります。
Shield-EZMP3 ISO View-1-800x800

ご購入は、下記のサイトをご覧ください。
http://www.elefine.jp/SHOP/SHIELD-EZMP3.html

EZ MP3再生ライブラリーのインストール

まず、専用のMP3再生ライブラリーをインストールします。

ライブラリー、サンプルスケッチを下記からダウンロードします。GitHubを利用しています。
https://github.com/CytronTechnologies/Cytron-EasyMP3-Shield

ファイル一覧の右上にある “Clone or Download” ボタンをクリックすると、Download ZIPというボタンが表示されますので、それをクリックすると、まとめてZIPファイルにしてダウンロードすることができます。

ダウンロードして、展開すると下記のようなファイル(フォルダー)ができます。

src フォルダー内を見ます。

これら二つのファイルを選択して、右クリック → 送る → 圧縮(zip 形式)フォルダー でZIPファイルに圧縮します。

圧縮されたZIPファイルをArduino IDEがインストールされているフォルダー内の libraries フォルダーにコピーします。

↓ Arduino IDE(開発環境)がインストールされているフォルダー

さらに Cytron_MP3Shield-master.ZIP ファイルを展開したフォルダーへ戻り、examples → PlayATrack の順にフォルダーを選択します。
PlayATrackフォルダー内のPlayATrack.ino をクリックして、Arduino IDEに読み込ませます。

Arduino IDEが起動したら、スケッチ → ライブラリをインクルード → .ZIP形式のライブラリをインストール… の順に選択します。

先ほどコピーしたZIPファイルを選択します。

インクルードが成功すると、下記のように「ライブラリをインクルード」の中に「CytronEZMP3」が表示されます。

マイクロSDカードの準備

マイクロSDカードにMP3ファイルをコピーします。
その際、mp3というフォルダーを作成し、その中に0001.mp3、0002.mp3、0003.mp3 というような連番のファイル名を作成してください。
ファイルのコピーができたら、
MP3シールドのスロットに差し込みます。

 

ArduinoにEasy MP3シールドを接続

Easy MP3シールドをArduinoに差し込みます。

ジャンパーピンが、TXはD3、RXはD2にそれぞれセットされていることを確認してください。初期状態では、この設定になっています。
ただし、D3、D2は、Arduino UNO および、その互換品でしか使えません。

Arduino Mega 等、Uno以外の場合は、下記の表をもとに変更してください。スケッチも変更する必要があります。

ジャンパーを変更したら、スケッチの setup() 内の下記の2,3 をそれぞれジャンパーの設定に合わせてください。

if(!mp3.begin(2, 3))

サンプルスケッチの転送

スケッチ(PlayATrack.ino)をコンパイルして、Arduinoへ転送します。
上述のライブラリーがきちんとインストールされていると、問題なくコンパイルできます。

MP3ファイルの再生

転送し終わると、MP3ファイルが再生されます。音が大きすぎる場合があるので耳につけずにヘッドフォンを接続してください。音の大きさに注意しながら、耳につけてください。

サンプルスケッチでは、6秒ごとに次の曲に切り替わります。また、シリアル通信で再生している曲の表示、音量調節、再生の停止ができるようになっています。
Arduino IDEのシリアルモニタでその確認ができます。

シリアルモニターの表示例

Play/Pause, Prev/Vol-, Next/Vol+ の各押ボタンも有効です。
Prev/Vol-は、長く押すと音量が小さくなり、短いと前の曲に切り替わります。
Next/Vol+は、長く押すと音量が大きくなり、短いと次の曲に切り替わります。
Play/Pauseは、再生・一時停止です。

任意の曲の再生

サンプルスケッチ、PlayATrack.inoで は、6秒ごとに曲が切り替わります。また、トラック指定に関数 playTrack を使っています。
この playTrack  は、mp3フォルダー内の0001.mp3といったファイル名の再生に特化した関数です。それらのファイル名がない場合、再生される曲は不定です。
ほかのファイル名の曲を再生したい場合は、playTrack の代わりに playPhysical (名称どおり解釈すると物理的なトラック番号を再生)を使うとよいでしょう。
SDカードにファイルをコピーした順がトラック番号になります。

使い方例
mp3.playPhysical(1);
引数の1がトラック番号

入力に応じたMP3ファイル(曲)の再生

下記がArduinoの5番ピンをLにするとトラック1、6番ピンをLにすると、トラック2がそれぞれ再生されるようにしたスケッチです。

playPhysical などの関数は、曲の終わりまで待ちません。コマンド発行後、すぐに次の行の処理に移ります。
よって、
while(digitalRead(TUNE_1) == LOW);
で、入力がH (プルアップされているので開放状態)になるまで待機するようにしています。

Easy MP3シールド関数リファレンスマニュアル

ESPresso Lite V2のIPアドレスを固定にする

ESPertで用意されているクラウドサービスを利用することにより、温度・湿度の送信を行うことができます。しかし、クラウドサービスを利用すると全世界に温度・湿度を公開することになり、プライバシーの侵害になってしまいます。プライバシーの問題は別として、LAN内で使う分には、インターネットに公開する必要もないでしょう。

そこで、ESPertのサンプルスケッチを見ると、
_0090_Ajax
というのがありました。
これは、
ESPresso Lite V2がHTTPサーバー(Webサーバー)になり、ブラウザーソフトに対して、Ajaxでデータを送信します。

IPアドレスは、ルーターのDHCPにより、取得し、設定されます。しかし、電源を入れ直すたびにIPアドレスが変わってしまう可能性があり、不便ですので、IPアドレスを固定にしたほうが使い勝手がいいでしょう。ESPertのライブラリーには、IPアドレスを固定にする関数が用意されていませんので、Arduinoのwifiライブラリーに含まれている関数を利用します。

下記のサイトを参考にしました。
https://github.com/esp8266/Arduino/issues/1959
このサイトでは、ESP8266の例ですが、ESPresso もESP8266を使用しているため同様です。

下記の部分で無線LANルーター(アクセスポイント)のSSID、パスワードを設定します。

const char* ssid = “SSID”;
const char* password = “1234567890123”;

下記の部分でIPアドレスを設定します。ルーターが割り当てるIPアドレスと同じ体系にします。若いアドレスは、ルーターがDHCPで割り当てるアドレスに使用することが多いので200前後の大きい値にしたほうがいいでしょう。gateway にルーターのIPアドレスを設定します。

IPAddress ip(192, 168, 1, 190); //任意のIPアドレス
IPAddress gateway(192, 168, 1, 1); //ルーターのIPアドレス
IPAddress subnet(255, 255, 255, 0);

ポート番号は、下記のところで設定しています。通常、HTTPサーバーは、80ですが、変更することもできます。一つのグローバル固定IPアドレスで複数のESPresso Lite (Webサーバー)をインターネットに公開したい場合は、これを変えることにより対応できます。

server = new ESP8266WebServer(80); //ポート番号

パソコンのブラウザーソフトを使って、設定したIPアドレス、上記の例で
http://192.168.1.190
にアクセスすると、下記のように表示されます。

ESPresso_Ajax.pn

 

もとのサンプルスケッチでは、温度のみの表示でしたので湿度も追加しました。単位の℃がうまく表示されないので、C のみに変更しました。
初めの
String indexPage =
に代入する部分でページに表示される内容を変更することができます。

ESPresso Lite V2 ESPert MQTTブローカー

ESPertが提供しているクラウドサービスを利用することにより、インターネットに接続されたESPresso Lite V2の温度・湿度センサーの値を遠隔地のパソコン等で見ることができます。

ESPresso Lite V2 の初期状態では、このMQTT機能がインストールされています。

ESPresso Lite V2をインターネットに接続します。

参照
ESPRESSO LITE V2.0 をインターネットに接続する

ESPresso Lite V2.0 をインターネットに接続する

パソコンで下記のサイトにアクセスします。
http://www.espert.io/mqtt/index.html

Host、Port、ClientID は、自動的に表示されます。
その他も表示された通りの空欄、数値でけっこうです。
その状態でConnect ボタンをクリックします。ESPert021

ホストに接続されると、connected と表示されます。
Add New Topic Subscription ボタンをクリックします。

ESPert022

Topic に
ESPert/XXXXXXXX/#
を入力(XXXXXXXXの部分は、OLEDに表示の固有のID ) を入力し、Subscribeボタンをクリックします。
ESPert023

Messages に指定したIDのESPresso Lite V2の温度・湿度が表示されます。

ESPert024

うまく表示されない場合は、UC00A USB・UARTコンバーターを接続し、Arduino IDEのシリアルモニターで状態を確認すると状況がわかりやすいです。
ESPert025
センサーの値が正しく読み出され、ホストへの送信がうまくできている状態では、
{“temperature”:”25.80″, “humidity”:”54.00″, “name”:”ESPert-XXXXXXXX”}
と表示されます。

ESPert: Failed to read temperature from DHT sensor!
ESPert: Failed to read humidity from DHT sensor!
と表示される場合は、センサーからの値を読み出せない状態です。センサーの接続・接触を確認してください。

ESPresso Lite V2のクラウドサービスESPertのアカウントを作成する

 

ESPertでは、無料で使えるクラウドサービスを提供しています。
固定グローバルIPアドレスがなくてもインターネットからESPresso Lite V2に対してアクセスすることができます。

アカウントの登録

下記にアクセスします。
http://www.espert.io/

ESPert010

右上の Login をクリックします。
ESPert011
Click here to register をクリックすると、下記のようなページが開きますので、ユーザー名(任意のもの)、Eメールアドレス、パスワード、パスワード確認、名前、性別を入力して、I agree with the Terms and Conditionsのチェックボックスにチェックをつけ、Resister をクリックします。
ESPert013
入力されたEメールアドレスあてに確認のEメールが届きますので、そのURLにアクセスすると登録が完了します。

 

Arduino IDEをESPresso Lite V2.0に対応させる方法

 

Arduino(Genuino)の開発に使う開発環境(IDE)でESPresso Lite V2.0 のプログラムを開発することができます。

下記のサイトよりArduino IDE (開発環境)をダウンロードして、インストールします。

https://www.arduino.cc/en/Main/Software

ARDUINO 1.6.9 より古いバージョンでは、サンプルスケッチのコンパイル時にエラーが発生する可能性があります。

インストール後、下記の手順でESPertの開発環境を整えます。ESPert_ArduinoIDE001

「追加のボードマネージャのURL」に
http://arduino.esp8266.com/stable/package_esp8266com_index.json
を入力します。ESPert_ArduinoIDE002

ツール → ボード → ボードマネージャ… の順に選択します。

ESPert_ArduinoIDE003

ボードマネージャのウィンドウで
esp8266 by ESP8266 Community
を選択し、インストールします。

ESPertArdunoIDE007

ツール → ボード で ESPresso Lite 2.0 を選択します。ESPert_ArduinoIDE004

スケッチ → ライブラリをインクルード  → ライブラリを管理…
の順に選択します。ESPert_ArduinoIDE010

ライブラリマネージャ のウィンドウで
ESPert by Jimmy
をインストールします。

ESPertArduinoIDE005

同様に下記の各ライブラリをインストールします。

  • Adafruit NeoPixel by Adafruit
  • ArduinoJson by Benoit Blanchon
  • DHT sensor library by Adafruit
  • ESP8266 Oled Driver for SSD1306 display by Daniel Eichborn
  • HttpClient by Adrian McEwen
  • PubSubClient by Nick O’Leary

スケッチの例 → ESPert にESPresso Lite V2.0 のサンプルスケッチが入っています。
_2000_ESPert_workshop が出荷時に書き込まれているスケッチです。

ESPert_ArduinoIDE013

 

ESPresso Lite V2.0 をインターネットに接続する

 

ESPresso Lite V2.0 は、無線LANルーター(Wi-Fiルーター)を介し、スタンドアロンでインターネットに接続することができます。
ただし、ESPresso Lite V2.0 には、キーボード等がついていませんので、接続先アクセスポイントの設定は、Androidスマートフォン、iPhone等を使って行います。

1. 専用アプリを使う方法

Android向けに用意されているアプリを使って設定を行う方法です。
下記のアプリをGoogle Playより、Androidスマートフォン、タブレットにインストールします。
ESPert SmartConfig 1.0.0

iPhone用のアプリは、まだ用意されておりません。

ESPert_SmartConfig

ESPresso Lite V2.0の電源が入った状態でGPIO13 のボタンを5秒ほど押します。

ESPert_SmartConfig_002

LEDの点灯状態でモードを把握することができます。

遅い点滅:SmartConfig モード
消灯:Wi-Fiに接続された状態
速い点滅:AP モード (アクセスポイントモード)
通常の点滅:Wi-Fiへの接続を試みている状態
消灯:Wi-Fiへ接続されてない状態

しかし、LEDでは状態を把握しづらいので
0.96インチ有機EL(OLED)モジュール
を使用することをお勧めします。
ESP_OLED

OLEDモジュールを接続すると、下記のように表示されます。

ESPert_SmartConfig_003GPIOボタンを長押しするたびにモードが変わります。専用アプリを使用して設定を行う場合場合、このSmart Config モードを使用します。

無線LANに接続した状態でESPert SmartConfig アプリを起動します。
すると、SSID: にスマートフォンが接続している無線LANのSSIDが表示されます。
パスワードは、スマートフォンが接続している無線LANルーター(アクセスポイント)のパスワードを入力します。

ESPert_SmartConfig_004

無線LANに接続されている ESPresso Lite V2.0 が認識され、設定が終わると下記のように表示されます。

ESPert_SmartConfig_006

OLEDには、下記のように表示されます。
ESPert_SmartConfig_005

これにより設定された項目は、EEPROMに保存され、電源を入れ直しても同じ設定が反映されます。

2. ESPresso Lite V2.0をアクセスポイントにして行う方法

ESPresso Lite V2.0をアクセスポイントに設定し、PCやスマートフォンからそのアクセスポイントに接続して、設定を行う方法です。

まず、無線LANルーターを有効な状態にしておいてください。

ESPresso Lite V2.0の電源が入った状態でGPIO13 のボタンを5秒ほど押します。

ESPert_SmartConfig_002

LEDの点灯状態が速い点滅になり、OLEDには、下記のように表示されます。

ESPert_SmartConfig_007

上記の「12345678」は、各ESPresso Lite固有の番号です。

パソコン等からそのアクセスポイントに接続します。
パソコンでアクセスポイント一覧を見ると、下記のように「ESPert-固有の番号」が表示されます。
ESPert_SmartConfig_008

「ESPert-xxxxxxxx(固有の番号)」を選択し、「接続」をクリックします。

ESPert_SmartConfig_009

接続が完了したら、ブラウザーソフトでOLEDに表示されているIPアドレス(通常、192.168.4.1)にアクセスします。
SSID:のChoose a Network に無線LANルーター(アクセスポイント)の一覧が表示されますので、使用する無線LANルーターのSSIDを選択し、そのSSIDのパスワードを入力し、「Submit」を押します。
ESPert_SmartConfig_010

ESPresso Lite V2.0が無線LANに接続され、設定が完了すると、下記のように表示されます。ESPert_SmartConfig_011

OLEDには、無線LANルーターから取得したIPアドレスが表示されます。

ESPert_SmartConfig_012

これにより設定された項目は、EEPROMに保存され、電源を入れ直しても同じ設定が反映されます。

USB接続加速度センサー JoyWarrior 24F14-WP の使い方

 

JoyWarrior 24F14-WPは、パソコンのUSBに接続し、3軸方向の加速度計として使用できます。また、傾斜センサー、振動センサー、衝撃センサーとしても使用できます。 パソコンでは、HIDジョイスティックとして認識されるため、別途、デバイスドライバーをインストールする必要がありません。
HIDなので、Windowsだけでなく、Linux、Mac OSでも使用することができます。
地震センサーとして使用することも可能です。

http://www.elefine.jp/SHOP/JW24F14-WP.html

 

パソコンへの接続

パソコンのUSBへ接続します。標準的なアナログジョイスティックとして認識されますので、別途、ドライバー等をインストールする必要はありません。

テスト用プログラム

各軸の数値表示、簡易的なグラフ表示だけでしたら、テスト用プログラムで行うことができます。
下記より、テスト用プログラム等が含まれているZIPファイルをダウンロードします。

http://www.codemercs.com/downloads/joywarrior/JoyWarrior24F14_win.zip

ダウンロードしたZIPファイルを展開(解凍)すると、下記のようなファイルができます。
JW001

Tilt Sensing

各軸の加速度の数値、および、それらの数値から計算した、各方向の傾きを表示します。

JoyWarrior Device: のドロップダウンリストで、デバイス(ID)を選択します。IDが表示されない場合、USBへの接続の確認等を行ってください。

JW002

Run ボタンをクリックすると、各数値が表示されます。

JW015

Seismograph

各軸の数値の変化を折れ線グラフとして表示します。
Seismograph 1.0 .exe を実行すると、下記のように表示されますので、左のドロップダウンリストで、デバイス(ID)を選択します。IDが表示されない場合、USBへの接続の確認等を行ってください。

JW006

その隣のドロップダウンリストの “2G”、”10Hz” は、それぞれ、レンジ(最大加速度)、更新頻度を表します。必要に応じて変更してください。

Seismographの下記のボタンをクリックすると、記録が始まります。

JW017

 

JW011

再度、ボタンをクリックすると、記録が停止します。

記録が停止した状態で下記のボタンをクリックすると、CSVファイルに出力することができます。

JW018

 

 

下記のボタンをクリックすると、各軸のグラフの線の位置を変更することができます。

JW019

 

 

上記ボタンをクリックして表示される下記のようなウィンドウで表示位置を変更します。

JW013

Banana Pi M3にUbuntu MATEをインストールする方法

Banana Pi M3(BPI-M3)は、オクタコアCPUを搭載したRaspberry Pi類似のシングルボードコンピューターです。

Banana Pi M3には、内蔵の8GB eMMCにAndroidがインストールされていますが、別のOSを使用することもできます。
別のOSのインストールには、内蔵のeMMCへ書き込む方法と、マイクロSDカードに書き込む方法がありますが、マイクロSDカードに書き込む方法を説明します。

インストールするために8GB以上のマイクロSDHC(マイクロSD)カードを用意します。
ただし、同じ8GBの表記でもメーカー、製品によって、実際の容量が異なりますので注意が必要です。
SinoVOIPで用意しているUbuntu MATEのイメージは、7,818,182,656 バイトですので、それ以上必要です。
東芝のMSDAR40N08Gでは、容量不足でした。
エレコムのMF-MRSDH08GC4Rは、書き込むことができました。

パッケージには、実際の具体的な容量が表示されていませんので、16GBのマイクロSDカードを使用したほうが無難です。
下記のサイトよりOSイメージをダウンロードします。
http://www.banana-pi.org/m3-download.html

ダウンロードしたzipファイルを展開(解凍)します。
展開すると、拡張子もなく、- というファイル名になり、正常に展開できなかったように思えますが、大丈夫です。

下記のサイトでSDカードへディスクイメージを書き込むアプリケーション、 DD for Windowsをダウンロードして、インストールします。
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows

Winodws7 以降では、DD for Windows をそのまま実行すると、SDカードのドライブが表示されません。右クリックして、「管理者として実行」で実行する必要があります。BPIM3000
「ファイル選択」をクリックして、ダウンロードして展開してできたファイル、-を指定して、「<<書込<<」ボタンをクリックします。

書き込んだマイクロSDをBanana PI M3 のスロットへ差し込み、電源を接続するとSDカードからOSが読み込まれ、起動します。

BPI-M3 Banana PI M3 オクタコア・シングルボードコンピューター
は、下記でご購入できます。
http://www.elefine.jp/SHOP/BPI-M3.html

ArduinoでMP3ファイルを再生する Cytron MP3シールドの使い方

Cytron Shiled-MP3 (MP3シールド)を使うと、マイクロSDカードに記録されている、MP3ファイルを簡単にArduinoで再生させることができます。
Shield-MP3-640
ご購入は、下記のサイトをご覧ください。
www.elefine.jp/SHOP/SHIELD-MP3.html

MP3再生ライブラリーのインストール

まず、専用のMP3再生ライブラリーをインストールします。

ライブラリーを下記からダウンロードします。GitHubを利用しています。
https://github.com/CytronTechnologies/Cytron_MP3Shield

ファイル一覧の右上にある “Download ZIP” ボタンをクリックすると、まとめてZIPファイルにしてダウンロードすることができます。ShiedMP3_01

ダウンロードして、展開すると下記のようなファイル(フォルダー)ができます。ShiedMP3_02

extras フォルダー内を見ます。ShiedMP3_03

extrasフォルダー内のSdFatフォルダーをArduino IDEがインストールされているフォルダー内の libraries フォルダーにコピーします。ShiedMP3_04

↓ Arduino IDE(開発環境)がインストールされているフォルダーShiedMP3_05

さらに Cytron_MP3Shield-master.ZIP ファイルを展開したフォルダーへ戻ります。ShiedMP3_06

src フォルダーを同じところへコピーします。ShiedMP3_07

コピーしてできたフォルダーを MP3Player という名前に変更します。
src – コピー → MP3Player
ShiedMP3_08

そのMP3PlayerフォルダーをSdFatフォルダーと同様にArduino IDEがインストールされているフォルダー内の libraries フォルダーに移動します。
このsrcフォルダーの名前を変えて、libraries へ入れる点がCytronのチュートリアルの記述と異なります(チュートリアルにあるMP3Playerフォルダーがない)。

うまくインストールされると、Arduino IDEのメニュー
スケッチ → ライブラリをインクルード でMP3Player SdFat が表示されます。

ShiedMP3_09

マイクロSDカードの準備

何も記録されてないマイクロSDカードを用意します。
そのマイクロSDカードのルートディレクトリー(フォルダーに入れない)にCytron_MP3Shield-master.ZIP ファイルを展開した中にある sta013.cfg というファイルをコピーします。

場所 Cytron_MP3Shield-master\extras\Configuration file

extrasフォルダー

ShiedMP3_03

Configuration file フォルダーShiedMP3_10

sta013.cfg  このファイルをマイクロSDカードへコピーします。ShiedMP3_11

MP3ファイルのコピー

このMP3シールドでは、260kbpsまでのビットレートのMP3ファイルを再生することができます。ただし、mainループで他の処理をするためには、200kbp以下に抑えてください。通常聴く分には、128kbpsで十分でしょう。

まずは、サンプルプログラムに手を加えずに再生ができるようにMP3ファイルをサンプルプログラムの記述と同じファイル名にします。Windows PCなどでマイクロSDカード上にFavourites フォルダーを作成し、その中へ任意のMP3ファイルをコピーします。そのファイル名を Taio Cruz – Hangover ft. Flo Rida.mp3 に変更します。
そのマイクロSDカードをMP3シールドのスロットに差し込みます。

ArduinoにMP3シールドを接続

ICSPのピンにもソケットがありますので、それも差し込まれるようにArduinoに差し込みます。

ShiedMP3_13

ジャンパーピンが、SSはD3、ASDはD2にそれぞれセットされていることを確認してください。初期状態では、この設定になっています。

ShiedMP3_12

サンプルスケッチの転送

ダウンロードしたZIPファイルにサンプルスケッチが含まれています。
まずは、1トラック(1曲)再生の下記のサンプルで試すとよいでしょう。
Cytron_MP3Shield-master\examples\PlayATrack

PlayATrack.ino をダブルクリックするとArduino IDEが起動し、読み込まれます。

上述のライブラリーがきちんとインストールされていると、問題なくコンパイルできます。

MP3ファイルの再生

転送し終わると、MP3ファイルが再生されます。音が大きすぎる場合があるので耳につけずにヘッドフォンを接続してください。音の大きさに注意しながら、耳につけてください。

サンプルスケッチでは、シリアル通信で再生している曲の表示、音量調節、再生の停止ができるようになっています。
Arduino IDEのシリアルモニタでその確認ができます。

ShiedMP3_14

再生中のファイル名が表示されます。ShiedMP3_15

a を入力して、「送信」ボタンを押すと、音量が下がります。
ShiedMP3_16

これらの処理は、サンプルスケッチの下記の部分で行っています。
これを見て、お分かりのように “d” で音量を上げる、”s”で再生停止です。

if(isNum)
{
if(mp3.isPlaying()) mp3.Stop();
mp3.PlayTrack(Folder,inputString.toInt());
Serial.println(“Currently playing…”);
Serial.print(“Track “+String(mp3.getTrackNo()));
Serial.println(“: “+mp3.getName());
}
else
{
if(inputString.equals(“a”))
mp3.setVolume(–vol);
else if(inputString.equals(“d”))
mp3.setVolume(++vol);
else if(inputString.equals(“s”))
mp3.Stop();
}

独自のプログラム作成

サンプルスケッチ、CytronのMP3ライブラリーチュートリアルを参照して、各自独自のプログラムを作成してください。