Arduino-Snack-Automat – Design & Bauanleitung
Komponenten und Materialien
| Komponente | Menge | Hinweise |
|---|---|---|
| Arduino UNO | 1 | Besser: Arduino Mega (mehr I/Os) |
| Sensor Shield | 1 | |
| DC-Motor 6V mit Rad | 3 | Für 3 Spirale/Ausgabefächer |
| Infrarot-Reflexionssensor / Liniensensor | 3 | Produkterkennung beim Ausgeben |
| Näherungssensor (induktiv) | 1 | Münzsensor 1 |
| Lichtschranke (Infrarot/Optokoppler) | 1 | Münzsensor 2 |
| Netzteil 6V für DC-Motoren | 1 | |
| Relais (4-Kanal) | 1 | Motoren ansteuern |
| LCD (Nokia 5110) | 1 | Monochrom-Display |
| LED (weiß) | 2 | |
| Taster (Rot, Gelb, Grün) | 3 | Produktwahl |
Apps & Online-Dienste
- Arduino IDE
- SolidWorks (oder anderes 3D-CAD)
Über dieses Projekt
Hallo aus Indonesien! Dieser Snack-Automat war mein Abschlussprojekt (fertiggestellt Ende 2015). Ziel: Ein Münz-automatisierter Snack-Automat mit Arduino, gebaut aus „günstigen, lokal verfügbaren“ Komponenten.
Das folgende Video zeigt den finalen Test: Münzeinwurf, Produktwahl, Ausgabe.
Schritt 1: Konzept skizzieren
Alles beginnt mit dem Konzept. Meine erste Skizze: Snack-Automat, Münzeinwurf, Acryl-Gehäuse. Konzept wählen und durchdenken – alle Szenarien, Bedingungen, Fehlerfälle bedenken. Alles skizzieren, egal wie unschön die Zeichnung. Der richtige Zeitpunkt für das „Undenkbare“ ist vor Projektstart.
Schritt 2: 3D-Modell erstellen
Für mich essenziell. Vollständiges SolidWorks-Modell: Abmessungen der Snack-Packungen, Münzgrößen (akzeptiert/abgelehnt), Münzschacht, Münzrampe, Taster, Arduino-Platzierung, Sensorpositionen, LCD-Platzierung, Schraublöcher für alle Teile.
Gehäuse aus Acryl, Laserschnitt. Je präziser das Modell, desto passgenauer das Gehäuse.
Schritt 3: Münzschacht designen
Zwei Filterstufen:
- Schachtbreite bestimmt, welche Münzdurchmesser überhaupt eintreten können.
- Rampenlänge filtert nach Durchmesser: Zu kleine Münzen fallen durch die Rampenlücke und werden abgelehnt; korrekte Münzen rollen in den Münzhalter.
Bildlegende: Links = zu groß (passt nicht in Schacht), Mitte = zu klein (fällt durch, abgelehnt), Rechts = akzeptiert (rollt in Halter).
Schritt 4: Jede Komponente vorbereiten & testen
Arduino ready machen, alles testen: LCD, Taster, Relais, LED. Logiken und Code ausprobieren, Grenzen austesten (aber nicht kaputtmachen). Warum Vorwiderstand? Was passiert bei X? Warum schwanken Sensorwerte? Welcher Wert wird tatsächlich gelesen?
Ergebnis: Induktiver Näherungssensor lieferte „unruhiges“ Signal – Pull-down-Widerstand beruhigte es. Infrarotsensor funktionierte bei direkter Sonne sehr schlecht – Lösung: Duktape um den Empfängerteil wickeln zur Abschirmung.
Schritt 5: Spiralmechanismus bauen
Kernstück der Ausgabe. Spiralmechanismus aus 2 mm Aludraht, manuell um 9 cm PVC-Rohr gewickelt. Spirale mit Kabelbindern am Motorrad befestigt. Motor an → Rad dreht → Spirale dreht. Drehbewegung wird in Linearbewegung des Produkts umgewandelt.
Schritt 6: Münzerkennungs-Mechanismus bauen
Zwei Sensoren im Münzlauf:
- Sensor 1 (induktiv): Bei Durchgang einer akzeptierten Münze startet Arduino Zeitmessung (Millisekunden).
- Sensor 2 (Lichtschranke): Bei Durchgang stoppt Arduino die Zeitmessung → „Reisezeit“ zwischen Sensor 1 und 2.
Wichtig: Nicht zu viele Magnete am Münzlauf – sonst klemmt die Münze. Wir brauchen freie Passage für exakte Zeitmessung. Die „Reisezeit“ (ms) identifiziert den Münzwert:
if (Reisezeit >= yyy ms) dann Münze "aaa" else Münze "bbb"
Schritt 7: Produkterkennung bauen
3 Infrarotsensoren erkennen, wenn ein Produkt nach Spiraldrehung herunterfällt. Auslösung → Signal an Relais → Motor stoppt.
Schritt 8: LCD für Informationen nutzen
Nokia 5110 zeigt (in Indonesischer Währung):
- Start: „Bitte Münze einwerfen“
- Münze erkannt: Münzwert + Gesamtsaldo
- Keine Münze: Startanzeige bleibt
- Nach Erkennung: Saldo ≥ Preis → „Produkt wählen“; Saldo < Preis → „Mehr Münzen einwerfen“
- Nach Ausgabe: Produktsensor ausgelöst → „Danke“, Transaktion Ende → Verzögerung → zurück zu Start
Schritt 9: Fertigstellung & Test
Nach ca. 3 Monaten: Finaler Test (Münze, Auswahl, Ausgabe). Video im Originalprojekt.
Hoffe, dieses Projekt inspiriert zum Nachbau eigener Arduino-Automaten.
Schritt 10: Verbesserungspotenzial
- Münzrückgabe/Wechselgeld-Mechanismus
- Scheinannahme
- Bitcoin/digitale Zahlung
- Bestandsanzeige auf LCD
- IoT: Benachrichtigung bei Transaktion
- IoT: Alarm bei leerem/geringem Bestand
Besonderer Dank: ITENAS Bandung, Fakultät für Maschinenbau.
Code
Quellcode für Snack-Automat (Arduino)
// Zustandsdefinitionen
const byte SIAP = 0;
const byte KOIN_MASUK1 = 1; // ... bis KOIN_MASUK7 = 7
const byte SALDO_500 = 8; // ... diverse Saldo-Zustände bis SALDO_1000500500 = 21
const byte KOIN_KELUAR = 22;
byte state = SIAP;
const float jeda_waktu = 876; // Schwellenwert Reisezeit (ms)
unsigned long time1...time7;
// Nokia 5110 LCD Pins
#define PIN_SCE 7
#define PIN_RESET 6
#define PIN_DC 5
#define PIN_SDIN 4
#define PIN_SCLK 3
#define LCD_C LOW
#define LCD_D HIGH
#define LCD_X 84
#define LCD_Y 48
// ASCII-Font-Tabelle (gekürzt)
static const byte ASCII[][5] = { ... };
// LCD-Funktionen: LcdWrite, LcdCharacter, LcdClear, LcdInitialise, LcdString
void setup() {
// Pin-Modes für Sensoren (A0-A5), Relais (8-10,13), Buzzer (2), Buttons (11,12,14-19)
Serial.begin(9600);
LcdInitialise();
LcdClear();
LcdString(" Masukkan Koin Rp500 atau Koin Rp1000 @ Rp2000");
delay(500);
}
void loop() {
// Zustandsautomat für Münzerkennung (2-Sensor-Zeitmessung)
// Saldo-Verwaltung (verschiedene SALDO_-Zustände)
// Produktauswahl per Taster (Pins 17,18,19)
// Motoransteuerung über Relais (Pins 8,9,10)
// Produkterkennung via IR-Sensoren (Pins 11,15,16)
// Rückgabe in Startzustand nach Transaktion
}
Vollständiger Code im Originalprojekt (sehr umfangreicher Zustandsautomat).
Custom Parts / Gehäuse
SolidWorks 3D-Modell-Screenshots im Originalprojekt.
Herstellungsprozess
- Automaten: Eine 36,6-Milliarden-Dollar-Industrie in den USA
- K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
- Digitales Stadiometer bauen: Körpergröße messen mit Arduino & Lasersensor VL53L0X
- DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
- Sensorturm mit Arduino Cloud: Temperatur, Bewegung & Gase überwachen
- Intelligente, bewegungsaktivierte Wasserpistole mit Arduino Nano
- Reverse Vending Machine (RVM): DIY Smart Recycling System Kit
- How to Sell Your Used Industrial Equipment Online: Private Treaty, Auction, and Tender Tips
- Frischmilch-Automaten (Milch-Tankstellen): Komfortabel, Günstig, Ökologisch
- Nudel-Automaten entdecken: Funktionsweise und Angebot