konchangakita

KPSを一番楽しんでいたブログ 会社の看板を背負いません 転載はご自由にどうぞ

【Xi IoTで映えるデモがしたい 第13回】BrickPiにIoTさせる為のお作法

BrickPiははじめから LEGO のセンサーやモーターと動かすことはできますが、外部(Xi IoT Edge OSやら)と接続するにはIoTに特化したプロトコルでやりとりしてやる必要があります

プロトコルの選択

Xi IoTが現在対応しているのは

  • MQTT
  • RTSP
  • gigEvision

ここではそれぞれのプロトコルについては詳しくは説明しませんが(だってよく分からないのでググって)、今回のLEGOスマートファクトリーで行いたいのは、画像の送信と判定結果のやり取りなので、MQTT(Message Queuing Telemetry Transport)で Pub/Sub しちゃおうと思います

BrickPi上でMQTTで扱えるように、pythonモジュールをインストールします

pi@dex:~ $ sudo pip3 install paho-mqtt
Collecting paho-mqtt
  Downloading https://www.piwheels.org/simple/paho-mqtt/paho_mqtt-1.4.0-py3-none-any.whl (48kB)
    100% |████████████████████████████████| 51kB 97kB/s 
Installing collected packages: paho-mqtt
Successfully installed paho-mqtt-1.4.0



これで、pythonコード上でPub/Subできますよっ(超シンプル版)

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected on Edge with result code "+str(rc))
    # Subするトピック名
    client.subscribe("factory/#")

def on_message(client, userdata, msg):
    print(msg.topic+" - "+str(msg.payload))

mqclient = mqtt.Client()
mqclient.on_connect = on_connect
mqclient.on_message = on_message

mqclient.tls_set(ca_certs="mqtt-cert/CACertificate.crt", certfile="mqtt-cert/certificate.crt", keyfile="mqtt-cert/privateKey.key")
mqclient.tls_insecure_set(True)

mqclient.connect('<i>受け取るIPアドレス</i>', <i>受け取るポート</i>, 60)
mqclient.loop_start()

#Pubするトピック名とメッセージ
mqclient.publish("image",payload=xxxx)


ラズパイカメラ

まず物理的な接続方法です、ラズパイ本体に刺します
裏表気をつけましょう、あと切れやすいので注意

f:id:konchangakita:20191213005542p:plain:w240f:id:konchangakita:20191213005517p:plain:w240
ラズパイ側

ラズパイカメラのレンズ部分ははじめ接着されていないので貼ってやりましょう、そしてコネクタ部分もペチッとはめます
ここは外れやすいので注意

f:id:konchangakita:20191213005752p:plain:w240f:id:konchangakita:20191213005813p:plain:w240
ラズパイカメラははじめはぺらぺら

接続後、ラズパイにログインして設定してあげましょう

$ sudo raspi-config

f:id:konchangakita:20191213010255p:plain:w240f:id:konchangakita:20191213010303p:plain:w240
ラズパイカメラの設定

BrickPi用のACアダプタを購入

BrickPiを購入すると電池8本で駆動させる用のアダプタがついてきますが、ちょっとテストをしているだけで、あっという間に電池がなくなってしまいました。。。。

f:id:konchangakita:20191213010812p:plain
付属品は電池8本

というわけで、ACアダプタを別途購入です
モーターを何個動かすかで、必要アンペア数は変わってくるのですが、1Aだとギリっぽいので 12V 3A のACアダプタを購入しました
Amazon CAPTCHA

これで一旦、周辺準備は完了かな
次回からXi IoTポータルでの作業が始まります