Nindtendo LABO をESP32で動かしてみた

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

こんにちは、ばっしーです。

先日タイに行ってきたのですが、わけのわからない屋台や適当な食堂でばかり食事をしていたので、クレジットカードを一度も使いませんでした。というか、使えませんでした。
お腹を壊すかもしれないリスクも若干ありますが、観光客しか来ない小洒落たレストランや、イオンと変わらない様なショッピングセンターのフードコートで食べるのはちょっとつまらないな~と思ってしまう性質なのです。
ちなみに、タイのビールは一番有名な「SINGHA」、現地で最も目にする「CHANG」、そして「LEO」、「CHEERS」と4つのブランドが大抵のコンビニで売っていますが、私は「CHEER」が一番好きで、次点が「CHANG」派でした。味がしっかりしていて現地の食事によく合って美味いです。

はい、どうでもいいですね。

ビール飲みたい。

第5回秋葉原IoTツアーズ

さて!そんなこんなでロクに準備も出来ずに迎えた、2018年5月26日(土)の『第5回秋葉原IoTツアーズ』ですが、特にここに出すことも考えずに、娘が見ていたYOUTUBEでヒカキンが「Nintendo LABO」で遊んでいたんです。釣りのゲームがめちゃ楽しそうでしたが、私が気になったのがコイツ。リモコンカーです。

このリモコンカー、左右のコントローラーを取り付けて、それぞれのコントローラーに内蔵している振動素子で作られる「HD振動」で振動することによって動くそうです。なるほど。それでこんな足をしているのか。なになに?PDFも無料でダウンロードできるんだ、なるほどな。

仕組み的にはとりあえず震えてしまえば動くだろう?と思ったので、早速作ってみました。

作ってみた

こんなやつです。

材料

以下の通り。

・会社のプリンタで印刷したNintendoLABOの型紙「リモコンカー」

・会社の移転作業で使用して廃棄される予定だった段ボール

・目的もなく買ったESP-32マイコン

・目的もなく買った2chモータードライバー

・懐中電灯用に買ってあった18650電池

・いつ買ったかも覚えていないJUNKのガラケー用バイブレーションモーター

なんだ。全部材料揃ってるじゃないか。これは神様が今作れと言っているな!?しかもちょうど今定時だし。

という訳で3時間程度で作り終えました。

作り方(工作編)

まず、服を脱ぎます。

・・・

嘘です。

・段ボールに型紙を貼る

・適当に切る(カッターでも切りづらいのでレーザーカッターが欲しくなった)

・組み立てる

・モーターを入れる穴を空ける

・マイコンを組み立てる

・コーディングする

・マイコンを取り付ける

・完成~

中身はこんな感じです。

横から見たところ。

顔を取るとこんな感じです。

作り方(電気編)

ESP-32マイコン

 

WiFi & Bluetooth Battery ESP32 Rev1 development tool

WeMosブランドのもので、裏面に18650リチウムイオン電池の電池ソケットがあり、リチウムイオン電池の充放電回路も内蔵しています。購入価格は1,362円

モータードライバー

Dual Motor Driver 1A TB6612FNG for Arduino Microcontroller Better than L298N Free Shipping 1PCS

2チャンネルのモータードライバーです。購入価格は187円

振動モーター

詳細不明です。どこで買ったか記憶も不鮮明ですが、たぶん「現品.com」だったと思います。
吉野電装さん運営の独特な注文方法の通販サイトでしたが、2003~2004年頃だったでしょうか。当時はだいぶお世話になりました。

サーボモーター

10pcs/lot lofty ambition SG90 9g Mini Micro Servo for RC for RC 250 450 Helicopter Airplane Car Drop

小型のサーボモーターです。購入価格は10個で$13。1つ約145円程度。

電池

8PCS 5000mAh 3.7V 18650 NCR Li-ion Rechargeable Battery Cell Pack For UltraFire LED The actual capacity of 2200 mah

この品物ではありませんが、こんな感じのものです、8本で$11.96。1本だいたい170円。

 

上記の品物をテキトーに組み合わせます。

作り方(arduino編)

ソースコードは以下です。

#define BLYNK_PRINT Serial
#include 
#include 
#include 

char auth[] = "Your Blynk Auth code";
char ssid[] = "Your access point name";
char pass[] = "Your password";

void setup()
{
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  //A
  pinMode(0,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(4,OUTPUT);
  //B
  pinMode(27,OUTPUT);
  pinMode(25,OUTPUT);
  pinMode(26,OUTPUT);
  //STB
  pinMode(9,OUTPUT);
  //LED
  pinMode(16,OUTPUT);

  digitalWrite(2,LOW);//A2
  digitalWrite(4,HIGH);//PWM A
  digitalWrite(26,LOW);//B2
  digitalWrite(27,HIGH);//PWM B
  digitalWrite(9,HIGH);//STB

  ledcSetup(0, 50, 10);  // 0ch 50 Hz 10bit resolution
  ledcAttachPin(14, 0); // 14pin, 0ch
}

BLYNK_WRITE(V0){
  ledcWrite(0, param.asInt() );
}

void loop()
{
  Blynk.run();
}

完成品の動画

ちょっと振動モーターの取付が甘いとか、様々な要因で動きが変わるので、ちょっと右モーターの動きが良くない状態です。

こんな感じで、割とまともに動かないことが多いので、稀にセッティングがうまくいって良く動くと嬉しくなります。

発表のスライド

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.