Pythonで構築するIoT温度計: Zerynthによる完全ガイド
必要な部品と材料
| MikroE Flip & Click | × | 1 | |
![]() |
Arduino Due | × | 1 |
![]() |
Particle Photon | × | 1 |
![]() |
NodeMCU ESP8266 Breakout Board | × | 1 |
![]() |
SparkFun Photon RedBoard | × | 1 |
| MikroE Temp&Hum Click (HTS221搭載) | × | 1 | |
| MikroE WiFi Plus Click (MRF24WB0MA搭載) | × | 1 | |
![]() |
Espressif Wemos D1 Mini | × | 1 |
![]() |
Arduino Zero | × | 1 |
アプリとオンラインサービス
![]() |
Zerynth Studio |
このプロジェクトについて

Zerynth App
Zerynth App は Android と iOS 向けのモバイルアプリケーションで、IoTプロジェクト の グラフィカルインターフェース を 高速プロトタイピング するためのものです。
Zerynth Appを使えば、あらゆるモバイルデバイスを スマートオブジェクト や IoTシステム のコントローラー兼ディスプレイに変身させられます!特に、Zerynthでプログラミングされた接続デバイスの管理と制御が可能で、モバイルとデバイス間の双方向通信チャネルを確立できます。
このチュートリアルでは、Zerynth搭載のシングルボードマイクロコントローラーとZerynth Appをリモートディスプレイとして、シンプルだが強力な IoT温度計 を開発する方法を紹介します。
必要な材料
まずボードが必要です。Zerynthがサポートする32ビットマイクロコントローラーデバイスから選択できます。ここではMikroelektronikaの Flip&Click を採用しました。これは人気のArduinoプラットフォームと多くの属性を共有し、Microchip の32ビット AT91SAM3X8E (Arduino Dueのコア) を搭載しています。
温度測定には Temp&Hum Click を選択。HTS221温湿度センサーを搭載しています。
インターネット接続には WiFi PLUS Click を採用。Microchip のMRF24WB0MA (2.4GHz、IEEE 802.11準拠モジュール) と、オンボードTCP/IPスタックと802.11接続マネージャーを持つMCW1001コンパニオンコントローラーを搭載しています。
さらに以下が必要です:
IoT温度計の組み立て
Flip&ClickはArduinoの「裏表あるいとこ」です。片面はArduino互換ですが、反対面には「クリックボード」と呼ばれるアドオンモジュール用の4つのオープンmikroBUSソケットがあります。これらはArduinoシールドの縮小版のようなもので、Flip & Clickには同時にいくつも装着できます。Temp&Hum ClickとWiFi Plus ClickをそれぞれスロットAとBに装着するだけです。
PythonでIoT温度計をプログラミングする
サンプルのクローン
Zerynth Studioをインストールし、Zerynthユーザーを作成したら、サンプル「Zerynth App Oscilloscope」をクローンできます。クローン方法はこちらを参照。

オリジナルの main.py のコードを見てみましょう。ここがPythonスクリプトのロジックを開発する場所です。このコードをベースに、私たちのプロジェクト用に編集していきます。
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
# この例はParticle Photonベース
# 以下の行を変更して別のWiFiドライバーを使用
from broadcom.bcm43362 import bcm43362 as wifi_driver
import streams
import adc
# Zerynth APPライブラリをインポート
from zerynthapp import zerynthapp
streams.serial()
sleep(1000)
print("STARTING...")
try:
# デバイスUIDとトークンはADMパネルで作成可能
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", log=True)
# WiFiネットワークに接続 (SSIDとパスワードを設定)
wifi_driver.auto_init()
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynthアプリインスタンス開始!
# クローンした「template」フォルダのファイルでテンプレートを作成
# ADMにアップロードして接続デバイスと関連付け
zapp.run()
# ADC読み取り値をADMに送信
while True:
sleep(1000)
x = (adc.read(A4)*100)//4096
zapp.event({"data": x})
if x > 95:
# モバイル通知送信
# (ADMサンドボックスではデバイスあたり1分に1通の制限あり)
zapp.notify("ALARM!", "The value is greater than 95!")
except Exception as e:
print(e)
このシンプルな例では、接続ボードからのデータでZerynth Appにグラフィカルなオシロスコープが表示されます。データは「アナログ」ピンA4のアナログセンサーから取得されます。
適切なWiFiドライバーとセンサーライブラリのインポート
コメントにある通り、この例はParticle PhotonボードとそのWiFiドライバーベースです。WiFi Plus Clickを使用するため、以下の行を変更します:
from broadcom.bcm43362 import bcm43362 as wifi_driver
を
from microchip.mcw1001a import mcw1001a as wifi_driver
に変更し、
wifi_driver.auto_init()
を
wifi_driver.init(SERIAL2, D24) # スロットB
に変更します。
Temp&Hum Clickの温度センサーを使用するため、以下の行を追加してライブラリをインポートしセンサーをセットアップします (ドキュメント参照):
# HTS221ライブラリをインポート
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # スロットA
センサー読み取りは以下のように行います:
tmp, hum = temp_hum.get_temp_humidity() # 温度と湿度を読み取り
SSID名とパスワードの設定
接続したいWiFiネットワークのSSIDとパスワードを設定します:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
接続デバイスの作成とセットアップ
「接続デバイス」を作成し、「zerynthapp」インスタンスとリンクさせます。必要な手順のスクリーンショットを以下に示します。技術的詳細はこちらを参照。

デバイス認証情報 (UID と TOKEN) はZerynth Studio (ADMパネル) から直接コピー&ペースト可能です。「IP」はZerynth ADMのIPアドレスで、ネットワークドライバーがホスト名解決をサポートしない場合 (このケース) に使用されます。

テンプレートの作成、アップロード、設定
Zerynth Appでは、HTML、CSS、JavaScript を使って美しいレスポンシブなグラフィカルユーザーインターフェースを実行できます。AndroidやiOSのコードは不要です!
各デバイスのグラフィカルインターフェースはZerynth ADMサンドボックスでホストされ、HTML5、JavaScript、CSS、画像ファイルのセットで構成され、アプリで読み込み表示されます。テンプレートにADM JavaScriptライブラリを追加すると、アプリが接続デバイスと双方向にメッセージをやり取りできるようになります。
テンプレートはそれぞれの「プラス」アイコンをクリックして追加できます。

専用フォルダからテンプレートをアップロードします。テンプレート定義ファイルは index.html と呼ばれ、自由に編集可能です。今回はそのまま使用します。

スクリプトのアップロード
いくつかの編集後、コードは以下のようになります:
################################################################################
# IoT Thermometer
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Zerynth APPライブラリをインポート
from zerynthapp import zerynthapp
# HTS221ライブラリをインポート
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # スロットA
sleep(1000)
print("STARTING...")
try:
# デバイスUIDとトークンはADMパネルで作成可能
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# WiFiネットワークに接続 (SSIDとパスワードを設定)
wifi_driver.init(SERIAL2, D24) # スロットB
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynthアプリインスタンス開始!
zapp.run()
# センサー読み取り値をADMに送信
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity() # 温度と湿度を読み取り
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
# モバイル通知送信
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
"DEVICE UID"、"DEVICE TOKEN"、"SSID"、"PASSWORD" はご自身のパラメータに合わせて編集してください。
この時点で、スクリプトをデバイスにアップロード (uplink) できます。
Zerynth AppでIoT温度計ダッシュボードを確認
この簡潔なチュートリアル にある通り、Zerynth Appを開き、ログインして特定のデバイスを選択するだけでIoT温度計ダッシュボードが表示されます。また、Zerynth Appは接続デバイスからの プッシュ通知 も受信できます。この場合、温度が閾値を超えると通知が表示されます!

ご質問があれば、Zerynthコミュニティフォーラムでディスカッションを開始してください。
Enjoy!
コード
IoT Thermometer Python
################################################################################
# Zerynth App Oscilloscope
################################################################################
from wireless import wifi
from microchip.mcw1001a import mcw1001a as wifi_driver
import streams
import adc
streams.serial()
# Zerynth APPライブラリをインポート
from zerynthapp import zerynthapp
# HTS221ライブラリをインポート
from stm.hts221 import hts221
temp_hum = hts221.HTS221(I2C0, D21) # スロットA
sleep(1000)
print("STARTING...")
try:
# デバイスUIDとトークンはADMパネルで作成可能
zapp = zerynthapp.ZerynthApp("DEVICE UID", "DEVICE TOKEN", ip="178.22.65.123", log=True)
# WiFiネットワークに接続 (SSIDとパスワードを設定)
wifi_driver.init(SERIAL2, D24) # スロットB
for i in range(0,5):
try:
wifi.link("SSID", wifi.WIFI_WPA2, "PASSWORD")
break
except Exception as e:
print("Can't link", e)
else:
print("Impossible to link!")
while True:
sleep(1000)
# Zerynthアプリインスタンス開始!
zapp.run()
# センサー読み取り値をADMに送信
while True:
sleep(1000)
tmp, hum = temp_hum.get_temp_humidity() # 温度と湿度を読み取り
print("Temp is:", tmp, "Humidity is:", hum)
try:
zapp.event({"data": tmp})
except Exception as e:
print(e)
if tmp > 30:
# モバイル通知送信
try:
zapp.notify("ALARM!", "High Temperature!")
except Exception as e:
print(e)
except Exception as e:
print(e)
回路図
製造プロセス
- 温度計:ガリレオの温度スコープから現代デジタルセンサーまで
- Raspberry PiでTMP006赤外線温度センサーを使う – Pythonライブラリとセットアップガイド
- Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
- PSoC 6 Pioneer BoardとIoT Add-On Shieldを極める:開発者向けガイド
- IoTが日常生活をどう変革しているか
- WindowsにPythonとPyCharmをインストールするステップバイステップガイド
- Python os.rename()でファイル・ディレクトリをリネーム:ステップバイステップガイド
- PythonとSeleniumでFacebookログインを自動化:ステップバイステップガイド
- Pythonで平均を計算する:実践ガイド
- Pythonでタイトルケース変換:高速・確実な実装
- PythonでSMTPメール送信:簡単・確実なガイド






