コンテンツにスキップ
- 前回、前々回と技術選定を行ってきた
- 今回も引き続き、技術選定を行う
- 今回は主にハードウェアについての技術選定を行う
- 各電子部品をはんだ付けしたり、ブレッドボード上に回路を組んだりするところから行っていた
- 事前にある程度は検証していたものの、ハードウェアの専門家がいないことから、当日動作しないトラブルに見舞われることも多々あった
- 当日、足りないものがあれば追加で部品を買いに行くというフローも発生しており、時間的なロスも大きかった
- 汎用化できるシステムを構築していた時期もあったが、いわゆる「早すぎる抽象化」で統合が上手くいかなかった
- エコシステムが成熟しており、豊富なセンサ、アクチュエータが利用できる
- 接続や連携が簡単で、複雑な実装が発生しない
- Webサーバとして起動でき、インターネット越しに操作することができる
- 実質的にM5Stack一択(に見える)
- 中国・深圳のM5Stackが開発
- ESP32という有名なマイコンをベースにしている
- Stack、Stick、Atomという3つのラインナップが主流だが、今回はサイズ的な制約はあまりないことから、最もエコシステムが成熟しており、スペックも高いStackシリーズを採用
- Stackシリーズの中でも、2023年に発売開始されたM5Stack CoreS3では本体に複数のセンサが統合されているため、こちらを選定(1万円ほど)
- 追加でセンサ・アクチュエータが必要な場合にはUnit(M5Stack純正のモジュール)かサードパーティ製のモジュールをGroveという規格(コネクタ形状はHY2.0-4P)で接続するのが一般的
- カメラ
- 加速度センサ
- ジャイロセンサ
- 磁気センサ
- 光センサ
- 赤外線センサ
- マイク
- 他にもスピーカーやディスプレイといった出力も備えるが、アクチュエータは統合されていない
- CoreS3には3つのGroveポートが用意されており、それぞれPort.A(I2C)、Port.B(GPIO)、Port.C(UART)となっている
- 他にも、M-Busと呼ばれるピンが底面に配置されているため、こちらを使うこともできる(が、Groveほど簡単ではない)
- モジュールの通信プロトコルがI2Cの場合はカスケード接続が可能なため、基本的には枯渇することはないはず
- それ以外の通信プロトコルの場合は枯渇する可能性があるが、拡張するハブが別途用意されているため、そちらも利用できる
- バッテリー駆動だが容量が500mAhと少ないため、1〜2時間の連続稼働が限界
- 充電しながら使ったほうが基本的には良さそう
- サーボ等のアクチュエータを接続する場合は別途、外部電源を取ったほうが良さそう
- 主に3種類の開発言語がある
- UIFlow
- GUIでプログラミングができるプラットフォーム
- GoogleのBlocklyベース
- MicroPythonのコードとして出力可能
- MicroPython
- Pythonからいくつかの機能を削除し、組み込み向けの機能を追加した言語
- C/C++
- 基本的にはMicroPythonで開発し、それで対応しきれない部分はC++で書くという戦略にする予定
- エディタはArduino IDEか、VSCode向けの拡張(PlatformIO等)を使用する想定
- MicroPythonでもC++でもWebサーバを立てることはできそう
- しかし、そのままではLANを越えられない
- フロントエンドを同一LAN内に配置する or ngrokやCloudflare Tunnelを使ってインターネット上に公開する
- まずは本体に統合されているセンサ類を検証し、 うゆぷんラヂオ に検証結果をまとめていく
- インターネット越しに操作できることも確認しておきたい
- 別途、必要になりそうなセンサやアクチュエータも洗い出し、検証を進めていく予定