「Numato Lab」カテゴリーアーカイブ

Numato USB リレーコマンド

NumatoのUSBリレーは、パソコン、スマートフォン等のUSBに接続し、コマンドによりリレーのON/OFF制御を行うことができます。
リレー個数、1個、2個、4個、8個、16個、32個、64個と多彩に用意されております。1個、2個、4個の各ボードは、USBからの電源だけで作動する、USBバスパワータイプも用意されています。

Numato USBリレーボード(リレーモジュール)は、下記よりご購入になれます。

Numato USBリレーモジュール

Numato USBリレーボードは、パソコンに接続すると、仮想シリアルポート(COMポート)として機能します。Visual Basic、Visual C#等からは、シリアルポートに対するコマンド送信で使用することができます。

コマンド一覧

No. コマンド パラメーター 説明
1 ver none ver ファームウェアのバージョンを返します
2 id get/set xxxxxxxx Id get

id set 12345678

モジュールのIDの読み出し、書き込みを行います。
3 relay on/off/read, リレー番号 relay on 0

relay off 0

relay read 0

リレーのON/OFF操作を行います。
4 gpio set/clear/read, gpio 番号 gpio set 0

gpio clear 0

gpio read 0

GPIO (General Purpose Input/Output) の入出力を行います。
5 adc read チャネル adc read 1 アナログ入力値を読み出します

各コマンドの説明

relay

各リレーのON/OFFを行います。

リレー ON

relay on リレー番号

例 relay on 0

リレーをON(CとNOの接点が導通)にします。
リレー番号は、0から始まります。
11個目からは、A、B、C, というようにラテン文字(アルファベット)になります。

リレー OFF

relay on リレー番号

例 relay off 1

リレーをON(CとNOの接点が導通)にします。
リレー番号は、0から始まります。
11個目からは、A、B、C, というようにローマ字になります。

リレー 状態読み出し

relay read リレー番号

例 relay read A

リレーをOFF (CとNCの接点が導通)にします。
リレー番号は、0から始まります。
11個目からは、A、B、C, というようにラテン文字(アルファベット)になります。

gpio

リレーボードには、リレーのほかに3.3V、または、5V (製品によって異なります)のデジタル入出力が行えるGPIOも付いています。そのGPIOの入出力をこのコマンドを使って行います。

GPIO出力ON

gpio set ピン番号

例 gpio set 1

このコマンドを実行すると自動的に出力ピンとして動作します。出力としてしようしたいGPIOにスイッチ等を接続しておくと、出力をONにした瞬間に過電流が流れ、本製品が故障します。

GPIO出力OFF

gpio clear ピン番号

例 gpio clear 2

GPIO入力

gpio read ピン番号

例 gpio read 1

このコマンドを実行すると自動的に入力ピンとして動作します。
出力ピンと使用していて、そのピン自身の出力状態の確認には、使うことはできません。

 

Numatoのサンプルプログラムダウンロード方法

NumatoのUSB GPIO、USBリレー、Bluetooth GPIO、Bluetoothリレー、Ethernet GPIO、Ethernet リレー、FPGAのサンプルプログラムは、Github で提供されています。

Github 上の各サンプルプログラムは、ウェブブラウザ―で見ることはできますが、ファイルとしてダウンロードすることができません。
その対策として、全部まとめてダウンロードする方法があります。ほかのNumato製品のサンプルも一緒になってしまいますが、ダウンロードすることができます。76MBものファイルサイズがあります。

手順

1.下記のサイトにアクセスします。https://github.com/numato/samplecode

2.Clone or download をクリックします。

3.Download ZIP をクリックするとダウンロードが始まります。
4.ダウンロードが始まると下記のように表示されます。
5.ダウンロードが終わったら、ダウンロードしたZIPファイルを展開(解凍)してください。

 

 

Numato Lab Bluetoothリレーの使い方 Windows 10編

Numato LabのBluetoothリレーを使用するためにまず、BluetoothデバイスとPCをペアリングの設定をする必要があります。

1. まず、Bluetoothリレーに電源を接続します。Bluetoothリレーの+12V, GNDの端子台にDC12Vの電源を接続します。

2. 電源を接続すると、基板上の赤いLEDが点滅します。

3. 画面左下のWindowsマークをクリックし、その中の歯車のようなアイコンの設定をクリックします。

4. それにより表示されたウィンドウの「デバイス」をクリックします。

5.  「Bluetooth またはその他のデバイスを追加する」をクリックします。

 

6. Bluetooth を選択します。

7.  すると下記のように「RNBT-xxxx」 (xxxxは個体によって異なる)が表示されますので、それを選択します。

8. 接続をクリックします。

9. 接続が完了すると、下記のように表示されます。

10. デバイスマネージャーを見ると、シリアルポートが追加されていることがわかります。2個のCOMポートが追加されます。通常、若い番号のほうを使います。

BLT016

 

11. このデバイスマネージャーのCOM番号のシリアルポートに対して、コマンドを送信することでリレーのON/OFF等を行うことができます。

12. Tera Termを使うと動作確認をしやすいです。Tera Termをインストールし、起動した際に上記のCOMを指定し、接続します。すると、基板上の青いLEDが点灯します。

BLT021

13. Enterキーを押すと、下記のように  > が表示されます。これで正しく通信が行われていることがわかります。

BLT022

14. ver と入力(verと押してEnterを押す)するとファームウェアのバージョンが返されます。

15. relay 0 on を送信すると、Relay 0がONになります。relay 0 offを送信すると、OFFになります。

ユーザー作成のプログラムからは、Bluetoothを意識することなく、USB・RS232C変換器のようにシリアルポートに対する入出力を行うことで通信を行うことができます。

 

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でマスクする方法もあります(この方が正当な方法)が、上記の方が計算が楽です。

Numato LabのリレーボードをRaspberry Piで使う方法

Numato Labのリレーボードは、Raspberry Piでも使うことができます。

私は、Raspbianで試しましたが、ほかのLinuxでも作動すると思います。

使い方
1. NumatoリレーボードをRaspberry Piに接続して、Raspberry Piを起動し、ログインします。

2. root にログインして、コマンド
dmesg
を実行します。
すると、下記のように認識され、ttyACM0 というデバイス名に割り付けられたことがわかります。
/dev/ttyACM0  というデバイス(ファイル)に対する入出力でリレーボードにアクセスできます。
Raspberry_01

3. シリアル通信のデバイス(ttyACM0)にもファイル同様、所有者が設定されており、そのままでは、所有者以外は使用することができません。そこでroot権限で下記のようにして、パーミッションを変更します。
chmod 666 /dev/ttyACM0

4. プログラムを作成せずに動作確認をするには、Windowsのハイパーターミナルのような cu というターミナルソフトを使うとよいでしょう。
標準では、インストールされてないので、root権限でRaspberry Piがインターネットに接続された状態で
apt-get install cu
を実行します。

5. cuがインストールされたら、下記のように起動します。
cu -l /dev/ttyACM0 -s 9600

6. Connected. と表示されたら、接続成功したことになります。

7. Eneterキーを押すと、リレーボードからの応答で > が表示されます。

8. verを入力すると、ファームウェアのバージョンが返されます。

Raspberry_02

9. 通信確認ができたら、リレー操作のコマンドを送ることにより、リレーのON/OFFができます。

リレー1のON
relay on 1

リレー1のOFF
relay off 1

Numato Lab Bluetoothリレーの使い方

Numato LabのBluetoothリレーを使用するためにまず、BluetoothデバイスとPCをペアリングの設定をする必要があります。

1. まず、Bluetoothリレーに電源を接続します。Bluetoothリレーの+12V, GNDの端子台にDC12Vの電源を接続します。

2. 電源を接続すると、基板上の赤いLEDが点滅します。

3. Bluetoothが内蔵されているか、Bluetoothドングルなどが接続されているPCのコントロールパネルの「ハードウェアとサウンド」内の「デバイスの追加」をクリックします。

BLT002

4.  すると下記のように「RNBT-xxxx」 (xxxxは個体によって異なる)Buが表示されますので、それを選択し、「次へ」をクリックします。

BLT009

5. 「デバイスに接続しています」 と表示されます。

BLT010

6. 下記のように表示されたら、「はい」を選択し、「次へ」をクリックします。

BLT011

7. ペアリングが成功したら、下記のように表示されます。

BLT015

 

8. デバイスマネージャーを見ると、シリアルポートが追加されていることがわかります。

BLT016

 

9. このデバイスマネージャーのCOM番号のシリアルポートに対して、コマンドを送信することでリレーのON/OFF等を行うことができます。

10. Tera Termを使うと動作確認をしやすいです。Tera Termをインストールし、起動した際に上記のCOMを指定し、接続します。すると、基板上の青いLEDが点灯します。

BLT021

11. Enterキーを押すと、下記のように  > が表示されます。これで正しく通信が行われていることがわかります。

BLT022

12. ver と入力(verと押してEnterを押す)するとファームウェアのバージョンが返されます。

 

13. relay 0 on を送信すると、Relay 0がONになります。relay 0 offを送信すると、OFFになります。

ユーザー作成のプログラムからは、Bluetoothを意識することなく、USB・RS232C変換器のようにシリアルポートに対する入出力を行うことで通信を行うことができます。