概要
久しぶりにM5StickC用のハットが発売されましたので購入してみました。Groveポートとサーボ用端子の拡張になります。
商品
- STM32F0 サーボドライバ (スイッチサイエンス)
- C-Back HAT with Servo Driver (STM32F0)(公式ストア)
ブログを書いて、公開までの間に日本でも販売されました。ちょっと日本語だとわかりにくい商品名ですね。あと商品名からわかると思いますがSTM32F0が中に入っていて、HAT端子の拡張を行っています。

結構小さいケースに入っています。

上記が入っていました。ちなみに一度取り出すと中にしまうのが難しい系です。斜めじゃないと入らない部品が多いんですよね。

こんな感じに組み立てて使います。レゴ穴が追加されるのと、一番右側のネジ穴で本体と固定します。ネジ穴があるのは比較的後期型のみなので、古いM5StickC本体だと利用できないかと思います。
この構造はよくできていて、上の状態だとぜんぜん固定できないように思えますがHAT端子に刺すことできれいに固定されるようになっています。

こんな感じで端子が強化されています。

本体を付けたところです。

横からです。サーボが4ポートありますね。

こんな感じになります。
Groveポート
PORT A(I2C)
| SCL | SDA | 5V | GND | |
| ESP32 | GPIO26 | GPIO0 | 5V | GND |
| STM32 | PA9 | PA10 |
ハットの26と0をI2Cとして利用して、そのままPORT Aにも接続しているようです。
PORT B(I/O)
| IN | OUT | 5V | GND | |
| ESP32 | GPIO36 | 5V | GND | |
| STM32 | PA5 | PA4 |
PORT BのIN端子はGPIO36に接続されていますのでADCを利用したアナログ入力が可能です。OUT端子はSTM32に接続されていますのでI2C経由で制御することになると思います。
サーボポート
| CH1 | CH2 | CH3 | CH4 | V | G | |
| ESP32 | BAT | GND | ||||
| STM32 | PA0 | PA1 | PA2 | PA3 |
サーボはSTM32経由で制御されます。電圧はBAT端子なので電源OFFでも供給され続けますのでご注意ください。
使い方
上記にスケッチ例が追加されていました。まだリリースされていないと思いますが次回リリース時に標準ライブラリに追加されるはずです。
void Init(); //sda 25 scl 21
uint8_t SetServoAngle(uint8_t Servo_CH, uint8_t angle);
uint8_t SetServoPulse(uint8_t Servo_CH, uint16_t width);
uint8_t ReadServoAngle(uint8_t Servo_CH);
uint16_t ReadServoPulse(uint8_t Servo_CH);
uint16_t ReadADC();
uint8_t SetOutput(uint8_t status);
uint8_t ReadInput();
サポートしている関数は上記みたいですね。サーボはSG90の場合にはAngleで直接角度指定が可能です。それ以外の場合にはPulse系の関数を利用してPWM周波数を指定してあげてください。
I/O系はSTM32でもADCが使えるようですね。出力は0と1なのでDACやPWMはないのか。。。
あと残念ながら現状はUIFlowでは使えないようです。
まとめ
4chまでのサーボであれば非常にかんたんに使えるHATですね。本体側のGroveポートが残っていますので、そちらでユニットで拡張も可能です。
サーボハットもありますが、バッテリー搭載していたりとちょっとごついんですよね。こちらのC_BACKハットは結構よくできていると思います。




コメント