Hungrymanを作成

 Hungryman(電動式パックマン)を作成してみました。

Hungryman(電動式パックマン)について



 YouTubeでTrashEatingRobotの記事を見つけました。昔のパックマン貯金箱を彷彿させるもので、 Arduino NANOを使って電動式になっています。
これだとやや不満足でしたので、胴体とその他のデザインを変更し、電池を内蔵した自立型に 変更して製作しました。

 ネットの記事では、3Dプリンターで作成するボディの壁が薄くてサーボを固定するネジが役目を 果していないことと、NANOが中で宙ぶらりんの状態で固定していません。また、電源が胴体の後ろの 大きな穴からUSBコードで供給するようになっていました。
 そこで胴体とその他のデザインを変更し、電池やブザーを内蔵した自立型に変更して製作しました。
 以下が、Hungrymanの製作過程です。

  完成動画


 完成したHungrymanの起動動画です。





  ネットのTrashEatingRobotについて


(1)Hungry-Robot のYouTubeは、https://youtu.be/KfP_LfUiwdcです。

 また、TrashEatingRobotのデータ記事は、GitHub( https://github.com/happythingsmaker/TrashEatingRobot)にあります。

製作マニュアルは、https://sites.google.com/view/100happythings/18-Hungry-Robotを見てください。

(2)以下の写真がGitHubのデータをそのままプリントアウトしたボディとヘッドです。




  デザインの変更


 基本的なアイデアは変わりませんが、胴体等の各部分のデザインを以下の通りに変更しました。

(1)Arduino NANO用拡張ボードを使用するためにボディの形を写真のように半円と長方形を合わせた形に変更し、サイズを若干大きくしました。
 デザインは、「Fusion360」を使用しています。

 ①ヘッドのデザイン


 ②ベースボード
 NANO用の拡張ボードを使用するため底蓋に拡張ボード取り付け穴を追加しました。


 ③ボディは以下の通り大幅に変更しました。
  (a) ブザーの取り付け場所を追加しました。
  (b) 電池の取り出し口を付けました。
  (c) スイッチの取り付け場所を追加しました。
  (d) 拡張ボード用の電源口とNANOのUSB口を開けました。


 ④胴体内側の中蓋に電池の収容部分を追加しました。


 ⑤リンク棒は、若干長くしました。



  使用した部品


(1)Arduino NANO
(2)NANOを固定するためにNANO用の拡張ボードを使用。
 NANO V3.0ナノプロトタイプシールドi/o拡張ボード(Aliexpressで購入)

これにより、電源は、5V~12Vが使えます。

(3)サーボは、SG90 を使用。

(4)距離センサーは、シャープ測距モジュールGP2Y0A21YK(秋月電子通商)を使用。

(5)ブザーは、uxcell アラームブザー 電子ブザー 受動電子 3V-5V-12V 42Ohm 2ターミナル 12mmx8.5mm(Amazon)を使用。

(6)電源スイッチは、正方形 8 × 8 × 13 ミリメートル 6 ピン dpdt ミニプッシュボタン自己ロックスイッチ G65
 マルチメータスイッチ(Aliexpress)を使用。


(7)目は、Keepjoy 目パーツ 貼り付け おもちゃ DIY 手作り 目 4mm-12mm プラスチック製(Amazon)を使用。

(8)006P形ニッケル水素充電池(NiMH)(秋月電子通商)を使用。

(9)可動部は全て3mmΦのネジを使用。



  配線図


(1)以下の図が配線図です。

(2)ブザーは11pin、サーボは12pin、距離センサーはA7pinに接続しています。

(3)バッテリーは、9Vを使用しているので、スイッチを通して拡張ボードのVINに接続しています。




  完成写真


(1)次が完成写真です。


(2)次の写真は、バッテリーを取り出している写真です。




  sound用のライブラリ


 固定したsoundを使用するため、sound用のライブラリ「FixSound」を以下のように作成しました。
(soundを使用しない場合は必要ありません)

(1)otto-Robotのサウンド部分を拝借して、固定したサウンドを使用するため、ヘッダーファイル「FixSound.h」を作りました。


(2)ライブラリ「FixSound」のダウンロードについては、ページの最後をご覧ください。

(3)Arduino IDEへのライブラリ「FixSound」の設定方法
 ダウンロードした「FixSound.zip」ファイルをArduino IDEのライブラリにインストールします。

 ①Arduino IDEを起動し、メニューの「スケッチ」をクリックして、「ライブラリをインクルード」、「.ZIP形式のライブラリをインストール」の 順にクリックして、上記の「FixSound.zip」をインストールします。


 ②ライブラリーをインストール後、ライブラリの「contributedライブラリ」の中に「FixSound」が入っていればOKです。

(4)ライブラリ「FixSound」の使用方法
 以下のように使用します。

						
#include <FixSound.h> //ヘッダーファイル「FixSound.h」をインクルード
・・・・・・・
FixSound mysound; // FixSoundに適当な名前を付けます。この場合はmysound
・・・・・・・
#define PIN_Buzzer  11  //BUZZER pin を指定、この場合は11pin
・・・・・・・
void setup() {
 ・・・・・・・
  mysound.init( PIN_Buzzer);  //「FixSound」を初期化
 ・・・・・・・
}

void loop() {
 ・・・・・・・
mysound.sing(S_cuddly);  //鳴らすsoundを指定、この場合はS_cuddlyを鳴らします。
  delay(100);
 ・・・・・・・
}
						
						

①固定したsound名は、以下のように19種類あります。

S_connection、S_disconnection、S_buttonPushed、S_mode1、S_mode2、S_mode3、S_surprise、S_OhOoh、
S_OhOoh2、S_cuddly、S_sleeping、S_happy、S_superHappy、S_happy_short、S_sad、S_confused、S_fart1、
S_fart2、S_fart3

②mysound.sing(S_sleeping ); のようにmysound.sing( )の()の中に上記のsound名を入れます。
 以下のArduinoの起動プログラムを参照してください。


  Arduinoのプログラム


次が「Hungryman」の起動プログラムです。
 servoの角度は調整してください。

						
#include <FixSound.h>
#include <Servo.h>

FixSound mysound;
Servo armServo;

#define PIN_Buzzer  11 //BUZZER pin (11)

void setup() {
   
  armServo.attach(12);
  armServo.write(90);
    
  pinMode(A7, INPUT);    //距離センサーの入力PINをA7に指定
  pinMode(13, OUTPUT); //以下NANOの固定LED
  pinMode(0, OUTPUT);
  pinMode(1, OUTPUT);

  mysound.init( PIN_Buzzer);
  mysound.sing(S_connection);
  delay(100);
}

int sensorValue = 0;
int prevSensorValue = 0;
const int THRESHOLD = 360;

void loop() {
  sensorValue = analogRead(A7);
  
  if (prevSensorValue <= THRESHOLD) {
    if (sensorValue > THRESHOLD) {
      action();
    }
  }
  prevSensorValue = sensorValue;
  delay(10);
}

void action() {
  led(true);
  delay(800);

  mysound.sing(S_cuddly);
  delay(100);
  
  armServo.attach(12);
  armServo.write(10);
  delay(300);
  armServo.write(90);
  delay(500);

  mysound.sing(S_superHappy);
  delay(100);
  
  armServo.write(60);
  delay(250);
  armServo.write(80);
  delay(250);
  armServo.write(60);
  delay(250);
  armServo.write(80);
  delay(250);
  armServo.write(60);
  delay(250);
  armServo.write(80);
  delay(250);
  armServo.write(60);
  delay(250);
  armServo.write(90);
  delay(250);
  armServo.detach();

  mysound.sing(S_sad);
  delay(250);
   
  led(false);
}

void led(bool onOff) {
  if (onOff) {
    digitalWrite(13, HIGH);
    digitalWrite(0, LOW);
    digitalWrite(1, LOW);
  } else {
    digitalWrite(13, LOW);
    digitalWrite(0, HIGH);
    digitalWrite(1, HIGH);
  }
}
						



  ダウンロード


(1)次がsound用のライブラリファイル「FixSound.zip」のダウンロードです。
 soundを使用しない場合は必要ありません。

Download

(2)次は、「3Dprint」、「Arduinoスケッチ」ファイルのダウンロードです。

Download