現代の生活はたくさんの優れた 機械 の上に成り立っています。 しかしこの素晴らしい 機械 たちに囲まれるだけでは、何か足りないと考えました。 そして、柔らかく癒しを与える存在を、観葉植物などの自然なものではなく、Tech 要素を使用したもので追加したかったからです。
ロボットと Web アプリを作成しました。 これらは、Bluetooth 通信を使用して相互にメッセージを送ることができます。 そしてこのメッセージの一部をロボットがぎこちない動作で書いてくれます。
人の生活に癒しを与えることができる。 コミュニケーションの機会を創出する。
任意の文字を書けるようにする。 現状は、すべてのパターンの書き方を算出することができていないので、これをすべて算出し、それぞれの文字を分解した時の書き方を再現する。
筐体設計
- 可愛い見た目になるようなコンパクトさと丸みを帯びたボディにした。
- 腕の部分は、逆向きに曲がらない設計かつ軽量化するために、肘の部分に爪楊枝を用いた設計を施し、細部まで細かく注力した。
- 電源周りに適切なコンデンサを挟むことにより、サーボモータのコイル部分で発生するノイズの対策を行うことができた。
- 多くの部分でハメあいと接着剤による組み立てを行なった。メリットとしてボルトやナットを使用していないので軽量化や手軽に作り変えることができるような自由度を得られた。デメリットとしては丈夫さが足りないという点が挙げられる。
ソフトウェア
- Aceternity UI コンポーネントを使用することで、スタイリッシュな Web のフロントを用意した。
- NimBLE という標準の 1/2 のサイズのライブラリを使用することにより、マイコンの少ないストレージやメモリに配慮したライブラリ選定を行うことができた。
通信部分
- Bluetooth の通信の仕組みにより、文字列を 0x00 形式で送信することによって、一回の通信量の削減と一書ごとに書けるように設計をした。
- 基本的なパターンのみマイコン側に書き込むことによって、Web に比べてデバックのコストがかかるマイコンのデバッグの負担を減らし、全体のデバッグのコストを削減した。
- また、Bluetooth Serial ではなく低電力消費の BLE を使用することによって、デバイスの発熱を抑えることができた。
- Web Bluetooth API
- 手計算した座標変換表
- Next.js
- React.js
- TypeScript
- Aceternity UI
- 油性ペン
- 爪楊枝
- ESP32 (マイコン)
- SG90 (サーボモータ)
- E-Paper Module (電子ペーパー)
- Ender v2 (3D プリンター)
- 一筆書きとなるように角度データを独自に算出したものを使用した。