m5stack/tools/esptool_py/3.0.0/esptool.py: no such file or directory の解決方法

Macにm5 atomを接続したところ、色々と手こずったのでブログに残しておく。

これはatomだけじゃなくm5stackも同じだと思われる。

エラー内容

Arduino IDEからコードを書き込もうとするとエラーが発生した。

Arduino:1.8.16 (Mac OS X), ボード:"M5Stack-ATOM, Default, 1500000, None"

fork/exec /Users/k_ikemura/Library/Arduino15/packages/m5stack/tools/esptool_py/3.0.0/esptool.py: no such file or directory
ボードM5Stack-ATOMに対するコンパイル時にエラーが発生しました。

esptool.py が見つからないらしい

解決方法

同じエラーを抱えている人は世界中にいるようで、このIssueに解決方法が載っていた。

arduino-esp32 projects fail on macOS 11 "Big Sur" · Issue #4408 · espressif/arduino-esp32 · GitHub

esptool.py を上記Issueの通りコピーする。

まず画像のパスからesptool.pyをコピーして

f:id:banbara:20211003104245p:plain
コピー元

下記パスに貼り付ける

f:id:banbara:20211003104323p:plain
コピー先

コピーしただけだと esptool.py: permission deniedというエラーになるので、chmodで実行権限を付与してあげる。

chmod 755 esptool.py

これでesptool.pyは大丈夫、と思いきや、今度は違うエラーが発生する。

Traceback (most recent call last):
  File "/Users/k_ikemura/Library/Arduino15/packages/m5stack/tools/esptool_py/3.0.0/esptool.py", line 37, in <module>
    import serial
ImportError: No module named serial
exit status 1
ボードM5Stack-ATOMに対するコンパイル時にエラーが発生しました。

serialがimportできないようだ。

これも上記Issueに対応方法が載っている。

python2のpipでpyserialをMacにインストールする必要がある。

まずはpython2のpipをインストールするスクリプトをダウンロードする。

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py

あとは get-pip.py を実行する。

python2 get-pip.py

pipがインストールされたので、ようやくserialを取得できるようになった。

python2 -m pip install pyserial

Successfully installed pyserialが表示されたらOK

これでArduino IDEからm5デバイスに書き込めるようになったはず。

Jetpack Compose Desktopの参考になるRepositoryを集めた

ComposeでのDesktopがどうレイアウトしていいのか分からない。

そういう時に参考になるGitHub Repositoryを探してきた。

探し方はGitHub Repositoryをcompose-desktopタグで検索した。



joreilly / PeopleInSpace

有名なRepositoryで、KMMの参考としてもよく名前が上がってくる

github.com



theapache64 / stackzy

Win, Mac, Linuxのバイナリ作成も用意されており、参考になりそう

github.com



JetBrains Compose Playground

情報量の多いJetpack Compose example project

モバイル / desktop / web と3Platformが揃っている

github.com

ComposeSlackDesktop

Slackアプリのクローン版

github.com



klokk

時計アプリ
針の動きがキモカッコいい

github.com



Compose-Desktop-PlayGround

Ktorを使用したdesktop サンプルアプリ

画像ギャラリーのようだが、段々になっているグリッド形式がカッコいい

github.com



compose-desktop-template

動作が一通り揃っているテンプレのようだ

  • Architecture (MVVM) with Android-ish structure (SingleActivity)
  • Dependency Injection (Dagger2)
  • Navigation (Decompose)
  • Launcher Icons (for all platforms)
  • A separate data module
  • Testing (both unit tests and UI tests)
  • Theme
  • Logging
  • Font (GoogleSans)

npmコマンドもあるようで、便利そう

github.com



WeatherCards-ComposeDesktop

スター数は少ないが、自分が作りたいレイアウトと似ているのでチョイス

github.com

M5Stack Basicセットアップ (2021年version)

2年ぶりにM5Stack Basicで遊ぼうとしたら、M5Stack環境が色々と進化していた。

MacのドライバやらソフトウェアをUpdateして、どうにかM5Stack Basicと接続&アプリ実行できるようになったので、雑なメモを残す。

セットアップ情報は公式ドキュメントだけを見よう

そこらのブログやQiitaやZennの記事はもう古い!(新しい記事もあるかもしれないが)

公式ドキュメントを見よう!

docs.m5stack.com

今回はUIFlow Quick Startを参考にしてすすめた。

(2021/08時点なので、数年後にはUIFLowも古くなっているかもしれない)

大きくやることは3つ

  1. Driverインストール
  2. M5Burnerでfirmwareを焼く
  3. UIFlowでアプリ作成

これらは上記の公式ドキュメントurlにすべて載っている。

自分は細かく説明しないが、ざっくり説明だけ

1. Driverインストール

CP210Xドライバをインストールして、PCとM5Stackを接続できるようになるらしい。

自分はMacなのでMacOSを選択してdmgをインストールした。

2. M5Burnerでfirmwareを焼く

M5Burnerをインストールして、M5Stackのfarmwareをupdateできる。

自分のデバイスはM5Stack Basicなので「UIFLOW(CORE)」を選択してBurnした。

M5Burner
M5Burner

インストール方法は公式ドキュメントを見るべし

3. UIFlowでアプリ作成

UIFlowを使うにはインターネット経由とUSB経由の2つがある。

要は、オンラインとオフラインの違いだ。

オンラインでUIFlowを使うためにAPIKeyが必要だが、これははM5Stackデバイスで取得できる。
そのAPIKeyを https://flow.m5stack.com/ に接続して入力する。

オフラインの場合はAPIKeyは必要なく、UIFlow-Desktop-IDEをインストールして、macからtype-Cケーブル経由でアプリを実行できる。

M5Flow-Desktop-IDE
M5Flow-Desktop-IDE

IoT関連で気になった記事 2021/08/05

個人的に面白そうとおもったIoT記事をピックアップする。

今日はこの2つ


スタンフォードのエンジニアは、正確なウェアラブルカロリー燃焼カウンターを設計

  • スタンフォード大学のエンジニアは、小型で安価で正確な新しいカロリー燃焼測定システムを開発
  • 太ももとふくらはぎにセンサーを2つ設置して動きを検出する
  • 脚が動いているときの加速度を回転を測定する
  • スマートウォッチとスマートフォンでカロリー消費を計測するよりも、このシステムの方が正確に計れる

news.stanford.edu


海岸のタバコの吸い殻を、自動運転するビーチローバーできれいにする

  • タバコの吸い殻は海に対して有毒
  • 移動式のビーチクリーナーマシン
  • BeachBotというプロトタイプを作った
  • AIに学習させるため、たばこの吸い殻の写真を何千枚も集める必要があった
  • MicrosoftTroveという写真収集サービスを使ってAI用の画像を2000枚集めた
  • このプロトタイプマシンで30分で10本の吸い殻を集めた Cigarette butts are poisoning shoreline animals. This beach rover may help clean all that up – Microsoft News Centre Europe

news.microsoft.com


感想

脚でカロリー計測するのは「なるほどなー」と思った。
確かにこの方が正確に運動量を計測できるかも。

Microsoft Trove というサービスを初めて知った。
AI開発者のために、ユーザーが画像をアップして報酬をもらえるサービスらしい。

このビーチローバーはぜひ故郷の西表島にも欲しい

IoT関連で気になった記事 2021/05/10

IoTのネタ探しとして面白そうな記事を見つけたので、雑に紹介する。

床にあるPi4でAIを強化する

Raspberry Pi4で歩行中の足音から人を識別する

www.hackster.io

PURE (Passive mUlti-peRson idEntification)で、足音から個人を検出できるらしい。

円形マイクアレイとRaspberryPi 4で足音を取得し、Tensorflowで実装された機械学習で実行されるぽい

1回の足音だけなら88.6%
2〜3回の足音なら96.53%の精度らしい

なにそれすごい、そして怖い

Arduino EdgeControlスマート農業の未来を感じる

blog.arduino.cc

屋外環境向けに最適化されたリモート監視および制御ソリューション

展開が簡単なため、遠隔地でのスマート農業、精密農業、およびその他のインテリジェント制御アプリケーションに適している。

  • Arduino MKR ボード
  • Bluetooth内蔵、2G/3G/CatM1/NB-IoTモデム、
  • LoRa, Sigfox そして WiFi.

農業ロボットはレーザーで1時間あたり100,000の雑草を殺す

www.freethink.com

雑草を識別し、高出力レーザーで破壊するスマート農業ロボット
12台のカメラが地面をスキャンします。AIを搭載した車載コンピューターが雑草を識別し、ロボットの炭酸ガスレーザーが植物をザッピングして殺します。 1時間あたり100,000を超える雑草を除去し、1日で15〜20エーカーの作物を除草できます。

値段はとても高額で、数十万ドルらしいが、既に売り切れている(マジすか!)

Riot.jsに触れてみた

会社の同僚がRiot.jsの本を出版したので、応援の意味も込めて購入した。

Amazon.co.jp: Riot.jsで簡単Webアプリ開発 eBook: 桑原聖仁: Kindleストア

自分はVue.jsを自己学習しつつ下手なサイトを作った事はあるが、他のFWを試してみたかった。

やったこと

plunkというサイトでお試し実装してみた。

(本当に簡単な実装だけなので、あまり見る価値はない)

embed.plnkr.co

embed.plnkr.co

感想

まず本を執筆する、という行動がすごい。

本の内容はRiot.jsの入門用だが、Web知識の薄い自分でも読み進めることはできた。
(まだ全部は読み終えてないが)

Riot.js自体はまだよく分かっていない。

正直、Vue.jsと書き方があまり変わらない感じがしたし、使い勝手も良さそう。

実家のHPにでも組み込んでみようかなーと企んでいる。

Macでflacをm4aに変換する方法

やりたいこと

flacファイルをm4aに変換したい!

購入した海外アーティストの曲ファイルがflacだった。
flacが再生できる環境なら問題ないのだが、我が家のカーナビがflacに対応できず再生できなかった。

m4aファイルなら再生できるのは確認済みなので、flacから変換したい。

また、変換はCLIで行いたく、GUIは使いたくない。

CLIの方が楽だし、大量のファイルを扱えるしね。

結論

以下の3つの方法を試したが、XLDが一番ベストだった。

理由は、コマンドもシンプルだし音楽タグも正常に引き継がれて、カーナビで問題なく再生することができた。

XLD

インストール

brew install xld

変換コマンド

 xld hoge.flac -f aac

// 一括で変換するパターン
ls *.flac | xargs -I{} xld {} -f aac

参考

pianoforte32.com

Afconvrert

macにはAfconvrertがプリインストールされていた。

わざわざXLDをインストールせずとも、Afconvrertでflacからm4aに変換することはできた。
が、タグ情報が全て消えてしまう。。。

音楽タグが全て消えるのは困るので、この方法は微妙。
(タグが不要なファイルならこの方法でもいいと思う)

変換コマンド

afconvert -f m4af -d alac ファイル名.flac

参考

macos - What are the command line options for afconvert? - Ask Different

タグが消えるのは困るので、この方法はボツ

ffmpeg

ffmpegでもm4aに変換はできた。

しかし、変換したm4aがカーナビで再生できなかった。

ちゃんと変換できてないのだろうか...

変換コマンド

ffmpeg -i 変換前ファイル.flac -vn -acodec alac 変換後ファイル.m4a

変換できても再生できなければ意味がないので、この方法はボツ

感想

CLIで変換することはできたが、恥ずかしながら自分がshコマンドに精通していないため、xargsの存在を初めて知った。

メッチャ便利だね、xargs

今回、シェルコマンドにも興味が出たので、勉強していきたい。