Pegasus が 2021年05月14日22時12分42秒 に編集
動画URL変更
記事種類の変更
製作品
本文の変更
# 概要 職場で仕事をしていると,22時過ぎに自動的に室内の照明が消されてしまう仕組みになっています.毎日この時間に仕事を中断してわざわざ照明を点けるのが面倒なのとモチベーションも下がるので,照明が消えたら自動的に点灯させる仕組みを考えました.本質的には照明設備の設定を変えてもらうべきなのでしょうが,消す側も消す側のポリシーがあろうかと思いますし,ちょっとでも楽しめる仕組みをと考え,敢えてロボットアームでアナログ的なスイッチ投入としました. # デモ動画
@[youtube](https://youtu.be/oZ8pur9eXVA) <https://youtu.be/oZ8pur9eXVA>
@[youtube](https://youtu.be/2xTdCZcHaiA) <https://youtu.be/2xTdCZcHaiA>
# システム構成 obniz Board 1Yをコントローラーに,光センサと手元にあったLynx motion SSC-32U搭載の6自由度ロボットアームだけで構成しています. # 構成図 ![キャプションを入力できます](https://camo.elchika.com/2273affe3b4d0a4c0f7de8e583e7b4e83942685e/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63376135303639662d323339332d346638332d396366322d3963666434643838353333352f62353530333162382d376263382d346335352d386335382d616530626362333863626335/) # 材料 ・obniz Board 1Y ご提供ありがとうございました!普通のマイコンしか使ったことがなかったので,進化にビックリ! ・光センサ ELECFREAKSのキットに入っていたもの.型番不明ですが,光量をアナログ出力してくれたので流用しました. ・ロボットアーム 手元にあった Lynxmotion AL5D PLTWをそのまま使いました.いろいろ問題あり. <https://www.robotshop.com/jp/ja/lynxmotion-al5d-pltw-robotic-arm-kit.html> # 配線 ![キャプションを入力できます](https://camo.elchika.com/4654f1565457c9df650b50d179a3257a3c94a6af/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f63376135303639662d323339332d346638332d396366322d3963666434643838353333352f62306664666235372d613361632d343134392d623235652d653561666130353033386630/) # 動かし方 PCからアプリを起動するだけです.部屋が暗くなると勝手にロボットアームがスイッチを押します. # ソースコード 見よう見まねでプログラムを書いてしまったため,よい子は絶対に真似をしないで下さい,というレベルです.ごめんなさい. ```<!-- HTML Example --> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://obniz.com/js/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.14.0/obniz.js"></script> </head> <body> <div id="obniz-debug"></div> <h1>obniz instant HTML</h1> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); obniz.onconnect = async function(){ // Position data define let msg0 = "#0P1500#1P2200#2P2060#3P2000#4P1500#5P2400T2000\r" let msg1 = "#0P2310#1P1980#2P1360#3P1810#4P1500#5P2400T1000\r" let msg2 = "#0P2310#1P1850#2P1280#3P1830#4P1500#5P2400T1000\r"; let msg3 = "#0P2310#1P2030#2P1440#3P1810#4P1500#5P2400T1000\r"; let msg4 = "#0P2310#1P1890#2P1340#3P1810#4P1500#5P2400T1000\r"; let msg5 = "#0P2310#1P2010#2P1460#3P1810#4P1500#5P2400T1000\r"; let msg6 = "#0P2310#1P1900#2P1380#3P1790#4P1500#5P2400T1000\r"; var uart = obniz.getFreeUart(); uart.start({ tx: 0, rx: 1, gnd:11, baud:9600}); var pt550 = obniz.wired("PT550", {gnd:2, vcc:3, signal:4}); obniz.onloop = async function(){ const voltage = await pt550.getWait(); if( voltage < 0.7){ //up messages on UART uart.send(msg1); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg2); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg1); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg3); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg4); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg3); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg5); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg6); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg5); await new Promise((resolve) => { setTimeout(resolve, 2000) }); uart.send(msg0); } } await new Promise((resolve) => { setTimeout(resolve, 20000) }); } </script> </body> </html> ``` # 感想 やっつけ感満載ですが,楽しく出来ました.デモの動きは奇跡の1回です.ごめんなさい. この手のロボットアームはもともと剛性が全く足りていなくて,押すとかある程度の質量を持ち上げる為のものではありません.軽いものをエンドエフェクタで持ち上げて移動させる,もしくは協調動作をする振りをさせるような用途では良いのですが.. 敢えてこれを使ったのは,それでもサーボやソレノイドなどで直接スイッチを押すよりは,何か動きがあったほうが単純に楽しい.それだけです.でも個人でいろいろやってみるという観点ではそれで良いと思っています.楽しいのが一番ですから.