M5Stack M5StickC用C-Back HAT(A100)

概要

久しぶりにM5StickC用のハットが発売されましたので購入してみました。Groveポートとサーボ用端子の拡張になります。

商品

ブログを書いて、公開までの間に日本でも販売されました。ちょっと日本語だとわかりにくい商品名ですね。あと商品名からわかると思いますがSTM32F0が中に入っていて、HAT端子の拡張を行っています。

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

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

こんな感じに組み立てて使います。レゴ穴が追加されるのと、一番右側のネジ穴で本体と固定します。ネジ穴があるのは比較的後期型のみなので、古いM5StickC本体だと利用できないかと思います。

この構造はよくできていて、上の状態だとぜんぜん固定できないように思えますがHAT端子に刺すことできれいに固定されるようになっています。

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

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

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

こんな感じになります。

Groveポート

PORT A(I2C)

SCLSDA5VGND
ESP32GPIO26GPIO05VGND
STM32PA9PA10

ハットの26と0をI2Cとして利用して、そのままPORT Aにも接続しているようです。

PORT B(I/O)

INOUT5VGND
ESP32GPIO365VGND
STM32PA5PA4

PORT BのIN端子はGPIO36に接続されていますのでADCを利用したアナログ入力が可能です。OUT端子はSTM32に接続されていますのでI2C経由で制御することになると思います。

サーボポート

CH1CH2CH3CH4VG
ESP32BATGND
STM32PA0PA1PA2PA3

サーボは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ハットは結構よくできていると思います。

コメント

タイトルとURLをコピーしました