デザインかっこいい EAO スイッチをRaspberry Pi Node-REDにつなげるメモです。
EAO ボタンで話が盛り上がったので試してみることに
今回は、知り合いの成瀬さんが、ざっくり私の活動を知ってくれていて「IoTというかデバイスつなげたことあるんですよね?ちょっと良いスイッチがあるので、お茶がてら話でも!」と声がけがあった形で盛り上がったのが発端です。
良いスイッチってなに?と思いますよね。私も思いました。で、実際会ってみて、触らせてもらったのがこれ。富士エレックス株式会社さんからのサンプルです。
展示用なので 3 x 3 で一個一個がスイッチとして単体で機能します。
裏側はこんな感じ。いま12Vの電池から配線が通っているのはメインの回路ではなくて、演出ってやつです。
演出。これ、普段の電子工作のボタンだと、タクトスイッチか、良くてゲームセンターのボタン的な大きなやつしかないので、よくわからなかったんですが、見れば一目瞭然でした。
右上のボタンを押し込んだら通電して、ボタン自体が光っています。かっこいい。
スイッチ自体が金属製で耐久性ありデザインも良さげ。スイッチも押している感覚もしっかりしていて何度も押したくなる心地よさでした。
ひとしきり、いろいろをこれをネタに話をしまして、今回はテスト用で貸していただきました。
EAOとは
さて、冒頭より出てきているEAO。これ会社の名前です。
日本語のトップページはこちら → Human Machine Interfaces (HMI – HMIC – HMIS – HMIA) from EAO | Welcome to EAO
1947年にスイスで設立されたファミリー企業EAO AGは、高品質のスイッチ、キーボード、洗練された操作システムから完全なHMI操作ユニット及びHMIシステムまで、世界中で市場をリードする製造企業に 成長しました。
とのことで、スイッチ専門のグローバル会社とのことでした。
Human Machine Interfaces (HMI – HMIC – HMIS – HMIA) from EAO | Emergency stop switches
デザイン性高いスイッチがたくさんありますね。
Human Machine Interfaces (HMI – HMIC – HMIS – HMIA) from EAO | Emergency stop switches
スイッチの役割は「押したら確実に伝わること」ですので、過酷な状況でも動くものとして非常停止ボタンのニーズも高いようです。電車とか工場で見かけたことがある気がする。
やばい。押したくなる。
さてつなげてみよう
そんなわけで、今回のスイッチを一つつなげてみましょう。
こいつを狙います。
まず、このスイッチの特性を仕様書で見てみます。
なるほど、設備側の資料なので、電気の性質が(自分には)ちょっとわからん。
といいつつも、すくなくとも配線的には照光式スイッチぽいことがわかりました。
いまはプラスマイナスのところでスイッチそのものが光る照光部分が機能してるってことですね。
NC / NO がいまいちわからない
NC / NOという印がイマイチわかりません。タクトスイッチか何かで出てきた気もする。
調べてみたら、いろいろ出てきたので基礎知識のようでした。
その記事の中で上記がわかりやすかった。ありがたやパナソニックさん。
こちらの、c接点にあたり、NC(押したときだけOFF)のパターンとNO(押したときだけON)のパターンを併せ持った仕様のようです。
NO(押したときだけON)につなぎました。ソースコードはこんな感じです。
// Declare the pins for the Button and the LED<br>int buttonPin = 12; int LED = 2; int buttonPin = 12; int servoPin = 3; #include <Servo.h> Servo myservo; // create servo object to control a servo void setup() { // Define pin #12 as input and activate the internal pull-up resistor pinMode(buttonPin, INPUT_PULLUP); // Define pin #13 as output, for the LED pinMode(LED, OUTPUT); // myservo.attach(servoPin); } void loop(){ // Read the value of the input. It can either be 1 or 0 int buttonValue = digitalRead(buttonPin); if (buttonValue == LOW){ // If button pushed, turn LED on digitalWrite(LED,LOW); // myservo.write(90); } else { // Otherwise, turn the LED off digitalWrite(LED, HIGH); // myservo.write(0); } }
まず、Arduino・Groveと連携したものはこちら。
なるほど、大体わかりました。
Raspberry Pi Node-REDとEAO スイッチの接続
では、NO(押したときだけON)のまま、Raspberry Pi Node-REDにつなげましょう。
GNDは9番のピン、GPIOのほうはGPIO27の13番ピンで連携します。今回は、オス・メスのピン連携をラクにつなげたかったので、ブレッドボードを無骨に挟む形でやってます。
Node-REDの設定
つづいて、Node-REDを設定です。
このように、raspi-gpioノードの入力ノードで変化を監視しつつ、デバックノードに結果を表示します。
raspi-gpioノードの設定です。
GPIO27の13番ピンのデジタル入力の変化を監視します。
このように設定で注意すべきはプルアップをかけておくことです。
ポチポチ押してみます。
どうでしょう?
デバックでちゃんとオンオフが検出されています!成功です。
フローJSON
フローJSONも置いておきます。
[ { "id": "bd27c923.4a2678", "type": "rpi-gpio in", "z": "714acd42.5b9784", "name": "", "pin": "13", "intype": "up", "debounce": "25", "read": false, "x": 433, "y": 315, "wires": [ [ "d281ef02.0df2a" ] ] }, { "id": "d281ef02.0df2a", "type": "debug", "z": "714acd42.5b9784", "name": "", "active": true, "console": "false", "complete": "false", "x": 753, "y": 334, "wires": [] } ]
余談:プルアップ指定しないとどうなるか
余談ですが、さきほどのプルアップ指定をしないとどうなるか。
このように「なし」で指定している場合です。
このように、ボタンを押した瞬間、だだだーっとオンオフが予期しない形で検出されるので、オンオフを検出したいとしたら用途に合わないでしょう。設定はご注意下さい!(たぶんチャタリング?)
まとめ
ということで、デザインかっこいい EAO スイッチをRaspberry Pi Node-REDにつなげることができました。
つなげられたことも嬉しいのですが、やや設備寄りのしっかりしたスイッチと見受けられるEAO スイッチの仕様を理解して、Raspberry Pi Node-REDまで持っていけたことが嬉しいです。
このような、しっかりしたスイッチとつなげたことがなかったので、もしも展示や設備での実装の場合に必要になったときに役立つなと感じました。こういったスイッチは、それだけで存在感があるというかユーザーに与える意味が強いので、IoTとの結び付けも楽しそうです。
それでは、よきスイッチ Lifeを!