Apple Watch から BLE でサーボモーターを動かす!(PythonとSwift)

botman_green Pythonとかラズパイ

Raspbian-10 Python-3.7.3 watchOS-7.1 Swift-5.3

はじめに

前回動かしたサーボモーターを Apple Watch から動かしたいと思います。

デジタル・マイクロサーボ SG90 (1個)

新品価格
¥440から
(2021/3/20 16:31時点)

ラズパイは Raspberry Pi 3 Model B です。
その他必要なやつ

オスメスジャンバ線3本を使いました。

配線

前回と同じです。
GPIO

公式ドキュメントから引用

  1. ジャンバ線1のオスをモーターの茶色に挿す。
  2. ジャンバ線1のメスをラズパイの 5V 横の GND に挿す。
  3. ジャンバ線2のオスをモーターの黄色に挿す。
  4. ジャンバ線2のメスをラズパイの GPIO14 に挿す。
  5. ジャンバ線3のオスをモーターの赤色に挿す。
  6. ジャンバ線3のメスをラズパイの 5V に挿す。

ラズパイ側の設定

コードを書いていきます(なんとなく pipenv 使います)。

  1. SSH 接続する。

  2. 必要なものを入れていく(実行時にパーミッションエラーになったので sudo でやってます。よくわかってない。。。)。

  3. i と入力し入力モードにする。

  4. 下記ソースをコピペする。

Watch側の設定

watch 側のコードを書いていきます(L チカやってたので名称がそのままになってます)。

  1. Xcode の新規プロジェクト作成で「Watch App」を選択する。
  2. Storyboard で InterfaceController を下記のように設定する。
    watch
  3. Watch Kit の info.plist に NSBluetoothAlwaysUsageDescription キーを追加する。
  4. InterfaceController.swift に下記をコピペする。

起動

ラズパイ側で下記コマンドを実行する!

Watch のアプリを起動して Scan ボタン押下、Connect ボタン押下、スイッチ操作でモーターが動きます!

ちょっと工夫

よくあるモーターを動かして電気を消灯したりするやつをやってみたい!と思いやってみました。

追加で用意するもの。

  • そのへんにあった 100 t ハンマーの上の部分
  • 綿棒
  • シャーペンの消しゴム
  • セロハンテープ

items

完成品(ポイントは力を面から点にしているとこです)。
watch 操作 -> サーボモーターが動く -> エンター押下 -> Slackにメッセージ送信

おわりに

これで Apple Watch(iPhone でも可)からモーターを動かすことができるようになりました。遊びの幅が広がりそうだけど何も思いつかない。。。

参考

コメント

  1. Masaki より:

    記事の内容、とても参考になりました。node.jsでサーボモーターが動かなくて困っていましたのでとても助かりました。
    ただ、分からないことがありまして…、ラズパイ側のコード(sarvo.py)をラズパイ起動時に自動実行できますでしょうか。pipenvで書かれたコード、いろいろ試したのですが、自動実行がうまくいきませんでした…。
    もし、すでに実装されているようでしたら、教えて頂きたいです。宜しくお願い致します。

    • am10 am10 より:

      Masakiさん
      コメントありがとうございます!
      起動時に自動実行はまだやったことありませんが下記記事は参考にならないでしょうか?
      [Qiita-ラズパイ起動時にスクリプトを実行したい](https://qiita.com/ikemura23/items/6f9adce99a3db555a0e4)

      このシェルスクリプトの中身を書き換えれば動きそうな気がします!

      • Masaki より:

        早速のご返事ありがとうございます。
        自動起動させることができました。

        仮想環境が入ると、/rc.localやsystemdで、試していたのですがうまくできず困っていました。(直接、パイソンを動かそうとしていました。)
        もういっそうのこと、「ターミナルを自動起動させて、そこで、自動でフォルダ移動とプログラムの実行を行えないかな」という、初心者的思考で調べを進めると、シェルに行きつきました。(実際、初心者ですので…シェルも今日知りました。(・_・;))

        今回は、こちらを参考に、ターミナルを起動する方法で自動起動させました。
        (https://qiita.com/tonosamart/items/f59daa481f90c85a8a99)

        ご指摘頂いた方法ですと、ターミナルは開かれないのかな?でしたら、そちらのほうが良いかもですね。

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