ponkotuのアイコン画像

スマートフォンから空調服制御

ponkotu 2021年04月25日に作成  (2021年04月25日に更新)

スマートフォンから空調服制御

はじめに

スマートフォンから空調服のDCモータを制御してみました.
また,温度センサーの値によって自動的に風量を変化させることもできます.
空調服がUSBの抜き差しでしか,電源を入れることができなかったため,
不便だと感じていたのですが,obniz boardを使うと簡単に製作できると思い作りました.

デモ動画

ここに動画が表示されます

動作

スマートフォンの画面は次のようになります.
スマートフォン画面

操作画面のManualとAutoを選択することにより,モータの動作が変わります.
各動作は以下の通りとなります.
・Manual:画面のスライダーに合わせてモータの出力を変更
・Auto:温度センサーの値を読み取って,モータの出力を変更
    (今回は25℃以上のときに出力80%,25℃より低いときは出力20%となっています.)

動作中はobniz boardに次の画像のようにモータの出力[%]と温度[℃]が表示されます.
obniz board画面

部品

部品 数量
obniz 1Y 1個
空調服(ファン2つ付き) 1着
USB-DC変換ケーブル(外径4mm内径1.7mm) 2個
MCP9700A 1個

回路図


空調服のモータは空調服に付いているコードではなく,
USB-DC変換ケーブルを使用します.
DC側はモータに接続し,USB側は一度切断し電源コードをobniz boardに接続します.

ソースコード

obnizプログラム

<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" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script> <style> /* div {display: inline-block; _display: inline;} */ /* #slider{ padding: 50px; } */ </style> </head> <body> <div id="obniz-debug"></div> <div class="text-center"> <button id="auto" type="button" class="btn btn-primary">Auto</button> <button id="manual" type="button" class="btn btn-secondary" disabled> Manual</button ><br /> </div> <div class="text-center"> Temperature: <temp id="temperature"></temp> </div> <div class="text-center"> MotorPower: <motor id="motorpower"></motor> </div> <div class="text-center"> <input id="slider" type="range" value="0" min="0" max="100" step="10" /> <script> const obniz = new Obniz("OBNIZ_ID_HERE"); const motorid = document.getElementById('motorpower'); const tempid = document.getElementById('temperature') motorid.innerHTML = "0"; tempid.innerHTML = "1"; let isAuto = false; let temp = 20; let slider_val = 0; // called on online obniz.onconnect = async function() { const motor1 = obniz.wired("DCMotor", { forward: 1, back: 0 }); const motor2 = obniz.wired("DCMotor", { forward: 3, back: 2 }); const tempsens = obniz.wired("MCP9700", { gnd:9 , output:10, vcc:11}); motor1.power(0); motor2.power(0); motor1.move(true); motor2.move(true); //alternative button $('#auto').click((e) => { isAuto = true; $('#auto').prop('disabled', true); $('#manual').prop('disabled', false); }); $('#manual').click((e) => { isAuto = false; $('#auto').prop('disabled', false); $('#manual').prop('disabled', true); }); $("#slider").on('input', function() { // this function will be called when someone move a slider. slider_val = $("#slider").val(); }); setInterval(async function(){ //show power & temp obniz.display.clear(); obniz.display.print('Power:' + $("#slider").val()); obniz.display.print('Temp:' + Math.round(temp)); }, 1000); // called while online. obniz.onloop = async function() { //display power & temp motorid.innerHTML = $("#slider").val(); tempid.innerHTML = Math.round(temp); //choose auto if (isAuto){ if (temp > 25){ motor1.power(80); motor2.power(80); } else{ motor1.power(20); motor2.power(20); } } //choose manual else{ motor1.power(slider_val); motor2.power(slider_val); } }; //changed temprature tempsens.onchange = function(_temp){ temp = _temp; }; }; // called on offline obniz.onclose = async function() { //stop motor motor1.power(0); motor2.power(0); motor1.move(false); motor2.move(false); }; </script> </body> </html>

おわりに

スマートフォンから空調服のモータを制御できるようになり,
風量の調整ができるようになりました.
これで,USBの着脱を毎回行う必要は無し!
温度センサーによる風量の変化は実際に使っていきながら調整していきたいと思います.
暑い夏を空調服で快適に暮らしましょう!

  • ponkotu さんが 2021/04/25 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する