つくまたに出展します!!

「つくまた」とは

w.atwiki.jp

※画像は公式URLより転載

「つくまた」とは「necobit/猫とロボット社」が主催するMaker系創作物即売会です。コンセプト「Makeなどのものづくりをする人たちの展示会ではなく、即売会をやりたい」「自分で作ったさまざまなものを売ったり買ったりする場所が欲しい」「とりあえずやってみましょう」とある通り、初の試みで、即売会をやってみようというものです。

即売会の色を強めに出しているように感じました。

74th の出展

運良くサークル出展できる運びとなりました。

おもに3点を出展しようと思っています。

ESP32C3 IoT Server Boardケース付きキット

最近、ESP32-C3で作ったGroveポートを3つもつデバイスを作り、赤外線LEDと、温湿度計を付けて、TVの前や、寝室、リビングのエアコンの前に取り付けています。REST API風リクエストを送ると、赤外線信号を飛ばしてTVやリモコンを操作したり、温湿度計のデータがとれます。

このようにREST API化することで、ESP32上で動く処理は単純なもので良くなります。 これらを組み合わせた複雑な制御(例えば、TVの電源オン、チャンネル切り替え2回でPS5に切り替える)などを、Linuxサーバ(OrangePi5+)上に構築したStreamlit(Python)からできるようにしました。これで、自宅内外からリモコンを使わずにスマホでいろいろできるようになりました。

このようにESP32C3でREST API化すると、制御の幅が広がってWebエンジニアの方法で拡張できる面白さを伝えていきたいです。

当日は以下のボードを展示し、デバイスがケース付きでなじむ感じとかを見てもらえれば嬉しいです。

なお、既にBoothにて販売中です。同価格で販売いたします。

74th.booth.pm

SparrowDial 自作キーボードキット

M5Dial、M5StackCore2をトラックパッドとして組み合わせた自作キーボードキットです。

「キーケット」でも、Androidタブレットで実際にトラックパッドとして体験可能な形で展示しました。つくまたでもスペースがあれば操作可能にする予定です。M5Dialを普段のマウスのようにグリグリするのを味わっていただければと思います。

youtu.be

こちもBoothでは既に販売中です。同価格で販売いたします。

74th.booth.pm

他の出品物

一応、74th.booth.pmで販売しているものを、持って行こうと思っています。キーボード系はSparrowDialだけですが、それ以外のマイコンボードキット、電子工作便利部品も展示します。

一覧は、ビラを見ていただけると助かります。

https://showcase.74th.tech/paper.pdf

このように完成品にラベルを付けてボックスに入れて持って行きます。気になったら、眺めていただいたり、話を聞いて、さらに購入いただければと思います。

これだけ「RP2040(x2種)」「CH32V203」「CH32V003」「STM32F103」「STM32G030」「STM32G431」「ESP32」「ESP32-S3」「ESP32-C3(x2種 )」「ESP32-H2」「ESP32-C6」の小さいマイコンボードが並んでいると壮観です。ProMicroサイズのこだわりが伝わるかと思います!

書籍は数冊持って行くか悩んでいます。

類似イベントに少し思いをはせる

電子工作、Maker系の即売会を含むイベントとして、「ピコケット」には過去に出展したことがあります。そちらでも作ってみたものを販売してはいましたが、どちらかというと展示会の認識で来場される方が多く、作ったものについて話を聞いたり触れたりする、そして良ければ買ってみる、という感じでした。

pikoket.seesaa.net

「スイッチサイエンス 年度末大感謝祭」では、スイッチサイエンスマーケットプレイスで出展されている方の販売ブースがありました。そこでは、私自身実際に触れて購入にまで至った商品が3つありました。どうしてそのようなものを作ったのか聞いて、実際に触れるとほしくなることが多くありました。

www.switch-science.com

「キーボードマーケットトーキョー」という自作キーボードの同人即売会にサークル出展しました。

www.itmedia.co.jp

こちらは、「自作キーボードわいわい会」が展示を目的としたものであるのに対応するように、即売会を目的としたイベントとして明確設定されています。ブログ記事でも触れていますが、キーボードという実用品がここでしか販売されるということで「かなり購入する気概のある方が来場されていた」ように感じています。

74th.hateblo.jp

つくまたに対する期待

既に、参加サークルは公開され、見てみると新商品の準備を進めている方もおられます。

よりMakerに近いメンバーだろうと思われ、どのような面白いと思っているものが展示されるか楽しみにしています。

共有されて、この価格なら買いたいと思えるもに出会ってお持ち帰りできればと思っています。

私自身の販売のスタンス

私自身は、電子工作で一儲けしたいというよりも、自分が面白がって作ったものを、買った人が面白がってくれたら嬉しい、というスタンスです。 値は低い方になるのかもしれません。多くの人が手に取るためにやっているのもあり、大量生産の依頼も基本的には受け付けていません。

まとめ

出展予定物についてまとめました。

当日は秋月による折に、ご来場いただき、他のブースを回って私のブースも見ていただければと思います!

I2CトラックパッドTPS43-201A-SをQMK Firmwareで使う

tl;dr

  • トラックパッドTPS43-201A-Sは、2本指ジェスチャに対応した簡単に扱えるI2C接続デバイスだよ
  • QMK Firmwareにドライバが実装されているため、設定するだけで使えるよ
  • 3.3VのGrove接続化して、Raspberry Pi Picoにつなげて使ってみたよ
  • ポインタとしての性能は良さそうだよ
  • 2本指スクロールは若干難ありだけど、少し工夫したら、ある程度良くなったよ

TPS43-201A-Sとは

TPS43-201A-S とは、Azoteqが販売するI2C接続のトラックパッドバイスです。トラックパッドとしての機能を、I2Cで簡単に制御できるようにできています。IQS572というタッチセンサーICが含まれており、それがセンサーとしての制御をすべて行ってくれます。

Marutsu経由でDigiKeyから購入することができます。1個1,200円ほどと、とてもリーズナブルな価格で購入することができます。

www.marutsu.co.jp

以前、M5StackCore2、M5Dialを使ってトラックパッドを作った私ですが、この安価に買えるデバイスを一度触ってみたいと思っていました。

QMK Firmwareにはドライバが実装されている

TPS43(IQS5xx)は、QMK Firmware上でドライバが提供されています。

docs.qmk.fm

QMK Firmwareで利用するには、以下の記述を追加します。

rules.mk でポインティングデバイスの有効化と、ドライバを指定します。

# keyboards/sparrowxxt/rules.mk
POINTING_DEVICE_ENABLE = yes
I2C_DRIVER_REQUIRED = yes
POINTING_DEVICE_DRIVER = azoteq_iqs5xx

config.h でI2C接続するピンの指定と、TPS43を使う指定をします。

# keyboards/sparrowxxt/config.h
#pragma once

#define I2C1_SCL_PIN GP1
#define I2C1_SDA_PIN GP0
#define I2C_DRIVER I2CD0
#define F_SCL 100000
#define AZOTEQ_IQS5XX_TPS43 1

基本的にこれだけでファームウェアの基本的な準備はOKです。

なお、QMK Firmwareファームウェアを新しいキーボードで作る時の手順は、Zennの記事にしていますので、良ければ参照ください。

zenn.dev

Raspberry Pi Picoにつなぐ

私の最近作るキーボードは、ポインターバイスとの接続はGroveコネクタでやるようにしています。なので、TPS43にもGroveケーブルを実装しました。

Raspberry Pi PicoにI2Cデバイスを繋ぐ場合、プルアップがSDA、SCLに必要です。

私はブレッドボードにGroveコネクタを引き出すアダプタを作っています。このアダプタにはプルアップの機能も含まれているので、今回便利に使いました。

74th.booth.pm

これで、TPS43を、自作のRaspberry Pi Picoクローンボード(以下Pico)にブレッドボードを使って接続しました。

QMK Firmwareコンパイルし、Picoに書き込んだところ、USBキーボード、マウスとして認識し、Macで操作することができました。

操作感のファーストインプレッション

この施策の目的は、TPS43でどのくらい快適な操作感を得ることができるのかを調べることです。

ポインター操作

ポインターを動かすのはかなりスムーズだと感じました。MagicTrackpadほどとまではいえませんが、特に通常使用に問題ないくらい、意図通り動かすことができました。

タップ

タップ操作も問題なさそうでした。特にタップ時にポインターがぶれるということもなさそうでした。

2本指タップ

右クリックに相当する2本指タップは動作しました。2本指スクロール時に意図せず2本指タップとして認識されることはありません。

ただ、指を近づけすぎると1本指タップとして認識するようでした。意図的に2本の指を離してタップした際は、意図通り動作しました。この動作がくせ者で、なれれば良さそうですが、MagicTrackpadに慣れていると、ついつい指を近づけてタップしてしまいます。

2本指スクロール

2本指で触れた状態で上下に動かすスクロールが動作しました。

ただし、少しの動きでかなり数のカウントがされるようで、びゅっと動いてしまいます。ここはTrackpad本来の、ポインタのように移動量をPCに伝えているのではなく、マウススクロールのカウントをボタン動作のように伝えているようでした。そのため、移動量に相当する数のカウントを伝えており、100スクロールしたくらい一瞬で動きます。

加えて、2本指タップと誤認識されないためか、一定量動かした後にスクロールとする移動量が設定されており、ちょっと反応まで遅いように感じました。

また、2本指タップで指摘した、指を近づけすぎると1本指として認識する現象も同じく起こり、ある程度指を離して利用する必要があります。

ほか

他にスワイプなどのジェスチャに対応していますが、特に検証はしていません。

チューニングする

2本指を近づけすぎるとダメな問題は解決できる気がしませんでした(タッチセンサの問題)。

スクロールの移動量をチューニングすることにしました。

2本指スクロールが最初の認識されるまでの移動量を調整

こちらはパラメータ化されており、config.h記述することで調整できました。初期値50から10に減らしました。

# keyboards/sparrowxxt/config.h
#define AZOTEQ_IQS5XX_SCROLL_INITIAL_DISTANCE 10

2本指スクロールの移動量

2本指スクロールの移動量の制御を加えました。このあたりは、SparrowDialを作る時にもチューニングしたので、同じように割合で減らすようにしました。以下のコードは移動量を3%に減らすようにしたものです。keymap.c内に実装しました。

# keyboards/sparrowxxt/keymaps/default/keymap.c

#define SCROLL_SCALE_PERCENT 3

int32_t scroll_amount_h = 0;
int32_t scroll_amount_v = 0;

report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
    scroll_amount_h += mouse_report.h * SCROLL_SCALE_PERCENT;
    scroll_amount_v += mouse_report.v * SCROLL_SCALE_PERCENT;
    int8_t h = scroll_amount_h / 100;
    int8_t v = scroll_amount_v / 100;
    scroll_amount_h -= h*100;
    scroll_amount_v -= v*100;

    mouse_report.h = h;
    mouse_report.v = v;
    return mouse_report;
}

これでびゅっと動いてしまうことはなくなりました。

どんな評価をしたか

ポインターとしては精度が良いと思いました。特に苦もなく、OSの移動量が多い時はさらに移動量を多くする機能などともうまく動きそうだと思いました。

2本指スクロールには難があります。そもそもTPS43の43x40のサイズでは2本指を動かす操作はあまり快適ではないと感じました。なので、Lenovo Trackpointの下部にあるようなクリック、スクロールボタンを併用する形の方が、サイズ的にも使いやすいように思いました。

残課題

まだ研究が必要と思ったのは2点です。

1つは固定の方法です。特にネジ穴があるようなデバイスではないため、接着で付けるしかありません。3Dプリンタで土台を作って接着することになると思います。

もう1つは、操作する面の処理です。操作する面はむき出しの基板に両面テープが付いており、何かをかぶせる必要があります。試しに2mmアクリルを乗せてみましたが、操作は貫通しませんでした。クリアフォルダーに貼ってみたところ貫通しました。タッチパネルの上に貼って良く、さらに触った感触の良い素材を見つける必要があります。

まとめ

I2CトラックパットデバイスをQMK Firmwareで使う方法と簡単なチューニング、その操作感の感想を紹介してきました。

安価に手に入り、組み込みも簡単なのもあって、今後分割キーボードの片方に組み込むことも考えてみたいと思います。

こんな感じで使えるTrackPointがあればいいのに……。

3Dプリンタで、蓋付き基板ケースを作る

tl;dr

  • 屋内に設置するために、インテリアとなるべく溶け込めるようにケースを作ったよ。画鋲で留めるよ。
  • ケースを作るときに、下部の端が変形してしまうので、プリムを付けていれば多少良くなるよ。プリムから出るバリは、デザインナイフで切り取っているよ。
  • プラスチックは曲がるので、爪を作って蓋を留めるようにしたけど、柱が弱くてポキッとなってしまうよ
  • ケースを基盤に留めるには、適切なサイズの穴を開けておけばネジ止めできたよ
  • 雑にはめ込みタイプの蓋を作ったら良かったよ。丁度の寸法でもプラスチックだから収まるのと、積層痕がツメとなってうまくかみ合ったよ。

先に完成したケースと設置写真

今ESP32-C3を使ったGroveを3ポート持つIoT Serverを作って、リビングクーラー、寝室クーラー、TVに設置しています。

ケースを作ることで、電子基板むき出しよりも、インテリアに溶け込む感じがして良いですね。

使用している3Dプリンタ

AmazonのセールでAnker M5Cをセールで¥48,993で購入してから、とても扱いやすく活用しています。 今であればBamboo A1 Miniでしょうが、しばらくこれを使い続けることになりそうです。

ケースを変形させないように

ケースの下部の端の部分は、収縮が発生して曲がってしまうことがありました。小さい部品であれば、地面から剥がれてしまい、もじゃが発生することがありました。

これに対して、AnkerMake Studioではスライス時に「プリム」をつけることができます。プリムは地面への接着量を増やしてくれます。

緑色がプリムの部分

現在、作るものの大きさによって変えていますが、以下の設定にしています。

  • プリムタイプ: 外側プリムのみ
  • プリム幅: 8mm
  • プリムとオブジェクトの間隔: 0.1mm

これで大抵はモジャらずに印刷できているようです。

バリの除去にはデザインナイフが使いやすい

これで発生したバリの除去には、デザインナイフを使っています。

カッターナイフよりも、手で持ちやすく、細かい作業がやりやすいように感じています。しかも、デザインナイフ自体カッターナイフなのですごく安いです。

基板をネジ留めするためにはただ穴があるだけでよさそう

基板をネジ留めするために、当初埋め込みナットをケースに埋め込もうと考えていました。

しかし、スタックチャンの製作で、タカヲさんのケースで様々なネジを直接3Dプリンタしたケースに直接ネジ留めして取り付けているのを体験しました。これにより、3Dプリンタのプラスチックであれば適切な穴を開けておけばネジ山の分凹んで留められるとわかりました。

では、どのサイズであれば良いのかを検証するために、様々なサイズを開けたものをプリントし、試しました。結果、うちの環境であれば、M2ネジに対して2.1mmの穴を開けておくと良いことがわかりました。

このときに使った3Dモデルはここにおいてあります。

github.com

これでPCBをケースにネジ留めすることができました。

蓋をネジなしに留めたいが、柱を立てるとポキッとなる

基板ケースの蓋を作るに当たって、蓋をネジ留めではなく、はめ込みで実現したいと思っていました。

構造としては、M5NanoC6で使われているようにツメで実現できないかと検討しました。M5NanoC6はネジが使われておらず、とてもシンプルな構造です。

M5NanoC6

プラスチックであれば多少変形するため、ツメの柱が少し曲がることで留められるようになると考えました。しかし、柱の構造がPLAでは弱くなってしまい、ポキッと折れてしまうことがあるため、強度と柔軟性のバランスを探してみようと思い検討しました。

小さいバッチの研究では、以下の寸法にていい感じの蓋ができました。

しかし、実際にケースとして運用してみると、簡単にポキッとなることが発生しました。利用しているフィラメントにもよるのでしょうが、これは実用に耐えないとなってしまいました。

雑にはめ込みの蓋を作る

印刷素材はプラスチックであり、多少は変形するので、丁度の寸法で作ってもはまったりするのではないかと考えました。

以下のような、垂直の面を作りました。モデル上は、蓋とケースの隙間はなく、ぴっちりとはまるようになっています。

これを印刷してはめたところ、少しきつい感じはしますが、問題なくはまりました。

そして、予想していなかったのですが、印刷したケースに積層痕があることで、積層痕同士がかみ合っているように感じました。これでより蓋として固定されるようになりました。

蓋を外すときも、手の爪を少し引っかけて力を込めれば外すことができ、良い加減でした。

この方法はモデルを作るときも、微妙な傾斜をつけたりツメをつけたりせず、単純でよく、簡単にできます。これは良い方法が見つかったと思いました。

RGB LEDのインジケータ

このケースで使おうと思っているボードにはRGB LED(SK6812MINI-E)が付いています。そのままでは眩しいため、裏から紙を貼ったところいい感じに光を表示するインジケータになりました。

今思えば、3Dモデル上で薄い部分を作っても良かったかもしれません。

ケースをつけて運用中

これで、オリジナルのESP32-C3ボードをはめて、家電に溶け込ませることができるようになりました。 冒頭でも紹介したとおり、すでに室内3箇所に設置して運用しています。

こちらのボードを作った経緯は、また別途記事にしたいと思っています。

便利すぎるIoTボードはBoothにて販売中

現在、こちらのボードおよびケースはBoothにて販売しております。良ければ手に入れてみてください。

74th.booth.pm

また、KiCad設計データ、ケースの3Dモデル自体は、GitHubで公開もしております。

github.com