編集履歴一覧に戻る
suzan_worksのアイコン画像

suzan_works が 2021年05月19日21時42分46秒 に編集

修正、追記

記事種類の変更

+

製作品

本文の変更

## 全体まとめ obnizを使って、スマホからカーテンを操作するデバイスを作ってみました。 obnizはどのI/Oからも1A流せて、モータードライバーに最適だと思って、あと、自分はプログラミングは不慣れなので、ブラウザからブロックプログラムでさくっとプログラミングしてみました。 今回は実装し切れませんでしたが、obniz Board 1Yでスリープ使えば、もっと長時間動作できそうですね。

+

簡単な回路、簡単なプログラミングで動くものが作れて、ものづくりの敷居が下がって、obnizはとてもありがたいです。良い経験、勉強になりました。

+

## デモ動画 まずは動作の動画を見てみてください。 簡単な部品説明もしてます。 @[youtube](https://youtu.be/t4lRvJeOVNQ) ## 使用部品 obnizでタミヤのモーター回してるのがメインの構成です。 プロトタイプな感じで、結束バンドとか使っちゃってます。

-

タミヤのユニバーサルプレートに電池ケースが無加工で良い感じに固定できました。

+

電池ケースが、タミヤのユニバーサルプレートに無加工で良い感じに固定できました。

|アイテム|数量|用途| |:---|:---|:---| |obniz Board 1Y|1|全体制御| |タミヤ ダブルギアボックス (左右独立4速タイプ)|1|動力| |タミヤ ユニバーサルプレート|1|車輪や電池ボックスを固定| |単3電池|3|電源| |電池ボックス|2|2本セットを2個使って電池3本搭載| |結束バンド|1|カーテンレールへ固定|

-

![全体外観](https://camo.elchika.com/226a8c86359e9af760ef181a1d7246e9cd3a4c25/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f39333231653765352d613635342d343930622d386130302d313032383237313134366163/)

## 回路図、接続

-

回路こちら回路図

+

回路、単3乾電池3本を直列にobnizに入力して、モーター2個をobnizの4ポートにつないでいますアルカリ乾電池は初期電圧は3.0V超えると思いますけど、2本ではobniz Board 1Yは起動しませんでした。

![回路図](https://camo.elchika.com/376aaf9853915a2ab8c0758a24395a75cb5700d0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f64386462633439312d343061362d343462392d383235322d346435656665313935326539/)

+

接続はこんな感じです。 obnizにはピンを挿して、電池ボックスとモータははんだ付けしました。

+

![接続、外観](https://camo.elchika.com/226a8c86359e9af760ef181a1d7246e9cd3a4c25/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f39333231653765352d613635342d343930622d386130302d313032383237313134366163/)

## ソースコード

-

#### ブロックプログラム

+

### ブロックプログラム

-

ソースコードはこち

+

[開発者コンソール](https://obniz.com/ja/console)かブロックプログラムプログラミングしました「カーテン開」「カーテン閉」の他に、タイマーで開く機能も作ってみました。

![ブロックプログラム1](https://camo.elchika.com/57e2458f71d336a179960d1b3996e731377c233c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f34613931366238612d333332322d343539652d383264652d393664633162326366383763/) ![ブロックプログラム2](https://camo.elchika.com/857d5787641991392eed292be1e4aa9d698abed7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f39343036646362362d386464372d343538642d393764392d663763373266636233666265/)

-

#### コード (コンソール>ファイル>コードをる 確認)

+

### スマホ操作画面 スマホのブラウザからた操作画面はこんな感じす。 とりあえず文字とボタン置いただけすいせん。 ![スマホ操作画面](https://camo.elchika.com/cbc6bdabad2ebd0db80928a7a47683cf68193e65/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f39393432383530652d653361662d346339362d626433302d3038353237623031663263382f34636166643539662d623735652d346337312d623133332d386362613333383062353830/)

+

### コード ブロックプログラムで作成しましたが、一応コードも載せときます。 コンソール>ファイル>コードを見る で確認できます。

```html:カーテン開閉くん <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous" ></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous" ></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" /> </head> <body> <h3 id="bploading" style="text-align:center;">LOADING...</h3> <div id="OBNIZ_OUTPUT"></div> <br /> <script src="https://unpkg.com/obniz@latest/obniz.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/iothome/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/airobot/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ui/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/howler2.1.2/howler.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/opencv3.4/opencv.js" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@3.3.0"></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@2.1.0"></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/posenet@2.2.2"></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/clmtrackr.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotion_classifier.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotionmodel.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/model_pca_20_svm.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.16.0/storage/index.js" crossorigin="anonymous" ></script> <script> $("#bploading").text("RUNNING..."); (async function(){ var obniz, timer_hour, motor1, motor2, label, open2, close2, label1, label2, label3, up, down, start; obniz = new Obniz('7164-4056'); await obniz.connectWait(); timer_hour = 6; motor1 = obniz.wired("DCMotor",{"forward":0, "back":1}); motor2 = obniz.wired("DCMotor",{"forward":2, "back":3}); label = new ObnizUI.Label('label'); label.setText('カーテン開閉'); open2 = new ObnizUI.Button('開く'); close2 = new ObnizUI.Button('閉じる'); label1 = new ObnizUI.Label('label'); label1.setText('タイマー'); label2 = new ObnizUI.Label('label'); label2.setText(timer_hour); label3 = new ObnizUI.Label('label'); label3.setText('時間後に開く'); up = new ObnizUI.Button('↑'); down = new ObnizUI.Button('↓'); start = new ObnizUI.Button('タイマー開始'); while (true) { await ObnizUI.Util.wait(0); if (close2.isClicked()) { motor1.move(true); motor2.move(true); await obniz.wait(23000); motor1.stop(); motor2.stop(); } if (open2.isClicked()) { motor1.move(false); motor2.move(false); await obniz.wait(2300); motor1.stop(); motor2.stop(); } if (up.isClicked()) { timer_hour = (typeof timer_hour == 'number' ? timer_hour : 0) + 1; label2.setText(timer_hour); } if (down.isClicked()) { timer_hour = (typeof timer_hour == 'number' ? timer_hour : 0) + -1; label2.setText(timer_hour); } if (start.isClicked()) { await obniz.wait((timer_hour * 3600000)); motor1.move(false); motor2.move(false); await obniz.wait(23000); motor1.stop(); motor2.stop(); } } })(); </script> </body> </html> ```

+