2019年9月10日火曜日

M5StackとNeoPixelで作った光る帽子をM5StickCに移植した



一年ほど前 Maker Faire Tokyo 2018 への出展作品として光る帽子を作ったのですが、その際に採用した M5Stack Gray を M5StickC に変更することで従来の光る帽子の要件を満たしつつ、より軽量化が見込めるのではないかと考えて移植作業をおこないました。

参考:M5StackとNeoPixelで光る帽子を作ってみた
http://ajimitei.blogspot.com/2018/09/m5stackneopixel.html

光る帽子の要件をおさらい

  1. 帽子全体がフルカラーで光るようにLEDを配置した上で制御ができること
  2. 帽子を雑に扱っても怪我をしにくいこと
  3. 帽子は子供が被れるくらいの重さであること
  4. 帽子を落としてもなるべく壊れにくいこと、もしくはすぐに修復できること
  5. 自分がなるべく開発しやすい環境であること

光る帽子を作る上でどんなことを大事にするかのおさらいです。今年の Maker Faire Tokyo は終了してしまいましたが、NTなど他イベントでの展示も考えているので要件は変更しません。また、光る帽子は製作者本人が被るだけでなく来場者にも被ってもらい、自分の写真を撮ってもらうことをイメージしているので帽子の重さや帽子を被る際に怪我をしないといったことも重要なポイントです。

M5Stack Gray から M5StickC に変更することによる改善点

一番の改善点は本体の軽量化です。M5Stack Gray から M5StickC にすることで重さが 1/8 になるので 、M5Stack Gray 3つ分の重さ 360g から M5StickC 3つ分の重さ 45g へ、 315g の軽量化を実現することができます。頭上に身につけるものなので300g以上の軽量化は被った際の印象を大きく変えることができます。

自身の重さで沈むM5Stack Gray


その他のM5Stackを選んだ際の理由はすべてM5StickCでも満たしており、M5Stack Gray の9軸センサについてもM5StickCは6軸センサを搭載しているので問題ないという判断ができました。
最初にM5Stackを選んだ際の理由を下記に再掲します。
  • 基板がむき出しではないこと
    • 落としたときでも壊れにくそう
    • 来場者が作品を触ったときに怪我をしにくそう
  • 外部ピンがケースの開け締めなく接続できる
    • 帽子に無理な力がかかったときもケーブルが抜けるだけで基板本体へのダメージが少なくてすみそう
  • バッテリーを内蔵していること
    • NeoPixel用の電源を別途用意する必要がない
  • ESP32を搭載していて、Arduinoの開発環境が使えること
    • 自分が慣れている環境で開発できる
  • (M5Stack Grayのみ)9軸センサを備えていて、帽子の動きにあわせてNeoPixelを制御できること

M5Stickを使ったNeoPixelの制御方法

それではハード側、M5StickCとNeoPixelを接続してみます。M5Stack Gay を使った際は NeoPixelの3pin(緑・赤・黒)をそれぞれ5番、3.3V、Gに接続しましたが、M5StickCでは26番、3.3V、Gに接続します。相変わらず配線はこれだけ完了です。

前回と同じくNeoPixel にある電源用の出線は使いません

次にソフト側を設定します。M5StickCも中身はM5Stack Gray と同じESP32なので、以前と同じ AdafruitのNeopixel Libraryを使うことができます(参照元:https://qiita.com/tomorrow56/items/fcf5ea7bfd2056e8f88f)。
上記のライブラリのページからZipファイルをダウンロードして解凍、Arduino IDE でライブラリをインポートすると、スケッチ例を読み込むことができるようになります。以前インポートしたままになっている場合は、ツール -> ライブラリを管理 を選択して新しいバージョンのライブラリに更新するなどすると良いでしょう(原稿執筆時点での最新バージョンは1.2.4)。

そして今回もスケッチ例の Adafruit Neopixel -> simple を参照しながら開発を進めます。

M5Stickはピン配置がArduinoやM5Stackとは異なるので、simple をそのままM5Stickで実行してもNeoPixelを光らせることはできません。スケッチ例11行目の
#define PIN            6

#define PIN            26 
に修正することで制御が可能になります。また、NeoPixel を制御する個数はスケッチ例16行目の
#define NUMPIXELS      16
 を編集することで変更することができます。上記例では16個までのNeoPixel を制御しています。

インタラクティブにLEDを制御する

M5Stack Gray を使っていたときと同じく、M5StickCのセンサの値を使ってNeoPixelの色や明るさを制御することにしました。M5StickC は加速度とジャイロを計測できるMPU6886を搭載しているので、ジャイロのX軸, Y軸, Z軸の各値をNeoPixelのR, G, B に対応させて制御することにしました(ジャイロの値は上限を決めた上でNeoPixelの設定値として利用しています)。
スケッチ例の M5StickC -> basics -> MPU6886 に加速度とジャイロの値を取得するプログラムがあるので参照ください。



光る帽子完成

帽子の周りにNeoPixelを巻きつけることで無事光る帽子を完成させることができました。ジャイロの値でNeoPixel を制御しているので、帽子を置いているときはNeoPixelが消灯していて、帽子を被っているときはカラフルに光るようになりました。

M5StickCを2個しか入手できなかったので2個(LED120個)運用です


所感と今後の展望

Maker Faire Tokyo 2018 への出展以降、度々光る帽子を持ってイベントに参加したこともあり、光る帽子の人という認知が多少を進んだのではないかと思っています。今後は自分が被るだけでなく、他の人にも積極的に光る帽子を被ってもらうため、軽量化をメインの目的としてM5Stack Gray からM5StickC への機能移植をおこないました。

今回も簡易にプロトタイピングができるM5Stick、NeoPixelを使うことで無事完成させることができました。また、Web上に記載されている数多くの先人たちの知恵を借りることでトライアンドエラーの回数を大幅に減らすことができました。ありがとうございます。
今回の製作は移植作業がメインだったので次の試作では

  • NeoPixelの数をさらに増やして帽子全面が光るようにする
  • NeoPixelの電源を外部から取得して、M5Stack1台でNeoPixelを制御する
  • さらなる軽量化への挑戦
  • インタラクティブ要素の追求

といったことに挑戦してみようと考えています。

2019年9月9日月曜日

M5StackとM5Stickの機種別GROVE端子情報まとめ

M5シリーズを使うときに便利なGROVE端子ですが、形状は同じでも対応している信号が異なるため、接続を間違えると正しく動作させることができません。そこでどの機種がどの信号に対応しているのかをまとめてみました。
※便宜上、GROVE端子数1の場合のポート名をPORT Aとしています
※ピン配はディスプレイ面を上に左から記載しています


M5Stack BASIC / M5Stack GRAY / M5Stack FACES
  • GROVE端子数:1
  • PORT A:I2C
    • ポート詳細:SCL(G22), SDA(G21), 5V, GND

M5GO / M5Stack FIRE
  • GROVE端子数:3
  • PORT A:I2C
    • ポート詳細:SCL(G22), SDA(G21), 5V, GND
  • PORT B:I/O
    • ポート詳細:ADC(G36), DAC(G26), 5V, GND
  • PORT C:UART2
    • ポート詳細:RXD2(G16), TXD2(G17), 5V, GND

M5STiCK
  • GROVE端子数:1
  • PORT A:I/0
    • ポート詳細:GPIO(G13), GPIO(G25), 5V, GND

M5StickC
  • GROVE端子数:1
  • PORT A:I/0
    • ポート詳細:GPIO(G33), GPIO(G32), 5V, GND

M5StickV
  • GROVE端子数:1
  • PORT A:I/0
    • ポート詳細:GPIO(G34), GPIO(G35), 5V, GND

M5CAMERA(バージョンにより一部異なる場合あり)
  • GROVE端子数:1
  • PORT A:I2C
    • ポート詳細:SCL(G13), SDA(G4), 5V, GND

2019年6月25日火曜日

Macで TidalCycles のセットアップをするまでにやったこと(2019年6月版)


概要

「TidalCyclesのインストール2018年版」の情報をベースに

TidalCyclesのインストール2018年版
https://qiita.com/yoppa/items/fe21d7136f8f3aafd55c

途中のエラーで詰まったところを下記のURLを参考に進めた結果、無事動作させることができた。(いろいろインストールしたので、余計なものまで入っているかもしれない)

TidalCyclesインストール
https://qiita.com/mk668a/items/0e32235f1ea0bab3c881

MacでHaskellを始める
https://qiita.com/dyoshikawa/items/533e172bb215c1fb0f77

SuperDirtをセッティングする
https://qiita.com/moxuse@github/items/df922fba6852ff240719

TIDALCYCLES インストール 悪戦苦闘記
http://livecodingmemo.blogspot.com/2018/05/tidalcycles.html

Tidalでライブコーディング! - セットアップ編
https://qiita.com/yoppa/items/41805cc6af62b1047a34

初期状態


  • Mac:Macbook Pro 2014
  • OS:MacOS Mojave
  • セットアップ済のソフトウェア
    • Git
    • Homebrew
    • Atom


やったこと


  • Tidal-bootstrap をダウンロード
  • ダウンロードしたファイルを解凍して、 tidal-bootstrap.command をダブルクリックして実行。このTidal-bootstrap一連の流れは「TidalCyclesのインストール2018年版」と同じだったが、[Process Completed]という表示がされてもインストールは必ずしも完了はしておらず、実行したログを見てエラー 文言が表示されていないかを確認する必要がある
  • 私の場合は「Error: Cask 'haskell-platform' is unavailable: No Cask with this name exists.」というエラーが出ていたので、haskell-platformのインストールを実行(したけど、どれが正解なのかはわからず…)
    • $ brew install ghc cabal-install stack
    • $ brew install ghc
    • $ brew install cabal-install
    • $ cabal update
    • $ cabal install cabal-install
    • $ cabal install tidal
  • tidal-bootstrap.command をダブルクリックして実行した結果、エラー系のログがでてこなくなったら、SuperDirtのセットアップを開始する
    • 解凍したファイルから、 install-superdirt-quark.scd を実行
    • SuperColliderのエディタ画面から「include("SuperDirt")」の行に移動して、command + Enterキーを入力するとSuperDirtのインストールが開始される
  • SuperDirtの起動とAtomの起動、動作テストと特にトラブル無く実行できた

2019年5月4日土曜日

深センに行ってきた 3/3 (ニコ技深セン観察会&茂ツアー)


ちょっと前の話ですが、2/28から3/3までの4日間、深センへ行ってきました。4日目です。
(ひとまず写真のみアップ、文言はこれから追記します)

地下鉄で皇岗口岸駅へ、湾仔行きのバスに乗ってすぐ下車してイミグレを通り、再度湾仔行きのバスに乗る。


生憎の曇り空

香港の中心部に近づくにつれて街の雰囲気も変わっていく

ユニクロとメイソウの悪魔合体

朝はお粥が嬉しい身体になりました

湾仔駅近くの太原街 (玩具街)を散策

ゴディバに寄る余裕はなかった

湾仔から铜锣湾に向かう途中に良さげな茶器の店を発見

2階建路面電車

脈絡なく欲しい

隙間なくミッチリ建物が詰まっている

赤地に白を見ると反応してしまう
香港のリラックマ


香港の小米へ、残念ながらmi9はまだ未発売

香港のApple Storeへ

香港空港へは香港駅から特急で

香港発成田行き、LCC故に出発ゲートははじっこ

LINEキャラクターのコラボカフェ

うさぎも働いている

昼食は香港空港のフードコートで

無事帰宅





深センに行ってきた 3/2 (ニコ技深セン観察会&茂ツアー)


ちょっと前の話ですが、2/28から3/3までの4日間、深センへ行ってきました。3日目です。
(ひとまず写真のみアップ、文言はこれから追記します)

午前中は自由行動

宿近くのスーパーへ
品揃えを見ているのが楽しい
地元密着

麺だけが売られている

即席麺の豊富さは日本と変わらないかも

mobikeを借りる様子

mobikeを借りる様子を撮る様子

小さな売店での買い物にも慣れてきた

パル玉のボス

パル玉のボスも自転している

みんな大好きメイソウ
日本語があふれるメイソウ
朝食はマックでお粥、日本でも導入してほしい…



ゲーム機器を取り扱うビルを見たりする
チョットデカイジョイコン事件

そうこうしている間にお昼が近づく
茂ツアー集合場所のLEDビルへ

昼食は通称LEDビルのフードコートで、パクチーの洗礼を受ける岩岡さん

私もパクチーの洗礼を受けましたが黙っておきました
LEDビルの中を案内していただく。
ネオピク購入

バーガーキングは朝食にお粥を提供しているのか気になる
3日目にもなるとこの光景にも慣れてきたけど、実際に見られたのはほんの一部

SIM契約


luckin coffee へ

アプリ経由で注文すると初回無料でした

日本人の方が

JENESISさんの新工場オープンデイへ

パネルにサインをしていく

お花の数がすごい

藤岡さんのスピーチ


お祝いの舞にクラッピー参戦

工場スタッフとオープンデイ参加者で記念撮影を撮りあう
オフィス入り口


組み立てラインを見学

双子コーデ

一台一台丁寧に生産されていました

今までJENESISさんで製造された商品の数々

バスでNew Year Beer Meetupへ
ニコ技深センビール会

明日の帰国に向けてお土産を買いに途中離脱

DiDiで華強北のショッピングモール、九方购物中心へ

ショッピングモールは日本と変わらない雰囲気

食事もしやすそう
昨日も行ったのに小米に吸い込まれる

ボーネルンドに売ってたような気がするおもちゃ

このリュックは品切れ

グローバル版だったら欲しかったmi9


地下のスーパーでお土産を探す

ジュース類も豊富

味千ラーメンが売ってる

買えないけど美味しそうな冷凍食品

一方お魚は生簀に

パンの味も気になるところ

お菓子売り場の様子

中国版プリキュア?

ショッピングモール帰りに見つけた日本語、大阪なのか広島なのか

夜景を撮りたくなる
20〜21時くらいが良さそう



夜の華強北を歩く

とにかく明るい華強北


近未来を生きている感じがする

21時だと飲食店は営業しているところも多い

夜も何かしらの作業をしている人がいる

モニュメントに再訪

次々と演出が変わる

演出の様子を動画で

mi9の宣伝がすごい

ヨーヨーが映える

マジでヨーヨー上手い

閉店間際の屋台で中華風クレープを買う、かなり辛い