⚙️

obnizでサーボモータを制御(SG90)

2023/08/24に公開

電源ピンを利用するためobniz Boardではなく、obniz Board 1Yでの説明になります。

1. サーボモーター

小規模なIoTでもっともよく使われる「アクチュエータ」の1つです。 通常のモーターは電流を流すと回転し続けますが、サーボモータは特殊な電流を流すことで任意の角度を指定して回転させることができます。

設定可能な最大角度・回転トルク(強さ)・設定角度の細かさなどは、サーボモータの性能によって大きく変わってきます。

今回はホビー用途で使えて汎用的なモデルのSG90を利用します。

SG90
https://akizukidenshi.com/catalog/g/gM-08761/

2. 配線

このように青い本体とジャンパワイヤがついています。

ジャンパワイヤを3本用意します。色はなんでも良いですが、ここでは仮に白、赤、青を使って説明します。

以下それぞれ配線します。

  • サーボモーター側のジャンパワイヤ茶: ジャンパワイヤ白
  • サーボモーター側のジャンパワイヤ橙: ジャンパワイヤ赤
  • サーボモーター側のジャンパワイヤ黄: ジャンパワイヤ青

次にジャンパワイヤをobnizに接続します。

  • ジャンパワイヤ赤: obniz Board 1Yのプラスピン
  • ジャンパワイヤ白: obniz Board 1Yのマイナスピン
  • ジャンパワイヤ青: obniz Board 1Yの2ピン

最後に、回転してるかわかりやすいようにサーボにプラスチックパーツをつけましょう。(このパーツのことをサーボホーンといいます)

好きな形状のもので構いません。

3. JavaScriptプログラム(Node.js)

obnizの公式ドキュメントはこちらです。

https://docs.obniz.com/ja/sdk/parts/ServoMotor/README.md

任意のファイル名で.jsファイルを作成しましょう。

'use strict'

const Obniz = require('obniz');
const obniz = new Obniz(process.env.OBNIZ_ID);

obniz.onconnect = async () => {
    const servo = obniz.wired('ServoMotor', {signal:2});

    const main = async () => {
        servo.angle(0);
        await obniz.wait(1000);
        servo.angle(180); // half position
        await obniz.wait(1000);
    }

    setInterval(main, 1000);
}

実行結果

サーボモータが動いたらOKです。

補足

スライダー制御

公式のスターターガイドを元にスライダー制御を試すのも楽しいと思います。

https://docs.obniz.com/ja/guides/obniz-starter-guide/parts-library/servo-motor

旧型のobnizボードの場合

ちなみに、1Y以外の旧式obnizボードの場合は以下の公式サンプルを参考にしましょう。

配線とプログラム両方違うかつ、ブレッドボード中継をさせるという裏技が必要になる場合があります。

https://obniz.io/ja/lessons/lessons/lessons_servo_motor

Discussion