「M5STAMP」タグアーカイブ

名前PICKERをアップデートした

2023/12/06追記

電池切れ。

2022/10/19追記

今日電池切れ。2022年6月に作ったので思った以上に長持ちした。電池一本でもよかったのかもしれないけど、電池本数減らしても厚みは減らせないから、逆に3本に増やしてもいいのかも。

用途も使い方も前回と同じ

あらかじめ登録された複数人の中からランダムに一名を指定するための装置。授業中に回答者を指定するために使うことを想定してます。

今回注力したところ

簡単に電池交換できることと、文字を大きく表示できるようにOLED2枚使いにしたところ。

前回のNamePickerはCR2032を使っていたのだけれど、ケースを開けて配線丸出しにしないと電池交換できなかった(LEDをもいだ効果か、3週間ぐらいは電池が持った様子)。

今回はできるだけ手軽に電池交換できるように、部品の入っている空間と電池の入る空間を分けて、スライド式で開けられる電池蓋をつけた。

また、前回は128×32のOLED1枚を使っていたけど、文字が小さすぎて名前がよく読めないという問題があったので、今回は128×64のOLEDを2枚組み合わせて使って、文字を大きく表示できるようにした。

LovyanGFXでつまづいた

実は前回も128×32のOLEDを使おうとしたときに、偶数行奇数行の描画順序の問題でつまづいて、らびやんさん(@lovyan03)にアドバイスいただいていたんだけど、今回は1つのマイコンで2枚のOLEDを扱おうとしたら最後にinitを読んだ方しか使えない問題でつまづいて、またまたアドバイス頂いた。

LovyanGFXでは、I2Cに使うピンを自由に選べるので、てっきりソフトウェア的なI2Cだと思い込んでいたんだけど、実はESP32のコードではハードウェアI2C(ESP32には2個あるらしい)を使っているとのこと。ただ、ESP8266向けのほうはソフトウェアでやってるので、そちらのコードを移植してくれば3つ以上のディスプレイも使えるかもとのこと。

前回も今回も、つぶやいた直後にアドバイス送ってくださってるんだけど、いったいどういう仕組みで監視しているのか……
ありがたや。

Fusion360もがんばった

今回はちょっと頑張ってモデリングした。趣味のロボット製作という本を参考にさせてもらって、ケースそのものだけではなくて、OLEDやボタン、電池など、内蔵される部品もモデリングしたり既存データを取り込んだりして、中身が見える状態でケースをモデリングした。

いつもはケースに組み込む部品のサイズだけをノギスで計って、その部品が配置できるだけの空間を空想しながらモデリングしてたけど、ちゃんと部品もモデリングすると、干渉するかどうかが正確にわかるので、格段にケースが作りやすかった。

最後に

今回、初めてFusion360で各パーツをコンポーネントとして定義した。(今まで全部1コンポーネント内に複数ボディとして作っていた……)

コンポーネントに分離すると、移動もできるし、色分けも簡単にできるし、アニメーションも作れる。ということで組み立てアニメーションも作ってみた。

今回は、Fusion360を活用できたので満足。

名前Pickerをつくった

OLEDとプッシュスイッチ2つ

用途

あらかじめ登録された複数人の中からランダムに一名を指定するための装置。授業中に回答者を指定するために使うことを想定してます。

使い方

右側の横長の枠部分が名前が表示される部分。左端の灰色のボタンがクラス切り替えスイッチ。水色ボタンはPickボタンで、Pushするたびに、現在選択中のクラスからランダムに一名の名前とふりがなと通し番号が表示される。

一度表示された名前は、クラス全員が表示されるまでは再表示されない。この仕様を実現するためには、クラスの全員に対して、ランダムに順番を割り当てておいて、それを順に表示していけばよいので、クラス切り替え時とクラス全員の名前表示が一巡したときに、現在選択されているクラス全員分の順番決め抽選を実施している。

今回注力したところ

今回は、「DeepSleep機能活用でハード的な電源スイッチをなくすこと」を目標にした。いちいち使い終わるたびに電源オフするのは面倒なので、電源スイッチなしで長時間駆動を実現しようとして頑張ってみた。

回路図をきれいに書く術を知りたい……

M5Stamp(ほかのM5シリーズも同じぽい)は、DeepSleep中はRTC部分だけ?が動いているらしい。変数を宣言するときにRTC用のRAMとして属性を宣言してあげると復帰後も変数の中身が保持されている。

Lang-shipさんのサイトがとても参考になった。

https://lang-ship.com/blog/work/esp32-deep-sleep/

ケースづくりノウハウ

こういう小物のケースを作るときには、いつも適当にFusion360をいじってるのだけど、毎回行き当たりばったりなのと、ボタンやマイコン、ケースのフタをうまく固定するような形状にできなくて、ホットボンドや接着剤だよりになってしまってるのが困りどころ。

先日、@ina_ani さんが投稿されていたLibreCADとOpenSCADを組み合わせるという方法が気になってる。

Fusion360も捨てがたい

今朝、Prusa用のエンクロージャーが発表されたというツイートから、いろいろ3Dプリンタ系のブログを見ていて、偶然見つけたのだけれど、電子辞書Hackで有名な@puhitakuさんの記事で紹介されていた「Fusion360でCAD設計を覚えよう」シリーズも気になる。

最後に

いつも通りとりとめのない記事になってしまったけど、とりあえず、今回のCR2032x2でどれぐらい電池が持つかが気になるところ。DeepSleep中の電流は当初0.35mAだったけど、M5StampのLEDを除去したら0.15mAになったので、(計算よく分からんけど)1週間以上は持つ、かな……

自作キーボード用の小さいマイコンボード候補

前回の投稿(もう3か月以上前・・・)の最後に、ATOM LiteだとDeep Sleepでも電池が持たなさそうなのでM5STAMPを試したいと書いた。

M5STAMP以外にも小さめのマイコンボードがある

BTキーボードにはM5STAMPがよさそうだけど、Seeed XIAO(無印?)とSeeed XIAO RP2040というのもちょっと気になる。Seeedのサイトをみると、XIAOのBLE対応版もあるみたい(日本未発売&OUT OF STOCKなので今のところ入手できなさそう)

仕様を表にしてみた

ItemPriceProgramming
Environment
ButtonUser LEDWifi
Bluetooth
USB interfaceMiscellaneousProcessorCoreStorageNet weightProduct size
M5Stamp
Pico Mate
$5.00Arduino
MicroPython
User ButtonRGB LED
(Neo Pixel x1)
2.4GHz
IEEE 802.11 b/g/n
(Max 150Mbps) /
Bluetooth V4.2
BR/EDR
BLE standard
noneESP32-PICO-D4
Datasheet
Xtensa LX6 (2 core)
@240MHz
SRAM 520KB
FLASH 4MB
2.6g18*24*4.4
mm
M5Stamp
C3 Mate
$6.00Arduino
(MicroPython)
User Button
Reset Button
RGB LED
(Neo Pixel x1)
2.4GHz
IEEE 802.11 b/g/n
(Max 150Mbps)
Bluetooth V5
TypeCESP32-C3
Datasheet
RISC-V (1 core)
@160MHz
ROM 384KB
SRAM 400KB
RTC SRAM 8 KB
FLASH 4MB
3.8g34*20*4.5
mm
Seeeduino
XIAO
$5.40Arduinonone
(リセット用のパッドあり)
RGB LED
(3Colors x1)
TypeCSAMD21G18
Datasheet
ARM Coretex-M0+ (1 core)
@48MHz
SRAM 32KB
FLASH 256KB
?g20*17.5*3.5
mm
Seeed
XIAO RP2040
$5.40Arduino
MicroPython
CircuitPython
Boot Button
Reset Button
RGB LED
(Neo Pixel x1)
(3Colors x1)
TypeCRP2040
Datasheet
ARM Cortex-M0+ (2 core)
@133MHz
SRAM 264KB
FLASH 2MB
?g20*17.5*3.5
mm
Seeed
XIAO BLE nRF52840
XIAO BLE nRF52840 SENSE
(IMUとマイク付き)
$9.90
($15.99)
Arduino
MicroPython
CircuitPython
Reset ButtonRGB LED
(3Colors x1)
Bluetooth V5TypeCNFC
Zigbee
Battery charging chip:
BQ25101
nRF52840
Datasheet
ARM Cortex-M4 (1 core)
@64MHz
SRAM 256KB
FLASH 1MB(on-chip)
FLASH 2MB(on-board)
?g21*17.5*?
mm

いつの間にかいろんなのが発売されてたのだな

こうやって並べて見比べてみると、XIAO BLEがバッテリ充電IC付きなので、この基板とバッテリだけあればなんでもできそう。品切れ状態なのが残念。あとこのXIAO BLE技適未取得機器なので日本で使うには総務省への特例申請が必要。

あとはM5Stamp PicoにはなかったUSB Type CのコネクタがM5Stamp C3にはついてるので書き込みが気軽にできそう。こっちはいろんなとこに在庫あるようなので買ってみよう。

最後に

年末年始の間に一個ぐらい記事を書こうとおもってたけど、マイコンの仕様表つくっただけで力尽きてしまった・・・