作ってみました

Leafonyと OMRONのMEMS温度センサを組み合わせてみました。 全体像と詳細はこちらをご覧ください。この記事はその製作記です。

 

ユニバーサル基板上にLeafonyが載っています。その上部が温度センサです。

 Leafony

 

コロナウィルスは密に忍び寄る

 

• コロナ禍では密を避けることが⼤切*


→ 密集したら警告する
→ 密集状況を知る、そして対策

 

仕 様

 

• 数メートル内の密集度を計測
• 警告の発報( 外部警報器へ)
• クラウドへのデータ送信
• 環境情報(温度、湿度等)の取得
• ⼩型( 名刺サイズ)
• 電池駆動
• 安価

 

*:厚⽣労働省 https://www.mhlw.go.jp
/content/10900000/000606000.pdf

OMRON
MEMS非接触温度センサ D6T

搭載する機能

仕様に基づき左記の機能を載せました。機能の概要は下部の表をご覧ください。

 

使ったリーフ( ボード )

 

AI01 4 Sensors 温湿度などの検出

AP03 STM32 MCU CPU基板

AZ01 USB 開発時にPCと接続

AC02 BLE Suger GWと接続

AX02 29pin ベース基板と接続

 

STM32リーフの必要性

 

今回はMCU基板として STM32リーフ(AP03)を使用しました。理由は下記の通りです。

 

• 密集度は面で計測
面のデータはNXNとなりデータ数が多く、多くのメモリ容量が必要

 

• 多点での演算が必要
面を構成する点ごとに計算が必要となるため計算数が増え、演算速度が必要

機 能 部 品 内 容
温度計測機能 MEMS⾮接触温度センサ 数メートル( 6m )先の温度を計測
温度・湿度・照度計測機能 4-Sensors リーフ 本デバイスの周辺温度、湿度、照度を計測
アップリンク機能 BLE Suger リーフ Bluetooth GW を介して上位システム、インターネットに接続
リモート設定機能 BLE Suger リーフ スマートフォンから各種設定値を変更( 拡張機能 )
警報出⼒機能 リレー 1a 接点出⼒で外部の警報器を ON/OFF
LED 出⼒機能 LED 電池残量の表⽰などの多⽬的に利⽤( JP-SWで電源LED 表⽰に変更可能 )
表⽰機能 OLED 各種情報の表⽰。 RGB 96 X 64 pixcel
スイッチ⼊⼒機能 プッシュSW(2 つ) 表⽰情報の切り替え等の各種操作
電源電圧測定機能 ADC 電源電圧の測定
スリープ機能 DC/DCコンバータ等 省電⼒( 拡張機能 )
省電⼒( 拡張機能 ) プログラム 計測した温度分布から密状態を判定するプログラムモジュール

設 計

回路とプログラムを設計します。

設計した内容は下記の通りです。

 

ポート割当表 (PDF・361KB)

レイヤ図 (PDF・190KB)

回路図 (PDF・51KB)

機能ブロック図 (PDF・798KB)

 

検査手順書も設計します。

求める機能の実現がゴールです。完成後に実際にそのゴールに達していることを確認することが「検査」です。検査の方法をまとめたものが検査手順書です。

 

内部の個々のブロック(回路もプログラムも)の検査手順書も作ります。信頼できるものを積み上げることが全体の信頼につながることと、早く完成すると思うからです。(急がば回れ的な)

組み立ての準備

回路の動作確認

センサの通信方式(UART、I2C、SPIなど)を考慮してピン配置を決めます。

回路図を作成して動作確認試験です。ブレッドボードで組みました。

 

 

 

 

Leafonyは 29pin header(AX08)を使用しました。MEMS非接触温度センサーは簡単な保持治具を作り、その上にのせています。

 

( 右写真 )

ブレッドボードの配線が完了後に、センサーやOLEDなどの各デバイスに規定の電圧が加わっていることを確認します。

 

次に試験用プログラムを作成、USBリーフ経由で書き込みました。

 

基本動作の確認と、波形をシンクロスコープで確認。赤矢印がシンクロスコープのプローブです。

 

ここまでで問題がなければ、回路は問題なし。です。( ひと安心 )

 

 

 

 

部品配置と配線パターンの検討

 

回路が決まったら、部品配置とその部品同士を接続する配線パターンを検討します。

 

センサやスイッチ、OLEDなどは優先的に位置決め、電源ラインを太くしたり、信号線の干渉を考慮しながら錫メッキ線での配線を考えます。

最初は電池も基板上にのせてみた

部品配置を何回も変えて検討を重ねる

配線パターンを考える

センサ取付部品の設計

 

センサは性能を安定して発揮するために、正しく保持することが必要です。そのための取付部品を作りました。アクリル製です。

 

取付方法はセンサの仕様書に記載されている条件にしたがい検討します。

センサ仕様書に合わせて3Dで設計

完成してセンサを取り付けてみた

裏面。ぴったりなので満足

部品干渉の確認とケースの設計

 

ユニバーサル基板の配線パターンは2次元ですが、3次元的に部品同士がぶつからないこと、ケーブルハーネスが引き回せることを確認します。

 

最終的に3Dモデルから部品図を起こして、部品の製作です。仮組みが待ち遠しいです。

スペーサの選択や組み立て易さも大切

3Dでそれぞれの方向から見てみる

部品完成。2台分です。保護シール付

組み立て

変換基板と部品 小さい!

クランプで上下から固定して

半田付け(上図では3pinが半田済み)

面実装部品はそのままではユニバーサル基板に取り付けられないため、変換基板に搭載します。

 

SOT-25・DIP変換基板を使いました。手半田ですが、さすがにそのままでは難しいので、SMDクランプを使用して半田付けしました。しかし、小さい。

 

29pin リーフとコネクタ

超音波カッタで必要数を切出し

29pin リーフに半田付け

Leafonyとユニバーサル基板の接続は、基板間コネクタ(ピンヘッダー/ソケット)を使用します。

 

AX02 29pinにピンを半田付けします。高さをなるべく抑えたいので、薄型のコネクタ(マックエイト)を使用しました。

 

[ 動画] 組み立て

 

高さの低い部品から、内側から外側に向かって、部品をのせて半田付けしていきます。

 

部品間の干渉は事前に3Dモデルで確認済みなので安心して、配線をまちがえないように進めていきます。

 

その他のくふう

 

電池などの端子がむき出しでは、他の部品や製作中の基板、計測中のブレッドボードに接触して問題をおこします。ビニール袋などで保護します。

 

蓄電池は使用開始日を記録しておくと本数が多くても管理しやすいです。

 

製作中のトラブルは避けたいものです。

 

軽いボトルは倒れて部品や製作中の試作機を汚します。使えなくなる場合もあります。右のボトルは陶器の器に入れて転倒防止と、液漏れがあっても周りに影響がないようにしています。

完成!

このような感じになりました。3Dモデルと比べていかがでしょうか。

 

大きさは当初目標とした名刺サイズに収まりました。

ユニバーサル基板をPCBにすれば厚みも2cmくらいにできそうです。

 

電池搭載にする場合は、このケースの下部に電池スペースを追加することができます。電池電圧も1.8~5.5Vまで対応できますので多くの種類の電池に対応できます。

 

 

 

 

 

 

 

 

 

 

 

 

実際に動かして確かめてみる

 

[ 動画] 手をかざしてみる

 

センサの特性から数メートル(6mくらい)先の温度を非接触で測定することが本来の使用方法です。

 

ここでは実験的にセンサ(右上の丸いところ)の近くで手をかざして動作を見ています。

 

温度分布をOLEDで表示しています。手をかざすと赤色(体温)の部分が多くなります。仮想の判断方法(下記に記載)で判断して、PASSまたはFAIL(密状態)を表示します。

 

手のかざし方と表示が連動します。

 

 

 

[ 動画] 人の姿を映してみる

 

動画後半は表示(OLED)を見やすくするために周囲を暗くしています。

 

動画ではフリッカ(画像に明暗の波が生じる現象)が生じていますが、人の目では感じません。

 

腕を上げたり下げたりすると、体温の部分がそれに合わせて動きます。追従性はまあまあかなという感じです。

 

くふうした点

省電力

 

電池で使用する場合に消費電力を少なくすることができるようにプログラムで周辺回路の省電力化をおこなう回路構成にしました。

 

DC-DCコンバータにはモジュールをOn/OFFできるEnable端子があります。この端子を使用してDC-DCコンバータを含めて周辺回路の電源を制御することにしました。

 

Leafonyには常時通電する電池(メイン電池でも可)でバックアップをおこなっています。

 

OLEDもデバイスの設置時以外は取り外しができます。(設置時にはOLEDでセンシング状況を可視化します。)

温度分布表示の可変対応

 

面の温度測定により人の存在位置を判断して密集度を推定します。周囲(部屋)の温度が幅広く変わる可能性があるため、測定する温度の範囲(上限下限)を状況に応じて変えることが望まれます。

 

右図は温度分布を表示する場合です。1)従来はテーブルルックアップにより温度から表示色(RGB)を導出していました。範囲が異なる場合は複数のテーブル(Case A,B,C)を持つ必要があります。

 

2)ここにシグモイド関数(sigmoid function)を適用して範囲に応じて動的に表示色を導出する方法を採用しました。

密状態の検出と表示の実装

センシング方法

 

多点非接触温度センサで数メートル先の人の体温を捉えることにより、人の所在を検出します。

 

この試作機では約6m先の1,024点の温度を計測しています。

 

詳しくは下記をご参照ください。(右図の引用元です。)

 

*1*2:OMRON D6T Datasheet

 

密集度の判定方法

 

「密集(人の密集)」状態の定義、密集状態を定量的に表す方法を見つけることができませんでした。

 

本試作では、密集状態を検出するためのデバイスを作成することを目的としているため、評価関数 f(x)の検討はおこなっていません。

 

本試作では f(x)を下記の通り仮定しました。この仮定は文献調査や仮説検証をおこなっていません。動作確認を目的としたもので根拠はありません。

 

( 仮定 )

  • 人の検出は体温であるため、下記の温度範囲を示す計測対象点に人がいると仮定する。
  • 人が多いと上記に含まれる計測対象点が多くなる。
  • 温度範囲: 35~39℃
 

温度分布の取り込み

 

非接触温度センサは 1,024点(32X32)で温度を計測します。計測した温度データはセンサ内部で IIRフィルタによりデジタルフィルタリングした後に、温度(deg.単位)に換算されます。

 

 

 

センサの値はI2C通信によりMCUに取り込みます。データ長が長く標準的なI2Cライブラリでは対応できないため、ソフトウエアI2Cにより通信します。

 

温度分布の表示

 

シグモイド関数により、取得した各点の温度値( X101 ) から表示のためのRGB値を導出します。

 

処理速度を上げるために、事前に閾値の上下は演算をおこなわずに一意的にRGB値を設定します。

 

 

密集度の判定

 

密集度を導出する f(x)の結果を、判定基準で判定をおこない、密状態か否かを判定します。

 

閾値周辺での判定を安定化するために判定にはヒステリシスを設けています。

作ってみて ~「密」について思ったこと ~

取り組んだのは2020年年末です。コロナ禍が始まって1年くらい経ったときでしょうか。コロナウイルス感染症に関する情報もまだ少なく、重症者になられる方も多く、不安というか恐怖を感じていました。

 

感染症の防止には「3密の回避」が大切ということで、密集状態の回避が大きな話題になっていました。そこで密集状態を可視化することと数値化できれば、その場での警告や情報収集に役立つのではないのかなと思い試作機を作り始めました。

 

検討を始めていきなり壁に突き当たります。「密」の定義や定量化のための数式モデルや数値基準が見当たらないのです。専門的に調査したわけではありませんでしたが、見つけることはできませんでした。

 

IoTデバイスの試作が目的ですので、その部分はあきらめて本文の通り「仮定」することにしました。今回の試作を通じて「密」を改めて考えることができました。コロナ禍にかかわらず社会の多くの場面で、密の状況が関係することもあり、何らかの定量化が必要なのかなと思いした。

 

最後までご覧いただきありがとうございました!

 

( 次回 )密状態を検知・中継するゲートウェイ

今回作成したエッジデバイスで検出した密状態をクラウドにアップするためのゲートウェイ(中継器)を作ってみました。

 

単独運用できるように、今回のエッジ機能も搭載しています。

 

クラウドとの通信は LTE-Mを使用しました。

使用したリーフ

STM32 MCU リーフ

・ BLE Suger リーフ

・ USB リーフ

・ 4 Sensors リーフ

・ 29pin リーフ

 

使用した通信方法

BLE( エッジデバイス間 )

・ LTE-M( GW - クラウド間 )

この記事はこちらです。
 

PR

この製作記で登場した OMRON D6Tをはじめ、IoT向けのセンサや半導体、各種電子部品を多数用意しています。左はセンサの例です。ぜひ、ご活用ください。

 

  IoTサイト IoT向け電子部品専用サイト https://daiwa-iot.jp/

  通販サイト 試作・小ロットから量産まで https://sample-box.jp/

ページの終了