M5Stackであそぼう

M5Stackの概要

ようやくM5Stackが入荷しました。昨年から注目されていますので、よくご存知の方も多いかと思いますが、まず簡単にM5Stackを紹介します。

M5StackはEspressifESP32と、SDカードスロット、ボタン、USBやGroveのコネクタを5cm四方の基板に搭載し、ディスプレイや電源までを樹脂のケースに詰め込んであるモジュールです。

M5StackはArduinoのシールドのように、センサー等の載った拡張基板をメインモジュール(CORE)に積み重ねることができ、それぞれのモジュールが約5 cm四方のケースに入っているところが特徴の1つです。

拡張基板には、いまのところGPS受信機や無線モジュール、DIYのためのユニバーサル基板などが用意されています。

EspressifのESP-IDFの他、Arduino IDEや、MicroPythonなどを利用することができます。

Wi-FiとBluetoothを日本国内でも適法に利用できる低価格なモジュールとして定番となっているESP32ベースなため、M5Stackにも利用できる様々なリソースがウェブに見つかることと思います。

スイッチサイエンスで買えるM5Stack関連商品

今回は、第一弾として以下の商品を入荷しました。

今後登場が予定されている4MB PSRAMの載ったCoreモジュールについては、技適の取得を待って入荷したいと考えています。

入荷したものの1つ、Basicの中を見てみると、専用の樹脂ケースに、USBケーブルや簡易な(とはいえ案外詳しい)説明書が同梱されています。

本体は、ディスプレイなどがあるメイン基板と、バッテリーの入った底側の基板に分割することができます。この2つは30ピン(15 x 2)の低いピンヘッダでつながっていますが、M3のネジで強く固定することもできます。

底面のケースには電池やGPIOなどのピンヘッダの載った基板に加えて、強い磁石が4つ入っているため、金属の壁などに貼り付けておくことができます。

使い方

とりあえず簡単に試すには、Arduino IDEで書いたプログラムをBasicモジュールに書き込むのが良いかもしれません。

Arduinoを使った経験があれば、M5Stackのためにやることは、USBのドライバのインストールと、M5Stack用のArduinoのライブラリをインストールするだけです。

M5StackのサイトにはMac/Win/Linuxへのインストール方法が解説されています。

注意点として、MacOSXの10.13.3(Hight Sierra)ではUSBドライバのインストールをしても、USBデバイス(/dev/tty.SLAB_USBtoUART)が出現しません。実はドライバをアクティベートするには、システム環境設定のセキュリティーとプライバシーのところで「許可」ボタンを押す必要があることにしばらくして気がつきました。みなさんもお気をつけください。

リソース

M5StackのGithubのリポジトリから入手できるもの。

  • Arduinoのライブラリやその利用法サンプル
  • 回路図、Protoモジュールの設計ファイル(Altium Designer用)、ケースのSTLファイル
  • M5CloudというMicroPythonのファームウエア

試してみた

MicroPythonで当社のConta サーモグラフィーの画像を表示させてみました。

SCL,SDA,GND,3.3VをM5StackとConta間で配線します。Contaのピン配列だとM5Stackには直接は刺さらないので、以下の写真のようにジャンパワイヤで繋いだり、M5Stackプロトモジュールの中を利用するなどして、配線する必要があります。(この配線についての文章と画像は3月6日に追記しました。)

この写真ではM5Stack Facesを使っていますが、その場合9軸センサがM5Stackに搭載されているため、Conta サーモグラフィーのI2Cスレーブアドレスを69hにする必要があるはずです。(この写真だけはM5Stack Facesで撮影しましたが、この記事のコード、動画は9軸センサが搭載されていないM5Stack Basicを利用しています。)

プログラムはこちら。

MicroPythonファームウエア

M5CloudのGithubリポジトリに書かれた手順の通り、MicroPythonのファームウエアをダウンロードして、USB Type-Cのケーブル(同梱)でパソコンと繋ぎ、esptoolで書き込みます。ファームウエアには、ネット経由でプログラムできるタイプと、オフラインで書き込むのものがありますが、私は後者の方が扱いやすいと思ったのでそちらを使っています。ファームウエアは頻繁に代わりますが、私は現在最新のm5stack-20180206-v0.3.3.binを利用しました。

Pythonのプログラムを書き込む

例えばscreenコマンド

screen /dev/tty.SLAB_USBtoUART 115200

やCoolTerm、PuttyなどでPCとM5Stack同士でシリアル通信を開始したら、何度かパソコンのReturnキーを押すとプロンプト入力の表示になると思います。

ここでPythonプログラムを直接タイプして実行できるのがMicroPythonの良いところですが、今回はmain.pyのコードを書き込んで本体に保存するために、以下のようにします。

Ctrl + Eキーを押してペーストモードに入ってから、プログラムをコピペします。例えば、このようなプログラムをペーストすると、main.pyが保存され、再起動するとディスプレイに「Hello World!」が表示されます。

2行目から4行目のプログラム部分を前出のプログラムにすれば良いわけです。

ちなみにペーストモードを脱出するにはCtrl + Dです。

今回エンクロージャーとしてTinkercadで3Dデータを作ってMakerbotで出力してみました。その他今回は使わなかったデータもGithubに置いておきます

TIPS: バッテリー駆動時は電源ボタンの2回押しで電源が切れるのと、起動時にAボタンを押しておくとmain.pyを実行しない。

まとめ

M5Stackはケースに入っており、電池も含めて程よいサイズに収まっているので、気軽にポケットなどに入れられるところが良いです。もちろん拡張性もあるので、自分の使いたいものに近づけていくことができます。ディスプレイやボタンやスピーカーがあらかじめ備わっていて、ArduinoやMicroPythonでプログラムできるので簡単に楽しめます。

Pocket