R-MSMを使って、厨房にある食材を載せたトレイを運搬するベルトコンベアの制御を行いましたので説明します。
Contents
1. 概要
本学で食堂自動化の検討を行っています。盛付システムは、以下のような動作を行います。
0) 注文が入り、料理の開始が告げられ、料理が開始される。
1) 揚がった天ぷらがトレイに載せられ、ベルトコンベアで運ばれ、盛付ロボットの前で止まる。
2) 盛付ロボットはトレイから天ぷらを盛付皿に盛付を行う。
3) 空になったトレイは、ベルトコンベアで次の料理を載せるために戻される。
図1は、実際に、実験を行っている状況を示しています。
・真ん中にある銀色のトレイが載った白い長方形のものがベルトコンベアです。
ベルトコンベアは、手前下にある白い半透明のケースに入った駆動部で動かされます。そして、その左にあるつまみのあるボックスが駆動部のモータの制御ボックスです。手前のつまみで動作のON/OFF、動作の方向、ダイヤルでスピードが制御できます。今回は、この制御ボックスにR-MSMから信号を与え、動作のON/OFFと動作の方向を制御します。
・①はNode-REDのダッシュボードの画面です。盛付システムの進行をLEDの色で表示します。また、Amazon echoと連携しており、「アレクサ、天ぷら揚げて」と言うと盛付システムが起動し、LEDの色が変わります。そして、天ぷらの搬送、盛付ロボによる盛付、空トレイの逆送をLEDで表示します。
図1 R-MSMを使ったベルトコンベア動作制御実験風景
・R-MSMは、このシステムでは3つ使用しています。②と③と④です。R-MSMの番号と使用センサ、そして、実現している機能を表1 にまとめます。
番号 | 使用センサ | 実現機能 |
② | IOエキスパンダ MCP23008 | ベルトコンベアの動作制御、ON/OFF、動作の方向(正転/逆転) |
カラーセンサ S11059 | IR信号を使い、非接触ボタンを実現⇒トレイの逆送を起動 | |
環境センサBME680 | 温湿度、気圧、ガスの情報をエッジサーバに送信し保存 | |
③ | ライトセンサ RPR0521 | 近接センサでトレイを検知し、ベルトコンベアを止める |
④ | IOエキスパンダ MCP23008 | 2台目のベルトコンベアの動作制御(今回はLED点灯で代用) |
9軸モーションセンサ BMX160 | ベルトコンベアの振動をチェックするため、9軸センサのデータをエッジサーバに保存 |
表1 各R-MSMの使用センサと実現機能一覧
・⑤はPDH(Physical Data Hub)のRaspberry Piです。R-MSM②と④とは、Bluetoothで通信を行っています。すぐ横にあるR-MSM③とは、ここではUSB経由で通信をしています。もちろんBluetoothでも通信可能です。
2. 機能の実現方法
この章では、R-MSMを使った、ベルトコンベアの動作制御、近接センサを使ったトレイ検出、IR信号を使った非接触ボタンの実現に関して順に説明します。
2-1. ベルトコンベアの動作制御
2-1-2. 動作システム
ベルトコンベアの動作制御のシステムは、図2のような構成です。
図2 ベルトコンベアの制御システム図
Amazon Echoが「アレクサ、天ぷら揚げて」を捕まえると、Floor Manager(PC)に開始要求が送られます。Floor Managerは、食堂全体の状況を確認し、OKと判断したら、ゲートウェイ(Raspberry Pi)に対し開始信号を送ります。ゲートウェイは、「ベルトコンベア動作開始、向き:正転」のコマンドをpreMSMに対し送ります。preMSMは、Bluetooth経由で送られてきたコマンドに合わせて(ON/OFF、正転/逆転)、ポートの電圧を変化させます。信号は、フォトカプラで電圧変換されてモータ制御Boxに送られ、ベルトコンベアが動作を開始します。
停止時、逆送時は、ゲートウェイが判断し、「ベルトコンベア動作停止」「ベルトコンベア動作開始、向き:逆転」のコマンドをpreMSMに対し送ります。そして、ゲートウェイがその状況をFloor Managerに報告します。Floor Managerは、報告に合わせて、進行状況の表示を変更します。また、その情報を他の食堂の進行の制御に使用します。
図3にFloor ManagerのNode-REDのダッシュボードの画面を示します。この画面で食堂システムの稼働状況が分かります。
図3 Floor Managerの食堂システム稼働表示
2-1-2. preMSMとモータ制御Boxの接続
preMSMとモータ制御Boxの接続回路を、図4に示します。
図4 preMSMとモータ制御Boxの接続回路
preMSMは、IOエクスパンダ MCP23008の出力を使用するため、デジタルセンサモード(Mode-D)で動作させます。そして、出力ポートであるGPIO5~GPIO7が搭載されているコネクタIO-Ex2を使用します。今回は、GPIO7をベルトコンベアの動作ON/OFFに使用し、GPIO6を回転方向入力に使用しました。GPIO7がGND電位で、ベルトコンベアが動作し、GPIO6がGND電位で、正転方向に動作します。
preMSMのコネクタやGPIOの端子番号に関しては、「センサモジュールの仕様」をご確認ください。
図5は、ベルトコンベア動作制御用のpreMSMとBRBの写真です。
図5 動作制御用preMSMとBRB
2-1-3. ゲートウェイとpreMSMのBluetooth接続方法
ゲートウェイとpreMSMのBluetooth接続に関しては、「IoT側へのデータ転送」の「4.ゲートウェイとのコマンドによる接続」に記載しております。ご参照ください。
2-1-4. GPIOへの出力
preMSMのGPIO6, GPIO7の出力電圧を変化させる方法をまとめます。Node-REDのシリアルポートを使用して、Bluetooth経由で制御信号を送ります。preMSMに送信するコマンドとGPIOの出力電圧の関係を、表2にまとめます。
表2 GPIOの出力電圧とコマンドの関係
出力電圧 | コマンド | ||
GPIO5 | GPIO6 | GPIO7 | |
HIGH | MCP23008_GP5=true | MCP23008_GP6=true | MCP23008_GP7=true |
LOW | MCP23008_GP5=false | MCP23008_GP6=false | MCP23008_GP7=false |
例えば、GPIO6にLOWレベルを、GPIO7にHIGHレベルを出力する際には、Node-REDのシリアル出力ノードからBluetooth(/dev/rfcomm0や/dev/rfcomm1など)に以下のコマンドを出力します。
MCP23008_GP6=falseとMCP23008_GP7=true
Node-REDの記述例を図6、図7に示します。特に、図7のシリアル出力の記述は重要です。
preMSMのファームでは、各コマンドを改行コード(“\n”)で区別しています。これによって、複数のコマンドがバッファにたまったとしても、確実に各コマンドを実行することができます。そのために、シリアル出力での改行コード(“\n”)を忘れないでください。
図6 GPIO7のHIGH設定の例
図7 シリアル出力の設定(改行”\n”の記述必須)
2-2. 近接センサを使ったトレイ検出
ベルトコンベアを止めるために、天ぷらを載せたトレイをpreMSMに搭載しているライトセンサRPR0521の近接センサを使用しました。
2-2-1. 近接センサの距離と出力の評価
事前準備として、近接センサの前に物を置いた場合に、センサの出力と距離の関係を評価した。
図8に評価結果を、図7に評価状況の写真を示します。センサを立てて、その前に白い紙の箱を置いてセンサの出力カウント値を読みました。
結果は、両軸を対数表時にした場合に距離が離れると小さくなる関係が直線で確認できました。近接センサの仕様によると物体無の場合のカウント値の最大値が10とあり、今回の実験では300mmのときに2の値になっています。
図8 近接センサの評価結果
図9 近接センサ評価状況
2-2-2. ベルトコンベアの制御
近接センサを使ったベルトコンベアの停止制御のシステム図を図10に示します。
図10 近接センサを使ったベルトコンベアの停止制御のシステム図
・preMSM③の近接センサでトレイを検出します。そのため、RPR0521の近接センサの出力をUSBでゲートウェイに送信します。今回は配置がすぐ隣でしたので、USBでの転送にしました。また、preMSMのRPR0521のサンプリングをデフォルトの1.2秒から0.1秒に変更し、トレイ検出スピードを上げています。最速では10ms程度まで上げられそうです。
・ゲートウェイはトレイを検出するとpreMSM②にベルトコンベアを止めるようにコマンドは発行します。preMSM②は、GPIO7の信号を上げ、ベルトコンベアを止めます。
2-2-3. トレイの検出方法
トレイの検出ですが、以下の方法で行いました。
1) 常時ゲートウェイでセンサの出力の10回平均値をとっておき、変数に保存。
2) その値よりも、入ってきたセンサの値が15以上であれば、トレイが来たと判断。
図11にトレイ検出部分のNode-REDを示します。コメントが書かれている部分が、10回平均を行っているところとセンサの値が15超えたかどうかを判定する部分です。
図11 Node-REDのトレイ検出部分
2-3. IR信号を使った非接触ボタンの実現
天ぷらの盛付が盛付ロボットにより終了したのちに、空トレイをベルトコンベアを逆送させ、もとの位置に戻します。
最終的には、盛付ロボットと連動し、盛付ロボットからの終了信号をもらい、ベルトコンベアを逆送させる予定ですが、今回は、preMSMに搭載しているカラーセンサS11059の明るさ信号であるIR信号を利用し、センサに手をかざし光を遮ることでベルトコンベアを逆送させました。非接触ボタンとして、ベルトコンベアを動作させることができました。
2-3-1. 非接触ボタンの実現
図12にIR信号を用いた非接触ボタンのシステム図を示します。
図12 IR信号を用いた非接触ボタンのシステム図
・モータの制御を行うpreMSM②のカラーセンサを使用し、preMSM②のIR信号の数値をゲートウェイに常時Bluetoothで送り、ゲートウェイ側で値の変化を見て、暗くなったら、逆送のボタンが押された(手がかざされた)と判定し、preMSMにベルトコンベア動作ON、向き:逆転のコマンドを発行します。
・preMSMは、preMSM②は、GPIO6の信号を上げて逆転の信号を生成するとともに、GPIO7の信号をさげ、ベルトコンベアを動かします。
図13に手かざしによる非接触ボタンを作動させる前後の写真を示します。
図13 手かざしによるベルトコンベア逆送指示
2-3-2. IR信号の変化の検出
図14に手かざしによるIR信号変化の検出を行うNode-REDの記述を示します。
IR信号が10を割ったかどうかを判定し、手がかざされたかどうかを判定しています。
図14 IR信号変化の検出を行うNode-RED記述
参考文献:
1) カラーセンサ S11059 仕様書
2) 環境センサBME680 仕様書
3) ライトセンサ RPR0521 仕様書