【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)
ラズパイカメラ
まず物理的な接続方法です、ラズパイ本体に刺します
裏表気をつけましょう、あと切れやすいので注意
ラズパイカメラのレンズ部分ははじめ接着されていないので貼ってやりましょう、そしてコネクタ部分もペチッとはめます
ここは外れやすいので注意
接続後、ラズパイにログインして設定してあげましょう
$ sudo raspi-config
BrickPi用のACアダプタを購入
BrickPiを購入すると電池8本で駆動させる用のアダプタがついてきますが、ちょっとテストをしているだけで、あっという間に電池がなくなってしまいました。。。。
というわけで、ACアダプタを別途購入です
モーターを何個動かすかで、必要アンペア数は変わってくるのですが、1Aだとギリっぽいので 12V 3A のACアダプタを購入しました
Amazon CAPTCHA
これで一旦、周辺準備は完了かな
次回からXi IoTポータルでの作業が始まります