スポンサーリンク

スイッチをONしたらOFFするロボットの作り方

スイッチをONしたらOFFするロボット 電子工作

このロボット知ってますか?
ニコニコ動画とかYouTubeで一時期話題になったロボットで、まさにスイッチをONしたらロボットがOFFしてくる玩具みたいなものです。
先日Arduinoの入門キット買って、Arduinoについてちょっと勉強してみました。Arduinoを使えば簡単に作れるんじゃないかなぁと思って作ってみたので、作り方公開します。




スポンサーリンク

スイッチをONするとOFFするロボット(Useless Box)

これが過去にニコニコ動画で話題になったやつ
「全自動ひきこもり機」とも呼ばれているみたい



こちらが海外版
海外では「Useless Box」と呼ばれています。



今回、こんな感じのものを作ります。


スポンサーリンク

電子部品材料

必要な電子部品のアマゾンとAliExpressの商品リンクも併せて載せてあります。
私はAliExpressから購入しました。AliExpressの商品リンクは実際に私が購入した所で全て同じストアですのでまとめてカートに入れて注文すれば送料が割引になります。
AliExpressは中国からの発送になります。輸入が不安な場合は国内ショップが早くて安心です。

Arduino Nano
 数量:1
 
 ※ピンが半田付けされていないタイプ
 公式のArduinoは高いので互換品を使いました。

Mini USB Nano V3.0 ATmega328P CH340G 5V 16M マイクロコントローラーボード モジュールArduinoと互換 「国内配送」
Arduino nano


サーボモーター
 数量:2
 型式:SG90(樹脂ギア)又は MG90(メタルギア)

 値段が変わらないのでMG90がおすすめ


トグルスイッチ
 数量:1
 型式:MTS-102


 他の型式でももちろん問題ありません。私が実際に使ったものがこちら


リード線
 数量:少々

 


収縮チューブ
 あると便利

——————以下はオプション(必須ではありません)——————-

◆LED
 必要に応じて、LEDを光らせたい数

LED 発光ダイオード 砲弾型 5mm


◆抵抗
 220Ω、LED点灯用
 





スポンサーリンク

箱を作る材料

木箱

私はカナダの100円ショップで売ってるような画像の木箱を使ってみました。
同じものは手に入らないと思いますので、似たような箱を買って使うか木材やアクリル板等材料から箱を作ったり、アイデア次第。



3Dプリンターで作る箱

現在、3Dプリンターで箱を作れるようにデザインして、印刷しては修正してを繰り返しながら3Dモデルを作っています。

完成しましたら皆さんがプリントできるようにこの3Dモデルのデータを公開するつもりです。お待ちください。


追加記事を書きました↓

スポンサーリンク

Arduino Nanoの動作確認

Arduino Nano 動作確認

いきなり半田付けして回路を作り出しても良いのですが、Arduino Nanoの基盤が正常に動かなかったら苦労が水の泡になります。

半田付けする前に、USBを接続して電源が入るか確認。

新品のボードは動作確認用にLチカのプログラムが入っていますので、USBをつなげると電源が入って基盤上のLのLEDが点滅します。

スポンサーリンク

電気回路を作る

電気回路図

今回、私が作ったものの接続図がこちら。
Lid(蓋)とHand(手)のサーボモーター、全面に取り付けるトグルスイッチとトグルスイッチをONしたら点灯するLEDの構成です。

電源はUSBからの給電にしました。電池式にしようと思ったのですが、アルカリ電池では電流が足りず動きませんでした。リチウムイオン電池なら動きますので電池式にしたい場合はお気を付けください。

スポンサーリンク

Arduinoへプログラミング

Arduino IDEをパソコンへインストール

AruduinoのプログラミングにはまずArduino IDEというソフトをインストールします。

Aruduino IDEのインストール方法、使い方については省略。

互換品のAruduinoを使用する場合はCH340ドライバをインストール

上記リンクで紹介している安い互換品のArduinoを使用する場合はシリアル通信チップとしてCH340という物が使われています。パソコンとAruduinoをUSBで通信させるために以下のドライバをインストールしてください。

CH340 Driver for Windows ダウンロード

CH340 Driver for Mac ダウンロード



プログラムコード

私が作成した試作プログラムコードが以下になります。
コピー&ペーストで使用して頂いて構いません。

//2020.08.31 useless box ver1.1
#include <MsTimer2.h>
#include <VarSpeedServo.h>
VarSpeedServo hand;  // サーボの変数設定
VarSpeedServo lid;

int led1 = 2; //LED1を2番ピンに指定
int sw1 = 12; //スイッチを12番ピンに指定

int opendelay; //蓋開けディレイ時間(*100ms)
int a = 5;
int closedelay; //蓋閉めディレイ時間(*100ms)
int b = 15;

int lidhome = 180; //蓋サーボモーター原位置角度
int handhome = 180; //手サーボモーター原位置角度
int lidon = 100; //蓋サーボモーターON時角度
int handon = 0; //手サーボモーターON時角度





void setup() {
  // put your setup code here, to run once:

/*サーボモーター設定*/
Serial.begin(9600);
hand.attach(6); //手のサーボモーター5番ピン
lid.attach(5); //蓋のサーボモーター6番ピン

/*スイッチ・LED設定*/
pinMode(led1, OUTPUT);
pinMode(sw1, INPUT_PULLUP);


/*サーボモーター原点出し*/
 lid.write(lidhome, 60, false); 
 hand.write(handhome, 30, true);

/*タイマーカウント設定*/
MsTimer2::set(100, Lidtimer);
MsTimer2::start();
//100msごとにLidtimeを呼び出し、タイマスタート
}







void Lidtimer() {  //100ms毎にここが呼び出される
  opendelay++; //蓋開けディレイ時間+1
  closedelay++; //蓋閉めディレイ時間+1
}








void loop() {
  // put your main code here, to run repeatedly:


 if(digitalRead(sw1) == HIGH){
  digitalWrite(led1, HIGH);

  if(opendelay > a){
  lid.write(lidon, 100); 
  hand.write(handon, 100);
  
  closedelay = 0;
  }
 }


 if(digitalRead(sw1) == LOW){
  digitalWrite(led1, LOW);
  hand.write(handhome, 50);
  
 if(closedelay > b){
  lid.write(lidhome, 60);
  opendelay = 0;
  }

 }
}

今後、数パターンの動きを作る予定です。完成したら本ブログで公開します。


このプログラムに使用されているライブラリ

本プログラムにはMsTimer2、VarSpeedServoの2つの追加ライブラリを使用しています。
プログラム書き込み前に以下よりライブラリデータをダウンロードして

{Aruduino IDE インストール先}/libraries/

にライブラリデータを保存してください。

スポンサーリンク

木箱でUseless Boxの試作

箱の製作

木箱を分解

買ってきた木箱をそのまま使おうとすると、深さが足りなかったので一度カッターナイフで切り込んで分解。

アイスの棒で蓋を作る

こんな感じでコツコツ集めているアイスの棒で蓋を作ります。

アイスの棒をカット

アイスの棒はノコギリとかではなくて、万能ばさみで切ると綺麗に簡単に切断可能。


蓋完成

木工ボンドで張り合わせて、蓋の完成。
箱の正面に貼ってあるのは箱のヒンジが付いていたところが穴になってしまったのでお化粧です。


Arduino Nano、サーボモーターの取り付け方法を考える

サーボモーター、基盤の取り付け部品を3Dプリンターで製作
Aruduino nano ブラケット、サーボモーターブラケット

サーボモーターと基盤の取り付けは非常に悩んだのですが、取り付けブラケット3Dプリンターで印刷。
3DモデルはThingiverseにあったのをダウンロードして使わせていただきました。

ブラケットと箱は小さいビスを使って取り付けします。

半田付け&部品組付

半田付け中
Arduino Nano 半田付け

Aruduino Nano基盤・各配線を半田付け、収縮チューブで絶縁処理します。

9Vバッテリーも用意したのですが、箱が小さかったので今回はUSB電源のみにしました。

基盤・スイッチ、サーボモーターを組付けたところ。こんな感じ。



プログラムインストール・動作確認

パソコンとUseless BoxをUSBで繋いで、Arduino IDEからプログラムをインストール。
蓋と手の位置が丁度良い角度になるように調整したり、タイミングを合わせたり練習がてらプログラムを作ってみました。
サーボモーターの動作角度の調整は以下の4行内の数字を0~180で設定を行います。

int lidhome = 180; //蓋サーボモーター原位置角度
int handhome = 180; //手サーボモーター原位置角度
int lidon = 100; //蓋サーボモーターON時角度
int handon = 0; //手サーボモーターON時角度

上記で紹介した動画みたいに箱の中にぬいぐるみも入れる予定だったのですが、箱が小さくて入らず断念。

2号機として、3Dプリンターで電子部品以外を作って、ぬいぐるみも入れられるように作成中です!
プログラムも動作を数パターン増やして最終型とするつもりです。

完成したらブログに追記するのでお待ちください。


追加記事を書きました↓

コメント

  1. Ts より:

    すみません。コードがエラーが起きてしまうのですが原因は分かりますかね?

    一応指定されたファイルはダウンロードし、ライブラリもきちんとコードも入力されています。。

    エラーコードです。
    Arduino:1.8.14 Hourly Build 2020/09/23 10:35 (Mac OS X), ボード:”Arduino Uno”

    /Users/owner/Documents/Arduino/libraries/VarSpeedServo/VarSpeedServo.cpp:56:10: fatal error: WProgram.h: No such file or directory
    #include
    ^~~~~~~~~~~~
    compilation terminated.
    exit status 1
    ボードArduino Unoに対するコンパイル時にエラーが発生しました。

    「ファイル」メニューの「環境設定」から
    「より詳細な情報を表示する:コンパイル」を有効にすると
    より詳しい情報が表示されます。

    • さのくま さのくま より:

      コメントありがとうございます。

      エラーの件、まだ解決できていないでしょうか?
      私も分からなかったので調べてみました。
      参考↓
      https://uepon.hatenadiary.com/entry/2016/01/17/154422

      古いArduinoIDEに新しいライブラリを入れて使用されているからではないでしょうか?

  2. 高橋 冨男 より:

    楽しく作る事が出来ました。全てパクリましたが手のサーボがトルク不足なのかスイッチをおしきれず一回り上のサーボ使用、 当然サーボマウントも変更して快適に動きます。3Dプリンターの印刷に結構時間がかかりますね。
    製作に2週間ほどかかりました。また何か面白そうな作品が有りましたらと思っております。

    • さのくま さのくま より:

      楽しんで頂けて何よりです。

      私も動画にした3Dプリンターで作った箱は2つ目だったのですが、1つ目が上手く行ったのに2つ目はスイッチが押し切れず、手のサーボモーターの角度をいっぱいにまで動かして速度を上げてスイッチが押せるようになりました。
      アップロードしたのはその変更後のものだったのですが、サーボモーターにも個体差があるのかもしれません。

      既に試されたかもしれませんが
      スイッチが押し切れない場合は、手のレバーの動作角度は180度いっぱいに動かしているので変えられません。ですので取付位置を1ノッチ変えてみる。押し過ぎる場合は0を1~10くらいに変えても良いかも知れません。

      int handon = 0; //手サーボモーターON時角度

      プログラム内の
      hand.write(handon, 200); 
      handonがスイッチを押す動き、200の数字部分がスピードですので1~256まで指定できます。

      • 高橋 冨男 より:

        有り難うございます。大変参考になります。

  3. みゆ より:

    C:\Users\konno\Documents\Arduino\libraries\VarSpeedServo\VarSpeedServo.cpp:56:10: fatal error: WProgram.h: No such file or directory
    #include
    ^~~~~~~~~~~~
    compilation terminated.
    exit status 1
    ボードArduino Unoに対するコンパイル時にエラーが発生しました。

    このようなエラーが出てしまうのですが、どうしたらよいのでしょうか。

タイトルとURLをコピーしました