工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoで作るDIYキャンディディスペンサー:スマートなお菓子マシン

必要な部品と用品

部品数量備考
Arduino UNO1
サーボモーター(180°回転)1
LCDディスプレイ 16x2(白文字/青背景、I2C搭載)1Adafruit製等
タクトスイッチ 12mm2「少し」「たくさん」選択用
PHPoC Shield for Arduino1ネットワーク機能拡張用(任意)
IR距離センサー(障害物検知用)1カップ検知に使用
電源スイッチ1
ブレッドボード1

必要な工具

使用するアプリ

プロジェクト概要

プロジェクトの全体像

IRセンサー、サーボ、プッシュボタンだけで作れるシンプルなキャンディディスペンサーです。工程は以下の5ステップ:

  1. Arduino Uno R3の準備
  2. コーディングとセットアップ
  3. ケースと機械部品の製作
  4. 電子部品の取り付け
  5. テストと使用

コーディングが最も時間がかかりました(初心者のため)。Google検索と友人の助けで何とか完成。参考にしたオリジナル作品:
Google Assistant対応キャンディディスペンサー の簡易版です。

ケースと機械部品の製作

丸1日かけて試行錯誤の末に完成。段ボールとアクリル板を使用。

ステップ1:部品のレイアウト

段ボール上に全部品を配置し、配線色分けで管理。各部品の動作テストもここで実施。

ステップ2:箱の設計・切り出し

パーツサイズ素材
前面・背面20cm × 16cm背面はアクリル
側面(左右)12cm × 16cm段ボール
天面・底面20cm × 12cm段ボール

ステップ3:組み立てと切り抜き

マスキングテープで仮組みし、以下の穴を開けます:

お菓子が一度に落ちないよう、内部に段差を設けています。

ステップ4:基板の配置

ブレッドボードとArduinoをアクリル板で重ねて固定し、省スペース化。

ステップ5:部品の取り付け

  1. LCDとボタンを前面に取り付け
  2. 配線後、箱の中央に固定
  3. サーボモーターを取り付け(お菓子排出口に連動)
  4. 背面に電源スイッチと電池ボックスを設置

ステップ6:完成

外観はシンプルながら、全機能が収まったコンパクトなディスペンサーになりました。

Arduinoコード

//------ライブラリ------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
//----------------------

// LCDアドレス 0x27、16文字×2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo myservo;

int pos = 90;           // サーボ初期位置
int buttonCLK = 7;      // 「少し」ボタン
int buttonAntiCLK = 6;  // 「たくさん」ボタン
int set = 0;            // 選択状態
const int avoidPin = 5; // IR障害物センサーピン

void setup() {
  lcd.begin();
  lcd.clear();
  myservo.attach(9);        // サーボ:D9
  pinMode(buttonCLK, INPUT);
  pinMode(buttonAntiCLK, INPUT);
  pinMode(avoidPin, INPUT);
  Serial.begin(9600);
  lcd.backlight();
  
  // 起動メッセージ
  lcd.setCursor(3,0); lcd.print("Welcome to");
  lcd.setCursor(3,1); lcd.print("Candy Land");
  delay(2000);
  lcd.clear();
  lcd.setCursor(0,0); lcd.print("How much candy?");
  lcd.setCursor(0,1); lcd.print("A Little A Lot");
  delay(5000);
}

void loop() {
  // ボタン処理
  if (digitalRead(buttonCLK) == HIGH) {  // 「少し」押下
    lcd.clear(); lcd.print("Please Place Cup");
    delay(2000); lcd.clear();
    set = set + 1;
  }
  if (digitalRead(buttonAntiCLK) == HIGH) { // 「たくさん」押下
    lcd.clear(); lcd.print("Please Place Cup");
    delay(2000); lcd.clear();
    set = set + 2;
  }
  
  // 選択に応じた処理
  if (set == 1) { IRCLK(); }
  if (set == 2) { IRAntiCLK(); }
}

// 時計回り(少し)
void TurnClockwise() {
  Serial.println("Candy 1 Being Dispensed");
  CandyText1();
  for (pos = 90; pos < 180; pos += 1) {
    myservo.write(pos);
    delay(15);
  }
  if (pos == 180) {
    delay(2000);
    ThankYouText();
  }
}

// 反時計回り(たくさん)
void TurnAntiClockwise() {
  Serial.println("Candy 2 Being Dispensed");
  CandyText2();
  for (pos = 90; pos < 180; pos += 1) {
    myservo.write(pos);
    delay(20);
  }
  if (pos == 180) {
    delay(3000);
    ThankYouText();
  }
}

// IRセンサー検知→少し排出
void IRCLK() {
  delay(1000);
  boolean avoidVal = digitalRead(avoidPin);
  lcd.setCursor(0,0); lcd.print("Detecting Cup");
  lcd.setCursor(0,14); lcd.print("...");
  if (avoidVal == LOW) { // カップ検知
    lcd.clear(); lcd.print("Cup Placed");
    delay(2000);
    TurnClockwise();
  }
}

// IRセンサー検知→たくさん排出
void IRAntiCLK() {
  delay(1000);
  boolean avoidVal = digitalRead(avoidPin);
  lcd.setCursor(0,0); lcd.print("Detecting Cup");
  lcd.setCursor(0,14); lcd.print("...");
  if (avoidVal == LOW) {
    lcd.clear(); lcd.print("Cup Placed");
    delay(2000);
    TurnAntiClockwise();
  }
}

// 表示関数群
void CandyText1() {
  lcd.clear(); lcd.setCursor(4,0); lcd.print("Pouring");
  lcd.setCursor(1,1); lcd.print("Little Candy");
}
void CandyText2() {
  lcd.clear(); lcd.setCursor(4,0); lcd.print("Pouring");
  lcd.setCursor(3,1); lcd.print("Lot Candy");
}
void ThankYouText() {
  lcd.clear(); lcd.setCursor(5,0); lcd.print("Thank");
  lcd.setCursor(6,1); lcd.print("You");
  delay(15);
  software_Reset();
}

// ソフトウェアリセット(最初から再開)
void software_Reset() {
  asm volatile ("jmp 0");
}

回路図

配線は色分けに従って接続してください。Fritzingファイルまたは画像を参照。

Arduinoで作るDIYキャンディディスペンサー:スマートなお菓子マシン

製造プロセス

  1. キャンディケイン:歴史、製造、そして定番ホリデー菓子の甘い科学
  2. キャンディコーン:伝統から現代生産へ
  3. ジョーブレイカー:伝統的ハードキャンディの歴史、原料、職人技
  4. 綿菓子:クラシック菓子から現代生産技術へ
  5. グミキャンディの甘い科学:歴史から現代生産まで
  6. M&M'sチョコレート:発明から現代生産まで
  7. Microsoft Flight Simulator 2020用Arduinoスイッチ&LEDパネル
  8. Bluetooth操作のArduinoスパイボットを自作する
  9. FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
  10. 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
  11. 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう