komeda が 2021年04月12日15時55分47秒 に編集
初版
タイトルの変更
単身赴任Goods
タグの変更
IoT
obniz
コンテスト
単身者
メイン画像の変更
記事種類の変更
製作品
本文の変更
寒冷地で一人単身赴任生活を経験した経験をもとに、こんなのがあったら助かるなーと思い製作してみました。 ・残業が多くて夜遅く、赴任宅(アパート)に帰ることがあり。暗く、冷え冷えした部屋は寂しく限り、 こんな時に、会社を出るときに部屋の電灯をつけ、エアコンを作動したらなんといいものかと思っていました。 ・アパートのエアコンや電灯は古く、どんな家電でも対応するようにしました。 # デモ動画 @[youtube](https://youtu.be/lz3KXs3JhQ4) # システム概要 - 前提条件:赴任先アパートの機器を改造したりせずに、ローテクで設置可能なこと - 対象の家電:冷暖房装置(リモコン有・無し)、電灯(白熱電球、リモコン式)等 - 操作方法:スマホからリモート操作で家電をON/OFF - 拡張性:ポートの関係から5台まで増設可 # 構成図 ![キャプションを入力できます](https://camo.elchika.com/abb7c5f48223fed86bf7c075773ddb49f78fbd4b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33353936646264312d386438342d346164322d386165342d3063313836336165306133622f61383437313664382d376666382d343933612d383462322d633633383964656331366437/) # 製作過程 - リモコンボタンを押す機構 1. ソレノイドを使う。 課題:ボタンを押すパワーがない。 結果:(5V-1A)ではN.G 。 2. ギア付きのサーボモータを使う。 課題:回転動作なので、ボタンにまっすぐに力が加わりにくい。 対策:回転を直線に変えるリンク機構を使った。 ジャンクにあったものを使用した。 ![キャプションを入力できます](https://camo.elchika.com/3d69fe08440bd244d0ad7c0fd612e50be1cbf8cb/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33353936646264312d386438342d346164322d386165342d3063313836336165306133622f64396637616234662d343634662d343066302d383935392d333134643632393739616462/) # 動画 @[youtube](https://youtu.be/3Ngwkuyl12w) # 部品 番号 部品名 型式 数量 1 obniz obniz Board 1Y 1 2 SSR G3NA-210B 1 3 servo motor MG-996R 1 4 リンク機構 ジャンク品 1 # ソースコード ![キャプションを入力できます](https://camo.elchika.com/d900e7ff61105f7e2aba3eb4e47c56d8c130327e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33353936646264312d386438342d346164322d386165342d3063313836336165306133622f66333837666539312d366637372d346462352d383764352d666662373732336437643637/) ``` <html lang="ja"> <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;">ロード中...</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.15.2/iothome/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/airobot/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ui/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/howler2.1.2/howler.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/opencv3.4/opencv.js" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.5" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@0.2.2" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/clmtrackr/clmtrackr.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/clmtrackr/emotion_classifier.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/clmtrackr/emotionmodel.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/clmtrackr/model_pca_20_svm.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/ai/index.js" crossorigin="anonymous" ></script> <script src="https://unpkg.com/obniz-parts-kits@0.15.2/storage/index.js" crossorigin="anonymous" ></script> <script> $("#bploading").text("実行中"); (async function(){ var obniz, servomotor, led, button_upperleft, button_upperright, button_lowerleft; obniz = new Obniz('OBNIZ_ID_HERE'); await obniz.connectWait(); servomotor = obniz.wired("ServoMotor",{"signal":2, "vcc":1, "gnd":0}); led = obniz.wired("LED",{"anode":3, "cathode":4}); button_upperleft = new ObnizUI.Button('room light on'); button_upperright = new ObnizUI.Button('room light off'); button_lowerleft = new ObnizUI.Button('aircon'); while (true) { await ObnizUI.Util.wait(0); if (button_lowerleft.isTouching()) { servomotor.angle(30); await ObnizUI.Util.wait(2000); servomotor.angle(1); } else if (button_upperleft.isTouching()) { led.on(); } else if (button_upperright.isTouching()) { led.off(); } } })(); </script> </body> </html>