当記事の対象者

当記事は、obnizに興味はあるが、周辺機器は何を購入すればいいか分からず、購入を躊躇っている人に向けた記事です。

私が購入した周辺機器から、それらを動かすためのサンプルプログラムをシェアします。

なお、obnizの初期設定については、サイトに記載がある為、そちらを参照してください。

<初期設定について記載されたページ>

https://obniz.io/doc/quickstart

obnizを見たこともないということは以下のリンク先をまず参照してください。

<リンク>

obnizでIoTを実現する為の導入プログラムと購入周辺機器

なお、当記事は、作成手順ではなく、あくまでも作成に利用したハードやプログラムの紹介です。


obnizでラジコンを作る

obnizで、スマホを傾けると傾けた方向に走るラジコンを作成したのでその作り方を記載する。


obnizで作ったラジコン

IMG_20180909_211854245.jpg


obnizでラジコンを作る為に使用した機材


ラジコンの組み立てポイント


ワイヤーとモータをつなぐ

IMG_20180909_212012738.jpg

ジャンパーワイヤのメスの方をカットし、ワイヤを露出させてモータと繋ぐ。

その際に、左右のモータで同一の色のワイヤを利用した方が分かりやすい。


ブレッドボードにモータと繋いだワイヤを差す

IMG_20180909_211705039.jpg

IMG_20180909_211917672.jpg

モーターと繋いだワイヤは、ブレッドボードの中心領域に差し、obnizと繋ぐワイヤをブレッドボードの左右の「+」と「-」に差す。

その際に、短いジャンプワイヤで左右の「+,-」と中心部をブリッジする必要がある。


obnizとブレッドボードの+,-に差したワイヤをつなぐ

IMG_20180909_212020545.jpg


ラジコンのプログラム

注意)プログラム内にある「XXXX-YYYY」は、obnizのIDになる為、適宜obnizのIDに変更すること

プログラムは、サンプルとして提供されているプログラムをほぼそのまま利用しております。


qiita.rb

<html>

<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.9.5/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h1>obniz robot controller </h1>
<div id="print"></div>

<script>

let obniz = new Obniz("XXXX-YYYY");
let motorL, motorR;
let threshold = 1, maxAccel = 5;

obniz.onconnect = function () {
motorL = obniz.wired("DCMotor", {forward: 0, back: 1});
motorR = obniz.wired("DCMotor", {forward: 2, back: 3});
};

window.addEventListener("devicemotion", function (event1) {
let x = event1.accelerationIncludingGravity.x;
let y = event1.accelerationIncludingGravity.y;

if (!motorR || !motorL) {
return;
}
if (Math.abs(y) > threshold) {
let power = Math.min(100 * (Math.abs(y) - threshold) / (maxAccel - threshold), 100);
motorL.power(power);
motorR.power(power);

let direction = y > 0;
motorL.move(direction);
motorR.move(direction);

} else if (Math.abs(x) > threshold) {
let power = Math.min(100 * (Math.abs(x) - threshold) / (maxAccel - threshold), 100);
if (x > 0) {
motorR.power(power);
motorR.move(true);
motorL.stop();
} else {
motorL.power(power);
motorL.move(true);
motorR.stop();
}
} else {
motorL.stop();
motorR.stop();

}

}, true);

</script>
</body>
</html>