コンテンツにスキップ

ハッカソンの技術選定 [ハードウェア編]

Author: Kazukichi
  • 各電子部品をはんだ付けしたり、ブレッドボード上に回路を組んだりするところから行っていた
  • 事前にある程度は検証していたものの、ハードウェアの専門家がいないことから、当日動作しないトラブルに見舞われることも多々あった
  • 当日、足りないものがあれば追加で部品を買いに行くというフローも発生しており、時間的なロスも大きかった
  • 汎用化できるシステムを構築していた時期もあったが、いわゆる「早すぎる抽象化」で統合が上手くいかなかった
  • エコシステムが成熟しており、豊富なセンサ、アクチュエータが利用できる
  • 接続や連携が簡単で、複雑な実装が発生しない
  • Webサーバとして起動でき、インターネット越しに操作することができる
  • 実質的にM5Stack一択(に見える)
  • 中国・深圳のM5Stackが開発
  • ESP32という有名なマイコンをベースにしている
  • Stack、Stick、Atomという3つのラインナップが主流だが、今回はサイズ的な制約はあまりないことから、最もエコシステムが成熟しており、スペックも高いStackシリーズを採用
  • Stackシリーズの中でも、2023年に発売開始されたM5Stack CoreS3では本体に複数のセンサが統合されているため、こちらを選定(1万円ほど)
  • 追加でセンサ・アクチュエータが必要な場合にはUnit(M5Stack純正のモジュール)かサードパーティ製のモジュールをGroveという規格(コネクタ形状はHY2.0-4P)で接続するのが一般的

CoreS3本体に用意されているセンサ

Section titled “CoreS3本体に用意されているセンサ”
  • カメラ
  • 加速度センサ
  • ジャイロセンサ
  • 磁気センサ
  • 光センサ
  • 赤外線センサ
  • マイク
  • 他にもスピーカーやディスプレイといった出力も備えるが、アクチュエータは統合されていない
  • 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等)を使用する想定

インターネットに公開するには

Section titled “インターネットに公開するには”
  • MicroPythonでもC++でもWebサーバを立てることはできそう
  • しかし、そのままではLANを越えられない
  • フロントエンドを同一LAN内に配置する or ngrokCloudflare Tunnelを使ってインターネット上に公開する
  • まずは本体に統合されているセンサ類を検証し、 うゆぷんラヂオ に検証結果をまとめていく
  • インターネット越しに操作できることも確認しておきたい
  • 別途、必要になりそうなセンサやアクチュエータも洗い出し、検証を進めていく予定