「AMG8833」の温度データをブラウザで表示

サーモグラフィー「AMG8833」で取得した温度データをブラウザで表示します。ブラウザまで持ってくれば、Web系の制作者にとって視覚化が簡単になります。

開発環境

ハード

Raspberry Pi 3 model B+
スイッチサイエンス「AMG8833」モジュール

ソフト

OS:raspbian 10.7
Python 3.7.3
Node.js 10.21.0
Chromium 86

検温ボタンで温度配列取得

今回は、ラズパイの標準ブラウザChromiumで、「検温!」ボタンを押した時、Consoleに8×8の温度配列を表示するところまで進めます。

処理の流れとしては、

HTML→Node.js→Python→センサー→Python→Node.js→HTML

・・・と、なかなか遠回りです。しかし、HTMLまでセンサーデータを持ってくれば、Web系の人にとっては自由度が増すでしょう。

ディレクトリ構造

htdocs/
┗thermal-camera.html(検温ボタンのあるHTML)
python/
┗amg8833.py(センサー値を取得するPython)
app.js(サーバーとなるNode.js)

app.js(Node.js)のコード

Node.jsはExpressを使い、Webサーバーとして立てます。

HTMLとはsocket.io(Websoket)でデータをやり取りし、PythonとはPythonShellでデータをやり取りします。

Pythonから受け取ったセンサーの配列が文字列となるので、JavaScriptで配列データに変換しています。17行目からがその処理です。もっと簡単な書き方があるかもしれません。

PythonShellで実行している「python/amg8833.py」のコードは下記になります。

amg8833.py(Python)のコード

AMG8833センサーにアクセスし、8×8の温度配列データを出力します。

この出力結果が、node.jsに渡ります。

thermal-camera.html(HTML)のコード

最後にブラウザに表示するHTMLです。

「検温!」ボタンをクリックすると、Websocketで「thermal」というメッセージをNode.jsサーバーに渡します。

それをトリガーにして、温度取得が始まり、取得完了後にデータがまたWebsocketで戻ってくる仕組みです。

次回、canvasとCSSで、サーモグラフィーを作ります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)