Willkommen, liebe Bastler, Tüftler und Technik-Enthusiasten! Haben Sie sich jemals gewünscht, Ihre alte Spardose wäre ein bisschen „smarter” oder wollten Sie einen eigenen kleinen Automaten bauen, der Münzen nicht nur schluckt, sondern auch zählt, anzeigt und vielleicht sogar auf bestimmte Summen reagiert? Dann ist dieses Projekt genau das Richtige für Sie! Wir tauchen ein in die faszinierende Welt des **Arduino Münzeinwurfs** und zeigen Ihnen, wie Sie Ihr eigenes intelligentes System Schritt für Schritt realisieren.
### Warum einen smarten Münzeinwurf bauen?
Die Möglichkeiten sind vielfältig und oft nur durch Ihre eigene Fantasie begrenzt. Ein smarter Münzeinwurf kann das Herzstück vieler spannender Projekte sein:
* **Arcade-Automat zu Hause:** Geben Sie Ihren Retro-Gaming-Sessions einen authentischen Touch.
* **Intelligente Spardose:** Behalten Sie den Überblick über Ihr gespartes Geld, ohne sie öffnen zu müssen. Der Arduino kann den aktuellen Betrag anzeigen und sogar Sparziele überwachen.
* **Zugangskontrolle oder Zeitschaltuhr:** Benötigen Sie Münzen, um eine Lampe, ein Gerät oder sogar eine Tür für eine bestimmte Zeit freizuschalten?
* **Mini-Verkaufsautomat:** Für Süßigkeiten, kleine Gimmicks oder als Testplattform für größere Projekte.
* **Spaß und Lernen:** Es ist ein fantastisches Projekt, um die Grundlagen der Elektronik, Programmierung und Mechanik mit Arduino zu erlernen oder zu vertiefen.
Das „smarte” an unserem Münzeinwurf kommt durch die Integration eines **Arduino** Boards, das die eingelegten Münzen nicht nur erkennt, sondern auch verarbeitet, zählt, anzeigt und darauf basierend Aktionen ausführen kann. Kein reines mechanisches Bauteil mehr, sondern ein interaktives System!
### Was Sie für Ihr Projekt benötigen
Bevor wir loslegen, stellen Sie sicher, dass Sie alle notwendigen Komponenten griffbereit haben. Die meisten davon sind online oder in gut sortierten Elektronikgeschäften erhältlich.
1. **Arduino Board:** Ein **Arduino Uno** oder **Nano** ist perfekt für den Anfang. Der Uno ist etwas größer und einfacher zu handhaben auf einem Breadboard, der Nano ist kompakter.
2. **Münzprüfer / Münzeinwurf:** Dies ist das Herzstück des Systems. Achten Sie auf einen programmierbaren Münzprüfer (z.B. CH-926 oder JY-920), der verschiedene Münzgrößen und -materialien erkennen kann. Er sendet einen Impuls, wenn eine gültige Münze eingeworfen wird.
3. **LCD-Display (optional, aber empfohlen):** Ein 16×2 oder 20×4 LCD-Display mit I2C-Modul. Das I2C-Modul vereinfacht die Verkabelung erheblich, da es nur vier statt zwölf Pins benötigt. Dies ist entscheidend für eine übersichtliche Schaltung.
4. **Jumper-Kabel:** Männlich-weiblich und männlich-männlich für die Verbindungen.
5. **Breadboard:** Für den Aufbau und Test der Schaltung.
6. **Widerstände:** Verschiedene Werte, falls für den Münzprüfer oder andere Komponenten benötigt (siehe Datenblatt des Münzprüfers). Meistens sind es Pull-up- oder Pull-down-Widerstände.
7. **Taster/Buttons (optional):** Für Funktionen wie Reset, Menüauswahl oder das Setzen von Zielen.
8. **Buzzer (optional):** Für akustisches Feedback beim Einwurf.
9. **Gehäuse:** Ein selbstgebautes Gehäuse aus Holz, Pappe oder ein 3D-gedrucktes Gehäuse. Hier können Sie Ihrer Kreativität freien Lauf lassen!
10. **Stromversorgung:** Ein 9V-Batteriepack oder ein Netzteil für den Arduino. Der Münzprüfer benötigt oft 12V, daher ist ein externes Netzteil mit einem Step-down-Regler (z.B. LM2596) oder ein 12V-Netzteil für den gesamten Aufbau sinnvoll.
11. **Computer mit Arduino IDE:** Zum Programmieren des Arduino.
**Werkzeuge:** Seitenschneider, Abisolierzange, Schraubendreher und eventuell ein Lötkolben, falls Sie die Verbindungen dauerhaft machen möchten.
### Schritt 1: Vorbereitung – Planung und Software-Setup
Bevor wir Kabel stecken und Code schreiben, ist eine gute Vorbereitung die halbe Miete.
#### 1.1 Das Konzept entwickeln
Überlegen Sie genau, welche Funktionen Ihr Münzeinwurf haben soll. Soll er einfach nur zählen? Soll er nach Erreichen einer bestimmten Summe ein Relais schalten? Wie soll das Display die Informationen darstellen? Eine grobe Skizze Ihrer Idee kann sehr hilfreich sein.
#### 1.2 Arduino IDE installieren
Falls noch nicht geschehen, laden Sie die Arduino IDE von der offiziellen Arduino-Website herunter und installieren Sie sie auf Ihrem Computer.
#### 1.3 Bibliotheken installieren
Für das LCD-Display mit I2C-Modul benötigen Sie in der Regel die `LiquidCrystal_I2C` Bibliothek. Gehen Sie in der Arduino IDE zu `Skizze > Bibliotheken einbinden > Bibliotheken verwalten…` und suchen Sie nach „LiquidCrystal I2C”, um die entsprechende Bibliothek zu installieren. Für den Münzprüfer selbst ist meist keine spezielle Bibliothek nötig, da er einfach nur Impulse sendet.
### Schritt 2: Hardware-Aufbau – Die Verkabelung
Jetzt wird es spannend! Wir verbinden die einzelnen Komponenten miteinander. Achten Sie auf korrekte Verbindungen, um Schäden zu vermeiden.
#### 2.1 Den Münzprüfer anschließen
Der Münzprüfer hat in der Regel mehrere Pins:
* **VCC:** Stromversorgung (meist 12V).
* **GND:** Masse.
* **Coin Signal / Pulse Output:** Dieser Pin sendet einen Impuls, wenn eine gültige Münze erkannt wird.
* **Counter / Switch (optional):** Für mechanische Zähler oder Einstellungen.
Verbinden Sie den **VCC** des Münzprüfers mit einer 12V-Stromquelle (z.B. einem separaten 12V-Netzteil oder über einen Step-up/Step-down-Wandler vom Arduino). **GND** des Münzprüfers verbinden Sie mit dem **GND** des Arduinos. Den **Coin Signal** Pin des Münzprüfers verbinden Sie mit einem digitalen Pin am Arduino (z.B. Pin 2 oder 3, da diese für Interrupts geeignet sind). Ein Pull-up-Widerstand (z.B. 10k Ohm) zwischen dem Signal-Pin und VCC (oder dem 5V-Pin des Arduinos, wenn das Signal 5V-kompatibel ist) kann helfen, das Signal zu stabilisieren und Geisterimpulse zu vermeiden. Manche Münzprüfer haben bereits einen internen Pull-up/down. Prüfen Sie das Datenblatt!
**Wichtiger Hinweis:** Wenn Ihr Münzprüfer ein 12V-Signal ausgibt, darf dieses nicht direkt an den Arduino angeschlossen werden, da der Arduino maximal 5V-Signale auf den digitalen Pins verträgt. In diesem Fall benötigen Sie einen Spannungsteiler oder einen Level Shifter. Die meisten modernen Münzprüfer können jedoch auf 5V-Impulse umgeschaltet werden oder sind direkt 5V-kompatibel.
#### 2.2 Das LCD-Display mit I2C-Modul anschließen
Das I2C-Modul macht die Verkabelung des Displays sehr einfach:
* **VCC** des I2C-Moduls an **5V** des Arduino.
* **GND** des I2C-Moduls an **GND** des Arduino.
* **SDA** des I2C-Moduls an **A4** (Analog Pin 4) des Arduino Uno/Nano.
* **SCL** des I2C-Moduls an **A5** (Analog Pin 5) des Arduino Uno/Nano.
#### 2.3 Taster und Buzzer (optional) anschließen
* **Taster:** Verbinden Sie einen Pin des Tasters mit einem digitalen Pin des Arduino (z.B. Pin 4). Den anderen Pin des Tasters verbinden Sie mit **GND**. Aktivieren Sie den internen Pull-up-Widerstand im Arduino-Code (`pinMode(pin, INPUT_PULLUP);`), um das Signal zu stabilisieren und einen externen Widerstand zu vermeiden.
* **Buzzer:** Verbinden Sie den Pluspol des Buzzers mit einem digitalen Pin des Arduino (z.B. Pin 5) und den Minuspol mit **GND**.
#### 2.4 Stromversorgung
Verbinden Sie die Stromversorgung (z.B. 9V-Batterie oder Netzteil) mit dem Arduino. Stellen Sie sicher, dass alle GND-Verbindungen der verschiedenen Komponenten miteinander verbunden sind (gemeinsame Masse).
### Schritt 3: Die Programmierung – Der Arduino-Code
Jetzt erwecken wir unseren **Arduino Münzeinwurf** zum Leben! Der Code wird die Impulse des Münzprüfers lesen, die Münzen zählen und die Informationen auf dem LCD-Display anzeigen.
#### 3.1 Grundstruktur des Codes
„`cpp
#include
#include
// Definiere die Pins
const int coinPin = 2; // Pin, an den der Münzprüfer angeschlossen ist (digitaler Pin)
// Initialisiere das LCD-Objekt
// Die Adresse 0x27 ist die häufigste I2C-Adresse für LCD-Module.
// Manchmal ist es 0x3F. Wenn Ihr Display nicht funktioniert, versuchen Sie 0x3F.
// Die Größe des Displays ist 16 Spalten und 2 Zeilen (16×2). Passen Sie dies bei Bedarf an.
LiquidCrystal_I2C lcd(0x27, 16, 2);
volatile long currentBalance = 0; // Aktueller Kontostand (volatile, da in ISR geändert)
volatile long pulseCount = 0; // Zählt die Impulse des Münzprüfers (für Debugging)
// Definieren Sie die Werte Ihrer Münzen.
// Beachten Sie, dass der Münzprüfer für jede Münzart eine bestimmte Anzahl von Impulsen sendet.
// Sie müssen Ihren Münzprüfer kalibrieren, um diese Werte zu ermitteln.
// Beispiel: Münztyp 1 = 1 Impuls = 10 Cent, Münztyp 2 = 2 Impulse = 20 Cent, etc.
// Für einen einfachen Start nehmen wir an, ein Impuls ist 10 Cent.
const int centPerPulse = 10;
// Interrupt Service Routine (ISR)
void coinInserted() {
pulseCount++;
// Nehmen wir an, jeder Impuls vom Münzprüfer steht für 10 Cent.
// Sie müssen Ihren Münzprüfer so konfigurieren, dass er einen Impuls pro 10 Cent (oder Ihrer Basiseinheit) sendet.
currentBalance += centPerPulse;
}
void setup() {
Serial.begin(9600); // Serielle Kommunikation für Debugging
// Initialisiere den LCD
lcd.init();
lcd.backlight(); // Hintergrundbeleuchtung einschalten
lcd.print(„DIY Muenzeinwurf”);
lcd.setCursor(0, 1);
lcd.print(„Startet…”);
delay(2000);
lcd.clear();
// Konfiguriere den Münzprüfer-Pin als Eingang
pinMode(coinPin, INPUT_PULLUP); // Oder INPUT, falls Pull-up/down extern ist
// Richte einen Interrupt ein. Der Münzprüfer sendet meist einen LOW-Impuls.
// CHANGE: reagiert auf Wechsel von HIGH zu LOW und LOW zu HIGH.
// FALLING: reagiert nur auf Wechsel von HIGH zu LOW.
attachInterrupt(digitalPinToInterrupt(coinPin), coinInserted, FALLING);
// Initialanzeige auf dem LCD
lcd.setCursor(0, 0);
lcd.print(„Guthaben:”);
lcd.setCursor(0, 1);
lcd.print(„0.00 EUR”);
}
void loop() {
// Aktualisiere die Anzeige des Guthabens
lcd.setCursor(0, 1);
long euros = currentBalance / 100;
long cents = currentBalance % 100;
lcd.print(euros);
lcd.print(„.”);
if (cents < 10) {
lcd.print("0"); // Führende Null für Cents unter 10
}
lcd.print(cents);
lcd.print(" EUR "); // Leerzeichen, um alte Ziffern zu überschreiben
// Optional: Wenn Sie Taster haben, um etwas zu tun
// int buttonState = digitalRead(buttonPin);
// if (buttonState == LOW) { // Taster gedrückt
// // Führen Sie eine Aktion aus, z.B. Guthaben zurücksetzen oder Relais schalten
// // currentBalance = 0;
// // delay(200); // Debounce
// }