19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

obnizAdvent Calendar 2019

Day 6

obnizでゴミ箱の蓋を動かした

Posted at

この記事の内容

obniz advent calender 2019の6日目
・LINE Thingsとobnizとサーボモータでゴミ箱の蓋を動かした
・作ったプロダクトや、詰まったポイントを紹介

機器情報

OS更新サボってます(ごめんなさい)。今から使う人は最新版を使ってください。

・obniz(v1.1.0)
・obniz.js(v1.16.1)
・サーボモーター(GWServo S03TXF/STD/J)

作成したプロダクト

5月末に大阪で開催されたデジットハッカソンにて、その場で結成されたチームの5人で作成しました。

未来ゴミ箱

維持費を自分で稼ぐゴミ箱。電子決済、自走、ログ収集機能を備えています。
71912200_433881360570942_6423214773323694080_n.jpg

構成図

決済系、制御系、センサ系に分けて実装しました。
mirai_pay_icon-1024x490.png

詳細

以下、ブログにて紹介されてますのでご覧ください。

obnizの使用部分

LINE Thingsと連携して、フタを開け閉めする部分にobnizを使いました。使った理由は、サーボモーター用にはんだ付けしたくなかったからです。(当方ネットワークエンジニア)

物理構成

obnizにサーボ直繋ぎしました。電源はモバイルバッテリーです。
フレーム-07-10-2019-10-09-23.png
フタの中に収めるとこんな感じです。シリコンケースの中にobnizがあります。
dZn2K2vmQXy4vEV%ErzdtA.jpg

参考にした記事

LINE Thingsは各地でハンズオンがあり、資料もたくさんあります。

obnizとの連携はこのあたりを参考にしました。

コード

LINE Thingsとの連携はGitにあるので割愛します。以下はいずれも obniz.onconnect = async functionの中です。サーボの電源をon/offしてるのは節電です。

サーボモーターの準備

  var servo = obniz.wired("ServoMotor", {gnd:0, vcc:2, signal:4});
  servo.off();

フタの開け閉め

  writeCharacteristic.onwritefromremote = function(address, newvalue) {
    if (newvalue[0] <= 1 ) {
      obniz.display.clear();
      if ( newvalue[0] == 1 ) {
        servo.on();
        servo.angle(90);
        obniz.display.print("Open");
        obniz.wait(1000);
        servo.off();
      } else {
        servo.on();
        servo.angle(15);
        obniz.display.print("Close");
        obniz.wait(1000);
        servo.off();
      }

BLE通信終了時にフタを閉める

  obniz.ble.peripheral.onconnectionupdates = function(data){
      console.log("remote device ", data.address, data.status);
      servo.on();
      servo.angle(15);
      obniz.wait(1000);
      servo.off();
  };

嵌ったところ

BLE通信終了時にフタを閉める?

BLE通信終了時にフタを閉める処理をobniz.oncloseに書いてました。obnizとの通信が切れてる状態なので、サーボの制御ができませんでした。代わりにobniz.ble.peripheral.onconnectionupdatesを使うと上手くいきました。LIFF終了時に呼び出されて、その後またすぐ繋がるような動作をしてますが、まぁ良しとします。

サーボモータに過電流?

obnizにサーボモータを直接接続すると「output voltage is too low when driving high」というエラーが出て上手く動きませんでした。調べると過電流の検知のようで、ブレッドボード上の配線くらい、小さな抵抗を挟めば大丈夫なようです。はんだ付けしたくなかったので、抵抗の代わりに延長コードを使いました。概ね、上手くいってます。(接触が良すぎる場合は、グラグラさせて接触不良にしてます)

Wi-Fi、BLE、飛びまくり!

ハッカソンのタッチアンドトライや、各展示会ではWi-Fi・BLEが飛びまくりで、LINE Things - obnizは10回試せば3回動くくらいの不安定さでした。KeiganMotorのBLEは安定してましたので、フタの内部に収めているのが問題かもしれません。obnizOS v2.1.1で、BLE通信の改善がされたようなので期待です。

カバーどこに売ってるの!?

ネットで調べると個人制作のカバーがいくつか見つかります。そこそこ良いお値段(カバー2個でobniz買えちゃう)するので、適当なシリコンケースを買って収めました。両面テープが全然くっつかなくて大変でした。放熱も心配です。良いケースが公式で売られると嬉しいな。

展示会場ごとにwi-fiを再設定...

未来ゴミ箱は色んな展示会に出したのですが、その度にWi-Fi設定変えるのは中々しんどかったです。また、Free Wi-Fiの認証あるパターンだと接続に失敗します。モバイルルータやスマホのテザリングでいつも同じSSID・パスワードだと便利です。

まとめ

電子工作の知識やプログラミングの知識が乏しくても、obnizなら何とか動きます。

19
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?