Kick Out the World

技術的なメモとかポエムを書きます。

引越しをして買い替えた物:テレビ周り

先月に引越しをした機に部屋の事情に合わせて諸々買い替えたので備忘録。 買い替え前は凡そ10年前に買ったもの。作業デスク、その他を予定している。

テレビ

4Kだと40型以上ぐらいしか選択肢が無いので、AirPlayとAppleHomeに対応していたので、Hisenseの43型にした。 最近は間取りに対して推奨インチ数が大きくなり、サイズのインフレを感じざる得ない。 各種映像サービスのアプリが見れるので、今までChromeCast経由で見ていた手間が省けて楽になった。 とは言え朝などながら見のために地上波も見るのでチューナ付きは必要、選択の自由度は圧倒的に劣るが、遅延無しにすぐに見えるのは良い。

テレビスタンド

部屋レイアウト都合で斜めに配置する必要があり、また、横長のテレビ台とは相性が悪く、買い替え後のテレビに対しても小さい様子だったので、自立型のテレビスタンドを選択 なぜかキャスター無し版を買ってしまったが、ちょっと配線用事で動かすとか向きを変える分には支障は無し。 後述のゲーム機収納がごちゃついてるが見た目はだいぶスッキリした。

スタンドの支柱に電源タップ、LAN、HDMIを通している。配線の入り口が狭いので、細いものであれば追加であと1本ぐらい通せそう。太いものから計画的に通しましょう。 ケーブルカバーは長すぎて切ってしまったので、別途それなりの太さがあるものを買うで良いかもしれませんん。

テレビ裏

ルータ類などLAN接続するものなどを隠すためにテレビ裏に集約することにした。 専用の電源プレートを取り付け、そこにマグネットで4本それぞれ自由にレイアウトできる電源タップをつける。 ルータはHDDホルダーにつけている。

テレビ裏についてるラインナップは以下 * ルータ * NatureRemoNano(テレビのUSB端子から給電) * ChromeCast(テレビのUSB端子から給電, HDMI接続) * Hueブリッジ(ルータにLAN接続)

ゲーム機ラック

PS4(そのうちPS5に買い替えたい)とSwitchを持っているが、テレビスタンドに替えたことにより、ゲーム機収納スペースを失ってしまった。 両方とも収納ができ、コントローラー置きや配線の取り回ししそうなものを買った。

こちらは結果から言うと微妙。

配線の取り回しについては非常に使いやすい。コントローラー置き場にUSBも配線しやすい。 3段ラックであるが、1段はPS4横置きし、Switchは縦おきで専用のはめ込めるようになっているので、実質1段しか活用できていない。 ゲームソフト自体もネットで買うので置くパッケージも無し。

テレビスタンドの裏に置いたことで、テレビスタンドにしたことでのスッキリさも失われている。 縦おきを前提とした縦長の収納棚とするか、テレビスタンドの支柱に棚板をつけるか迷う。後者の場合は支柱の配線が厳しそう。

テレビ用のサウンドバーを買えば必然と支柱に取り付けるので後ろは多少隠れるかもしれない。また配線問題はあるが。

memo: moddableでSDカードが使えるようになった

前々からModdableにSDカード機能が使えたらと思い続けていたが、突如としてDiscussionsに投稿されたスレッドが発端となる。

※本記事執筆時にはちゃんとソースコードとして登録されているが、上記ツイート時にはzip一式しか格納されてなかった。

確かに動きそうな実装ではあったので、実際に使ってみた。

現状READMEではリポジトリディレクトリをmoddableSDK本体側にコピーしているが、昨年にgitリポジトリのmanifestファイルを直接インクルードできるようになったので以下のように指定する

"include": [
        { 
            "git":"https://github.com/salarizadi/moddable-sdk.git", 
            "include":"Modules/SD/sd-module/manifest_spi.json"
        }
    ],

サンプルコードに沿ってM5stack core2では以下のようにSDの設定をしてみたところ、確かに動いた!!

// Setup SD card
trace("SD initialize : " + $SD.mount({
    miso: 38, // Default 19
    mosi: 23, // Default 23
    clk: 18, // Default 18
    cs: 4, // Default 5
    ff: true, // Format if mount failed
    transfer_sz: 4000,
    max_files: 5,
    aus: 16 * 1024 // Allocation unit size
}));

レポジトリから直接インクルードできるものの、deviceの設定の方に設定を書いていきたいので、moddableSDK本体にマージされないかな。 と思いつつ、これから追加で画像や音声リソースを入れてみて実用的なパフォーマンスで利用できるか確認してみようかと思います。

---追記( 2023/4/8 21:00)----

もう少しデバイスごとのピアアサインを手軽に使うために以下のようなマニフェストを用意すると便利そう(本当はdeviceの方に設定を書きた...

import SD from "sd"
import {File, Iterator, System} from "file";
import config from 'mc/config';

const $SD  = new SD();
const root = "/sdcard/";

let file;

// Setup SD card
trace("SD initialize : " + $SD.mount({
    ff: true,
    transfer_sz: 4000,
    max_files: 5,
    aus: 16 * 1024,
    ...config.sd
}));

memo: #moddable mcbundleについて

ふと、ししかわさんのツイートを見てmcbundleの存在を思い出した

2年ほど前に実際に動かしてはずなのだが、

ということなので、改めて実際に動かしてたことのメモ。

mcbundleとは

moddable/tools.md at c43982fa35e18495350a357441221298b3dee32c · Moddable-OpenSource/moddable · GitHub

moddableのアプリケーションをパッケージングするためのツール。冒頭にもあるModdable storeってなに?っていうのをかつてDiscussionsで聞いた気がするが投稿が見つからない。。。回答としては、いづれは所謂アプリストア的なものを見越した仕組み、だった気がする。

使ってみる

stack-chanで複数デバイス向けのリリースを考えてみる

manifest.jsonにbundle用の定義を追加する

"bundle": {
    "id": "tech.moddable.stackchan",
    "devices": [
        "com.m5stack",
        "com.m5stack.core2"
    ]
}

devicesに指定するデバイスidはmcbundle.jsにある。なお新規デバイス追加に伴う定義の追加はそこそこ漏れている模様。

mcbundle -d -m manifest_local.json

上記実行すると、tech.moddable.stackchan.sh とこのshから生成されるtech.moddable.stackchanフォルダとtech.moddable.stackchan,zipが配置される。

shの中身は以下通り、各デバイスごとにmcconfigでのビルドおよび、必要なファイルをコピーしている。

cat tech.moddable.stackchan.sh
#!/bin/bash
OUTPUT=/Users/satoshi/Projects/stack-chan/firmware/stackchan/tech.moddable.stackchan
rm -R $OUTPUT
mkdir $OUTPUT
source $IDF_PATH/export.sh
echo "# com.m5stack"
mcconfig -d -m -p esp32/m5stack -s stackchan.moddable.tech -t build
mkdir $OUTPUT/com.m5stack
cp $MODDABLE/build/bin/esp32/m5stack/debug/stackchan/bootloader.bin $OUTPUT/com.m5stack/bootloader.bin
cp $MODDABLE/build/bin/esp32/m5stack/debug/stackchan/partition-table.bin $OUTPUT/com.m5stack/partition-table.bin
cp $MODDABLE/build/bin/esp32/m5stack/debug/stackchan/xs_esp32.bin $OUTPUT/com.m5stack/xs_esp32.bin
echo "# com.m5stack.core2"
mcconfig -d -m -p esp32/m5stack_core2 -s stackchan.moddable.tech -t build
mkdir $OUTPUT/com.m5stack.core2
cp $MODDABLE/build/bin/esp32/m5stack_core2/debug/stackchan/bootloader.bin $OUTPUT/com.m5stack.core2/bootloader.bin
cp $MODDABLE/build/bin/esp32/m5stack_core2/debug/stackchan/partition-table.bin $OUTPUT/com.m5stack.core2/partition-table.bin
cp $MODDABLE/build/bin/esp32/m5stack_core2/debug/stackchan/xs_esp32.bin $OUTPUT/com.m5stack.core2/xs_esp32.bin
rm -f $OUTPUT.zip
cd /Users/satoshi/Projects/stack-chan/firmware/stackchan
zip -r tech.moddable.stackchan.zip tech.moddable.stackchan


find tech.moddable.stackchan/
tech.moddable.stackchan/
tech.moddable.stackchan//com.m5stack.core2
tech.moddable.stackchan//com.m5stack.core2/partition-table.bin
tech.moddable.stackchan//com.m5stack.core2/xs_esp32.bin
tech.moddable.stackchan//com.m5stack.core2/bootloader.bin
tech.moddable.stackchan//com.m5stack
tech.moddable.stackchan//com.m5stack/partition-table.bin
tech.moddable.stackchan//com.m5stack/xs_esp32.bin
tech.moddable.stackchan//com.m5stack/bootloader.bin

まとめ

github.com

ここに書いたようなESP Web Toolsと組み合わせせることで、GithubActionsでリリース時にmcbundleで配布用のファイルを生成し、配布という流れに使用できるかもしれない。

YAPC::Kyoto 2023 感想ブログ書いたよ!

yapcjapan.org

今年度からPerl入学式in大阪の物理開催が復活しましたが、物理の勉強会やカンファレンスに参加したのは、in NagoyaのTiny以来かもしれない。 久しぶりに会う方へ挨拶ができた方もいれば、スタッフ業で忙しそうでできず、、という感じでしたが、物理のカンファレンスってこんなだったなーというのが思い返えすことができた。

トークとしては、不参加の間に自身が少しはWeb業に近づいたこともあり、JS界隈のトークをメインで聞いていた。HonoがWeb Standard APIを採用することで複数の環境で上手く動くところあたりはModdableみたいなマイコンでも動くといいな、と思いながら聞いていた。

speakerdeck.com

あとは美味しいランチをいただきながらトークを聞けたり、廃墟の話があったり、Chat-GTPの話があったり、最後はエモい話があったりと、ごった煮感であり、エンジニアの総合格闘技感がYAPCらしくて良さがあった。あと、エモいに関連してカンファレンスとしての熱量の高さがビンビンに伝わってきて、「おっっしゃ!!やったるぞ!!」という気持ちになれるのがいいですね。

雑感ばかりですが、YAPCはこれからもずっと参加していきたいカンファレンスです。スタッフの皆様お疲れ様でした!!

Moddableでsayコマンドで生成した音声を喋らしたい

手元にシュッと用意できるTTSサーバやコマンドが無いため、stack-chanのTTS機能が試せないでいたたが、Macに標準搭載のsayコマンドがファイル出力できることを知ったので試してみた。

qiita.com

続きを読む

Moddableでアイコンを手軽に表示したい

ModdableでUIを持つアプリケーションを作るあたり、アイコン的なものを表示したいケースがある。

単品のアイコンであれば画像アイコンをPNGなりで読みこむか、スプライトな画像を作ってTextureでvariantで表示を切り替えるという方法が従来からあるが、今回ある程度の数を持ったアイコンセットを手軽に扱いたいケースを考える。

続きを読む

Look back Moddable from 2021.7 to 2022.1

Moddableのリリースノートを紹介する記事とかを書いてましたが、ここ半年ほどリリースタグが打たれないないことで記事を書く機会がなくなっていました。 とはいえリリースノートが無いと変遷が分からなくなるなってくるので、気になるコミットをかいつまみながら振り返っていきます。

2021.7

configuration for startup vibration in M5stack core2 · Moddable-OpenSource/moddable@89c864f · GitHub 自分のPR. M5stackCore2起動時のバイブレーション時間をmanifest,jsonから無効を含め調整できるようになった。

2021.8

add sdmmc⁩ include · Moddable-OpenSource/moddable@60deeec · GitHub ESP32でSDカードを扱うためのコンポーネントをインクルード。ついにSDカード対応かと思ったが、以降これといってSDカードの関連のコミットは無い。。

mcbundle: Windows version (from Andy) · Moddable-OpenSource/moddable@66c468f · GitHub McbundleというModdableアプリを頒布するためのパッケージングコマンドのWindwos対応。 将来的にはStore的なもので頒布できるといいよね、とのこと

Add servo example: continuous rotation servo · Moddable-OpenSource/moddable@41478d9 · GitHub 自分のPR.360°サーボモータを動かすためのサンプル

add examples: ir-receive and ir-send. · Moddable-OpenSource/moddable@5ca8e64 · GitHub 自分のPR.M5シリーズなどについてるIRの送受信のサンプル

Merge branch 'master' into esp-4.3 · Moddable-OpenSource/moddable@0c1442e · GitHub ESP−IDF4.3対応

2021.9

esp-idf v4.3.1 · Moddable-OpenSource/moddable@e5e916b · GitHub ESP−IDF4.3.1対応

2021.10

add m5core ink and m5 paper · Moddable-OpenSource/moddable@489a19f · GitHub 突然のM5CoreInk, M5paper対応。初の完全なIOクラスベース実装のデバイス

2021.12

Ignore MPU6886 init error of m5stack_core2 · Moddable-OpenSource/moddable@db8f973 · GitHub Core2の裏蓋を外してIMU未装着で起動時にクラッシュの回避

[コミット見失った] ESP−IDF4.3.2対応

PAJ7620U2 gesture sensor · Moddable-OpenSource/moddable@2f29491 · GitHub 自分のPR. ジェスチャーユニットのドライバーおよびサンプル

2022.1

first draft of fontbm support for mcconfig & mcrun · Moddable-OpenSource/moddable@a618185 · GitHub fontbmを使ってModdable用のフォントをビルド時に生成できるようなった。

update instructions for Visual Studio 2022 · Moddable-OpenSource/moddable@ac30e42 · GitHub Wondows環境でのツールチェインがVisualStudio2022になった。特にアップデートする必要はない

add m5paper to screen test app · Moddable-OpenSource/moddable@d7df1ea · GitHub add m5paper to screen test app · Moddable-OpenSource/moddable@d7df1ea · GitHub ScreenTestやMcsimに新規デバイスを追加するときのリファレンスになる。

その他動向

  • 先日リリースされたESP-IDF4.4は対応するみたい
  • Typescriptビルド時のtsconfigのオプション指定をmanifest.jsonから上書きできるようにするなど、Typescript対応の環境は少しずつ進んでいる。

ModabbleSDK本体の更新ではないが、xs-devというかModdableのセットアップやコマンドのエイリアスを提供するCLIツールが開発されている。

github.com