株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Raspberry Pi

Raspberry Piでセンサネットワーク稼働試験(TWELITE-トワイライト編)構成・課題等

投稿日:2018年8月9日 更新日:

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。今回は、TWELITE-トワイライト編としてRaspberry Piとセンサを無線で接続する構成です。Raspberry PiからAmbientにデータを送信します。この構成で安定して稼働させるにはどういった課題があるか書いてみます。

TWELITE-トワイライトは以下の製品です。
TWELITE DIP(子機としてセンサと接続)
MONOSTICK(親機としてRaspberry Piと接続)

以下のようなデータの流れになります。
センサとTWELITE DIP(子機) => (無線で2メートルぐらい) => Rapberry Pi本体(親機) => (Wi-Fi) ==> インターネット ==> Ambient(ここでデータを確認)

TWELITE DIPとセンサが以下です。bme280(温度、湿度、気圧センサ)を接続しています。これが子機になります。今回は子機は1台だけですが、必要に応じて1台の親機に複数台の子機が接続出来ます。

(※実は今回使用している上記のTWELITE製品は旧モデルです。現在のモデルとは外観は異なります。使っていなかったのでここで使ってみました。)

この子機についてのモノワイヤレスの説明が以下のページです。このページの設定にしてBME280を接続しました。10分おきにセンサのデータを送信するように設定しました。
I2Cセンサ(BME280)を接続する
どうやらAitendoのBME280は完成品ですがプルアップ抵抗も実装済のようです。以下を参照して下さい。
温湿度・気圧センサモジュール [BME280-6P]

MONOSTICKとRaspberry Piが以下です。Raspberry PiはRaspberry Pi2なのでWi-Fiドングルを使っています。こちら側が親機になります。

親機の方は初期設定のままです。
(※こちらもTWELITE製品は旧モデルです。現在のモデルとは外観は異なります。使っていなかったのでここで使ってみました。)

この構成の特徴や課題
特徴は何といってもRaspberry Piが親機でセンサが子機として独立しているのである程度離れた場所にセンサが設置出来るということです。

どの程度の距離まで電波が届くということですが実際には条件によるということで、詳細が必要な場合は以下を参照して下さい。私の場合はデスクに面した窓際が子機で反対側のデスクの端に親機です。2メートル程度でしょうか。もちろん問題なく通信出来ています。
通信距離について

課題としてはやはり電池でしょうか。以下の説明では例としてボタン電池で10年以上持つとなっています。
省電力

今回の場合はセンサも接続しているのでその分の消費もありますが、年単位で持つということでしょうか。実際には消費電力を測定すればある程度分かるとは思いますが、とりあえずはこのまま稼働を続けます。

Raspberry Pi(親機)のプログラム
無線通信ですが、親機ではシリアル通信からデータが取得出来ます。そのデータを解析してAmbientへ送信しています。

プログラムは以下です。これで稼働していますが、サンプルプログラムのレベルです。動作保証は出来ませんのでご了承ください。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import serial
import sys
import os

import ambient

argv = sys.argv
argc = len(argv)

# 9999はチャネルID
# aaaabbbbccccddddはライトキー
amb = ambient.Ambient(9999,'aaaabbbbccccdddd')

def read_serial(s):
        while True:
                data = s.readline()
                data = data[2:]

                spilitdatum = data.split(":")
                #print spilitdatum

                dict = {}

                for spilitdata in spilitdatum:
                    s_key = spilitdata.split("=")[0]
                    s_val = spilitdata.split("=")[1]

                    dict[s_key] = s_val

                if ("ed" in dict):
                    if(dict["ed"] == "810078E8"): #子機のID 
                        tm = float(dict["tm"]) / 100.0
                        hu = float(dict["hu"]) / 100.0
                        at = int(dict["at"])

                        r = amb.send({"d1": tm, "d2": hu, "d3":at})

                        #print dict["ed"]

# USBデバイスが指定出来る
if argc != 2:
        s = serial.Serial("/dev/ttyUSB0", 115200, timeout=10)
else :
        s = serial.Serial(argv[1], 115200, timeout=10)

while True:
        try:
                read_serial(s)
        except KeyboardInterrupt:
                break
        except:
                continue

s.close()

稼働状況
今現在で約3週間ですが、問題なく稼働しています。
窓際に何げなく置いていますが、直射日光が当たる時間には40℃を超えている場合があります。室内といっても夏場(特に今年は)は高温になるということが分かります。
引き続き稼働します。

2018/09/10追記
2018/09/06に電池切れになりました。2ヶ月弱ぐらいです。思ったより短かったような気がします。またいろいろと調べてテストしたいと思います。

最後に自社PRですが、Raspberry Pi 関連のご依頼お待ちしております。本記事と同様のセンサネットワークの試用、試作等対応可能です。

Amazon関連リンク


AdSense

AdSense

-Raspberry Pi

執筆者:

関連記事

Raspberry Piをモニターとキーボードなしで導入する(その1)SSHでのログインまで

Raspberry Piをモニターとキーボードなしで導入する方法についてです。 (※2021/05/02追記 現時点で最新版のRaspberry PI OSでモニターとキーボードなしで導入する手順を書 …

Raspberry Piでセンサネットワーク稼働試験(基本編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。基本編としてRaspberry Piにセンサを直接接続する構成です。その構成で安定して稼働させるにはどういった課題があるか書 …

Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そのために以下のソリッド・ステート・リレーキットを利用しました。この製品を選んだ理由としては「扱いが簡単」かなと思ったから …

Raspberry PiでのNode.jsの導入(その1)インストールと動作確認

Node.jsとは、Node.js 日本ユーザグループのサイトから引用させて頂きますと、「Node.jsは高速でスケーラブルなネットワークアプリケーションを 簡単に構築するためにChrome の Ja …

Raspberry PiでのNode.jsの導入(その2)Webサーバ的なプログラム

Raspberry PiでのNode.jsの導入の2回目です。前回はインストールと動作確認でした。今回はもう少しWebサーバ的なプログラムを作成してみます。今現在で日本のNode.jsの公式ページにも …