はじめに
自分が子供の時にできそうでできなかった
・LEDを「ボワーン」と光らせる
・サーボモータの制御でモノアイを操作する
を身近にあるプラモデルでやってみたかったのでやってみました。
使い方
スイッチ入れるとLEDをPWM制御で行い、モノアイを「ボワーン」+「チカチカ」します。
(PWMで制御することでいわゆる「Lチカッ」よりもアナログな感じになります。
その後はスマホのブラウザに表示されるリモコンでモノアイを左右に移動します。
おまけで、モールス信号?ができるようにボタンも用意しまいした。
デモ動画
材料
品名 | 価格(円) | 数量 | 備考 |
---|---|---|---|
obniz | 6090 | 1 | |
ドムヘッド | 500 | 1 | オルテガとか乗っているものが欲しければもっとかかるかも。 |
サーボモータ(FEETECHサーボFS0307) | 580 | 1 | obnizから電源供給されました。 |
おゆまるくん | 100 | 1 | サーボモータを固定用に使いました。 |
表面実装用白色LED(リード付) | 40 | 1 | |
抵抗330(Ω) | 0 | 1 | 電子工作入門キットに入っていたもの。 |
合計 | 7330 | 消費税含んでいるかは定かではありません。 |
※使用した道具代が入っていません。
・はんだ使いましたので、はんだ付け用の一式必要になります。
・各所穴あけ用にピンバイスを使いました。
回路図
回路だけだと以下のような感じです。
ドムヘッドの中にLEDとサーボモータを埋め込みました。
モノアイ制御(LED制御とサーボモータ制御)
<html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <link rel="stylesheet" href="/css/starter-sample.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.14.0/obniz.js" crossorigin="anonymous" ></script> </head> <body> <div id="obniz-debug"></div> <h1>ドムヘッド</h1> <div> <input id="slider" type="range" min="15" max="70" value="45" /> <p>現在の値は<span id="current-value"></span>です<br></p> <button class="btn btn-primary" id="morse">morse</button> </div> <script> const inputElem = document.getElementById('slider'); // input要素 const currentValueElem = document.getElementById('current-value'); // 埋め込む先のspan要素 // 現在の値をspanに埋め込む関数 const setCurrentValue = (val) => { currentValueElem.innerText = val; } // inputイベント時に値をセットする関数 const rangeOnChange = (e) =>{ setCurrentValue(e.target.value); } window.onload = () => { inputElem.addEventListener('input', rangeOnChange); // スライダー変化時にイベントを発火 setCurrentValue(inputElem.value); // ページ読み込み時に値をセット } //io:pin0 led アノード //io:pin1 led カソード //io:pin2 サーボモータ gnd 配線注意 //io:pin3 サーボモータ vcc 配線注意 //io:pin4 サーボモータ signal var obniz = new Obniz("OBNIZ_ID_HERE"); obniz.onconnect = async function () { //サーボモータ用 var servo = obniz.wired("ServoMotor", {gnd:2, vcc:3, signal:4}); servo.angle(50.0); //io起動 モノアイ用 obniz.io1.output(false); await obniz.wait(3000); var pwm_red = obniz.getFreePwm(); pwm_red.start({io:0}); //await obniz.wait(5000); //モノアイ点灯 //ぼわーんと光ったあと チカっとする×2 const red_val = 0; for(let i=0; i<80; i++){ pwm_red.duty(red_val+i); await obniz.wait(100); } await obniz.wait(1000); pwm_red.duty(100); await obniz.wait(200); pwm_red.duty(0); await obniz.wait(200); pwm_red.duty(100); await obniz.wait(200); pwm_red.duty(0); await obniz.wait(200); pwm_red.duty(100); //サーボモータ制御 $("#slider").on('input', function() { servo.angle($("#slider").val()) pwm_red.duty(100); }); //モールス信号 // $("#morse").on("touchstart mousedown", () => { $("#morse").on("touchstart", () => { pwm_red.duty(100); obniz.display.clear(); obniz.display.print('●'); }); // $("#morse").on("touchend mouseup", () => { $("#morse").on("touchend", () => { pwm_red.duty(0); obniz.display.clear(); obniz.display.print('-'); }); } </script> </body> </html>
ちなみに今回の損害
- サーボモータ1台:+と-逆につないで壊しました。サーボモータのケースが若干溶けて部屋が焦げ臭かった。
- 表面実装用白色LED(リード付):無理に引っ張ったらLEDとリード線のはんだ付け部分が切れました。
※電子工作は簡単に始められますが、一つ間違えると事故にもつながりますので、できる限りの注意をしたほうが良いです。
(「できる限り」と言われると難しいですが、きれいな部屋で換気よくやるのが良いと思います。)
おわりに
こんなご時世だからこそ、
部屋に引きこもってあれこれ考えてそれを形にする達成感があってもよいのではと思いました。
obnizは電子工作の初心者には本当に素晴らしいものです。
なによりもプラモデルとの親和性が高い。
電飾や可動をネット越しに簡単につなげていただける代物です。
遠隔操作の醍醐味を簡単に味わえます。
欲を言うとobnizのディスプレイ部分なくてよいので小型化のものもあるとよいなー。
-
rakutada
さんが
2021/05/05
に
編集
をしました。
(メッセージ: 初版)
-
rakutada
さんが
2021/05/05
に
編集
をしました。
(メッセージ: デモ動画あとで上げますのカッコ書き削除)
ログインしてコメントを投稿する