makoragiのブログ

SNSで書ききれなかった内容を。KumaMCN co-founder / クラッピーチャレンジャー

うさ耳キュイキュイした。 #大晦日ハッカソン 2018

2018年最後のハッカソン、家でもくもく作業する 大晦日ハッカソン

 

12月は思う存分作ったので、クラッピーは使わない。そのうちアドベントカレンダー疲れって言葉が生まれそう。

 

まずは先に完成イメージ。

f:id:makoragi:20181231094117p:image

 

2019年4月は熊本でもイースター

巨大スクリーンで一緒に色々やろうとしてた人たちが面白そうなこと始めてた。

 

うさ耳つけてた実行委員会の人たちが男女問わず可愛かった。

 

KumaMCNでもウザ絡みする。

 

うさ耳買ってきた

以前ダイソーに売ってあった気がするけど、最近見かけない。仕方ないのでAmazonでまとめ買い。

 

うさ耳チャレンジ

まずは分解したけど、これはクラッピーチャレンジだ。みんなこの流れに乗ってくるといいなぁ。

 

中に針金入ってて、うさ耳を曲げたり出来る。これをサーボモータでキュイキュイしようかと。下敷きを土台にして、結束バンドで止めた。

 

GlueMotorでキュイキュイしたらいい感じに。スマホのイヤホンジャックで動かせるGlueMotorほんと便利。

 

顔認証してキュイキュイ

今年はやっぱりobnizで。サーボ簡単に動かせるしハッカソンで何度も活躍した。

 

obnizのブロックプログラム(Scratch風のやつ)を見ると顔認識できたので、そこからサーボモータを動かすようにした。ブロックプログラム上ではサーボモータ動かせるか微妙だったので、JavaScriptのコードにエクスポートして少し弄った。

 

 

イメージ図はこれ。目の前に人が現れると、うさ耳キュイキュイでアピール。エモい。

f:id:makoragi:20181231093810p:image

 

以上。最後にソースコード(スマホから貼り付け難しい…)

<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
    <script src="https://unpkg.com/obniz@latest/obniz.js" crossorigin="anonymous"></script>
    <script src="https://unpkg.com/obniz-parts-kits@0.10.2/iothome/index.js"></script>
    <script src="https://unpkg.com/obniz-parts-kits@0.10.2/ai/index.js"></script>
    <script src="https://unpkg.com/obniz-parts-kits@0.10.2/airobot/index.js"></script>
    <script src="https://unpkg.com/obniz-parts-kits@0.10.2/ui/index.js"></script>
    <script src="https://unpkg.com/obniz-parts-kits@0.10.2/ai/opencv3.4/opencv.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.13.5"> </script>
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@0.2.2"> </script>
</head>
<body>
TEST
<div id="OBNIZ_OUTPUT"></div><br/>


<script>
(async function(){
  var obniz, servomotor;
    
  obniz = new Obniz('8407-1385');
  await obniz.connectWait();
  servomotor = obniz.wired("ServoMotor",{"signal":4, "vcc":5, "gnd":6});
  
  await _ai.startCamWait();
  while (true) {
    if (_ai.isFaceInside()) {
      servomotor.angle(100);
    }
    await ObnizUI.Util.wait(500);
    servomotor.angle(40);
    await ObnizUI.Util.wait(500);    
  }
  
})();
</script>
</body>
</html>