#june29jp

M5Stack の世界に入門して簡易な天気予報ガジェットをつくりました

2019-05-12

今年は 大和田家スマート化計画 2019 というのを進めていて、そんなに大それたことは実施していないものの、堅実に少しずつ生活の中のちょっとした困りごとを技術で解決しながら過ごしています。既製品を導入して便利にする、ってのは一段落したので、次はガジェットの自作に取り組んでみようかな〜と思って M5Stack を買ってみました。

ぼくが「買うぞ〜」となった 2019 年 4 月 21 日には スイッチサイエンスM5Stack Basic の在庫が切れていたので、Aliexpress で購入しました。

M5Stack を選んだのには同僚たちの影響もあり、特に 技術書典6 にて販売された M5Stack入門01 という入門書があったのは大きかったです。こちらを購入して中身をざっと見て概要を把握し、M5Stack でどんなことができるかイメージがついたので購入に踏み切れたと思います。あとは 10 連休の存在も大きかったですね。新しいことを始めるにはうってつけでした。

やったこと

  • otenki-kun という簡易な天気予報ガジェットをつくった
  • otenki-kun を自宅のトイレにデプロイした

トイレにデプロイというと脱糞を想起させますね!

なぜこれをつくろうと思ったか

  • M5Stack の習作として「ウェブ上のどこかから情報を取ってきて表示する」というガジェットをつくってみたかった
  • 天気予報はちゃんと見た方がいいな〜と思いつつなかなか見なくて、そのせいで服選びに失敗することがあるので、生活導線上に天気予報を表示させてみたらどうか?と考えていた

ぼくは最初はお着替えをするお部屋にある姿見のところに設置するとよさそう、と考えていたのですが、奥さんと相談した結果、トイレに設置するのがよさそうと思い直しました。起床してトイレに行かない日はまずないのと、ぼくは座ション派ってこともあり、便座に着席したときに見やすい位置に情報が表示されていたら確実に見るのでは〜!と思ったのですね。

かくして我が家にも Internet of Toilet の流れがやってきました。

実装について

環境構築の手順なんかは、丁寧に解説している他の文献がたくさんあるので省略します。それこそ M5Stack入門01 をおすすめしておきますね。

  • 最初は Arduino で Hello, World! を動かしてワイワイしていた
  • 想像していたよりもライブラリが洗練されていて簡単に Hello, World! できたので、このまま Arduino で開発を進めていくか〜と思った
  • HTTP リクエストを発行したりそのレスポンスを JSON でパースしたりしようとすると、途端に面倒になって MicroPython 環境に乗り換えようと決める
  • m5stack-20180516-v0.4.0.bin というファームウェアを入れる
  • Wi-Fi のアクセスポイントに接続する処理が思うようにいかなくてハマりまくった
  • M5Cloud のファームウェアだと Wi-Fi 接続はいい感じにやってくれるっぽいと気付いて、そっちに乗り換えようと決める
  • m5cloud-20180516-v0.4.0.bin というファームウェアを入れる
  • Python の文法自体はすぐに馴染んだものの、不慣れな MicroPython で HTML のスクレイピングをやるのはなかなか大変と気付く
  • 「コードを書く、M5Stack に反映させる、動かす、なにが起きているか確認する」というサイクルを素早くまわす方法がわからん、という気持ちになる
  • JSON を受け取って M5Stack の画面に表示する、ってのはできそうな手応えがつかめてきたので、必要な情報を揃えるところはどこか別の場所でやろうと決心する
  • AWS Lambda で Ruby 2.5 の環境を使って必要な情報を揃えて JSON にして返すエンドポイントをシュッとつくる
  • 天気予報 JSON を受け取って画面の表示をつくるところを淡々とこなす
  • 一定時間ごとに画面が最新の情報に更新される仕組みをつくる

こんな感じでした!ふだんと違う環境での開発で、思わぬところでハマりまくったりしながらも、楽しく取り組めてよかったな〜という感想です。

よくわかっていないこと

  • M5Stack でなにかをつくるとき、みなさんはどのようにデバッグされているんですか…?
    • 効率のよい開発方法を知りたい
    • エラーログとか見たい
    • 今の自分のやり方だと複雑なものはぜんぜんつくれなさそう
  • 何時間も動かしているとたまに勝手に再起動しているっぽいんだけど、これをどう捉えたらいい…?
    • 「毎秒、現在時刻を画面に表示する」って処理を入れたときは約 3 分ごとに再起動する状態になってとても困った
  • 今の実装だと HTTP リクエストを発行してエラーになったときに処理全体が止まりそう

まずは同僚の M5Stack の常連さんたちにこのあたりを相談してみようかな、と思っています。今は知見がぜんぜんなくて、このままだと初級者を抜け出せなさそう。

こうしたガジェットについて考えたこと

スマートフォンが登場して「好きなアプリをインストールして使う」という行動体系が定着した昨今、スマートフォンがあれば済む、って状況はどんどん強まってきました。たとえばぼくの日常でいうと、ふらっと自宅近くのコンビニ行くときは iPhone だけ持って出発すればいいわけですね。それで玄関の施錠もできるし、決済もできるから、物理的な鍵やお財布を持ち物として管理しなくて済むようになりました。

その観点でいうと、今回の「天気予報ガジェット」って逆行しているわけじゃないですか。天気予報を見るだけだったらスマートフォンでできちゃうし、実際ぼくのふだん使いの iPhone にもお天気情報関連のアプリはインストールされています。それなのに。

お天気情報アプリはインストールされていても、テレビの電源を ON にすればなにかしらの番組がお天気情報を伝えてくれるにしても、スマートスピーカーに尋ねればお天気情報を読み上げてくれるにしても。結局それらは、ぼくたち夫婦の生活導線上には乗っていなくて。それで今回、トイレの壁に小さなディスプレイを貼り付けるに至ったわけで。

これはなかなかおもしろいことだな〜と思っています。今後 M5Stack が「アプリのプラットフォーム」のような場所を提供し、価格も今より安価になるとして。たとえば 500 円くらいで、今回ぼくが作ったような天気予報ガジェットを誰もが簡単に買えるような状況になり、自宅の住所を設定したらその地域のお天気情報を表示できるようになったら。スマートフォンでの利用が適したアプリはそのまま活用され、必ずしもそうではないアプリは独立したガジェットに切り出されていく。そんな未来もあるんじゃないかな〜と感じました。

これはだいぶ前からいろんなところで言われていたことではあるものの、より強く自身の実感を伴って感じられる未来になったので、このタイミングであらためて自分の言葉で書き残しておくことにしました。

まとめ

M5Stack の世界に入門し、簡易な天気予報ガジェットをつくりました。今回やったこと、苦労したこと、これから知りたいこと、こうしたガジェットについて考えたことなどを書きました。

M5Stack の基本的なことはわかったので、これからも継続的に、自分たちの生活を豊かに便利におもしろくしてくれるようなガジェットをカジュアルにつくっていきたいと思います。

おもしろかったら、シェアやブックマークや送金などぜひぜひお願いします。サイト運営の励みになります!

シェアや送金などお待ちしています!