あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

CircuitPythonで作ったデバイスの普段使いに邪魔なUSBドライブを無効化する(ただし7.0.0から)

CircuitPythonで自作キーボード的なものを作成して実際に使い始めると、CIRCUITPYTHONドライブが邪魔ということに気が付きます。Windowsだとそこまで気にならないかもしれませんが、Macの場合はこうなりがちです。

f:id:Akkiesoft:20210816184341j:plain

CircuitPython 7.0.0からはこうした状況をどうにかできる機能が追加されているようなので、ちょっと試してみました。なお、書いた時点ではAlpha6の状態だったので、正式リリースはまだ先っぽそうです。

しくみ

Adafruitの記事で解説されているので、基本的にはこれをなぞるだけです。

learn.adafruit.com

code.pyとは別にboot.py(MicroPythonとごっちゃになりそうで微妙なネーミングだなあ)というファイルが追加され、ここでUSBストレージやREPLの無効化や、USB HID機能の有効化をするようになったようです。ちなみに、code.py側で書いていた内容に変更を加える必要はありませんでした。

記事にあるとおり、何でもかんでも無効化すると、再び有効化できなくなってただの板にしてしまう恐れがある点には注意が必要です。USBストレージとREPLを同時に無効化しなければ、どちらかを使って復旧させられるので、そこだけ気をつければ良さそうです。

USBストレージを無効化するためのboot.pyの内容はこうなります。

import storage
storage.disable_usb_drive()

しかしこれは罠で、ただ単に無効化するとあとから有効化するのが面倒になります。storage.enable_usb_drive()という関数もあるので、REPLで実行すれば良いように見えますが、boot.pyでしか実行できないため、たぶんですがREPLから以下のコードを実行してboot.pyを消す以外の方法がありません。

import os
import storage
storage.remount('/', readonly=False)
os.remove('boot.py')

よって、必要に応じて「USB接続時にボタンが押されていたらUSBストレージを無効化しない」などの実装はあったほうが良いと思われます。

REPLを無効化した場合ならUSBストレージからboot.pyを修正できるので影響は軽微そうですけど、REPLを無効化したいケースは簡易な自作キーボード程度では思いつかないのでまあ……。

やっていき

さて、昨日ブログに書いたKeybow用にスクリプトを作成してみました。

akkiesoft.hatenablog.jp

以下をboot.pyとして配置します。

import storage
import board
import digitalio
from time import sleep
import adafruit_dotstar as dotstar
import usb_hid

usb_hid.enable((usb_hid.Device.KEYBOARD,))
dots = dotstar.DotStar(board.GP2, board.GP3, 30, brightness=0.5)

button = digitalio.DigitalInOut(board.GP11)
button.pull = digitalio.Pull.UP
if button.value:
    storage.disable_usb_drive()
    dots[2] = (0, 255, 0)
    sleep(0.1)
else:
    dots[2] = (0, 0, 255)
    sleep(1)
dots[2] = (0, 0, 0)

board.GP11に相当するキー(Keybowはたしか左下、Keybow miniはKEYBOWの文字がある端)を押した状態でUSB接続すると、1秒青く光ってからUSBストレージがマウントされますが、キーが押されていなければ一瞬緑に光るだけでUSBストレージはマウントされません。どちらの状態でもLEDが点滅したあとはcode.pyが続けて実行されて、キーボードとして使えるようになります。

まとめ

boot.pyのネーミングだけ引っかかりますが、USBストレージを無効化できるのはMac使いとしては非常にありがたい機能追加です。また、自作キーボード向けならboot.pyはこう言う感じの実装が基本になりそうかなあと思いました。CircuitPython 7.0.0の正式リリースに期待です。

Pimoroni KeybowをRaspberry Pi Picoで使えるようにしてみる

円形ディスプレイを使ってクソ工作を作ろうとして、適当に使い潰せそうなPiZeroWを探したらないような気がしたので、Keybow miniにはめて放り投げていたPiZero 1.3を使うことにしました。で、Keybow miniからPiZeroを外しているうちに、KeybowをRaspberry Pi Picoで使えるようにしたら面白いのではと思いついてしまい、脱線してPicoいじりをしていました。

Keybow

おさらいすると、PimoroniのKeybowは、Raspberry Pi Zeroを組み込むことを前提にした自作キーボードキットです。テンキー型の12キーのものと、PiZeroサイズに収まる3キーのものがあります。

Keybow Kit (12-key) with Pi Zero WHshop.pimoroni.com

Keybow Kit (3-key)shop.pimoroni.com

ちなみに今回ネタにするPico化を頑張らなくても、これから欲しくなった人には最初からRP2040が使われているKeybow RP2040という16キーのキーボードも販売されています。

Keybow 2040shop.pimoroni.com

やっていき

今回は以前Pimoroniで買い物したらおまけで付いてきたPicoを使います。Keybow miniのピン配置をpinout.xyzで参考にしつつ、aitendoのPiZeroサイズのプロトタイプボードに必要なピンヘッダーをつけて、雑に配線していきます。

pinout.xyz

5VとSPIはLED用ですが、CircuitPythonのDotStarライブラリで実装できたので、これらも配線しました。Mini向けならあとき3.3VとGNDと3つ分のキースイッチの配線をして終わりですが、今回は欲張って普通のKeybowにも使えるように全部配線しました。

pinout.xyz

配線後のようす。初めてエナメル線を使いましたが、数が多くなるとPicoが浮くw

f:id:Akkiesoft:20210815123917j:plain

動作確認できたらあとはPicoをプロトタイプボードに接着です。これも今回ついにはじめて、イギリスで買ってきて使わずに冷蔵庫で放置されていたSugruを使ってみたんですが、固まるまで我慢できずにケーブル抜き差しをしているうちに剥がれてだめになってしまい、ただの汚れになりました……。

f:id:Akkiesoft:20210815124204j:plain

結局、汚れを全部取り除いたあとはいつものホットボンドで接着しました。

f:id:Akkiesoft:20210815124024j:plain

コード

Picoのスクリプト置き場のCircuitPythonのところに放り投げました。各キーのGPIO配置対応表はREADMEに記載しました。

github.com

各キー単一のキーコード割り当てと、キーが押されたときに光らせられる単機能なものですが、設定ファイルの書き方だけでKeybowとKeybow miniの両方に対応できるようになっています。複数キーコード組み合わせ溶かしたいときは適宜書き換えてもらったらいいかなと思います。

結果とまとめ

PiZeroで動かすKeybowは専用OSが用意されているため、Raspberry Pi OSを起動するよりも早く立ち上がりますが、それでも使えるようになるまで15秒くらいかかります。Pico化すると1秒ちょっとで使えるようになるので、起動時間を大幅に減らすことができます。たぶん消費電力も削減できる(PicoのLED無点灯&待機中は0.02Aでした)ので、すでにKeybowを使っている人はPico化の価値がありそうです。これからの人は、用途によりけりですが、冒頭に挙げたKeybow RP2040を買うのが手っ取り早いと思います。

こんな感じで、Raspberry Pi向けのキットだったけど、RP2040化できる追加ボードなんかが作られると良いかもですね〜。

東京メトロ18000系初乗車。

今日も今日とて引きこもりかなあと思っていたら、Mastodonのタイムラインで東京メトロ18000系に渋谷から乗る座布団くんを発見したので、青葉台まで下ってくるのを待ち伏せ乗り鉄してきました*1

田園都市線半蔵門線の新世代の車両として、東急2020系と比較することになりますが、先に書いてしまうと、あらゆる点で18000系のほうが良く感じられて、2020系とは何だったのかという気持ちになりました。

さて、外観は以前試運転やら鷺沼の車庫で見ていますが、LED方向幕とかをちゃんと見るのはお初です。サイズが大きめなので駅ナンバリングも見やすくとヨサゲですね。

f:id:Akkiesoft:20210813164954j:plain

中央林間にて。

f:id:Akkiesoft:20210813172819j:plain

側面も大きめなので、ゆったりしていて見やすいですね。

f:id:Akkiesoft:20210813165305j:plain

f:id:Akkiesoft:20210813172041j:plain

半蔵門線で見たら「田園都市線直通」とかも見られるんかしら。

f:id:Akkiesoft:20210813172045j:plain

車内は半蔵門線の路線カラーである紫をこれでもかと推したデザイン。座席は紫、床も紫、つり革と天井までもが紫ですが、クドくならずまとまっていていい感じです。ガラスの袖仕切りはおおきめなので2020系の謎のカーブによってドア横でもたれかかってくる人とビミョーに近いみたいな感じにはならなそうです。荷棚もガラスなので広々した感じに見えました。

座席は現在の標準的な幅になり、メトロ8000のほぼ唯一の不満だった座席の狭さとお別れできる点は高評価。メトロ08系のような、なんかやたら座高が低いみたいなこともなく普通に座りやすかったので、08系もB修繕のときにはどうにかしてほしい……。あと、特に確認しませんでしたがたぶん4/5/8号車のロングシートも普通に7人がけじゃないかと思うので、4/5/8号車の民で2020系の6人がけがイヤという人はこれから(3年後くらい)はメトロ車運用狙ったら勝ちじゃないでしょうか。

f:id:Akkiesoft:20210813170113j:plain

紫のつり革。レプリカ売ってくれないかな、部屋に飾るようにほしい。照明は天井に埋め込まれたようなタイプになっていてこれもまた室内をスッキリと見せるポイントになっていそうです。交換のしやすさとかどうなんだろう?

f:id:Akkiesoft:20210813171204j:plain

フリースペースとドア周り。ドアのレールが切り欠きになっていてベビーカーが通りやすいという謳い文句でしたが、私には無縁かな。コミケ帰りのカートも通りやすければ縁はあるかも。コロナカではそれもいつの話やらって感じですけど。さておき、あとは8000系のような段差がなくなったのはシンプルにありがたいところですね。

f:id:Akkiesoft:20210813172453j:plain

ドア上の案内はおなじみセサミクロと広告ディスプレイの2枚構成。サイズも多分変わらずです。別にこの辺はまだまだ陳腐化していないし、2020系やE235系のようにシート上とか貫通路にまで設置する必要も感じられないので、このあたりはこれで必要十分という感想です。何ならメトロ8000から部品取りして移植されても気づかなさそうです。

ドアエンジンは空気式。ここだけは2020系のラックアンドピニオン式のほうが進んでるのかなあと思うなどしましたが、山手線の停電のときに蓄電池切れを起こしてドア閉めるのにホラー感出しまくった動画がインパクトありすぎて、どっちがええんやろなあという気持ちにもなりました。

f:id:Akkiesoft:20210813165746j:plain

逆かぶりつきで運転台。

f:id:Akkiesoft:20210813172309j:plain

走行音は、これも試運転ですでに聞いてますし、実際に車内で聞いても静かでした。日比谷線の13000系とかあのへんとなんとなく近い、要するに最近のやつって感じでした。しかもこれで4M6Tでしょ、ほぼ無音じゃん(言いすぎ)。クーラーの室外機も普通の騒音レベルだったので、2020系のように「せっかく静かに走るのになんでクーラーはこんな爆音なの……」みたいなことにはなってませんでした。これは安心しました。

www.youtube.com

音といえば車内のスピーカー。めちゃくちゃクリア。クリアすぎた。むしろ2020系のビットレート低いみたいなこもった音はどうやったら現代に実現できたのかというレベル。18000系と2020系では完全に真逆の方向性を突き進んでいます。どっちが好みかと言われれば間違いなく18000系のほう。た、足して2で割ればちょうどよくなるのでは(???)

www.youtube.com

あと貫通扉。開けやすくてよかった。取っ手を引くとなんかがニョキっと出てくるのが必要なものなのかわからないですが、取っ手を引くとロックが外れて扉が動くようです。ニョキッと出さないように取っ手を引いて扉を開けるのはできないようでした。

www.youtube.com

まとめ

18000系 vs 2020系 ファイッ

比較 18000系 2020系
走行音 めっちゃ静か 8500系に比べたら圧倒的に静かだと思っていた
MT比 4:6 5:5
空調騒音 ふつう うるさい
案内LED 見やすい 読めるけどちょっと小さい
室内LCD 銀座線・日比谷線より1枚減ってるけど必要十分 そんなにいらんでしょ
室内スピーカー アホほどクリア アホほどこもってる
内装 こだわりが見える 通化コストカットの賜物(?)
座席 座りやすい、長時間座るレビューはまたいつか 長時間は足が疲れる、4/5/8号車は所属の2/3が6人がけ
(いつかやりたい比較)長津田検車区とか離れたところから車番ウォッチ 反射したりしてかなり見づらい

メトロ18000系……圧勝……。別に3年間で特別技術が進歩したものがメトロ18000系にどしどし盛り込まれたわけでもないし、性能的には13000系派生程度な感もある(日比谷線ほぼ乗らないのでしらんけど)のにこの差。どうして差がついたのか…慢心、環境の違い。私の好みの問題なのかもしれないけど。

あと、メトロ8000系も8107Fから廃車が始まったようで、こまめに近代化改造されてたのでもったいないなあという気持ちがあったのですが、メトロ18000系はメトロ8000系に安心して旅立ってもらえるような仕上がりだったので満足しました。メトロ8000系はLED照明を東武にゆずってやってくれ;;(???)

通勤してた頃はメトロ運用=ハズレだったんですが、これからはあたりになりそうです。通勤する時代に戻るのはいつのことやら、ですけども。そういう意味では8500も8000も通勤しながら葬式鉄みたいなライト葬式ができないままなのが惜しい今日このごろです。

*1:座布団くんは仕事なのでふつうに途中で降りています

冷蔵庫を買い替えた

上京以来14年使ってきた冷蔵庫を買い替えました。まだまだ問題なく動いてましたが、とはいえ10年以上立ちますし、在宅時間が増えたので冷凍庫の容量とか使い勝手にも不満が出てきたので、ボーナスのシーズンもあってエイヤが発動しました。

前の冷蔵庫は家電屋によくある新生活セットが買ったもので、三洋OEMのit'sシリーズのやつでした。この形のはだいぶロングセラーだったっぽく、AQUAに変わってからもしばらく存在していたようです。

f:id:Akkiesoft:20210812094148j:plain

f:id:Akkiesoft:20210812094150j:plain

そして新しい冷蔵庫。町田のヨドバシで一人暮らしサイズの冷蔵庫コーナーを散々眺めてうなったあとでとなりの列を見たらAQUAのやつだけ仲間はずれみたいに並んでいて、これに決まりました。もとの冷蔵庫から冷蔵冷凍の両方を増やそうとすると、選択肢が三菱とAQUAしか残らないという感じになっていて、シャープは冷蔵減・冷凍増、ほかは大体冷蔵増・冷凍減という感じでした。AQUAのこれは横幅を増やすことで高さを抑えながら容量アップをするというアプローチになっていて、要件をいい感じにクリアしてくりました。他社と比べて若干動作音が高い(だいたい23dBのところこれは25dB)のが気になりましたが、誤差かと思い無視しました。まだ動かし始めなので動作音が気になりますが、落ち着けば多少静かになるのかな?という感じです。

f:id:Akkiesoft:20210812092127j:plain

配送はなんとなく午後イチ希望にしていたけど、朝の事前連絡のときに「今からでもいいですか?」と言われ、ま、まあ別に大丈夫ですがみたいなやり取りをしたため、結局朝イチ納品となりました。すげーぜヨドバシ。今日は雨の予報でしたし、降る前に来てもらったので結果的には良かったですね。

f:id:Akkiesoft:20210812092137j:plain

冷蔵庫の中身をうつした結果。昨日掃除をしつつ、期限切れのものを捨てまくったので量が減っていたのもありますが、めちゃくちゃ余裕ができました。

f:id:Akkiesoft:20210812092149j:plain

冷凍庫も同様。引き出し式になったので、取り出し・整理もしやすくなりましたし、製氷もできるようになったのが文明開化した!という感じです。今回の買い替えの動機が、冷凍庫にものをつめすぎて、ものを取り出すときに崩落してごはんタッパを破壊する(3回目くらい)のが嫌になったというのがありまして、そういう運用だと当然製氷も夢のまた夢だったので、冷凍庫容量増はかなりQoLが向上しそうです。

f:id:Akkiesoft:20210812092157j:plain

これで上京以来残った家電は電子レンジと、煮物用に降格してほとんど動いてない炊飯器になりました。レンジはまあ壊れるまででいいかなあ……?

盆だから丼の土産を手にツイッターに戻り、万バズとねとらぼ掲載に変えて丼へ帰っていく話

お盆なのでお盆だけTwitter中です。終わったらMastodonに帰るよ。

昨日こんなツイートを見て、そういや前に神保町の配管撮って丼に投げたなあと思い

2019年のトゥートを掘り返して

social.mikutter.hachune.net

貼ったらめちゃくちゃバズった、というだけの話。万超えは初です。松屋の卵でも実は1000行ってないんですよね。

当時のMastodonでも結構ウケが良かったので、「Twitterならねとらぼが来るぜw(ゲラゲラ)」と言ってたのですが

social.mikutter.hachune.net

ちゃんときてくれました。フラグ回収やったぜ。

今回も別のメディアから取材依頼がきていたんですが、 DMやり取りなしの軽快なやり取りで済む事と、「ご無沙汰しております」から始まるメンションにシビレてねとらぼさんに即OKしました。松屋のやつを覚えてるかどうかはさておき、下調べをしてからメンションしているところに好感を持ちました。

nlab.itmedia.co.jp

というわけで5年ぶり2回目のねとらぼ掲載となりました。

nlab.itmedia.co.jp

掲載後はもちろん報告をくれるし、

こう言う意味わからん修正依頼にも快く応じてくれる編集部の皆様、夏休み真っ只中の仕事なんやってらんねえ夕方にお手間をおかけしてすみませんでした。川の向こうの凍った面々に自慢してきます。

コロ中(変換が面倒)の外に出られねえ夏休みでも思い出は作れるんだなあと思いつつ、何やってんだろうなあって感じになりました。おわり。

ちなみに配管は交換済みでマスタードとケチャップ感はなくなってしまった模様。あと、アメリカンドッグにはグラニュー糖をまぶせ。