新しいものづくりがわかるメディア

RSS


【書籍紹介】こんなに何度も読んだ本は、いままでなかった『みんなのM5Stack入門』

「どうしてもこれを使いこなしたい!」——そう思ってコロナ禍の2020年にM5Stackというマイコンを買ったものの、悪戦苦闘の連続(※今もです)。でも、道を探していると思わぬところから助けがやってくるものです。なんとかして学びたいと思っていると、Webでお名前を知った下島健彦先生の著書に出会いました。悪戦苦闘のたびに何回も読み、いまでも読み返している大切な本です。

この本との出会いがなければ、いまこうしてマイコンやMaker的な記事を書くこともなかったでしょう。

『みんなのM5Stack入門』で取り扱う範囲は、プログラミングとIoTの基礎に必要なものほぼ全てと言ってもいいほど広範囲です。M5Stackの新製品や新しいライブラリが毎週リリースされています。また、『みんなのM5Stack入門』で詳細が紹介されていないプログラミング方法(UI FLOW)などもあります。M5Stackを使いこなす上で最も基礎的で重要な情報が詰まっています。

写真1.M5Stack Basic (出典:M5Stack webサイト) 写真1.M5Stack Basic(出典:M5Stack webサイト)

未経験でIoTを始めた。一番親しみやすかったのがM5Stack

筆者は2019年まで、マイコンを触ったことがありませんでした。友人に紹介されて、ESP32から始めてみたものの、何も分からず本当に苦労したのを覚えています。

パソコンができるのだから、マイコンもきっとなんとかなるだろう。始める前はそれほど心配していませんでした。ところが、本当に大違いでがっかりしました。

どうして難しいと感じたのか? 理由はいくつもありますが、大きかったのは、

1.パソコンと違って画面がない
2.作例を見ると、配線がごちゃごちゃと付いている
3.コードや、ハードウェア周りの用語がまったく分からない

の3つです(※筆者の主観です)。

写真2.ESP32での作例(超音波距離計を作ろうとしたら、こんな感じに……)。 写真2.ESP32での作例(超音波距離計を作ろうとしたら、こんな感じに……)。

多くのマイコンボード(ラズパイやESP32)には画面がありません。LEDなどに出力して動きを確認することはできますが、マイコンの動作の様子は基本的にパソコンに接続してシリアルモニターに出力して確認します。

「やっぱりムリかな」。そんな、がっかりした気持ちを救ってくれたのがM5Stackシリーズでした。画面があり、いま内部で何をしているのかをマイコンから直接理解できる。画面を生かした楽しい作例もWebサイトに溢れていました。その中でも、最も興味をそそられたのが、アンビエントデーター代表の下島健彦先生の作例でした。

コロナ禍での、下島先生との出会い

「一番大切なのは、良い先生と良い教科書に出会うこと」。何かの勉強を始めるとき、これ以上大切なことはありません。

筆者がM5Stackを学び始めたのは、コロナ禍の始まりで、一番厳しい対策が取られつつあったころになります。当然、何かを学ぶにもほぼインターネットだけに手段が限られていました。

このような社会情勢の中で、M5Stackの作例を紹介するWebサイトのうち、下島健彦先生が主宰されている「Ambient(アンビエント)ラボ」のFacebookページに、筆者が早い段階でたどりつけたのは大変幸運でした。

いまでもはっきり覚えているのは、M5Stackをコントローラーにして画面の中のM5Stackの3Dモデルを動かすデモが紹介されていたこと。実物のM5Stackを回したり傾けたりすると、その動きに合わせてディスプレイの中のM5Stackも動くというものです。紹介動画を見て、本当に感動しました。詳しくはこちら↓
パソコン上のM5Stackの3Dモデルを、M5Stackの動きに合わせて動かす

写真3.画面の中でM5Stackの3Dモデルが自在に動く。 写真3.画面の中でM5Stackの3Dモデルが自在に動く。

「自分も同じM5Stackを持っている。もしかして、すごいものに出会えたのかも」。まだ何もM5Stackではできていなかった筆者ですが、感動はいつの間にか勉強への熱意に変わっていきました。それから下島先生のブログを片っ端から読み始めました。

下島先生のブログには、筆者がM5Stackでしたいことを叶えるための道筋が全てそろっていました。しかも、懇切丁寧に。

何よりもうれしかったのは、そうこうしているうちに下島先生の著書を見つけたこと。その本こそが、今回ご紹介する『みんなのM5Stack入門』です。

Ambientとの出会い~IoTは「ハード+ソフト+通信」の世界

筆者のM5Stack入門時のゴールは、「何かのセンサーの数値を可視化できる、分かりやすいUIを持ったクラウドと通信できるデバイスを作る」でした。一言で言うと、それはIoTの基礎を学ぶ過程です。『みんなのM5Stack入門』にはIoTの仕組みを自分で組み立てるのに必要なことが全て掲載されていました。

特に素晴らしいと感じたのは、IoTに必要なハードとソフトの両面がバランス良く掲載されている点です。もう1つは、下島先生が開発したIoTデータの可視化サービス「Ambient」の使い方が紹介されている点です。

Ambientは現在でもサービスを続けていて、誰でも入門的に無料で使用できます。詳しい仕組みは後述しますが、初めてセンサーからのデータをAmbientで可視化したときは大変感動しました。

どこから入るのが一番近道か~モノとしてのM5Stackの解説

M5Stackを学ぶのに一番大切な入口は、モノとしてのM5Stackを知ることです。『みんなのM5Stack入門』は、M5Stackの外見や中身を家電の取扱説明書のように丁寧に解説するところから始まります。

「これはいったい何だろう?」。優しそうな顔(?)のM5Stackは、外見も中身も実は見慣れない記号や部品が溢れかえっています。

M5Stack Basicを買ってみると分かるのですが、取扱説明書などは入っていません。ピンの付いたケーブルの束とUSB Type‐Cのケーブルが入っているだけです。筆者には、本体の裏側に書いてある番号(PINアサイン)が何を意味するかが一番の疑問でした。

『みんなのM5Stack入門』では、写真と図解でM5Stackのハード構成と機能(役割)を解説しています。これはマイコンとしてのM5Stackを理解し、使っていく上で非常に重要なポイントです。

写真4.M5Stack Basicの説明(書籍「みんなのM5Stack入門」より引用)。 写真4.M5Stack Basicの説明(書籍「みんなのM5Stack入門」より引用)。

M5Stackは、拡張性を持たせるために、CPUとLCDが搭載された「Core」と呼ばれる部分と、電池と拡張バスが搭載された「Bottom」の2つに分かれています。Bottomには、さまざまなセンサーや機器を接続できるピン、ソケットが用意されています。これらの機構は、M5Stackを他のマイコンと全く違うものにしている、非常に重要なものです。

初めて手にするときには、そうした予備知識はなく、資料もありません。そのような状態の筆者にとって、これ以上の助けはありませんでした。

画面の使い方を分かりやすく解説

M5Stackの特長で際立っているものの1つは、LCD画面です。LCD画面のおかげで、いまでは「スタックチャン」などのカワイイ系のものが社会実装レベルに向かって拡大を続けています。LCD画面の使い方に関しては、『みんなのM5Stack入門』の中で非常に丁寧に解説されており、かつ作例も豊富です。例えば、写真5のように、掲載されているサンプルコードを使って表情を作ってみました。コードを走らせるまでは無機的だった画面が、とてもかわいくなりました。表情は3種類だけなのですが、とても和みます。

サンプルコードを使ってなんとなく動かせるところまで来ると、筆者はあることに気付きます。M5Stackは他のマイコンにないユニークな機能がたくさんある。しかも楽しくてフレンドリーである、と。このことに気付けたのは、楽しいサンプルコードをたくさん用意して、本に掲載してくださった下島先生のおかげです。

写真5.本書に掲載されているサンプルコードを使ってLCDの仕組みを知る。上は3章のサンプルコードによる表情の表現。下は5章のサンプルコードを筆者所有のセンサーにて作動させたもの。 写真5.本書に掲載されているサンプルコードを使ってLCDの仕組みを知る。上は3章のサンプルコードによる表情の表現。下は5章のサンプルコードを筆者所有のセンサーにて作動させたもの。

Ambientのサンプルコードで、涙が出るほど感動した。

筆者が『みんなのM5Stack入門』の中で一番感動したのは、先述のAmbientとの出会いでした。Ambientはクラウドに送信されたデータを蓄積し、グラフなどで可視化してくれる大変便利で魅力的なサービスです。「グラフなどで」と書いたのは、グラフ以外の可視化手法にも対応しているためです。例えば、メーターを模したグラフィックで現在の数値をより分かりやすく教えてくれます。IoTを学ぶと「可視化といえばAmbient」が合言葉かと思うほどに、多くの方がAmbientを使用しています。

写真6.Ambientでの可視化の例(温湿度、温度)。 写真6.Ambientでの可視化の例(温湿度、温度)。

初めてIoTの世界に足を踏み入れる方にとって、なぜAmbientが使いやすいのか? 理由はいくつかありますが、一番大きなポイントは、Ambientを使用するためのライブラリが用意されており、特別な設定や高度な知識がなくても、簡単にAmbientに接続できる点です。また、サンプルコードも非常に分かりやすく、初めてでも使いやすくなっています。

サンプルコードを使って初めてAmbientのダッシュボードに自分のM5Stackからデータを送信し、グラフ化できたときは大変感動しました。それはまるでNASAのコンソールのようで、これを自分で作ったのかと思うと本当にうれしくなりました。

それでも、分からないことは次から次へと……この本の「第3章」は宝の山

『みんなのM5Stack入門』を読み、サンプルコードを使いながら勉強していくと、なんとなくM5Stackやコーディングのことも少しずつ分かってきます。また、使うセンサーの種類によってコードの書き方をどのように変えればいいかも分かってきます。

どのような勉強でも同じなのですが、何かが1つできるようになると新しい壁が見えてきます。筆者もM5Stackを勉強していくうちに、次から次へと新しい壁に当たる体験をしました。実は、『みんなのM5Stack入門』に出会って本当に良かったと思ったのは学び始めの頃ではありません。なんとかして壁を超えようと思ったときに、繰り返し参照しました。

特に、自分でコードを書こうとしたときに何度も参照したのが「第3章 M5Stackでプログラミング」です。いまでも、この部分を参照しながらコードを書くことがあり、筆者にとっては50代になって一番読んだ本なのではないかと思っています。

M5Stackでコードを書く際に使う言語(C++をベースにした独自のもの)に関する情報が非常に丁寧にまとめられていて、教科書としては最適です。特に、表を多用して、たくさんの要素から成り立っているプログラミング言語の構成要素が探しやすく構成されています。

画面を自分でデザインするのはとても楽しい

「M5Stackを使って何かモノを作りたい」。『みんなのM5Stack入門』をなぞるように勉強を続けていると、漠然と野望(?)が生まれました。サンプルコードを少し改造するのではなく、ゼロから自分で作ろう。その考えを実行に移したとき、いままでよりも深くM5Stackに感動することになります。

その段階で一番やりたかったのは「誰が見ても分かりやすいビジュアルをM5Stackに持たせる」でした。LCDでの表現について学んでいる段階では『みんなのM5Stack入門』の存在が筆者にとっては大きな支えになりました。同時に、自分でも工夫を始めました。アナログなツールですが、M5StackのLCD画面レイアウト用シートを自作して、いまでも使っています(図1)。もっといい方法があったかもしれません。オリジナルのコードは書けませんでしたが、本から得たアイデアをもとに、コードを書くための考え方に少しずつオリジナリティを入れていきました。

図1.手製のデザイン用シート。 図1.手製のデザイン用シート。

実は、M5Stackはホビー用途だけでなく、製造業やサービス業などのIoTで活躍しています。それだけ応用が利くマイコンなので、LCDの表現に特徴のある作例をWebで検索すると内容にも数の多さにも驚かされます。例えばセンサーの数値の可視化1つとっても、LCDがあるおかげでバリエーションが大変豊富です。NPTという、正確な時刻を知るためのWebの仕組みを使った時計なども楽しいです(本書にサンプルコードあり)。作る人、使う人に合わせた工夫で溢れた表現を実現できる奥深さがM5Stackには備わっています。

M5StackのLCDを使用するための関数は非常に多く存在します。うれしいことに、『みんなのM5Stack入門』には、LCDを使いこなすための関数の一覧表が掲載されています。画面上の座標を指定、描画する基本的な関数から、二次元バーコードを生成、ビットマップをSDカードから読み出して画面に表示するための関数などが一覧表になっています。

最初は掲載されているサンプルコードを使ってLCDに出力していました。書籍は2色刷りなのですが、サンプルコードでLCDに出力される世界はフルカラー。本の写真ではモノクロの画面をカラーで再現するのは大変楽しいものでした。少しカラー指定を変え、フォントサイズを変え、図形を描く。そんなことを繰り返し、楽しみながらLCDの使い方を学びました。

「Arduino関数の基礎」に何度も助けられる。

3章にある「Arduino関数の基礎」は一番熟読し、何度も助けられました。筆者から見ると、知識の宝箱のような3章の中でも、一番大切なことが書いてある箇所です。

筆者はあるときから、サンプルコードを自分で読んで勉強しようと思い立ちました。エンジニア出身ではない筆者にとって、この勉強は避けて通れないものです。最初はコードを目で追っても、「このコードは動く。でも、どうしてこうなっているの?」が分からない状況が続きました。サンプルコードの「その先」に行くためには、どうしてもここは超えたいところです。

『みんなのM5Stack入門』の3章では、M5Stackで使用されているプログラミング言語の解説に加えて、プログラミングの基本的な考え方を詳細に解説してくれています。特に「変数(型)」「式と演算子」「データ」「条件式」など、他のプログラムでも使用される要素について、プログラムで例示を含めて解説されています。

筆者にとって非常に分かりにくかったものに、「グローバル変数」と「ローカル変数」があります。この2つの定義の仕方が適切でないとコードを書いてもコンパイルエラーが出て、先へ進めなくなります。そもそも、なんでその2つが必要なの? その違いって何? もちろん、多くのサンプルコードにグローバル変数とローカル変数はごく普通に使われています。しかし「これはグローバル変数です」などとコードには書いてありませんので、一見するとまったく同じに見えてしまいます。

『みんなのM5Stack入門』では、「変数をアクセスできる範囲と変数の寿命」という項目でグローバル変数とローカル変数について説明が掲載されています。2つの変数の定義の仕方や使い分け、使い方が簡潔な文章で説明されていて、どういうときにエラーが出てしまうのかが大変よく分かりました。

「ローカル変数はこういうときに使う」「ここは、グローバル変数を使う」という鉄則ともいうべきルールがコードを使って説明されています。使うマイコンが変わってもこのルールは守るべきことなので、『みんなのM5Stack入門』で学べたことの中でも非常に重要なものの1つです。

図2.グローバル変数とローカル変数の説明(書籍「みんなのM5Stack入門」より引用)。 図2.グローバル変数とローカル変数の説明(書籍「みんなのM5Stack入門」より引用)。

たどり着いた場所~とにかく、実用的なものを作ってみた。

結局、どこにたどり着くことができたのでしょうか? ほぼ『みんなのM5Stack入門』だけを読んで勉強すること3カ月。なんとか独自のGUIを搭載した「ガスセンサー」という作例を作りました。「BME680」という、下島先生のブログに紹介されていたセンサーを使って、温湿度、大気圧、VOCを測定するものです。VOC発生源をビニール袋の中に入れ、右ボタン(Cボタン)を押したときだけ測定ができる仕様にしてあります。しきい値を上回らない場合はグリーン、超過した場合は赤に変わる信号のようなGUIも作りました。

結局これは試作のみでやめてしまったので、写真もここに掲載しているものしかありません。せっかく作ったのに、いま思うともったいないことをしてしまいました。VOCを気にする方には、それなりの注目をいただきました。

写真7.ガスセンサーのGUI。 写真7.ガスセンサーのGUI。

下島先生に、MFT2020でお目にかかれた!

M5Stackに出会い、下島先生の本に出会う。この勉強の最後には、下島先生ご本人にお会いするという大変うれしいエンディングが待っていました。

2020年の春ごろになると、コロナ禍のためにZoomによるミーティングが盛んになり、私もいくつかのコミュニティに参加しました。その中で知り合った何人かの方とは深いお付き合いをして、共同でプロジェクトを進めることになりました。

当時、三密防止に換気モニターが注目を集めていたので、私たちも前述のガスセンサーを改良して、室内の換気状況を測定するデバイスを開発しました。

開発したデバイスは、友人が出展していたMFT(メイカーフェア東京)2020のブースで共同出展という形で展示し、実際に会場の換気状態について調べることができました。自分たちで作ったデバイスが、何らかの形で社会の役に立ったのは、大変うれしいことでした。

写真8.MFT2020での展示風景。 写真8.MFT2020での展示風景。

下島先生は1日目の午前中に来てくださいました。多くのギャラリーの中で、ひときわ近い距離でご覧になられていたのを覚えています。その方が下島先生だと知り、たいへん驚き、そしてうれしく思いました。

めったにお会いできない方なので、あれこれお聞きしたかったのですが、それは叶いませんでした。しかし、自分が学んだ教科書の著者が作品を見てくださるのは、筆者にとって最高の思い出となりました。

読んで、試して、楽しんで!

M5Stack Basicは、自分でモノを作る人たち(Maker)の中では非常にポピュラーな存在です。M5Stackの作例を検索すると、「こんなこともできるんだ!」と驚愕するものをたくさん見つけることができるでしょう。それらの素晴らしい作例を見ていると、「自分だけの作例を、M5Stackを使って楽しみながら作ってみたい」という気持ちが湧いてきます。

その最初の教科書として『みんなのM5Stack入門』は最適の一冊です。とにかく楽しいサンプルコードがたくさん掲載されています。この記事の終わりに、写真付きでその一部をご紹介します。

試していくうちに、だんだんとM5Stackの可能性だけでなく、自分自身の可能性を発見できます。また、楽しいだけでなくプログラミングの基礎やIoTにも触れることができます。このバランスの良さが『みんなのM5Stack入門』の大きな特長です。

皆さまのM5Stackの世界が広がることを心から願っています。

写真9.サンプルコードによる作例①(書籍「みんなのM5Stack入門」より引用)。 写真9.サンプルコードによる作例①(書籍「みんなのM5Stack入門」より引用)。
写真10.サンプルコードによる作例②(書籍「みんなのM5Stack入門」より引用)。 写真10.サンプルコードによる作例②(書籍「みんなのM5Stack入門」より引用)。

■みんなのM5Stack入門

著者:下島 健彦
出版社:リックテレコム
価格:2420円(税込)

※取材協力:リックテレコム

おすすめ記事

 

コメント

ニュース

編集部のおすすめ

連載・シリーズ

注目のキーワード

もっと見る