PythonでTENORI-ONを動かすblog(仮)

PythonでMIDIを作ってYAMAHAのTENORI-ONをごにょごにょするよ。

3Dプリンタで自作可動式フィギュアを作る

1年半ぶりの更新というか、今年入ってようやく動き出したと思ったらもう10月でした。

前々から真・女神転生のファンアートを3Dプリンタでつくろうと思っていたのですが、色々あって可動式フィギュアを作ってみたら学びが多かったのでブログに書きます。
アトラスとセガの話は長くなるのですが、このブログを読むのは作り方を知りたい人だと思うので後ほど。

作ったもの

『ディープストレンジジャーニー』のバガブー(可動式)
『ソウル・ハッカーズ2』のミミ(非可動)

『ディープストレンジジャーニー』のバガブー

shin-megamitensei.jp

主な材料

- HOBBY BASE 関節技 球体ジョイントリンク(赤・黒)
- タミヤ ポリエステルパテ
- リキテックス ジェッソ
- リキテックス マットメディウム
- ターナー アクリルガッシュ(パーマネントレッド)
- ダイソー アクリル絵の具(白・黒)
- PLA フィラメント

www.hlj.co.jp

モデリングに使用した3D CADツール

- Fusion 360 フォーム機能

参考にしたもの

- ドンブラザーズのドンモモタロウの食玩

暴太郎戦隊ドンブラザーズ 勇動|発売日:2022年5月30日|バンダイ キャンディ公式サイト

おおまかな作り方

1. 球体ジョイントリンクを図のように配置
=> 今回の自分の作品では、造形的なこだわりから図の赤い部分のみ使用。首や胸部を動かすことが多いらしい。

球体ジョイントリンク配置



2. ジョイントリンクの軸が入るように、胴体・手足等のパーツを3D CADで作成
=> 自分の環境では、穴は軸の太さ+0.2~0.3mmぐらいで作成

全パーツ



3. パーツを3Dプリンタで出力

4. 胴体部分を接着剤で接着

5. 接着した段差や、積層の目立つ部分をポリエステルパテで埋める

パテを塗った状態




6. パテを塗った個所を小刀・耐水ペーパーで整える

7. ジェッソとアクリル絵具、マットメディウムで塗装

塗装完了



8. 各パーツにジョイントリンクを入れて完成

まだパンツはいてない




注意点

- ジョイントリンクには塗料が乗らず、塗ってもはがれてしまいます。
=> 諦めて赤と黒2セット使いましたが、着色ではなく染めQのような染色であれば色落ちしない、、?

- 「普通のPLAより削りやすい」という理由でMODERA:PLAを購入しましたが、普通のPLAに比べて粘りがない分、今回のような穴開け箇所が多いものでは不安定なように感じました。
=> 失念し、普通のPLAで出力してパテでカバーする方向で対応しました。

- ジョイントに無理な力を加えると、蓋の部分が吹っ飛んで捜索に苦労します。特に小さいパーツほど外れやすいです。
=> カーペットのコロコロがあると探しやすいですが、4mm球は手首以外は使わないことにしました。

気づくと下のパーツが消えてる(あるある)

難しかった部分

- 包帯?を巻いてるキャラなので、面相筆で曲面に線を描くのが大変だった。
- 元の絵が2点しか存在せず、世の中のフィギュアはマッチョor中肉中背なので、骨格標本を見て作るも羽根が肩甲骨に付くのかわからなかった。
- 布のパンツを縫うのが一番大変だった。伸縮性のある生地で白ブリーフなども試したが、最終的に薄い綿でかぼちゃパンツがイメージに近かった。

ところでこのキャラ何?

- アトラスの真・女神転生シリーズの派生作品『ストレンジジャーニー』およびリメイクの『ディープストレンジジャーニー』のキャラ
=> 悪魔以外の要素が25%あることから実験体として他の悪魔に監禁・虐待されていたところを救出されるが(ネタバレにつき中略)悲惨な最期を遂げる。トラウマシーンの一つ。

なぜにこのキャラ?

- 8/25発売の『ソウル・ハッカーズ2』を一周クリアしたので『ソウル・ハッカーズ2』で何か作ろうとしていた
- 開発ディレクター等が『ストレンジジャーニー』と同じと知って、『ストレンジジャーニー』について思い返すうちに、なぜか幸せそうなバガブーを召喚しなければならない使命感にかられた。
- 実際作ってみて、「なんかやばいものを生み出してしまった感」がすごかったけれど、パンツはかせたら急にかわいく思えてきました。

おまけ

『ソウル・ハッカーズ2』のミミもFusion360で作ってみました。
ゲーム画面を見ながらスケッチできるのと、多少慣れてきたのでモデリング完了までが3時間程度。ただし塗装が大変でした。

塗装が鬼。特に手の部分。あとカメラのピントがあわない。

かわいい



つくった感想

- 実験的にやってみたけれど、考慮することがとかく多くて大変。
- 立体かつ手に取れるものはごまかしがきかないので、曖昧にできない難しさがある。
- クラフトのいろんな要素が含まれるので、フィギュアはクラフトの総合格闘技のようなだと思いました。
- 絶対製品化されない2次元キャラがその辺にいるというのはファンアートならではの醍醐味があってよかった。
- とりあえず開封したMODERA:PLA使い切りたいので、フィギュアはもうしばらく続けます。

拙者、おつかれ。

 

5/6のABEMA Primeで作品を取り上げていただきました

なにげにメディアに作品を取り上げていただくのは初ですね。

 

特集名が「誰でもチャラくなれる!?EXITと学ぶ最新パリピアイテムを一挙紹介」だったので、二つ返事で快諾させていただきました。

abema.tv

 

すっかり見慣れた輩ですが、普段と違うシチュエーションだったので作った自分も「うっわぁ。。www」と思いました。

(今回、すいラボさんの作品も出ていましたが、メイカー界隈最近よくABEMA.tvでよく取り上げられているみたいですね。)

f:id:bastardeyes:20210508174343p:plain

パリピ般若

そういえば2年前に「どこに需要があるんだよw」と思いながら作ったワンボタンGet Wildも、最近製品化された人がいらっしゃるようです。 

「よく製品化まで持っていったな!!!」と驚嘆しました。 

 

ここ1年ぐらいは仕事しかしてなくて作品作りが疎かになっていたのですが、意外と刺さる人には刺さるのかもしれないので、そろそろ重い腰をあげて新作を作らねばと思います。

水分測定センサ付き給水ポンプユニット試してみた

 Twitterで見たM5Stack新製品で、これは面白そうだったので買わざるを得なかった。

 

  

www.switch-science.com

 

このセンサを発注して早々にスペアミントの苗を買ってきたのですが、まさか動かす前に根腐れさせてしまうとは思いませんでした。

 

誰が言ったか「積みハードは罪ハード」。

反省しつつ、サボらないようにと最近soracomもくもく会に参加するようになりました。

 

作ったもの

ボタンを押すとポンプで給水するもサンプルのM5StickC版。

配線はGrove接続のみなので割愛。

 コード

setup内でコメントアウトしている部分はLED点灯などに使うかなと思ってなんとなく残した。

/*
    https://github.com/m5stack/M5Stack/blob/master/examples/Unit/WATERING/WATERING.ino
    Description: Read the ADC value measured by the Watering Unit, and the water pump can be switched on and off through the middle button.
*/
#include <M5StickC.h>

#define INPUT_PIN 33
#define PUMP_PIN 32

bool flag = true;
int rawADC;

void setup() { 
    M5.begin();
    M5.Lcd.setTextColor(GREEN);
    M5.Lcd.setTextSize(2);
    M5.Lcd.setTextDatum(TC_DATUM);
    M5.Lcd.setRotation( 1 );
    M5.Lcd.drawString("Watering TEST", 20, 10, 1);
    M5.Lcd.drawString("ON/OFF PUMP", 20, 30, 1);
    pinMode(INPUT_PIN,INPUT);
    pinMode(PUMP_PIN,OUTPUT);
    // pinMode(25,OUTPUT);
    // digitalWrite(25,0);
}

char info[30];

void loop() { 
  rawADC = analogRead(INPUT_PIN);
  M5.lcd.fillRect(10, 50, 240, 50, BLACK);
  M5.Lcd.setCursor(10, 50);
  M5.Lcd.print("ADC: "+ String(rawADC));
  Serial.print("Watering ADC value: ");
  Serial.println(rawADC);
  
  if(M5.BtnA.wasPressed()){
      digitalWrite(PUMP_PIN,flag);
      flag = !flag;
  }
  
  M5.update();
  delay(100);
}

 

根腐れしたスペアミントは元気なところだけ切って水につけていたら、数日で根っこが出てきました。強い。

f:id:bastardeyes:20210508171140j:plain

f:id:bastardeyes:20210508171149j:plain

 

MacのOSをBigSurにしたらESP32(ArduinoIDE)のコンパイルが通らなくなった話

3月にAWS IoT Edukitの環境構築で散々苦労したのですが、4月は4月で一悶着。

 

特にMacOSをBigSurにしたらESP32(ArduinoIDE)のコンパイルが通らなくなったは、ネット上にもいくつか情報があったものの、なかなか解決せず苦労しました。

 

出てきたエラー

ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found

解決策

  1. plathome.txtの書き換え
  2. esptool.pyのコピー
  3. esptool.py に実行権限を付与
  4. serialとpyserialのインストール
  5. esptool.pyをenv変更

=> ここまでやっても解決せず。


加えて ~/Library/Arduino15を削除して作り直す で動くようになりました。

 

手順の詳細はこちら

qiita.com


BigSurにしてから他にはまったこと

  • USBメモリスティックが読み取れなくなった
  • 外付けHDDが読み取れなくなった
  • HDMIの外部出力がノイズだらけになった
  • VirtualBox上でのLinuxイメージが起動しなくなった(ネット上の情報色々試して、今は仕事ではVagrant上でUbuntu動かしている)

他、知人には有線LANが使えなくなった人もいるので、色々鬼門だなと思う日々。

 

AWS IoT Edukitの環境構築に苦労した話

最後にブログを更新したの半年前ですか、そうですか。すっかり新緑の季節ですね。

さて昨年12月に発売された「M5Stack Core2 for AWS - ESP32 IoT開発キット」。
初回75台が瞬殺された後は情報を追っていなかったのですが、職場のインフラエンジニアが持ってると知って慌てて買いました。

www.switch-science.com

製品名的にIoTデバイス初心者向けのライトなものだと思っていたのですが、環境構築に苦しみました。

 

自力解決ができず、IoTラボさんの2021/3/14ワークショップにて相談させていただいた感想。

 

結論) IoTっぽいものやってみようかなーという人が最初に買うべきものではない。

  • 初めてESP32の環境を作るにはトラブルはないが、古い環境を持っていると苦労する。
  • M5StickCでWi-Fi使ってWeb API叩くとか、Googleスプレッドにセンサーの値書き込むなどから始めた方がいいと思う。(証明書に拘らなければ、MQTTでAWS IoT Coreのシャドウ更新とか、S3にデータ置くのもできる。)

 

以下、自分用メモ。

 Getting-Started。

はまりポイント

  • 昔入れたM5の設定周りが色々悪さをしていた。
  • GCC、CMAKE、Python、ESP-IDFなど環境周りはほぼ全部入れ直したのだが動かず。
  • 結果的にMacのユーザーを新規作成しないと動かなかった。

このサンプルやらなくても、後のチュートリアルをやる上で問題ないことがわかったので無理なら飛ばしてOKと思いました。

 

Blinky-hello-world

はまりポイント

  • 指定のバージョン以外のソフトウェアが存在すると×。
  • PythonはMiniconda環境で使う。
  • Pythonのバージョンは3.7に。(元々の3.8が悪さしていた)
  • ESP-IDFのバージョンは4.2に。

 

ALEXA_FOR_IOT_INTRO

特に問題はなし。一応メモだけ。

  • ビルド時に関数set_xpd_sarが重複してると怒られるので、 components/app_wifi.cのset_xpd_sarをコメントアウト
  • 日本語設定はスマホアプリESP ALEXAで指定する

 

----

繰り返しになりますが、最初のGetting-Startedが一番しんどかったです。

「あれ、M5Stackってこんなにハードル高かったっけ??」と首がもげそうな暗い首を傾げました。

最初にM5Stackで遊ぶなら、Ano研さんや下島さんの本が良いと思います。

www.amazon.co.jp

 

また、AWSで証明書使って、AWS IoT Edukitと同じようなことをするなら「Mongoose OSのほうが楽」らしいです。

mongoose-os.com

 

M5AtomでBLEマウスっぽいものを作った

唐突なんですが、右手の親指を動かすとめちゃめちゃ痛むようになり、リモートワークで使っているLenovoキーボードの左ボタンが押せなくなりました。

 

休日と業務時間外は私物のmacなので全く困らないのですが、これでは仕事ができないので、急遽マウスの左ボタンだけを別で使う機能が必要になりました。

 

手元にあった使えそうなもの

残念ながらUSBデバイスとして使えるものArduino Pro MicroやArduino Leonardoを持っていない。

  • M5Stackシリーズ
  • M5StickC
  • M5Atom シリーズ
  • Arduino UNO互換機
  • Arduino Nano互換機
  • ラズパイ3B+ 、ZERO WH

ESP32でBLEマウスを作れると言う情報はいくつかあったので、手近なところでM5Atomを選部ことに。

 

最終的にできたもの

  • BLEでPCと接続して、以下の動作をするもの
    • M5Atom Liteのボタンを押すと左クリック
    • M5Atom Liteのボタンを押すと左ボタン長押し

※ダブルクリックのことは頭になかったけど、使ってみたら無くても困らなかったので除外した。

 

f:id:bastardeyes:20200827000820j:plain

長押しで"press"、クリックで"click"と出力

 

コード

限定用途なのでたいしたものではないですが、ライブラリ「ESP32-BLE-Mouse」を使うとこんなあっさりしたコードでPCと接続できると言うのは結構衝撃でした。

姉妹品?にESP32-BLE-Keyboardというのもあるので、それぞれサンプルをチェックしていただければ使いどころはイメージできるのではと思います。

github.com

#include "M5Atom.h"
#include 
BleMouse bleMouse;

void setup() {
  M5.begin(true, false, true);
  Serial.begin(115200);
  Serial.println("Starting BLE work!");
  bleMouse.begin();
  
  M5.dis.drawpix(0, 0xffffff);
  delay(500);
}

void loop() {  
  
  if(bleMouse.isConnected()) {
     if (M5.Btn.wasPressed() ) {
      M5.dis.drawpix(0, 0x00f000);
      
      Serial.println("Left click");
      bleMouse.click(MOUSE_LEFT);
      
      M5.dis.drawpix(0, 0x000000);
        
      }else if(M5.Btn.isPressed()){
        M5.dis.drawpix(0, 0x000f00);
  
        Serial.println("press");
        bleMouse.press(MOUSE_LEFT);
        
      }else if(M5.Btn.isReleased()){
         M5.dis.drawpix(0, 0x000000);
        bleMouse.release(MOUSE_LEFT);
      }
      delay(300);
      M5.update();
    }
}

参考

M5StickCの加速度センサを利用したものではこんな作品も。

qiita.com

失念したこと

ボタンの代わりに、タッチセンサか圧力センサを使いたかったのですが、無線接続を有効にした途端にセンサの値が意図しないものになってしまい、平日深夜だったので切り捨てました。(無念)

原因

ESP32にお詳しい たなかまさゆき さん曰く、無線有効時のアナログピンはピン32以上の数字のものしか正常動作しないのだとか。。

 

→ピン33などでも試していたのですが、ESP32 Pico Kitなので挙動が違う可能性も??
と言うことで一旦アナログは無視することにしました。

 

当初は赤丸のところにタッチセンサを設置するつもりでした。

f:id:bastardeyes:20200827005053j:plain

ぷにぷにマウスレスト、意外と良いです。でかいけど。

実際試してみた感想

100点ではないけれど、手の痛みを緩和する目的は果たせたのでまずまず。

 

しかし、今の仕事で手に負荷がかかっているのがドキュメント作成やドキュメントレビューの画面スクロールやセル移動の動きなので、本当に必要なUI/UXはキーボードやマウスではないということに気がつきました。

 

顧客が本当に欲しかったのは、左手用のボタン付きジョイスティックでは?

 

今回はLenovoキーボードの左ボタン押しすぎでドケルバン症候群になったようなのですが、普通のマウスを使うと腱鞘炎&昔患った三角繊維軟骨複合体(TFCC)損傷の再発もあり。

右手は使わず、左手でスムーズに使えるインターフェース、、Nintendo Switchのようなものが理想なのかも。

 

f:id:bastardeyes:20200827003151j:plain

この赤×青の色合いについてはイマイチ納得していない

 

たぶん↓に筐体をつけてやるのが理想形な気がしています。

novicengineering.com

 ちなみに

公私とも色んな方からオススメいただいたのがケンジントントラックボールでした。

安価なところではロジクールも良いらしい。

 

トラックボールは以前に新宿ヨドバシで色々試したものの、手が小さすぎてちょっと合わなかったのですが、普通に指を動かせるようになったら再検討しようかと思います。。(その頃にはコーディングに入って、使わなくなってる可能性もあり)

 

necobit.com

 

 

 

Maixduinoで使える部品類(※8/24追記)

※追記) 2020/8/24 カメラとスピーカー

 

付属カメラのケーブルが断線した時、結構苦労したのでこれもメモ。

 デュアルカメラやマイク等はスイッチサイエンスで買えるものの、以外とちょっとしたものを探すのに悩んだ。

 

カメラ

魚眼レンズ(純正)

一番安いのはスイッチサイエンスですが、現在は品切れ。

Shigezoneに在庫がある場合も。

www.sengoku.co.jp

通常レンズ(互換品?)

アリエクで発見してしまったので、国内では探していないです。

2つ購入して、正常動作を確認しています。

a.aliexpress.com

その他

M5StickVですが、OV2640と同様に使用可能なカメラについて情報をお寄せいただきました。感謝!!

 

ケーブル延長基板

カメラ断線を繰り返さないためにネットで調べてAitendoにて購入。

Aitendoは今、お品切れの様子。

検索キーワード「FFB FFC 0.5 24P」で出てきます。

qiita.com

www.aitendo.com

 アリエクなら、これの24Pが同じだと思います。

ja.aliexpress.com

延長ケーブル

前述の基板に接続するもの。向き注意。

最初Aitendoで表-表しか買ってなくて、慌ててAmazonで表-裏を追加発注した記憶。。

検索キーワード「FFC 0.5 24P」で出てきます。

カメラ用

表-裏向きのものが必要。0.5mmピッチ24ピン。

Aitendoで言うところの「Wタイプ」、アリエク・Amazonで言う「Bタイプ」が該当。

 

LCD

表-表向きが必要。

Aitendoで言うところの「Sタイプ」、アリエク・Amazonで言う「Aタイプ」が該当。

 

www.aitendo.com

ja.aliexpress.com

www.amazon.co.jp

色々接続するとこう。LCDのケーブルも断線怖いので、マスキングテープで固定しています。

f:id:bastardeyes:20200824010415j:plain

ピントがボケてることは気にしない

LCD

付属のものと全く同じSeeed製品。

アリエクでもっと安価なものがあるかもしれませんが、探してないです。

www.amazon.co.jp

スピーカー

 1.25mmピッチコネクタ(molex 51021)がついたもの。

検索"1.25mm スピーカー"である程度引っかかってくるはず。

うちのはAitendoで買った適当なものに、ケーブルをハンダ付けしたので正確な型番は不明ですが、おそらくTwitterなど見る限りではスイッチサイエンスのこれが使える。

www.switch-science.com


失敗編

互換性あるかなーと思って失敗したもの。

 

大きめ3.2インチLCD(ST7789 8bit版) ←NG

付属の2.4インチより大きいものが欲しかったので。

発注当時、回路図探せなかったけれどピン数、ピッチ、ドライバーは同じなのでとりあえず試してみた。

結果、配線が違ったのでNG。連結基板を自作すれば使えるのかもしれないけれど、時間をかける余裕がないので保留。

 

ja.aliexpress.com

失敗した方3.2インチのデータシート

購入当時は到着品のコネクタに書かれた型番"jlt32018b-v"を、百度で探さないと見つからなかったけれど、今はアリババのリンクが出てくる。

 

付属品2.4インチのデータシート

 →これは普通にseeedが売ってるので探せる。モノもAmazonで買える。

 

 

 

・・・まとめてみたら結構な人柱感ありますね。