「OLED」タグアーカイブ

名前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週間以上は持つ、かな……