工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

必要な部品と材料

MikroE Flip & Click × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド Arduino Due × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド Particle Photon × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド NodeMCU ESP8266 Breakout Board × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド SparkFun Photon RedBoard × 1
MikroE Temp&Hum Click (HTS221搭載) × 1
MikroE WiFi Plus Click (MRF24WB0MA搭載) × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド Espressif Wemos D1 Mini × 1
Pythonで構築するIoT温度計: Zerynthによる完全ガイド Arduino Zero × 1

アプリとオンラインサービス

Pythonで構築するIoT温度計: Zerynthによる完全ガイド Zerynth Studio

このプロジェクトについて

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

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」をクローンできます。クローン方法はこちらを参照。

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

オリジナルの 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」インスタンスとリンクさせます。必要な手順のスクリーンショットを以下に示します。技術的詳細はこちらを参照。

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

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

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

テンプレートの作成、アップロード、設定

Zerynth Appでは、HTML、CSS、JavaScript を使って美しいレスポンシブなグラフィカルユーザーインターフェースを実行できます。AndroidやiOSのコードは不要です!

各デバイスのグラフィカルインターフェースはZerynth ADMサンドボックスでホストされ、HTML5、JavaScript、CSS、画像ファイルのセットで構成され、アプリで読み込み表示されます。テンプレートにADM JavaScriptライブラリを追加すると、アプリが接続デバイスと双方向にメッセージをやり取りできるようになります。

テンプレートはそれぞれの「プラス」アイコンをクリックして追加できます。

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

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

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

スクリプトのアップロード

いくつかの編集後、コードは以下のようになります:

################################################################################
# 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は接続デバイスからの プッシュ通知 も受信できます。この場合、温度が閾値を超えると通知が表示されます!

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

ご質問があれば、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)

回路図

Pythonで構築するIoT温度計: Zerynthによる完全ガイド

製造プロセス

  1. 温度計:ガリレオの温度スコープから現代デジタルセンサーまで
  2. Raspberry PiでTMP006赤外線温度センサーを使う – Pythonライブラリとセットアップガイド
  3. Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
  4. PSoC 6 Pioneer BoardとIoT Add-On Shieldを極める:開発者向けガイド
  5. IoTが日常生活をどう変革しているか
  6. WindowsにPythonとPyCharmをインストールするステップバイステップガイド
  7. Python os.rename()でファイル・ディレクトリをリネーム:ステップバイステップガイド
  8. PythonとSeleniumでFacebookログインを自動化:ステップバイステップガイド
  9. Pythonで平均を計算する:実践ガイド
  10. Pythonでタイトルケース変換:高速・確実な実装
  11. PythonでSMTPメール送信:簡単・確実なガイド