入館時に体温を自動チェックシステム

Published by:

新型肺炎対策・AIによる顔認識および非接触型温度計を利用して体温を自動測定するシステムを開発中です。

DonkeyCarのフレーム上、カメラとサーモセンサー(amg8833)を装備し、この装置の前に立つと自動的に顔認識による個人特定と体温測定を行うもの。大学のキャンパス、教室の出入り口での体温検知による入館チェックなどを想定したシステムです。

 

V2: モニタリング アプリ

Published by:

デザイン画面

モニタリング アプリ はMIT App Inventorで開発し、エッジクラウドとTinyWebDB APIを用いて通信し、データの確認と修正、削除は可能であり、そして可変ゲインアンのゲインの設定もできる。

V2の実験段階は、ESP32のIoT 見守りデバイスからモニタリング アプリへBlueToothで直接送信しています。

 

 

 

<<<<<<<<< BlueToothで直接送信 >>>>>>>>>>>

 

ブロック一覧画面

 

アプリの実行画面

 

BlueToothの設定するところ。

V2: IoT 見守りデバイス

Published by:

上野先生のESP32ピエゾセンサーボードを参考、ブレッドボードで組み立てるところ。

テスト基板に実装しているところ。

配線が複雑だから、まずFritzingで設計した。

 

実装完了した状態です。右中央の4本ピンソケットは、OLED用です。

ケースに入れた状態です。

 

NodeMcu (5) Pulse Sensor

Published by:

ESP8266でHeart Rate Monitorの表示は、色々と試してうまい表示方法はなかなか見つからない。
たまたま検索キーワードは”Pulse Sensor Arduino OLED”に変えて、参考にできそうなサイトはいくつ見つかった。
その中、”Online Heart Rate Monitor Using NodeMCU and Cayenne”「参考1」はイメージに近い。
Pulse Sensorについて、下記のサイトへどうぞ。
https://pulsesensor.com/

Pulse Sensorなどの部品があるので、早速実験。しかしコンバイルすると、Cayenne関連のエラーは出た。
Cayenneサービスは古いようで、適切なサービスが見つからない。OLEDでのMonitorは目的、Cayenneのサービスどうでもいいので、コメントアウトした。
それからPulse Sensorのライブラリも変わる。以前がここ;
https://github.com/WorldFamousElectronics/PulseSensor_Amped_Arduino
今はここ;
https://github.com/WorldFamousElectronics/PulseSensorPlayground
例のソースコードは、古いライブラリを使うから、そちらをダウンロードして利用。

表示はうまくできた。しかしPulse Sensorの精度はいまいち。
「参考1」の波形は、どうしてまともに表示されるね。

安定して表示できないから、このPulse Sensorは実験のみの意義かな。
参考:

  1. https://www.instructables.com/id/Online-Heart-Rate-Monitor-Using-NodeMCU-and-Cayenn/

 

NodeMcu (4) ADS1115 & OLED

Published by:

経緯

アナログ信号を取り込み、TinyWebDBへ送るプログラムを作る予定。サンプリングレートは秒に100回。
WeMos miniは使いやすいから愛用しているが、2月から、WeMos miniの開発中も頻繁にリブートしています。デバイストライバのバージョンを変えたり、OSを変えたりしても改善しない。結局原因がわからず、仕方なく開発中書き込み直前にUSBケーブル接続、書き込み終わったらすぐUSBケーブ抜く方法で運がよければリブート回避する状態が続て、悩んでいます。
ADS1115プログラムを作るため、安定したNodeMcuできることならこちらで凌ぎ。

ADS1115とは

ADS1115 は、16-Bit ADC – 4 Channel with Programmable Gain Amplifier
特徴:広い電源電圧範囲:2.0V ~ 5.5V。低消費電流: 連続モード:150μA。
_ プログラマブルゲインアンプ内蔵。プログラミング可能なコンパレータ。
_ 4本のシングルエンド入力。2本の差動入力。I2Cインターフェイス。
_ 最小±256mVから電源電圧までの入力範囲に対応。
ライブラリーでは コマンド送信し 8msec 後に データーの読み込みを行う、サンプリングレートは秒に100回するため、Adafruit_ADS1X15/Adafruit_ADS1015.hのADS1115_CONVERSIONDELAYを8から9に変更する。

結線

普通のI2Cでつなぐだけ。

スケッチ

最初のプログラムは、アナログ読む度に表示してるが、表示できるのは秒に十回未満。そしてOLEDには、1秒間読み取れたデータの個数と、最新のアナログ値を表示すると変更して110回程度読み込みできるようになり。
ADS1115_CONVERSIONDELAYを8から9に変更して、表示の通り、秒に101回って、概ね要求に満たした。

#include <Wire.h>
#include <Adafruit_ADS1015.h>               // ADS1015,1115
Adafruit_ADS1115 ads(0x48);                 // 16-bit version
#include <Adafruit_GFX.h>                   // OLED
#include <Adafruit_SSD1306.h>           // OLED
Adafruit_SSD1306 display(0);                // OLED Reset
void setup(void) {
  //Serial.begin(115200);
//  Wire.begin(4,5);                          // OLED:SDA,SCL
  display.begin(SSD1306_SWITCHCAPVCC,0x3c); // I2C ADDRESS=3c
  display.clearDisplay();                   // Clear the buffer
  display.setTextSize(2);                   // font size 4
  display.setTextColor(WHITE);              //
  display.setCursor(0,0);                   //
  ads.setGain(GAIN_TWOTHIRDS);              // 2/3x gain +/-6.144V
  ads.begin();                              // 1 bit=0.1875mV
}
void loop(void) {
  int i=0;
  float v0;
  // // Count and Store data during 1,000 msec
  for(int time = millis(); millis()-time < 1000; i++) {
    v0 = (ads.readADC_SingleEnded(0) * 0.1875/1000); // A0 Read
  }
  display.clearDisplay();
  display.setCursor(0,0);
  display.print(i);
  display.setCursor(0,16);
  display.println(v0,3);
  display.display();
}

 

参考

  1. https://macsbug.wordpress.com/2016/02/04/i2c-adc-ads1115-in-esp8266/

モニタリング アプリ開発

Published by:

MIT App InventorとはもともとGoogle Labsで公開されているAndroidアプリを作成ツールです。 今MITに移管された。プログラミングを専門的に学んだことがない学生がプログラムの作り方の基礎を学ぶために作られました。アメリカでは高校やコンピュータサイエンスを専門としない大学での授業でも利用されています。

モニタリング アプリ はMIT App Inventorで開発し、エッジクラウドとTinyWebDB APIを用いて通信し、データの確認と修正、削除は可能であり、そして可変ゲインアンのゲインの設定もできる。

デザイン画面

画面の上部はタグとStoreするためのデータ入力領域、そして中間は生体データ表示エリア、下部はサービスのステータスと生の受信データの表示エリア。

図 4.7 Appデザイン画面

ブロック一覧画面

ブロック一覧画面はアプリの処理を記述する。

 

主な処理

Button_Get.Click 処理ブロック

指定したWebサービスのURLから、TinyWebDB APIを通して、指定してTagのデータを取得する。このアプリでは、生体データの取得に利用する。

 

Button_Store.Click 処理ブロック

指定したWebサービスのURLから、TinyWebDB APIを通して、指定してTagのデータを保存する。このアプリでは、可変ゲインアンプに対して、ゲインの設定を指示する。

 

TinyWebDB1.GotValue

TinyWebDB APIからデータ取得後の処理。 生体データの取得した場合はデータを描画する。

図 4.8 Appブロック一覧画面

 

アプリの実行画面は図 4.9 に示すように、Button_Getをクリックすると、最新の6秒間のデータ描画が確認された。

アプリの実行画面

図 4.9 アプリの実行画面

Raspberry PiでUPD構築

Published by:

エッジクラウドは通信防御に必要なより高度なセキュリティ機能が代行する。エッジ層はデータの一時保存と転送のみ行う、データ蓄積、共有する機能はクラウド層に任せる。そのため単純な構造のコンピューターRaspberry Piでも十分機能する。

 

Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピューター。イギリスのラズベリーパイ財団によって開発されている。学校で基本的なコンピュータ科学の教育を促進することを意図している。

図 4.5 Raspberry Pi 

Raspberry Piセットアップ

Raspberry PiはDebianというOSを利用する。予めシステム入れたメディアを購入する、またはOSのファイルをダウンロードし、メディアにセットアップする。

LAMP(ランプ)とは、OSであるLinux、WebサーバであるApache HTTP Server、データベースであるMySQL、スクリプト言語であるPerl、PHP、Pythonを総称した頭文字から成る造語である。動的なウェブコンテンツを含むウェブサイトの構築に適した、オープンソースのソフトウェア群である。

それからRaspberry PiにLAMP環境構築してください。

Web サービスの構築

Webサーバに、われわれはTinyWebDB APIを実装したプログラムをインストールすることでTinyWebDB機能を備えるWebサービスも構築可能である。TinyWebDB APIはWeb管理画面が備え、データの確認と修正、削除は可能である。

見守りデータに特化したデータ処理が必要のため、われわれは上記プログラムをカスタマイズしたプログラムもGitHubリポジトリから取得可能である。

カスタマイズしたTinyWebDB APIプログラムは、データ受信すると、見守りデバイスの一覧が表示でき、デバイスのタグ名、サイズ、ソフトのバージョン、IPアドレス、可変ゲインの設定値、データの数、実際に受信したデータの数と日時状態が容易に判別できる。

データ確認画面:

http://noise.uc4.net/tags.php

 

図 4.6 カスタマイズしたTinyWebDB APIのWeb管理画面

 

蓄積した生体信号のデータの表示機能を備えている。

図 4.7 生体信号のデータの表示

Ubi-健康管理(Ubi-Care)

Published by:

ユビキタス健康管理のUbi-Careフレームワークは、健康データに特化したUPDである。様々個人健康データのセンサーデバイスで構成するセンサーデバイス層、そして個人健康データを集める、初期処理を行うエッジ層、データ蓄積、共有するクラウド層はお互い独立、オープンなAPIで相互接続する。

図 3.1 Ubi-care 分散型フレームワーク

 

健康データのセンサーが生成するデータ量は多いが価値密度は低く、エッジ層で分散機械学習を行うことによってその価値密度を向上させるとともに、エッジ層で処理することで低レイテンシを実現、ワイヤレス送・受信するための消費電力も大幅軽減可能だ。

データ通信をエッジ層に留めることでプライバシを保護するということが可能に。リソース限定された単独のデバイスの重要なデータや機密データをより安全な環境下で保護する。