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

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

*

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

   

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℃を超えている場合があります。室内といっても夏場(特に今年は)は高温になるということが分かります。
引き続き稼働します。

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

Amazon関連リンク


 - Raspberry Pi

AdSense

AdSense

  関連記事

Raspberry PiでC言語版Lチカを試す(その1)デバイスドライバ利用

Raspberry PiでC言語を使ったLEDの点灯、消灯(いわいるLチカ)を試 …

Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う

(※2017/02/19 最新の情報は以下です。) Raspberry Pi 3 …

Raspberry PiでAvahi を使ってホスト名でアクセスする

Raspberry PiでAvahiを使ってホスト名でのアクセスを可能にする方法 …

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

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。今回 …

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

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。基本 …

Raspberry PiのPL2303内蔵コンソールケーブルのWindows8.1の対応について

Raspberry PiのコンソールケーブルでProlific社のUSBシリアル …

Raspberry PiでIoT(温度・湿度・気圧データ編 その1)BME280でデータ取得

Raspberry PiでIoTに取り組んでみるという内容で実際に動作させながら …

無線マイコン ToCoStickのシリアル通信専用アプリを使ってみた

無線マイコンの ToCoStick(トコスティック)のシリアル通信専用アプリを使 …

Raspberry PiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編

Raspberry PiでIoT MQTTで遠隔操作編の3回目です。2台のRas …

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

Raspberry Piをモニターとキーボードなしで導入する方法についてです。 …