Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Sichere IoT-Puzzle-Box mit Arduino MKR Bundle bauen – Schritt-für-Schritt

Komponenten und Zubehör

Komponente Menge
Arduino MKR IoT Bundle (enthält MKR1000, Sensoren, Aktoren, Breadboard, Kabel) 1
Karton (2 mm) oder 3D-Druck für Gehäuse 1

Software & Dienste

Projektbeschreibung

Eine kleine „Puzzle-Box“, die sich nur öffnet, wenn drei Potentiometer auf eine per Blynk-App einstellbare Kombination (0–9) gedreht werden. Ein RGB-LED gibt Farb-Feedback (blau → aqua → gelb → rot = näher dran). Bei richtiger Kombination spielt ein Buzzer das Star-Wars-Thema und ein Servo öffnet den Deckel. Alles in einem Karton-Gehäuse.

Sichere IoT-Puzzle-Box mit Arduino MKR Bundle bauen – Schritt-für-Schritt
Funktionsdemo: Kombinations-Eingabe, LED-Feedback, Öffnen

Lernziele

Blynk einrichten

  1. Blynk App installieren, Account erstellen, „New Project“ → Hardware: Arduino MKR1000, Connection: WiFi.
  2. Auth Token per E-Mail notieren.
  3. Drei Slider (V1, V2, V3) hinzufügen, Range 0–9 – das sind die drei Kombinations-Ziffern.
  4. In Arduino IDE: Blynk-Library installieren (Library Manager).
  5. WLAN-SSID & Passwort in SECRET_SSID / SECRET_PSWD eintragen (oder im Sketch direkt).

Hardware-Verkabelung (aus MKR Bundle)

Sichere IoT-Puzzle-Box mit Arduino MKR Bundle bauen – Schritt-für-Schritt
Verkabelung LCD, Potentiometer, RGB-LED
Sichere IoT-Puzzle-Box mit Arduino MKR Bundle bauen – Schritt-für-Schritt
Servo-Anschluss (Riegel)

Code-Struktur (Schrittweise Aufbau)

Der Artikel baut den Sketch schrittweise auf: Blynk-Verbindung → LCD + Potis → RGB-Feedback → Buzzer-Melodie → Servo-Öffnung → Komplett-Sketch. Hier die finale Logik:

// Vollständiger Sketch (gekürzt – vollständiger Code auf GitHub/Original)
#include <LiquidCrystal.h>
#include <SPI.h>
#include <WiFi101.h>
#include <BlynkSimpleWiFiShield101.h>
#include <Servo.h>

const char* ssid = SECRET_SSID;
const char* password = SECRET_PSWD;
char auth[] = SECRET_TOKEN;

// Pins
int redPin = 6, greenPin = 8, bluePin = 7;
int buzzerPin = 1;
int servoPin = 9;
const int rs = 12, en = 11, d4 = 2, d5 = 3, d6 = 4, d7 = 5;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Servo myservo;

// Kombi aus Blynk (Default 1-1-1)
int SliderValueOne = 1, SliderValueTwo = 1, SliderValueThree = 1;
bool start = true; // Box noch zu?

BLYNK_WRITE(V1) { SliderValueOne = param.asInt(); }
BLYNK_WRITE(V2) { SliderValueTwo = param.asInt(); }
BLYNK_WRITE(V3) { SliderValueThree = param.asInt(); }

void setup() {
  pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  myservo.attach(servoPin); myservo.write(0); // geschlossen
  analogWrite(A3, 0); // LCD max Helligkeit
  lcd.begin(16, 2);
  Serial.begin(9600);
  Blynk.begin(auth, ssid, password);
}

void loop() {
  Blynk.run();
  int p1 = map(analogRead(A0), 0, 1023, 0, 9);
  int p2 = map(analogRead(A1), 0, 1023, 0, 9);
  int p3 = map(analogRead(A2), 0, 1023, 0, 9);

  lcd.setCursor(0,0); lcd.print(p1); lcd.setCursor(2,0); lcd.print(p2); lcd.setCursor(4,0); lcd.print(p3);

  if (start) {
    giveColorFeedback(p1, p2, p3);
    if (p1 == SliderValueOne && p2 == SliderValueTwo && p3 == SliderValueThree) {
      blinkGreenLed();
      playStarWars();
      openBox();
      start = false;
    }
  } else {
    // Box offen – zurücksetzen wenn alle Potis auf 0
    if (p1 == 0 && p2 == 0 && p3 == 0) start = true;
  }
}

void giveColorFeedback(int p1, int p2, int p3) {
  int d1 = abs(p1 - SliderValueOne);
  int d2 = abs(p2 - SliderValueTwo);
  int d3 = abs(p3 - SliderValueThree);
  if (d1 <= 1 && d2 <= 1 && d3 <= 1) setColor(255,0,0);      // Rot
  else if (d1 <= 3 && d2 <= 3 && d3 <= 3) setColor(255,255,0); // Gelb
  else if (d1 <= 4 && d2 <= 4 && d3 <= 4) setColor(0,255,255); // Aqua
  else setColor(0,0,255);                                      // Blau
}

void blinkGreenLed() {
  for(int a=0;a<2;a++) {
    for(int b=0;b<=255;b+=5){ setColor(0,b,0); delay(5); }
    for(int b=255;b>=0;b-=5){ setColor(0,b,0); delay(5); }
  }
  for(int b=0;b<=255;b+=5){ setColor(0,b,0); delay(5); }
}

void setColor(int r, int g, int b) {
  analogWrite(redPin, r); analogWrite(greenPin, g); analogWrite(bluePin, b);
}

void playStarWars() {
  // Frequenzen & Dauer wie im Originalartikel (beep-Funktion mit tone())
  // Siehe Original für vollständige Notenfolge
}

void openBox() {
  for(int pos=0; pos<=90; pos++) { myservo.write(pos); delay(15); }
}

void closeBox() {
  for(int pos=90; pos>=0; pos--) { myservo.write(pos); delay(15); }
}

Gehäuse (CAD)

DXF-Datei für 2 mm Karton (Lasercutter): box_E5j7tnFdNC.dxf. Alternativ 3D-Druck.

Schaltplan

Sichere IoT-Puzzle-Box mit Arduino MKR Bundle bauen – Schritt-für-Schritt
Gesamtverdrahtung der Puzzle Box

Hinweis

Das Tutorial könnte veraltet sein; aktuelle Version auf der Arduino-Projekt-Seite prüfen. Das MKR IoT Bundle enthält alle nötigen Bauteile. Nicht für echte Wertsachen geeignet – eher für Süßigkeiten & Spielspaß!

Herstellungsprozess

  1. SPICE Netlist-Syntax: Bauteilbenennung, passive & aktive Elemente, Quellen
  2. Integrierte Schaltkreise (ICs): Kompakte, leistungsstarke Chips, die moderne Elektronik antreiben
  3. TI SensorTag mit Blynk via Node-RED auf Raspberry Pi Zero integrieren
  4. Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
  5. Multi-Position Temperatursensor-System für Smart-Home-Integration
  6. DIY Arduino USB Gaming Controller – Bauen Sie Ihren eigenen High-Performance Gamepad
  7. MOSMusic: Musik-synchronisierte Lichtsteuerung mit CoolMOS MOSFET & Arduino
  8. Mikroelektronik: Die Wissenschaft winziger Elektronikbauteile
  9. Bohrmaschinen-Komponenten: Aufbau und Funktion im Detail
  10. Wesentliche Komponenten eines Verbrennungsmotors