dangomushi115のアイコン画像
dangomushi115 2021年02月17日作成 (2022年03月26日更新)
製作品 製作品 閲覧数 1686
dangomushi115 2021年02月17日作成 (2022年03月26日更新) 製作品 製作品 閲覧数 1686

飲み頃通知システム

飲み頃通知システム

作ったもの

ミルクが人肌(40℃)まで冷めたかどうかを判定し、通知するシステム。
ミルクが熱いことを示している図
ミルクが飲み頃であることを示している図

背景

最近、子供が生まれて、ミルクを飲ませる機会が発生するようになりました。

赤ちゃんに飲ませるミルクは、一般的に以下のような手順で作る必要があるといわれています。

  1. 70℃以上のお湯を用意する
  2. 哺乳瓶に粉ミルクを入れる
  3. お湯を哺乳瓶に注ぎ、粉ミルクを溶かす
  4. 粉ミルクの溶けたお湯(=ミルク)を人肌程度(※)まで冷ます
    ※:ここでいう「人肌程度」は一般的に、40℃といわれています。

赤ちゃんに衛生的に問題ないミルクを飲ませるためお湯を加熱する必要がありますが、十分に冷まさないとやけどさせてしまう危険性があります。
一方で、赤ちゃんの両親がミルクを作るときは大抵、おなかがすいて赤ちゃんは泣いています。赤ちゃんの両親は一刻も早くミルクを飲ませたいと焦っているものの、「万が一、やけどさせたら・・・」などと思い、人肌以上に冷めてから飲ませがちです。

そこで、「飲み頃通知システム」により、ミルクが十分冷めたことを定量的に判断できるようにすることで、赤ちゃんに安心して飲み頃のミルクを飲ませることができるようになるため、この「飲み頃通知システム」を作ることにしました。

材料

品名 参考URL 備考
M5Stack Basic https://akizukidenshi.com/catalog/g/gM-16008/ Grayなどでも可
サーマルカメラPIM365 https://shop.pimoroni.com/products/mlx90640-thermal-camera-breakout?variant=12536948654163 新型コロナウイルスの流行以来、どこにも在庫がない。M5StackのThermal Unitでも可。

その他、下図に示すようなケース(治具?)を3Dプリンタで作成した。

キャプションを入力できます

作り方(ハード)

上述した部品は、下図のように取り付けます。
表
裏
なお、サーマルカメラPIM365とM5Stackは下表の通りのピンを接続します。なお、M5StackのThermal UnitならばGroveケーブルで接続すればOKです(多分)。

PIM365 M5Stack
3-6V 3v3
SDA 21
SCL 22
🚫 つながない
GND G

参考:PIM365のピン

作り方(ソフト)

今回は、あえてUIFlowを使ってみることにしました。

①まず最初に、M5Stack BasicにUIFlowを使用するためのファームウェアのようなものを書き込みます。
→M5StackのUIFlowのページから、ファームウェア書き込み用のツール「M5Burner」をダウンロードし、公式の手順に従ってファームウェアを書き込みます。
※:今回、Thermal Unit用のブロックを活用しますが、最新のファームウェアではThermal Unitが非対応になっているようです。よって今回はちょっと古いファームウェア「v1.4.5.1-en」を書き込みます。

キャプションを入力できます

②UIFlow公式の手順に従って、UIFlowブラウザ版のページから開発を始めます
③下図を参考に、画面右上の「DEMO」ボタンを開き、「THERMAL」を選択します。
→これにより、Thermal Unit用のブロックを使用できるようになります。
キャプションを入力できます

④画面右上にある「MANAGER」ボタンを選択し、Device File Manager->Images->Add Imageから、画像を選択してM5Stack Basicに画像をアップロードします。
キャプションを入力できます
なお、アップロードする画像は下記に示すとおり、飲み頃を示す「OK.JPG」と、まだ熱い状態を示す「NG.JPG」の2種類です。これらの画像は90×240ピクセルです。
キャプションを入力できます
キャプションを入力できます

⑤下図を参考に、ブロックや変数を設定します。図中に示した「40」の部分を、例えば「60」等に変えれば、猫舌の人が熱い飲み物の飲み頃を通知するようなシステムにすることができます。
※:UIFlowだと、サーマルカメラモジュールからのデータの読み込み・画面への表示が、1ブロック(一番上の紫のブロック)でできてしまうところが便利ですね。
キャプションを入力できます

なお、上記のブロックをMicroPythonで記述した場合、以下のようになります。

from m5stack import *
from m5ui import *
from uiflow import *
import unit

setScreenColor(0x222222)
thermal0 = unit.get(unit.MLX90640, unit.PORTA)

label0 = M5TextBox(246, 6, "Max:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
label2 = M5TextBox(246, 32, "Min:", lcd.FONT_Default, 0xFFFFFF, rotate=0)
image0 = M5Img(0, 0, "res/default.jpg", True)

while True:
  thermal0.update(x=90, y=60, show=True, showCenter=True)
  label0.setText(str((str('Max:') + str(str(int((thermal0.getMaxTmp())))))))
  label2.setText(str((str('Min:') + str(str(int((thermal0.getMinTmp())))))))
  if (thermal0.getMaxTmp()) <= 40:
    image0.changeImg("res/OK.JPG")
  else:
    image0.changeImg("res/NG.JPG")
  wait_ms(2)

終わりに

このシステムを使用することで、赤ちゃんに安心してミルクを飲ませられるようになりました。
もっとも、慣れてくればこのシステムがなくても落ち着いてミルクを飲ませられるように・・・

dangomushi115のアイコン画像
主に生き物の観察・飼育環境の測定に関する工作をします。 ↑よく見たら、あんまり生き物関係の工作の記事を載せていなかった・・・
ログインしてコメントを投稿する