2021 年 2 ⽉ 28 ⽇

【STM32 コンテスト】密状態を検出するエッジデバイス

⼤和無線電機株式会社
1. ⾃⼰紹介
⼤和無線電機株式会社は電⼦部品の販売と、関連サービスの提供をおこなう電⼦部品の総合商社です。
私はお客様に製品を紹介するデモ機を作成しています。
2. 概 要コロナ禍では密を避けることが⼤切です。密集したら注意を促したり、密集しやすい場所や状況を捉えて対策をおこなうことは感染拡⼤の防⽌に有効です。*1

そのためのしくみを考えてみました。今回は密集状態を検出するエッジデバイス部分の試作をおこないました。⾚外線で⼈を検出する⾮接触センサと STM32 リーフを組み合わせました。
*1 : 厚⽣労働省 https://www.mhlw.go.jp/content/10900000/000606000.pdf（ 図.1 ）システム全容と今回の対象部分

本投稿の動画版はこちらです。（ 2 分間で概略をご覧頂けます。） https://youtu.be/tvjLHKcxbVc
1

アプリケーション例
アプリケーション例は下記の通りです。
・エレベータ・更⾐室・ロッカールーム
3. ⽬ 的
⽬的は下記の通りです。
・密集したら注意を促す。
・密集状況をクラウド上のデータベースに通知する。
・多くの場所で容易に使⽤できる。
STM32 リーフの必要性
・密集度は⾯で計測 （ メモリ容量が必要 ）・多点での演算が必要 （ 演算速度が必要 ）密集度は⾯で計測単位⾯積あたりの⼈数を基本とします。計測点は⼀辺（N)の⼆乗分必要となります。今回は⼀辺 32 点のセンサを使⽤しますので、⾯では 1024 点の計測点があります。1 点あたり 2byte とした場合、2kbyteの容量が必要となります。
多点での演算が必要状況を分析処理するために、各計測点や計測点間の演算を⾏います。計測点が多いため⼗分な演算速度ないと応答速度が低下します。密集状態を評価するために計算や AI を⽤いた場合に、その選択肢を増やすためにも演算速度に余裕がある MCU が望まれます。
4. 仕 様
⽬的を実現するために下記の仕様としました。
・数メートル先の密集度を計測
・クラウドに密集状況を送信
・警告の発報（ 外部警報器へ ）・環境情報（ 温度、湿度、照度 ）の取得
・⼩型（ 名刺サイズ ）・電池駆動
・安価（ 安価に必要な場所に設置できるように ）2

5. 構 成構成は下記の通りです。
・回路ブロック図を添付別紙（ Circuit block diagram ）に⽰します。
・ポートアサインは添付別紙（ Port assign ）に⽰します。
5-1. 使⽤したリーフ
下記のリーフを使⽤しました。
・AP03

STM32 MCU リーフ

・AI01

4-Sensors リーフ

・AC02

BLE Suger リーフ

・AZ01

USB リーフ（ 開発⽤ ）・AX02

29pin リーフ（ ユニバーサル基板との接続⽤ ）29pin リーフに基板対基板⽤コネクタを接続して、ユニバーサル基板と接続します。Leafony コネクタのネジを延⻑して、ユニバーサル基板を挟んで固定します。
（ 図.2）使⽤したリーフ

5-2. 使⽤したセンサOMRON の MEMS ⾮接触温度センサ D6T を使⽤しました。対象物（今回は⼈間）の表⾯温度を⾮接触で計測します。センサは⾚外線（8〜12μm）を計測します。計測は⾯でおこないます。1 辺 32 点、合計 1,024 点の計測点の温度を計測します。

3

（ 図.3 ）MEMS ⾮接触温度センサ

図はメーカー資料からの引⽤です。
6. 機 能機能は下記の通りです。
6-1. 機能の⼀覧（ 表.1 ）機能⼀覧表
温度計測機能MEMS ⾮接触温度センサ

数メートル（ 6m ）先の温度を計測

温度・湿度・照度計測機能

4-Sensors リーフ

アップリンク機能

BLE Suger リーフ

リモート設定機能

BLE Suger リーフ

警報出⼒機能リレー

LED 出⼒機能

LED

表⽰機能

OLED

各種情報の表⽰。 RGB 96 X 64 pixcel

スイッチ⼊⼒機能プッシュ SW（2 つ）

表⽰情報の切り替え等の各種操作

電源電圧測定機能

ADC

電源電圧の測定

本デバイスの周辺温度、湿度、照度を計測
Bluetooth GW を介して上位システム、インターネットに接続
スマートフォンから各種設定値を変更（ 拡張機能 ）1a 接点出⼒で外部の警報器を ON/OFF
電池残量の表⽰等多⽬的利⽤（ JP-SW
で電源 LED 表⽰に変更可能 ）4

スリープ機能

DC/DC コンバータ等

密状態判定機能プログラム

省電⼒（ 拡張機能 ）計測した温度分布から密状態を判定す
るプログラムモジュール

機能ブロック図を添付別紙（ Function block diagram ）に⽰します。
6-2. データ処理過程
データ処理過程を添付別紙（ Sensor data diagram ）に⽰します。
7. 実 装回路図を添付別紙（ Schematic ）に⽰します。
ソフトウエア構成図を添付別紙（ Layer model ）に⽰します。
8. 外 観外観は下記の通りです。
8-1. ⼨法など
・⼨法： 横 71mm X 縦 51mm X ⾼さ 31mm（ 突起部を含まず ）・重さ： 45g
外観は YouTube でご覧いただけます。
https://youtu.be/tvjLHKcxbVc
9. 動作事例
MEM ⾮接触センサの特性から数メートル先を範囲としています。下記の事例では撮影の都合上、センサ直近に⼿をかざして計測状況の確認をしています。実験ではペットボトルに温⽔を⼊れて試験を⾏いました。（ 撮影場所は照明が多く室温が⾼くなっています。）
表⽰例

5

・温度分布： MEMS ⾮接触温度センサの計測結果 （ 計測範囲の温度分布 ）・温度、湿度： 4−Sensorsr リーフの計測結果
・判定： 温度分布から密状態か否かを判定して表⽰
動作事例は YouTube でご覧いただけます。
https://youtu.be/jxtIpYcYW4I
https://youtu.be/yzjaD2rQJCQ
密集状態の判定⽅法を添付別紙（ Determination Method ）に⽰します。
10. 開発環境
・Arduino IDE 1.8.9
使⽤しているライブラリ等
・Adafruit_GFX_Library 1.10.5
・Adafruit_SSD1331_OLED_Driver_Library_for_Arduino 1.2.0
・SPI 1.0
・Wire 1.0
・sme-hts221-library-master 1.1.2
・SrcWrapper 1.0.1
・Adafruit_BusIO 1.7.1
・D6T OMRON サンプルコード：https://github.com/omron-devhub/d6t-2jcieev01-arduino
11.「密集状態」と本試作機の内部処理に関して
本試作では、ハードウエア、ソフトウエアの動作確認を⽬的としているため、本試作機に搭載する密集状態の検出、分析等の検討と検証は対象としていません。本試作機での密集状態の処理は、機器の動作確認を⽬的としたもので、実際の密集状態を表しているものではありません。
12. あとがき
多くの計測点数（画素数に相当）でしたが、STM32 なのでメモリ容量も処理速度も気にせずに試作できました。
システムの MCU 周辺部以外に通信、SD 記録、外部拡張など、リーフで簡単に組み合わせを変えられるので、実証試作の⼯数を⼤幅に減らすことができました。また、アプリケーションに特化した部分に注⼒できるので、開発時間を有効に使うことができました。
6

専⾨知識がないので⼈の密集度の計測や分析などは「f(x}」でまとめていまいましたが、計算モデルやAI による密集度の検討や処理に興味を持ちました。⽇頃、「密」という⾔葉を簡単に使ってしまっているのですが、その定義や定量化が明確になっていないのかなと思いました。ここの相違が齟齬を⽣むのであれば、明確にすることも必要と感じました。
この機会をいただいて、改めて密ということを⾒直すことができました。ありがとうございました。
以上

7

Dense detection edge device

2021.2.25

Circuit block diagram
Leafony Block
AP03
Temperature
Sensor

AC02
OLEDsoftware
I2C

D6T / MEMS / 32 x 32SPISTM32 MCU

BLE Suger
AI01

Module

SSD1331 / 96 x64 / RGB

UART

AZ01

SwitchRelay
DI

push / 2 inputDO

4-Sensors

USB

I2C

1aUARTAI

LEDVbatt. Voltage detectionUSBDOonly Power supply

5V

DC/DCConverter

for demonstration→ 5V

Inlet Switch

development
Battery

DC/DCConverter→ 3.3VDense detection edge device

2021.2.25

Port assign

F3

VBUS

VBUS

F5RESET NRDT

D6T

STM32L452REI6USB

BLE

4-Sensors

SSD1331

D6T-32L-01A

Function*1

Function

3V3

Port

Function

〇

3V3〇

VBUS

VBUS

RESET〇RESETRESET RESETPWM●F7D6PA87F9D7PB1237F11D8PA98F13D9PA102PWM

F15D10PB610F17D11PA758F19D12PA659F21D13PA513SCK●F23SDAPB914SDA●F25SCLPB815SCL●F27GNDGND

F2Res1PA13F6A0PA454

ADC1_IN9F8A1PA052

ADC1_IN5F10A2PA153

ADC1_IN6F14A4PC156

ADC1_IN2F16A5PC057ADC1_IN15F18

D0PA3F20D1PA2F22D2PC79F24D3PB33F26D4PB54●F28D5PD55●F29Res2PA1419TXD

●RXD

●

PWM

SS●

PWM

MOSI●

I2C

No.
F1DO3.3v

16 11 16 21 26

RES

27 12 17 22 27

F5switch238 13 18 23 28

F7switch149 14 19 24 29

F9SS

switch1

DI(RXD)

outputDO

F11(TXD)

switch2

DI

F13

OLED(SDA)

SDA

(SCL)

SCL

GND

GND

F15cpinport/function

1

F13V3

F6

ADC1_IN9

SCL

F21

F7

D7OLED-RES

F9

D37switch1F19

GND

GND

F11

D8output

F13

D2switch2(ADC)

TXD

●RXD

F8RXD

●

TXD

F10SDA●

D5TSDAF14SCL●I2C

SCL

F16RXD△TXD

for debug TXD△RXD

UARTF2Batt3ADC F645F18F20LED●DOBatt. AD

F25●I2C2I/O

F27

DBG-SWCLKF226F14D56

D6T-SDAF15

SPI-SS(10)OLED-CS

F16

D57

D6T-SCL

F17

SPI-MOSI(58) OLED-SDA

F21

SPI-SCK(13)F22

D2LEDF26

D4

OLED-DC

F27

Gnd

F28

D5

OLED-SCL

EN_5V

F24

SWCLK

*1：プログラムで使⽤する場合の番号DC

DO
EN_5V

DBG-SWDIO△〇：System / ●：Application / △：Development

OLED Module※ SD使⽤時は OLED-SSは F24に変更のこと。

GND1GND

5V

2VCC

3SCL

F21SPISCK

4SDA

F17SPI

MOSI

5RES

F7D7RESET

6DC

F26D4DC7CS

F15SPISS

1MPU

7D6T Module

C/H

GND

1GND

Black

3V32VCC

White

3SCL

Blue

F16D57

I2C

4SDA

Yellow

F14D56(software) SDA

MPU
SCL

DO

SDA

⾚⽂字ピン：ピン抜き（接続なし）

F17GNDGndLED

pin assign

F23

GND

5 10 15 20 25SDA△S-UART

SDA

CS
SPI

〇SWDIO

Function
3V3RESET

MISO

GND

Function
5V

RESET
WakeupSPIFunction
3V3

Function
3V3( top view )F3●

S-UARTPort

3V3

standalone I/O

DC

3V3OLEDSCL

Port

3V3AI01A

SCKNameF1AC02A

outputNo.

AZ01A

Batt AD

peripheral

Leafony block
AP03

MPU

F26I/OF28switch1F9

D37

F29switch2

F13

D2DI

output

F11

D8DO

LED

F22

D2DO

EN_5V

F28

D5DODIDense detection edge device

2021.2.25

Layer model
Application
Function API ─ ─
D6T

Sensor

ADUX

Sleep

AP Interface

AP Interface

API

AP Interface

AP Interface

UnifiedGraphics functions

Sensor Driver

GFX

Device API ─
D6T

HTS221

OPT3001

SSD1331

AccessAccessAccessAccessComunication API ─ ─Software

I2C

SPI

BLE

I2C

Interface

Interface

Interface

ArduinoAP03 STM32 MCU

D6T

STM32L452REI6

MEMS温度センサ

ARM Cortex-M4 / 80MHz / 512KB / 160KB
LefonyBlock

5V

温湿度照度センサ

センサ

BLE

AI01 4-Sensors

AC02 BLE SugerUSB
AZ01 USB( for debug )3.3V
USB or Batt.
Power supply

PS voltage detection ( ADC )← AX08 29pin header

凡例：

アプリケーション

開発したソフトウエア
リレー

ハードウエア

既存ソフトウエア

Leafony block

LED

SW1

SW2

OLED
96 x 64( Connect with universal board )USBfor DebugDense detection edge device

2021.2.25

Function block diagram
Measurement→ 外部接続・通信

data ( Buffer )Temperature

警報装置

Relay

SensorRead

Calculate

Determine

Temperature data

density coefficientdensity

D6T / MEMS / 32 x 321024 points

AI01

Sensing Ddata

1a
AC02
Bluetooth GW.

TransmitReadmeasuerment

Sensors data
4-Sensors

接点出⼒

BLE

data
BLE Suger

I2C

Display
Temperature

UART

OLED
Moduledistribution
SSD1331 / 96 x 64 / RGB

SwitchLED
Input

Control UX

OutputSwitchShift state

LED

Control

Control

Sleep mode

Power save

push / 2 input

Voltage detection

DC/DC
ADC

ConverterDense detection edge device

2021.2.25

Sensor data diagram
Received
Buffer

Display temperature distribution
rbuf[]

uint8_t
Temperature distribution

PTAT

Arry of sensors

rbuf →

internal tempertature

PTAT Lo

Sensor temperture

PTAT HiPTAT Hi PTAT Lo

Bufferdbuf[]

P0 Hi
P1

P32

P33…

P31

P1 Lo

P63

P1 Hi

N_ROW

P1
P2

Sigmoid function

Each tempertureBand-pass filter

Pn Lo

Pn Hi Pn Lo

Tx - ( Tmax.- Tmin. )Pn Hi

Signed 2-byte integer

x=Pn

⁝Pn

P0sbuf →color = red⁝⁝

P64

Tx > Tmax.

⁝N_READP0

uint16_t

P0 Lo

N_ROWTmin.

⁝P1021
P992

P1023 Lo

P1023

P1023 Hi
PEC

P1022

color = blueP1023

Tx < Tmin.

N_ROW：

32

N_PIXEL： N_ROW * N_ROW

1024

type A : Select a value from the range.

N_READ： ( N_PIXEL + 1 ) * 2 + 1

2051

Tmax. = max( Pn )Tmax. = Ktmax

Tmin. = min( Pn )Tmin. = Ktmin( CRC )
type B : The value is fixedly determined.

included IIR filter in sensor.

＋Calculate the density coefficient.

1/C

Determine densityP0 Lo⁝

C‐1Z-1

Pn Lo⁝IIR coefficient：0( 0-15 )Average：4( 0-10 )Rdf(x)→
compareRdDc→Dh→P1023 Hi

Cycle time [ x10ms ] ： 14

Dc ： Judgment criteria

Y = (( C-1 ) * Yold +X ) / C

Dh ： Hysteresis→ warningDense detection edge device

2021.2.25

Determination Method
１．密集状態の定義「密集（⼈の密集）」状態の定義を⾒つけることができませんでした。
密集状態を定量的に表す⽅法も⾒つけることができませんでした。
密集状態を定量的に算出⽅法を定める⽅法を仮定して、その算出⽅法をf(x)としました。
２．適⽤
本試作では、密集状態を検出するためのデバイスを作成することを⽬的としているため、前項１のf(x)の検討は⾏っていません。
ﬁg.1 ⼈の検出イメージ（メーカー資料から引⽤ *1）

ﬁg.2 計測範囲のイメージ（メーカー資料から引⽤*2)

３．算出⽅法の仮定
本試作では、ハードウエア、ソフトウエアの動作確認を⽬的として、

Temperature

前項１のf(x)を下記の通り仮定しました。

distribution

なお、この仮定は⽂献調査や仮説検証を⾏っていません。動作確認を( 2-Dimensions )f(x)Rd( 0.00 〜 1.00 ）⽬的としたもので根拠はありません。
ﬁg.3 密集状態の算出⽅法（ 仮定 ）
・ ⼈の検出は体温であるため、下記の温度範囲をを⽰す計測対象点に⼈がいると仮定する。

N_ROW

・ ⼈が多いと上記の仮定に含まれる計測対象点が多くなる。
・ 温度範囲：Temperature

35 〜 39℃

４．係数の仮定

P32

P33…

39

Dmmax
NPn

Rd =N
N_PIXEL

Dmmin
M2P992

P1023

N_ROW：

3232N_PIXEL：

N_ROW * N_ROW

10240.5以上）を密集状態と仮定しました。
ﬁg.4 算出⽅法の仮定( low )

Rd
( 0.00 〜 1.00 ）35

0.0 〜 1.0 （ 0.0は密集度が低く、1.0は密集度が⾼い ）計測対象点が上記の温度範囲に含まれる割合が、50%（上記の係数で仮の f(x)

M1

P63

・ 係数の取りうる範囲は下記とする。

５．判定

Count

( high )P31

P64
N_ROW・ スカラ値とする。

P1⁝

密集状態を表す係数を仮定しました。

P0N + M1 + M2 = N_PIXEL