elefine のすべての投稿

TCW112-CM 設定の仕方

TERACOMのTCW112-CM は、Ethernetに接続し、パソコン等よりデジタル入力・アナログ入力各1点、温度センサー入力1点、1個のリレーのON・OFF制御ができます。WEBサーバー機能を内蔵していますので、プログラム作成をせずにLAN、インターネットに接続されたパソコン等から操作・モニタリングすることができます。

TCW112-CMのご購入は、下記よりお願いします。
https://www.elefine.jp/SHOP/TCW112-CM.html

設定は、下記の方法で行います。

1. PCのIPアドレスの設定

TCW112-CMの初期状態では、下記のように設定されています。
IPアドレス 192.168.1.2
サブネットマスク  255.255.255.0
デフォルトゲートウェイ 192.168.1.1

設定を行うためには、このIPアドレスにアクセスする必要があります。アクセスするには、IPアドレスが同じ範囲に入っている必要があります。上記のサブネットマスクの設定では、
192.168.1.2 のうち、3番目までは同じで、4番目の2だけが異なるIPアドレスに設定します。
ここでは、192.168.1.10 に設定する例を説明します。

Windows 10でのIPアドレスの設定の仕方

Windows 10 の画面左下のWindowsマークをクリックして、表示されたメニュー内の歯車マークの設定をクリックします。

「ネットワークとインターネット」をクリックします。

有線LANでTCW112-CMに接続する方を選択し、右クリックし、それで表示されたメニューのプロパティをクリックります。

下記のようなウィンドウが表示されますので、「インターネット   プロトコル バージョン 4 (TCP/IP v4)」を選択し、プロパティボタンをクリックします。

下記のようなウィンドウが表示されますので、「次のIPアドレスを使う(S)」 を選択し、IPアドレスに
192.168.1.10
サブネットマスクに
255.255.255.0
を設定し、OKボタンを押します。

上記、設定後、各ウィンドウを閉じます。

2. TCW122-CMの設定

TCW112-CMとPCをクロスのLANケーブルで接続し、TCW112-CMに電源(DC12V)を接続します。

Microsoft Edge、Google Chrome、Internet Explorer等のブラウザーソフトを起動し、アドレスに
192.168.1.2
を入力すると、下記のように表示されます。
UsernameとPasswordは、どちらも
admin
を入力して、Login を押します。

すると、下記のように表示されます。
この画面でRelay の ON/OFF ボタンを押すと、リレーをON・OFFさせることができます。

IPアドレスは、上部メニューの「Network setup」をクリックし、下記のページを表示させます。
この中のIP address で設定します。

Saveボタンを押すと、設定が保存され、有効になります。
設定が変更されると、IPアドレスが異なるため、ページの表示ができなくなります。PCのIPアドレスを変更後、新しいIPアドレスにアクセスしてください。

dScript インストール

dScript 開発環境のインストール

dScript は、イギリスDevanetch社が開発した IoTのためのプログラミング言語です。

PC要件

OS  Windows 7 以降、Linux、Mac OSのいずれか
Webページを見るためにネットワーク接続が必要
USBポート モジュールへのプログラム転送に必要
HTML エディター お好みのものをお使いください。メモ帳等のテキストエディターでもいいです。
お使いのOSに合わせて、dScript のIDEソフトウェアをダウンロードしてください。新しいバージョンをインストールする際は、事前に従来のバージョンのものをアンインストールしてください。

ダウンロード

IDEインストーラ―

IDEは、ご使用のOSに合わせ、下記よりダウンロードしてください。

http://www.robot-electronics.co.uk/dscript.html

サポートファイル

マニュアル、サンプルコード等のサポートファイルは、下記よりダウンロードしてください。

http://www.robot-electronics.co.uk/files/dscript.zip

ダウンロードしたzipファイルを展開すると、下記の4つのフォルダーができます。

Documentation
Examples
USBdriver
Utilities

Documentaionフォルダー

各dScriptモジュールのマニュアル、dScriptのマニュアルが含まれています。

Examples フォルダー

dScriptのサンプルコードが含まれています。

USBdriver フォルダー

Windows 7, Windows 8.1, Windows 10 でのみ使用します。
Linux および Mac OS には、OSに含まれています。

Utilities フォルダー

各dScriptモジュールにアクセスするためのC#およびJavaのサンプルアプリケーション、LANに接続された dScript モジュールを検索するツール が含まれています。

dScript 対応モジュールのご購入はこちらhttps://www.elefine.jp/SHOP/93789/147210/list.html

dScript とは

dScript とは


dScript は、イギリスのDevantech社が開発した、IoT(Internet of Things, モノのインターネット)のためのプログラミング言語です。Devantechの dScript対応の機器(モジュール)で実行されることができます。専用のIDEでdScript対応機器で解釈される、効率的なバイトコードにコンパイルされます。
専用のIDE(統合開発環境)には、エディター、コンパイラー、モジュールへの転送機能が含まれています。
dScriptは、BASICではありませんが、構文は、Visual Basicやマイコン用BASICに使い慣れた方ならなじみ深いものでしょう。

マルチスレッド

マルチスレッドとは、プログラムを同時に実行する機能です。
これは、各プログラムごとに別々のCPUを持つようなもので、それぞれ独自の小さなプログラムを実行しています。プログラムの各区分は、スレッドと呼ばれます。
dScriptは、ネイティブなマルチスレッドコンパイラです。使用可能なRAMの上限まで、任意の数のスレッドを作成することができます。

Webサーバー

dScript Webサーバーを使用して、独自のWebページを作成してモジュールにアップロードすることができます。
Webサイトは、Ajax技術を使用し、ページ全体を更新することなく、変数を変化させることで表示されている数値等だけを変化させることができます。Webページ上のボタンから、モジュール上のリレー、デジタル出力等を制御することができます。
CSSを使用してWebサイトをフォーマットしたり、独自の画像やロゴも入れることができます。

安全

銀行がネットバンキングで口座の所有者であることを確認する方法と同様の方法を使用することで、予め設定されたデバイスとブラウザの組み合わせだけがWebページにアクセスできます。
サーバーは、予め格納されたパスワードから3つのランダムな文字を選択する3つの独立した乱数を送信します。これらはハッシュされ、ハッシュはクッキーとして保存されます。ウェブページを表示できるのはこのクッキーです。ブラウザが閉じられるとクッキーは削除され、数秒間使用しないとログアウトするとサーバーによって無効にされます。その結果、あなただけがウェブページにアクセスできます。

dScript 対応モジュールのご購入はこちらhttps://www.elefine.jp/SHOP/93789/147210/list.html

PoKeys57U,PoKeys57Eの出力テストのしかた

 

PoKeys57Uは、USB接続、PoKeys57Eは、Ethernet接続のI/Oです。
お求めは、下記よりどうぞ。

PoKeys57U
http://www.elefine.jp/SHOP/PoKeys57UT.html

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

出力のテスト

ユーザー作成のプログラムを実行する前に強制的に出力を変化させるとPoKeys57U、PoKeys57Eに接続した回路のテストを行うことができます。

1.PoKeys設定ツールを起動し、PoKeysに接続(Connect)します。

2.上部メニューの Peripherals の中の
Digital inputs and outputs… F4
を選択します。

3.それで表示されたウィンドウの Enable output control にチェックを付けます。

4.強制的に変化させたい端子番号にマウスカーソルを合わせ、マウスの左クリックでON、右クリックでOFFになります。

PoKeys57Uの初期設定方法

 

1.PoLabsのサイトから専用ツールをダウンロードして、Windows PC上で実行します。
https://www.poscope.com/wp-content/uploads/downloads/Pokeys/Software/PoKeys%20v4.2.19%20Configuration%20and%20PoBlocks%20(21.12.2016).exe

2.I Agreeをクリックします。

3.インストールするファイル等を選択しますが、特に問題がなければ、初期状態の全選択にしてください。

4.インストール先を指定します。特に希望がなければ、表示された状態のままでいいです。Install ボタンをクリックするとインストールが始まります。

5.インストールが終わると、下記のように表示されます。
Start PoKeys application にチェックが付いた状態でFinishをクリックするとアプリケーションが起動します。

6.下記のように表示されます。

7.USBケーブルでPoKeys57UとPCを接続します。

8.接続すると、PCに接続されているPoKeys57Uの一覧が表示されます。

9.設定したいPoKeys57U(下記の画像ではPoKeys56Uが1個のみ)を選択し、Connectボタンを押します。

PoKeysConnect

10.インターネットに接続されていると自動的に新しいファームウェアがあるかどうか確認を行い、ある場合は、更新するかどうかの確認のウィンドウが表示されます。更新することをおすすめします。

11.PoKeys57Uへの接続が確立すると、下記のようなウィンドウが表示されます。

12.機能を設定したい、ピン番号をクリックします。

PoKeysPinConfig

13.ウィンドウの中央あたりの下記のような表示部分で機能を選択します。

PoKeysPinConfig2

機能の例
Analog input アナログ入力
Digital input デジタル入力
Analog output アナログ出力
Digital output デジタル出力
Inactive  不使用のピン

14.各ピンの設定が終わったら、機能選択の上にある “Send to device” ボタンをクリックすると、PoKeys57Uに転送されます。

15.1回設定すると、PoKeysのフラッシュメモリーに保存されますので、起動のたびに設定を行う必要はありません。

 

ArduinoでMP3ファイルを再生する Cytron Easy MP3シールド 関数リファレンスマニュアル

Cytron SHILD-EZMP3 (Easy MP3シールド)のライブラリーが用意されているものの、リファレンスマニュアルは用意されておりません。
CytronEZMP3.h を見ると、メソッドの一覧がわかります。名称である程度わかります。さらに機能を知りたい場合は、ソースプログラムのCytronEZMP3.cpp を見て、使用しているチップ XY5200 のマニュアル(中国語)を見るとわかります。
それでは、大変なので、よく使いそうな関数の説明をまとめました。

初期化・通信のためのピン設定
 初期設定を行います。

bool begin(uint8_t rxpin, uint8_t txpin, long baudrate);

引数
rxpin シリアル通信受信ピン番号 省略時 2
txpin シリアル通信受信ピン番号 省略時 3
baudrate シリアル通信ボーレート 省略時 9600

戻り値
成功 true、失敗 false

再生中の確認
 曲が再生されているかどうかを確認します。

bool isPlaying();

引数
なし
戻り値
再生中 true 再生中でない false

物理トラック再生
SDカード、USBメモリーに記録された物理的なトラック番号(コピーした順)を指定して再生します。

void playPhysical (uint16_t num);

引数
num トラック番号(コピーした順)
戻り値
なし

再生
 トラック指定なしの再生

void play();

引数
なし
戻り値
なし

次のトラック再生

void next ();

引数
なし
戻り値
なし

前のトラック再生

void prev ();

引数
なし
戻り値
なし

音量設定

void setVolume (uint16_t volume);

引数
volume 0~30
戻り値
なし

イコライザー設定

void setEQ (uint16_t eq);

引数
eq  0~5  0:Normal  1:Pop 2:Rock  3:Jazz  4:Classic  5:Bass

戻り値
なし

デバイス選択

void setDevice (uint16_t device);

引数
device 1~5  1:USBメモリー 2:SD 3:AUX 4:SLEEP 5:FLASH戻り値
なし

スリープ

void sleep ();

引数
なし
戻り値
なし

リセット

void reset ();

引数
なし
戻り値
なし

一時停止

void pause ();

引数
なし
戻り値
なし

停止

void stop ();

引数
なし
戻り値
なし

ON

void on();

引数
なし
戻り値
なし

OFF

void off();

引数
なし
戻り値
なし

全曲再生

void playAll (boolean state = true);

引数
state
戻り値
なし

特定フォルダートラック再生
 mp3フォルダー内、特定のファイル名のファイルを指定して再生します。フォルダーは、mp3、ファイル名は、0001.mp3、0002.mp3、0003.mp3 という連番にします。
mp3_play (1);
とすると、mp3/0001.mp3 を再生します。

void playTrack (uint16_t num);

引数
num トラック番号
戻り値
なし

現在のデバイス取得

uint8_t getCurrentDevice ();

引数
なし
戻り値
1~5  1:USBメモリー 2:SD 3:AUX 4:SLEEP 5:FLASH

状態取得

uint8_t getCurrentStatus ();

引数
なし
戻り値
状態(XY5200から得た値)

音量設定値取得

uint16_t getVolume ();

引数
なし
戻り値
なし

デバイス指定ファイル数取得

uint16_t getTotalFiles (uint8_t disk);

引数
disk 1:USBメモリー 2:SDカード
戻り値
なし

ファイル数取得取得

現在設定されているデバイスのファイル数を得ます。

uint16_t getTotalFiles ();

引数
なし
戻り値
なし

再生中トラック取得(デバイス指定)

uint16_t getTrackNo(uint8_t disk);

引数
disk 1:USBメモリー 2:SDカード
戻り値
なし

再生中トラック取得

uint16_t getTrackNo();

引数
なし
戻り値
なし

フォルダー・トラック指定再生

void playTrackFromFolder(uint8_t folder, uint8_t track);

引数
folder フォルダー番号(最大99)
戻り値
track トラック番号(1フォルダーあたり最大255)

フォルダーリピート再生

指定したフォルダー内の曲を繰り返し再生します。

void playFolderRepeat(uint8_t folder);

引数
folder フォルダー番号
戻り値
なし

リピート再生

指定したトラックを繰り返し再生します。

void repeatTrack (uint16_t num);

引数
num トラック番号
戻り値
なし

ランダム再生

void randomPlay ();

引数
なし
戻り値
なし

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!
と表示される場合は、センサーからの値を読み出せない状態です。センサーの接続・接触を確認してください。