主要有这些功能 : 温度计、闹钟、睡眠追踪器、健身追踪器、呼叫提醒、接听电话、消息提醒、拨号呼叫、手势控制、GPS 导航、录音。
4G老人智能手表跌倒检测心率血压监测仪GPS定位
V3: IoT 見守りデバイス
TBD
V2: Raspberry PiでUPOD
V2: モニタリング アプリ
デザイン画面
モニタリング アプリ はMIT App Inventorで開発し、エッジクラウドとTinyWebDB APIを用いて通信し、データの確認と修正、削除は可能であり、そして可変ゲインアンのゲインの設定もできる。
V2の実験段階は、ESP32のIoT 見守りデバイスからモニタリング アプリへBlueToothで直接送信しています。
<<<<<<<<< BlueToothで直接送信 >>>>>>>>>>>
ブロック一覧画面
アプリの実行画面
BlueToothの設定するところ。
V2: IoT 見守りデバイス
NodeMcu (4) ADS1115 & OLED
経緯
アナログ信号を取り込み、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に変更する。
結線
スケッチ
最初のプログラムは、アナログ読む度に表示してるが、表示できるのは秒に十回未満。そして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(); }
参考
- https://macsbug.wordpress.com/2016/02/04/i2c-adc-ads1115-in-esp8266/
モニタリング アプリ開発
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構築
エッジクラウドは通信防御に必要なより高度なセキュリティ機能が代行する。エッジ層はデータの一時保存と転送のみ行う、データ蓄積、共有する機能はクラウド層に任せる。そのため単純な構造のコンピューター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アドレス、可変ゲインの設定値、データの数、実際に受信したデータの数と日時状態が容易に判別できる。
データ確認画面:
図 4.6 カスタマイズしたTinyWebDB APIのWeb管理画面
蓄積した生体信号のデータの表示機能を備えている。
図 4.7 生体信号のデータの表示
Ubi-健康管理(Ubi-Care)
ユビキタス健康管理のUbi-Careフレームワークは、健康データに特化したUPDである。様々個人健康データのセンサーデバイスで構成するセンサーデバイス層、そして個人健康データを集める、初期処理を行うエッジ層、データ蓄積、共有するクラウド層はお互い独立、オープンなAPIで相互接続する。
図 3.1 Ubi-care 分散型フレームワーク
健康データのセンサーが生成するデータ量は多いが価値密度は低く、エッジ層で分散機械学習を行うことによってその価値密度を向上させるとともに、エッジ層で処理することで低レイテンシを実現、ワイヤレス送・受信するための消費電力も大幅軽減可能だ。
データ通信をエッジ層に留めることでプライバシを保護するということが可能に。リソース限定された単独のデバイスの重要なデータや機密データをより安全な環境下で保護する。
UPDフレームワーク
ユビキタス個人データストアUPD(Ubiquitous Personal Datastore)
IoTデバイスから続々とセンサーデータが大量に生成された。しかしIoTデバイスの性能によりセンサーデータ送・受信の軽量化が求められている。
センサーからの大量データがそのままクラウドへ送る場合は遅延が問題になり、またデータ通信のセキュリティが求められ、しかしIoTデバイスのマイクロコントローラは強力な暗号化のために処理能力と電力を消費する余裕はない、データ送・受信プロトコルの軽量化が困難である。この問題を対処するには、センサーの近くにエッジサーバを配置して、さらにエッジサーバにはデータとアプリの分離する、個人データストアUPDフレームワークを提案する。
個人データストアUPDは単純のUPD-APIがもちWebデータベース、IoTデバイスからのデータ送・受信は容易になり、保存したデータは共通のAPIで再利用可能。例えば可視化アプリケーションでデータを可視化する、または解析アプリケーションでデータから価値ある情報を見出す。
クラウドには、個人データはPOD(Personal Online Datasore)に保存する。POD連携アプリケーションは必要なUPDデータのみPODにアップロードする。PODは対応のアプリケーションを通して指定の相手にデータ共有するができる。
UPD、PODとそれに対応するアプリケーションでUPDフレームワークを構成する。UPDとそのフレームワーク利用によりセンサーデータ送・受信の軽量化と転送遅延、セキュリティ両立できる。
マイクロコントローラは強力な暗号化のために処理能力と電力を消費する余裕はないので、防御に必要なより高度なセキュリティ機能は、近隣のEdge Cloudが代わりに実行する。
図:UPDフレームワーク
このようにユビキタス個人データストアUPD(Ubiquitous Personal Datastore)は、センサー、フォグ、クラウドの三層構造で構成されたデータとアプリ分散型のフレームワークである。
この三層構造のメリットは、IoTデバイス電力を消費、データ高度なセキュリティための強力な暗号化、大量データ転送するための低レイテンシを両立させた。
IoTデバイス層はデータの収集と転送を専任。リソース限定されたデバイスでも利用可能、消費電力の削減にも役に立つ。
エッジ層は防御に必要なより高度なセキュリティ機能が代行する。エッジ層はデータの一時保存と転送のみ行う、単純な構造のサーバでも十分機能する。
データ蓄積、共有する機能はクラウド層に任せる。PODの共有について、World Wide Webの創始者、Tim Berners-Leeが新しいプロジェクトをSolid PODというプラットフォームを参考してください。