概要
子どもが机で勉強しているのを応援してくれるデバイスです
仕組み
赤外線センサで机の椅子に座っているかどうかを判定します。
椅子に座ったら勉強していると判断して、勉強時間をカウントアップします。
椅子から立ち上がると勉強終了です。一定時間以上、勉強するとねぎらってくれます。
勉強の始まりと終わりにLINEに通知します。
デモ動画
部品
部品名 | 備考 |
---|---|
obniz Board 1Y | |
Grove - 赤外線測距センサ v1.2 | |
ケース | Daisoで購入 |
回路の接続イメージ
Grove赤外線センサ | obnizBoard1Y |
---|---|
GND | -(マイナス) |
VCC | 3.3V |
NC | 未接続 |
SIG | 0 |
ブロックコード
工作
ポイント
赤外線センサが椅子に座ったあたりの方向・距離で調整します
まとめ
子どもの勉強する気持ちをそっとサポートします(まずは、椅子に座ってみるところから)
参考(ソースコード)
ソースコード
<html lang="en">
<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;">LOADING...</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.16.0/iothome/index.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/airobot/index.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ui/index.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/howler2.1.2/howler.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/opencv3.4/opencv.js"
crossorigin="anonymous"
></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@3.3.0"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/mobilenet@2.1.0"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/posenet@2.2.2"></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/clmtrackr.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotion_classifier.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/emotionmodel.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/clmtrackr/model_pca_20_svm.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/ai/index.js"
crossorigin="anonymous"
></script>
<script
src="https://unpkg.com/obniz-parts-kits@0.16.0/storage/index.js"
crossorigin="anonymous"
></script>
<script>
$("#bploading").text("RUNNING...");
(async function(){
var obniz, _E6_99_82_E9_96_93, _E5_8B_89_E5_BC_B7_E4_B8_AD, labelTitle, labelTime;
obniz = new Obniz('xxxxxxxx');
await obniz.connectWait();
obniz.display.print('応援ガジェット')
await ObnizUI.Util.wait(1000);
_E6_99_82_E9_96_93 = 0;
_E5_8B_89_E5_BC_B7_E4_B8_AD = 0;
labelTitle = new ObnizUI.Label('label');
labelTime = new ObnizUI.Label('label');
while (true) {
await ObnizUI.Util.wait(0);
if ((await obniz.io0.inputWait())) {
obniz.display.clear();
obniz.display.print('べんきょうする?')
if (_E5_8B_89_E5_BC_B7_E4_B8_AD == 1) {
await fetch('https://maker.ifttt.com/trigger/StudyEnd/with/key/xxxxxxxx', {method:"GET", mode: "cors", cache:"no-cache"}).catch(e=>{ /* nothing */ });
_E5_8B_89_E5_BC_B7_E4_B8_AD = 0;
}
if (_E6_99_82_E9_96_93 > 10) {
obniz.display.clear();
obniz.display.print('がんばったね!')
}
_E6_99_82_E9_96_93 = 0;
} else {
obniz.display.clear();
obniz.display.print('がんばってるね!')
obniz.display.print(_E6_99_82_E9_96_93)
_E5_8B_89_E5_BC_B7_E4_B8_AD = 1;
if (_E6_99_82_E9_96_93 == 1) {
await fetch('https://maker.ifttt.com/trigger/StudyStart/with/key/xxxxxxxx', {method:"GET", mode: "cors", cache:"no-cache"}).catch(e=>{ /* nothing */ });
}
}
labelTitle.setText('べんきょうじかん');
labelTime.setText(_E6_99_82_E9_96_93);
await ObnizUI.Util.wait(1000);
_E6_99_82_E9_96_93 = (typeof _E6_99_82_E9_96_93 == 'number' ? _E6_99_82_E9_96_93 : 0) + 1;
}
})();
</script>
</body>
</html>
-
yukima77
さんが
2021/05/16
に
編集
をしました。
(メッセージ: 初版)
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
-
yukima77
さんが
2021/05/16
に
編集
をしました。
ログインしてコメントを投稿する