Storm1@生体工学・マーケティング勉強中

日々の学びをアウトプットしていきます!

【電子工作】子供用のおもちゃ(キッチン台)を1から作ってみた

背景

電子工作にも慣れてきて、Pythonも仕事で使えるレベルになり、

  • モノづくりの観点で少し変わったことをやってみたい
  • 実用的なものを作りたい

と考えていましたが、実用的となるとハードルがぐっと上がるので最近おままごとにはまり始めた娘にキッチン台をプレゼントすることにしました。

完成品

f:id:j0601601:20201102131359j:plain かなりカラフルで蛇口やコンロも出来ました!!

プレ完成品

とっても簡単ですし、しょぼいおもちゃです。
・・・が、娘は大喜びでした(^_-)-☆

プレと書いたのは、まだキッチン台として不十分なためです。
(ただLED光っているだけですし・・・)

実際は光っている部分がコンロを表しており、その他の白い部分にもいろいろな絵を描いていく予定です。

というわけで、装飾後のものは後日改めて添付しようと思います。

実際に娘が使っているところ f:id:j0601601:20201017184638j:plain

大きさ f:id:j0601601:20201017184827j:plain

<!— more -->

やってみた感想

とりあえず、おもちゃメーカー様に感謝。。。
安全設計はもちろん、安価で良いものは当たり前のように手に入る世の中ですが。

また、木材の加工って思ったより大変だったので、次からは加工してくれるホームセンターでお願いしようと思います。

やったこと

  1. 木材を使用した筐体設計
  2. ESP32マイコンを用いたLチカ、スイッチ操作
  3. Arduino IDEによる制御

筐体設計

イメージ

おままごと台のイメージ図は↓の通りです。

設計図づくり

実際に作業を始める前に設計図を書いてみました。
この時点で以下を考慮する必要があることに気づきました... (設計図は省略します)

  • 子供向けなので、最優先は安全性であること
  • 子供は予想外のことをする可能性が十分にあること

この点は妻から強く指摘されたポイントです。。。が、そりゃそうですよね。 最初は段ボール製にしようとしたが、万が一おもちゃにダイブしたら・・・と考えると危険なので、配置場所を煉った上で木造にすることにした。

木の種類選び

近くのホームセンターへ木材を購入しに向かったが、いくつか問題があった。

  1. ホームセンターの人が、木材に詳しくないこと(当日いなかっただけ・・・?)
  2. 木材の種類が複数あり、どれが適切かわからないこと

木材の種類に関しては、パイン・檜・杉の3種類がおいてあり、加工しやすさ、頑丈さなどの観点でPOPが置いてあったので、それを参考に購入した。 50[cm] * 27[cm] * 14[cm]程度の大きさだったため、頑丈さよりも加工のしやすさを優先して選んだ。

※以下のサイトが参考になりそうです https://www.diy-id.net/know-how-wood/wood-shurui/

ここで大変だったのが、木材の加工です。 サイズを測って、線を引いて、カットするんですが、

まっすぐに切れない

「電動のこぎり使えば楽勝っしょ!」とか考えてた自分をぶっ飛ばしてやりたい。

1時間ほどかけて必要なサイズに木材を切りそろえました。

筐体づくり

ここは難しいポイントがなかったため省略します。

  1. 木材にねじ穴をあける
  2. 木工用ボンドで土台を接着する

ESP32マイコンを用いたLチカ、スイッチ操作

回路は以下の通り。 ※もっと良い接続方法があるかも。。。

f:id:j0601601:20201017171346p:plain

ESP32はリンク先で購入できます。

Arduino IDEによる制御

スケッチは以下になります。
Lチカとボタン操作のみなので、難易度は低いです。

#define RED_LED 5
#define YELLOW_LED 4
const int RED_BUTTON = 22; // ボタンを接続
const int YELLOW_BUTTON = 23; // ボタンを接続

void setup() {
  Serial.begin(115200);
  Serial.println("Start!");
  pinMode(RED_LED, OUTPUT);
  pinMode(YELLOW_LED, OUTPUT);
  pinMode(RED_BUTTON, INPUT); // ボタン変数は入力に
  pinMode(YELLOW_BUTTON, INPUT); // ボタン変数は入力に
}

void loop() {
  int RedButtonState = digitalRead(RED_BUTTON);
  int YellowButtonState = digitalRead(YELLOW_BUTTON);
  
  Serial.println(RedButtonState);
  Serial.println(YellowButtonState);
  
  if (RedButtonState == HIGH){
    digitalWrite(RED_LED, HIGH);    
    
  } else {
    digitalWrite(RED_LED, LOW);
    
  }
  
  if (YellowButtonState == HIGH){
    digitalWrite(YELLOW_LED, HIGH);
    Serial.println("HIGH!");
  } else {
    digitalWrite(YELLOW_LED, LOW);
    Serial.println("LOW!");
  }
  
}
'''


[f:id:j0601601:20201017184706j:plain]