【Degu】MicroPythonのimportで失敗した時の記録

DeguはMicroPythonを採用しています。慣れた言語で開発できるというのは便利ですが、時として単純ミスで動作せず何も起動しなくなります。今回起こした私のミスが役に立てばと思いまとめました。
2019.08.30

こんにちはCX事業本部のさかじです。弊社ではIoTセンサとしてDeguを採用しています。
DeguはMicroPythonを採用しています。慣れた言語で開発できるというのは便利ですが、時として単純ミスで動作せず何も起動しなくなります。今回起こした私のミスが役に立てばと思いまとめました。

Deguとは?

Deguは、メッシュネットワーク対応のIoTセンサーの設計に必要となる回路図や部品表の他、OSをはじめとした基本ソフトウェアやドキュメントなどの開発情報をGitHub上で公開するオープンソースプロジェクトです。Deguセンサーでは、200種類以上のセンサーやアクチュエータを展開するGroveモジュール(Seeed株式会社が推進)の中から目的に合ったものを選択して試すことができます。また、Deguセンサー上で前処理済みのデータをAWSにアップロードすることで、AWS上の機械学習や深層学習(ディープラーニング)などさまざまなサービスでセンシングデータをすぐに活用でき、IoTシステム全体の効率的な運用が期待できます。

Deguの詳細情報 https://open-degu.com/
プレスリリース クラスメソッド 、AWSを活用したIoT開発支援においてIoTセンサー技術「Degu」を採用

環境

  • Windows / Linuxでも可
  • 環境に合わせたターミナルソフト

print()を使用したデバッグ

Deguはprint()を使用してデバッグできます。下記のhelloはPCとDeguを接続して仮装シリアルにへ出力されます

main.py

import time

while True:
  print('hello')
  time.sleep(1)

WDTクラスを使ってみようとして失敗したコード

main.py

from machine import WDT
wdt = WDT(timeout=2000)  # enable it with a timeout of 2s
wdt.feed()
print('start!')

while True:
  print('hello')
  wdt.read()
  time.sleep(1)

上記コードをDeguへ入れて起動すると、PCに接続したコンソールからhelloは表示されません

原因

DeguにはWDTがなく、そこでエラーが発生していましたが、シリアルコンソールに表示されません。

確認

原因がわからず起動しない場合にはmain.pyを一旦削除してシリアルコンソールからMicroPythonを起動して動作確認してみました。

uart:~$ upython
>>> from machine import WDT
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name WDT
>>>

すごく単純なエラーでした。

参考サイト

http://docs.micropython.org/en/v1.9.3/wipy/library/machine.WDT.html

最後に

当たり前の話ですが、エラーば見えれば簡単にわかる原因でもDeguではちょっと工夫のデバッグ方法が必要そうです。以前紹介したLEDでデバッグするDegu単体でLチカしてみた, Deguに搭載されているLEDを使用する【Degu】Degu本体のLEDを操作を詳細説明してみたを使用するのが早そうですが、複雑な処理をデバックすると別の方法を検討する必要がありそうです。良さそうな方法を見つけましたら紹介したいと思います。