サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
ambidata.io
電波が届きにくい環境で、2mぐらいの間隔で4〜5ヶ所、合計10mぐらいの距離にあるセンサをアクセスしたい案件がありました。センサはシリアルインタフェースでアクセスしますが、マイコン(M5StickC)からセンサまでのケーブルを2mぐらいにするとアクセスが不安定になってしまいました。 そこで、多少オーバースペックではありますが、RS485でネットワークを作り、マスタにはM5StickCを、スレーブにはM5ATOM Liteを使って、M5ATOM Liteでセンサを制御し、マスタからのリクエストでセンサ値を返すようにしました。RS485についてはこちらをご覧ください。 RS485の上位のやりとりとしては、データパケットの構造を決め、端末のアドレスややり取り(コマンド)の体系を決める必要があります。今回必要なのは、マスタとなるマイコンから4台のスレーブのセンサ値を取得するという単純なものですが、
物体は温度に応じて放射エネルギーを放出しています。これをサーモパイルと呼ばれる素子で測定することで、離れた物体の温度が測定できます。サーマルカメラはこのサーモパイル素子をアレイ状に並べることで二次元の温度分布を測ります。 OMRON MEMS非接触温度センサD6T-44L-06 「OMRON MEMS非接触温度センサD6T-44L-06」はオムロンが開発した非接触温度センサーです。縦横4×4のメッシュで温度が測定でき、精度は±1.5℃です。マイコンとはI2Cインタフェースで通信します。 コネクタはJHSのGHシリーズ SM04B-GHS-TBですが、このコネクタをGroveコネクタに変換する基板「4×4非接触温度センサD6T 変換基板」がでているので、それも合わせて使います。変換基板の中でI2CのSDAとSCLがプルアップされているので、外部のプルアップ抵抗は必要ありません。 接続 接続は
そこで、M5Stackを2台使い、MH-Z19B、BME680、CCS811を1台のM5Stackが、S-300L-V3をもう1台のM5Stackが制御して、同時に測定しました。写真は四つのセンサーが一つのブレッドボードに載っていますが、単に同居しているだけです。5分間隔で4日間データーを測定し、比較しました。 「MH-Z19B」と「S-300L-V3」 二つのNDIR方式のCO2センサーの測定値です。絶対値ではS-300L-V3の方が300〜400ppm高い値ですが、同じ傾向を示しています。 相関は次のようになっており、ほぼ比例関係にあることが確認できます。 S-300L-V3は電源オンから24時間ごとに自動校正するとのことなので、最後の約24時間のデーターの相関を調べると、ほぼ直線になっています。 校正によって絶対値は修正されるものの、校正と校正の間はMH-Z19BとS-300L-V3
ジャンパーワイヤーでも接続できますが、今回は小さな基板を作って接続してみました。こうするとコンパクトなセンサー端末になります。 マイクの信号を読む マイクの出力はArduinoであればanalogRead()関数で値を読めます。 音は振動なので周期的に値が変化します。音を記録するためには音の周期の2倍以上の周期で値を測定(サンプリング)する必要があります。人が聞こえる音の周波数範囲は、個人差や年齢差はあるものの一般的には20Hzから20kHz程度と言われています。そこで、次のプログラムでは40kHzの周期でマイクの信号を読み、メモリーに保存して、シリアルに出力してみます。 40kHzというのは1秒間に4万回、25マイクロ秒毎に1回測定することになります。このプログラムでは500回測定しているので、時間にすると12.5ミリ秒間の音を測定しています。 26行目のfor文で500回繰り返して、2
M5Stack GrayやFireには9軸加速度・ジャイロ・磁気センサ(IMU)が、M5StickCには6軸加速度・ジャイロが搭載されています。今回はこのIMUを使って端末の姿勢を計算します。さらに姿勢データをパソコンに送り、パソコン上に作ったM5Stackの3Dモデルを、実際のM5Stackの動きに合わせて動かしてみます。 まずは動画をご覧ください。 開発は次のステップで進めます。 1. パソコン上にM5Stackの3Dモデルを作る 2. IMUを使い端末の姿勢を計算する 3. 姿勢データをパソコンに送り、3Dモデルを制御する なお、M5Stack GrayやFireのIMUチップは出荷時期によってMPU9250が搭載されているものと、MPU6886が搭載されているものがあります。著者の手元にはMPU9250搭載のものがあるので、この記事はMPU9250版で書いています。搭載されているI
M5Stack社から、「M5StickC」という新しい端末がリリースされ、日本でも販売が始まりました。今回はこの「M5StickC」を使って小型の環境センサ端末を作ります。 「M5StickC」 M5StickCは、上の写真の右のように4.8 x 2.4 x 1.4cmのスティック状の小型端末です。MPUはM5Stackで使われているESP32と同じアーキテクチャのESP32-picoが使われています。MPUの他に、80 x 160ピクセルのカラー液晶画面、ボタン3個、LED、赤外線送信機、マイク、6軸加速度・ジャイロセンサなどが搭載されています。プログラムはArduino IDEか、UIFlowという開発環境を使ってBlocklyまたはMicroPythonで開発します。 M5StickCのスペックを、 M5Stackシリーズと合わせてまとめました。 M5StickCとM5Stackを比
M5cameraは4MBフラッシュと4MB PSRAMが搭載されたESP32とイメージセンサOV2640が入ったカメラモジュールです。出荷時期によってピン配置の異なる2バージョンあるようですが、今回使ったのはBモデルです。 動作確認 M5cameraの出荷時はESP-IDFで作られたサンプルのファームウェアが書き込まれていて、USBケーブルをつなぐとサンプルが動作します。M5cameraが「M5CAM」というssidのWi-Fiアクセスポイントになり、PCやスマホでそのssidに接続して、ブラウザで「http://192.168.4.1」にアクセスすると画像が流れてきます。 あっけないほど簡単に動作確認できました。 Arduino IDEでプログラミングする Arduinoにもカメラを制御するサンプルプログラムがあり、M5cameraも制御できるので、Arduinoのサンプルプログラムをベ
ESP32はWi-FiとBluetooth Low Energy (BLE)通信機能を持っています。この機能を使い、BLEセンサー端末からデーターを受けて、クラウドに送信するBLEゲートウェイを作ります。 BLE環境センサー端末は「M5StackでBLE環境センサー端末を作る」を、Raspberry Piを使ったBLEゲートウェイは「BLE環境センサー・ゲートウェイ(Raspberry Pi編)」をご覧ください。 全体の構成 センサー端末とBLEゲートウェイの両方をM5Stackで作ります。BLEゲートウェイはセンサー端末からBLEでデーターを受け、Wi-Fi経由でクラウド(Ambient)に送信します。 プログラムサイズの問題 ESP32はArduino、MicroPython、ESP-IDFでプログラミングできます。MicroPythonはBluetooth Low Energyがサポ
Bluetooth Low Energy (BLE) は消費電力の低い通信方式ですが、直接インターネットにはデーターを送れません。BLEで送信したセンサーデーターをクラウドに送るためには、BLEで送信されたデーターを受信してTCP/IPでクラウドに送るBLEゲートウェイが必要です。 「M5StackでBLE環境センサー端末を作る」ではBluetooth Low Energy (BLE) でデーターを発信するセンサー端末を作りました。今回はこの端末からデーターを受けて、クラウドにデーターを送るBLEゲートウェイを作ります。 ESP32を使ったBLEゲートウェイは「BLE環境センサー・ゲートウェイ(ESP32編)」をご覧ください。 全体の構成 センサー端末はM5StackにBME280を接続し、温度、湿度、気圧を測定し、BLEで発信するものです。M5Stackに搭載されているものと同じマイコン
LoRaの通信距離と信号強度について調査しました。 調査結果サマリー 住宅地で、見通せる場所で4km、見通せない場所でも2.5kmの距離で通信可能だった。 帯域幅が狭いほど、拡散率が大きいほど可能距離は長くなるが、通信時間も長くなるため、適切な帯域幅、拡散率を選択する必要がある。 通信可能な距離、信号強度は帯域幅、拡散率の単純な関数ではなく、端末周辺の地形や建物の影響を強く受けるため、実際のIoTシステムでLoRa通信を使うためには、現地での実測が必要。 測定システムと測定方法概要 LoRa通信にはEASEL社製LoRa通信モジュール「ES920LR」を2個、対向で使いました。 LoRa通信モジュールの一つはESP8266で制御し、GPSモジュールと組み合わせて電池駆動の移動端末にしました。もう一つはRaspberry Pi3で制御し、固定端末にしました。 移動端末の場所を変えながら、GP
M5Stackに搭載されているESP32はWi-FiとBluetooth Low Energy(以下、BLE)で通信できます。 センサーデーターをWi-Fi経由でクラウドに送信する例は「M5StackでセンサーデーターをAmbientに送る (Arduino編)」に書きました。今回はデーターをM5StackからBLEで発信する例を紹介します。また、M5Stackと同じCPUを搭載している開発ボードESPr Developer 32でも動作するようにします。発信したデーターはゲートウェイで受信して、Ambientに送ります。 全体の構成 M5StackにBME280を接続し、温度、湿度、気圧を測定し、BLEで発信します。データーはゲートウェイで受信してAmbientに送ります。M5Stackと同じCPUを搭載するESPr Developer 32でも動作するようにします。 ゲートウェイはBL
オムロンの環境センサー「2JCIE-BL01」で測定した温度、湿度などのデーターを、Bluetooth Low Energy(BLE)でRaspberry Piに送り、Raspberry Pi3からAmbientに送って可視化します。Raspberry Pi3のプログラムはPythonで記述しました。 オムロンの環境センサー「2JCIE-BL01」 オムロンの環境センサー「2JCIE-BL01」は温度、湿度、気圧、照度、UV、音の6種類のデーターを測定し、BLEで送信するセンサー端末です。ボタン電池(CR2032)1個で動作します。ウェザーニュース社の「WxBeacon2」も中身は同じもののようです。今回はこの「WxBeacon2」を使いました。 「2JCIE-BL01」のBLEインタフェースは「Communication Interface Manual」という資料で公開されています。
M5Stackに接続できるGPSモジュールと心拍センサーを使い、散歩やサイクリングなど、移動中の位置と心拍数を記録します。 全体の構成 M5Stackはいろいろなモジュールを積み重ねることで機能拡張できるIoT端末です。モジュールの一つにGPSモジュールがあり、今回はこれを使い、位置を測定し、心拍を光学式の心拍センサーで測定します。M5Stackで取得した位置と心拍データーをWi-Fiでモバイルルーターに送り、モバイルルーターからクラウド上のサーバーに送信します。プログラムとしてはM5Stackから直接クラウド上のサーバーに送信するプログラムになります。 心拍データーを送信するタイミングは、一定時間ごとに送信、一定の距離を移動したら送信、ユーザーがボタンを押したら送信などアプリケーションによって様々な方法が考えられます。今回は一定時間ごとに送信することにしました。 端末のハードウェア M5
以前、ESP8266と3軸加速度センサーADXL345を使って振動を測定し、Ambientで可視化しました。 今回は、このデーターを使い、振動データーの周波数成分を調べます。 この振動データーは3軸加速度センサーADXL345をテーブルの上に置き、横2方向(x軸、y軸)と垂直方向(z軸)に机を軽く叩き、x軸、y軸、z軸、3方向の振動を10m秒間隔(100Hz)で10秒間サンプリングしたものです。データーは以下のチャネルで公開しています。 https://ambidata.io/ch/channel.html?id=1475 このデーターを高速フーリエ変換(FFT)処理して、周波数成分を調べます。今回はPythonのFFTライブラリーを使うことにしました。まず、必要なライブラリーをインポートします。 import numpy as np import scipy.fftpack from p
M5StackはEspressif社のマイコンESP32を搭載したコンパクトなIoT端末です。Arduino IDE、MicroPythonとEspressif社のESP-IDFでプログラミングできます。ここではM5Stackと温湿度・気圧センサーBME280と空気品質センサーBME680をArduinoで制御してセンサーデーターを読み、Ambientに送る例を紹介します。MicroPythonで使う例は以下のページをご覧ください。 M5StackでセンサーデーターをAmbientに送る (MicroPython編) M5StackはESP32マイコン、電池、320 x 240 TFTカラーディスプレイ、スピーカーなどを搭載したIoT端末で、Wi-FiとBluetoothで通信できます。5.4cm x 5.4cmのコンパクトなケースに入っていて、拡張モジュールを積み重ねることで機能を追加で
MicroPythonは対話モードとスクリプトファイルを実行するモードがあります。スクリプトモードで動かすには、PCなどでプログラムを書き、プログラムファイルをMicroPythonが動くマイコン(ここでは「ボード」と呼ぶことにします)に転送します。 PCとボードとの間のファイル転送ツールはいくつかありますが、そのうちの一つで、M5Stackで動作確認できたampyを紹介します。 ampyはAdafruit社が開発したツールで、ツールの名前はAdafruit MicroPython Toolから来ているようです。ampyはシリアル回線経由でPCとボードとの間でファイル転送をします。またPC上のMicroPythonスクリプトをボード上で実行できます。 この記事はversion 1.0.3で評価して書きました。 インストール ampyを使うにはPC上にPython 2.7.x か 3.xが必
AmbientのNode-REDノードを作り、Node-RED Libraryに登録したので、一連の流れを忘備録として共有します。Ambientノードの使い方は「Node-REDでAmbientにデーター送信して可視化する」をご覧ください。 作業はMac OS上でおこないましたので、コマンドなどはMac OSのものです。 Ambientノードの設計 Node-REDのAmbientノードを作る上で、次のように要件を整理しました。 ノードは他の人も簡単に利用できるよう、Node-RED Libraryに登録する Ambientはデーターを受信し、蓄積して可視化(グラフ化)するサービスなので、ノード化する際は入力:1、出力:0のノードとする Ambientにデーターを送信する時は、「チャネルId」と「ライトキー」を指定して送信するので、「チャネルId」と「ライトキー」をノード・プロパティーとし
TI社のSensorTagで温度、湿度、気圧、照度、バッテリーレベルを測りBluetooth Low Energy(BLE)でRaspberry Pi3(RPi3)に送り、RPi3からAmbientに送ってデーターをグラフ化しました。 コイン電池駆動で長期間の測定に挑戦しています。 SensorTagは通信モジュールの異なる3種類のデバイスがあります。今回使ったのは「マルチスタンダード SensorTag」というもので、BLEで通信します。センサーとしては周囲および表面の温度センサー、湿度センサー、気圧センサー、周辺光センサー、加速度センサー、ジャイロスコープ、コンパス、磁気センサーが搭載されていて、ボタン電池(CR2032)1個で動作します。 SensorTagはBLEで通信するので、Raspberry Pi3(RPi3)をゲートウェイとして使い、RPi3からBLEでSensorTagの
Google HomeはIFTTTと組み合わせると、声で指示してIFTTTと連携したサービスを起動できます。今回やりたいのは、次の会話のようにGoogle Homeに声で指示して、外部のサービスの起動し、結果をGoogle Homeに喋ってもらうことです。 私:「ねぇ、グーグル、外は何度?」 GH君:・・・ベランダの温度センサーの値を読み取って・・・ 「外の温度は10度です」 構成 IFTTTは「もし『これ』が起きたら『あれ』をする」という処理が作れるサービスで、『これ』の部分をトリガー、『あれ』の部分をアクションと呼びます。Google HomeはIFTTTのトリガーとなる部品が提供されているので、Google Homeに声で指示すると、それがIFTTTのトリガーになり、さまざまなアクションを起動できるようになります。ところがGoogle Homeのアクション部品は提供されていないので、
ESP8266はArduinoが動くWi-Fiモジュールです。 このESP8266を使って、家の電力使用量を測定し、Ambientでモニターします。 ハードウェア ESP8266についてはいろいろなところに解説記事がありますし、Ambientでも「Arduino ESP8266で温度・湿度を測定し、Ambientに送ってグラフ化する」で紹介していますので、それらをご参照ください。 クランプ式電流センサー 電流の測定はU_RDというメーカーの超小型クランプ式交流電流センサCTL-10-CLSを使いました。データーシートによれば、100Ωの負荷抵抗をつけるとクランプを流れる電流10Aに対して0.3Vの電圧が得られます。この負荷抵抗の両端の電圧を測定し、逆算してクランプを流れる電流を計算します。 家庭用の電力は、多くの場合単相三線式といって2系統で送られてきますので、家全体の電力使用を把握するに
EASEL社製のLoRaモジュールをRaspberry Pi3につないで、LoRaの基地局を作ろうとしています。 LoRaモジュールは1.27mmピッチで、これを2.54mmピッチのブレッドボードに挿したいので、ピッチ変換ソケットを自作しました。ピッチ変換基板を二つに切り、それぞれに1.27mmピッチのソケットと2.54mmピッチのピンヘッダーをつけました。1.27mmピッチのソケットを基板にはんだ付けするのが大変でした。 上の写真が材料に使った1.27mm↔2.54mmのピッチ変換基板と1.27mmピッチのソケットです。 ピッチ変換基板を半分に切り、1.27mmピッチのソケットをはんだ付けして、LoRaモジュールを挿します。それをブレッドボードに挿して、Raspberry Pi3とつなぎました。 LoRaモジュールを制御するプログラムはこれからです。
GPSの1PPSピンは使わないので何もつなぎません。 Raspberry Pi3のPythonでシリアル通信 Raspberry Pi3でシリアル通信をするには、raspi-configでシリアルを有効化し、シリアルをコンソールとして使わない設定をします。 raspi-configでシリアルの有効化 次のようにraspi-configを起動し、シリアルを有効にします。 pi$ sudo raspi-config 「9 Advanced Options」を選択し、さらに「 A8 Serial Enable/Disable shell and kernel messages on the serial connection 」を選択します。「Would you like a login shell to be accessible over serial?」に対してYesを選択、Finishし
AmbientはIoT用のクラウドサービスです。 マイコンから送られたセンサーデーターを受信し、蓄積し、可視化(グラフ化)します。 このページではAmbientの使い方を説明します。 Ambientを使う大まかな流れは次のようになります。 ユーザー登録(無料) チャネル生成 マイコン側プログラミング データー送信 可視化(グラフ化) Ambientではマイコンからデーターを送ってグラフ化するまでは非常に簡単です。 最低限必要なのはAmbientサイトで「チャネル」を作ることと、 マイコン側のプログラムでチャネルIDとライトキーを指定してデーターを送ることだけです。 チャネルの名前やどんなマイコンがつながっているか、 どんなセンサーのどんなデーターを送るかといった属性情報は後から記述することができますが、 複雑なことは後回しにして、とにかく最初は簡単に始められます。 1.ユーザー登録(無料)
スイッチサイエンスさんのESP-WROOM-02開発ボード「ESPr Developer」とAmbientで温度、湿度などを周期的に測定する環境モニターを作ります。 実現方法 マイコンボードはESP-WROOM-02開発ボード「ESPr Developer」を使います。コードレスにしたいので、電池駆動とし、データーをWi-Fiで飛ばします。 測定する環境データーは、まずは手頃なところとして気温、湿度、気圧、照度を測ることにしました。気温、湿度、気圧はBosch製のBME280というセンサー一つで測定できます。照度はNJL7502Lというフォトトランジスターを使います。将来は風速、風向、雨量なども測定してみたいですが、それは後の課題とします。 スイッチサイエンスさんの「ESPr」シリーズにはBME280の載った「環境センサシールド」という、まさに環境モニターのためのセンサーボードがありますが
ESP8266はArduinoが動くWi-Fiモジュールです。 このESP8266を使って、温度・湿度を測定し、Ambientに送ってグラフ化してみます。 ハードウェアの準備 ESP8266周辺のハードウェア構成やArduino開発環境の設定は 以下のサイトを参考にしました。 ESP-WROOM-02のArduino環境でI2C制御 技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法 ESP-WROOM-02はESP8266を搭載したパッケージです。 ESP-WROOM-02は複数社からブレッドボードに挿せるピッチ変換ボードが出ています。 ESP-WROOM-02はモジュール幅が広いため、通常のブレッドボードに載せると 配線の余地がなくなるものが多いのですが、秋月電子さんの Wi-FiモジュールESP-WROOM-
以前、ESP8266の消費電流調査を行いましたが、今回はESP8266を搭載した次の3機種のボードの消費電流を調べました。 スイッチサイエンス製ESPr Developer(ESP-WROOM-02開発ボード) 倉橋屋製「Board1 ver.1.1」ESP-WROOM-02搭載モジュール 秋月電子製Wi-FiモジュールESP-WROOM-02 DIP化キット+自作周辺回路 サマリー 電源オンでWi-Fiに接続し、BME280で温度、湿度、気圧を測定し、Ambientにデーターを送信してDeep sleepするというプログラムを動かし、電源オンからDeep sleepまでの消費電流を測定しました。 Wi-Fi接続からデーター送信完了までは3機種ともほぼ73〜76mA程度の電流が流れる。 Deep sleepに入ると3機種とも消費電流は0.4〜0.8mA程度に下がる。 5分に1回Wi-Fiに
AmbientはIoTのアイデアをなるべく簡単にプロトタイプするお手伝いをします。細かな初期設定をしなくても送ったデータをリアルタイムでグラフ化します。例えばセンサから得られた温度と湿度のデータを初期設定をしないで送った場合でも、次のようにグラフが表示されます。 さらに設定を加えることで、グラフやデータに分かりやすい名前をつけたり、グラフの種類を変えたり、複数のデータを一つのグラフに重ね合わせて表示したりといった強力なカスタマイズができます。先ほどの例に設定を加えると次のようなグラフにすることができます。詳細は「チャネルとチャートのカスタマイズ」をご覧ください。
Genuino 101を使い、BLE(Bluetooth Low Energy)経由で心拍数をAmbientに送って確認する心拍モニターを作ります。 Genuino 101はArduino LLCが開発したワンボードマイコンです。インテルの32ビットCPU Curie、3軸加速度センサー、3軸ジャイロセンサーとBluetooth Low Energy通信モジュールが搭載され、3.3vで動作します。RAMが24kBと比較的余裕があり、BLE通信ができるので、IoTの実験やプロトタイプ開発には使いやすいボードです。 プログラム開発はArduino IDEの1.6.7以上を使います。ボードマネージャーで「Intel Curie Boards by Intel」をインストールし、「Arduino/Genuino 101」を選択すればIDEの準備は完了です。 心拍モニターの構成 心拍センサーには「P
このページを最初にブックマークしてみませんか?
『IoTデーター可視化サービス Ambient』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く