Programmier Challenges

Im Folgenden sind einige Beispiel-Aufgaben für das Programmieren der FactoryBox.
Sie beginnen mit Grundlagen in der Arbeit mit dem ESP32 und Arduino um dann komplexere Sensor-Integrationen und weitere Herausforderungen einzubinden.

Wir empfehlen Dir, die Challenges in der Reihenfolge ihrer Schwierigkeits-Level durchzuarbeiten.
Die Reihenfolge der Tasks innerhab der Levels ist jedoch frei wählbar.



  1. Lade die Beispielcodes herunter.
  2. Extrahiere die Datei im Downloadordner
  3. Wähle die relevenaten Codes für die Coding Challenge (siehe Part ID)
  4. Öffne diese(n) in VS Code oder der Arduino IDE
  5. Führe den Code zunächst die separat aus um deren Funktion zu verstehen. (Optional wenn du dich bereits auskennst)
  6. Nutze die Codes um Programmier Challenges abzuschließen oder sie in deine eigenen Experimente zu integrieren.
  7. Habe Spaß!


Level 0 ist darauf ausgelegt, Dir einen einfachen Einstieg zu ermöglichen.
Die Anforderungen sind gering aber grundlegend.
Sie decken nicht alle Sensoren/Aktoren der FactoryBox ab.
Aber sie bieten Dir die Möglichkeit, dich mit der Verwendung von VSCode und PlattformIO vertraut zu machen.
Wie man Code hochlädt, wie man kleine Änderungen vornimmt usw.


AufgabeEinschalten einer LED mit einem Knopfdruck
Was ist zu tun:Schalte die LED ein und aus über das Drücken eines Tasters
Notwendige Bauteile:LED Weiß (ID: 36)
Taster (ID:44)
Ziele:Verbinde eine LED mit dem ESP32
Prüfe auf Eingabe durch Taster-Druck
Hinweise zur
Implementierung:
Teste die Bauteile einzeln bevor Du sie kombinierst.
Passe auf wegen Taster-Prellen.
Nur diese beiden Bauteile (Taster/LED) sind nicht über den GPIO-Extender verbunden.

AufgabeBewege einen Servo-Motor
Was ist zu tun:Versuche den Servo-Motor. Versuche eine flüssige Bewegung zu erzeugen.
Notwendige Bauteile:Servomotor (ID: 50)
Ziele:Nutze PWM um den Servomotor zu bewegen.
Hinweise zur
Implementierung:
Servos können bis zu 180° rotieren. Flüssige Bewegungen können über Veränderung der Bewegungsgeschwindigkeit erreicht werden.

AufgabeBewege einen Stepper-Motor
Was ist zu tun:Bringe den Stepper-Motor dazu sich zu bewegen. Versuche eine flüssige Drehbewegung zu erzielen.
Notwendige Bauteile:Stepper Motor (ID: 51)
Ziele:Rotiere den Stepper-Motor
Hinweise zur
Implementierung:
Richtung und Geschwindigkeit können variiert werden.
Stepper-Motoren können über die 360° hinaus rotieren.

Level 1 ist darauf ausgelegt, die Anforderungen etwas zu erhöhen.
Du arbeitest mit Listen, nutzt Bibliotheken intensiver und verwendest I²C, um die Funktionalität zu erweitern.
Du kannst auf dem Code aus Level 0 aufbauen und neue Fähigkeiten erlernen.
Wenn Du jedoch eine eigene Idee hast, ermutigen wir Dich, sie auszuprobieren.


AufgabeLED Animation on RGBW Strip
Was ist zu tun:Eine Animation auf dem LED-Streifen erstellen. Ein einfacher Anfang ist eine einzelne LED, die sich entlang des Streifens bewegt.
Notwendige Bauteile:LED Strip (ID: 40)
Ziele:Die LED-Sequenz entsprechend dem Layout-Diagramm animieren
Sanfte Farbübergänge erzeugen
Hinweise zur
Implementierung:
Obwohl separat aufgeführt, sind alle LED-Streifen an denselben Pin angeschlossen
Die Ausrichtung der LEDs kann variieren

AufgabeTurn On All Hall Lights
Was ist zu tun:Turn all the white LEDs on/off with the push of the light-button on the control panel
Notwendige Bauteile:LED White (ID: 33, 34, 35, 36)
Push Button (ID: 42)
LDR (ID: 32)
IO Expander (ID: 52)
Ziele:LEDs über den IO-Expander anschließen
Beleuchtung mit einem Taster steuern
Lichter automatisch einschalten, wenn es dunkel ist
Hinweise zur
Implementierung:
Nicht alle LEDs werden über den IO-Expander gesteuert
LDR-aktivierte Lichter sollten sich mit dem nächsten Tastendruck ausschalten lassen

Die Beleuchtung in Fabriken spielt eine entscheidende Rolle bei der Gewährleistung von Sicherheit, Produktivität und Gesamteffizienz in industriellen Umgebungen. Eine angemessene Beleuchtung ermöglicht es den Mitarbeitenden, Maschinen, Werkzeuge und Materialien klar zu erkennen, wodurch das Risiko von Unfällen und Fehlern verringert wird. In Fabriken, in denen Präzision entscheidend ist – wie etwa an Montagelinien oder Qualitätskontrollstationen –
hat eine gute Beleuchtung direkten Einfluss auf die Produktqualität. Darüber hinaus können gut konzipierte Beleuchtungssysteme die Augenbelastung und Ermüdung reduzieren und so den Komfort sowie die Leistungsfähigkeit der Mitarbeitenden über lange Schichten hinweg verbessern.

Verschiedene Beleuchtungsfunktionen werden eingesetzt, um sich an unterschiedliche betriebliche Anforderungen anzupassen. Manuelle Einschaltsteuerungen ermöglichen es Mitarbeitenden oder Vorgesetzten, das Licht nur dann einzuschalten, wenn bestimmte Bereiche genutzt werden. Dies sorgt für Flexibilität und hilft, unnötigen Energieverbrauch zu reduzieren. Beispielsweise benötigen Lagerräume oder Wartungsbereiche keine dauerhafte Beleuchtung.

Lichtempfindliche Funktionen, die häufig durch Sensoren gesteuert werden, passen die Beleuchtung automatisch an das natürliche Tageslicht an. Wenn ausreichend Sonnenlicht vorhanden ist, kann die künstliche Beleuchtung gedimmt oder ausgeschaltet werden, wodurch Energie gespart und die Betriebskosten gesenkt werden. Diese Systeme sorgen zudem den ganzen Tag über für eine gleichmäßige Helligkeit und gewährleisten sichere sowie komfortable Arbeitsbedingungen, ohne dass manuelle Anpassungen erforderlich sind.

Durch die Kombination von manuellen Steuerungen und lichtempfindlicher Automatisierung können Fabriken ein Beleuchtungssystem schaffen, das sicher, energieeffizient und an unterschiedliche Aufgaben sowie Arbeitsbedingungen anpassbar ist.


AufgabeRead Distance via I2C and Display as Text
Was ist zu tun:Die Entfernung vom Abstandssensor erfassen und auf dem LCD-Display anzeigen
Notwendige Bauteile:Distanz-Sensor (ID: 54)
LCD Display (ID: 53)
Ziele:Abstand messen
Ergebnisse mit Einheiten anzeigen
Hinweise zur
Implementierung:
Fehlende Sensordaten behandeln
Warnung ausgeben, wenn der Abstand zu gering ist
Verbindungen separat testen

Level 2 challenges to create actual factory use-cases.
With each challenge there is a small excursion, explaining it’s real world functionality and how that translates to our FactoryBox.
The challenges are non-exhaustive. There is more than one way to solve a problem. More than one solution to show a process.
The most important thing is that the codes compiles without error 😉


AufgabeCount Incoming Material
Was ist zu tun:Löse die Lichtschranke aus, indem der Servomotorarm zwischen Sensor und Sender bewegt und anschließend wieder herausgeführt wird. Starte bei einem Zählerstand von 0 auf der 7-Segment-Anzeige (4-digit Display) und erhöhe diesen bei jeder Unterbrechung der Lichtschranke um eins.
Notwendige Bauteile:Servomotor (ID: 49)
Lichtschranke (ID: 48)
4-Digit Display (ID: 56)
Ziele:Lichtschranke mit dem Servo auslösen
Bei Unterbrechung auf dem Display zählen
Hinweise zur
Implementierung:
Doppeltes Auslösen der Lichtschranke vermeiden
Darauf achten, den Servo nicht zu beschädigen
Geschwindigkeit für präzises Zählen optimieren

Qualitätskontrollstationen sind in modernen Fabriken von entscheidender Bedeutung, da sie sicherstellen, dass nur korrekte und fehlerfreie Produkte im Produktionsprozess weitergeführt werden. Durch das Überwachen und Zählen eingehender Materialien können Unternehmen den Produktionsfluss nachverfolgen, Fehler frühzeitig erkennen und eine gleichbleibend hohe Produktqualität gewährleisten. Präzise Zählsysteme helfen dabei, Engpässe, Überproduktion und kostspielige Fehler zu vermeiden.

In dieser Aufgabe verwendet die Qualitätskontrollstation eine Lichtschranke, um Materialbewegungen zu erfassen. Wenn der Servomotorarm den Sensor passiert, simuliert er ein eintreffendes Produkt, das den Lichtstrahl unterbricht. Jede Unterbrechung entspricht einem gezählten Element. Das 4-stellige Display zeigt den aktuellen Zählerstand an, beginnend bei null und erhöht sich bei jeder korrekt erfassten Unterbrechung um eins.

Verschiedene Funktionen sind wichtig, um das System zuverlässig und präzise zu machen. Die Zähllogik muss sicherstellen, dass eine Bewegung den Zähler nur einmal erhöht. Ohne diese Kontrolle könnten kleine Vibrationen oder langsame Bewegungen mehrere Zählvorgänge für ein einzelnes Objekt auslösen. Dies verbessert die Genauigkeit und verhindert fehlerhafte Produktionsdaten.

Der Einsatz eines Servomotors ermöglicht eine kontrollierte und wiederholbare Bewegung, wodurch ein gleichmäßiger Materialfluss simuliert wird. Gleichzeitig sorgt die Optimierung der Geschwindigkeit des Servos dafür, dass die Lichtschranke eindeutig ausgelöst wird, ohne mechanische Bauteile zu beschädigen. Ein gut abgestimmtes System vereint Präzision, Langlebigkeit und Effizienz.

Durch die Kombination von Sensordetektion, kontrollierter Bewegung und digitalem Zählen zeigt die Qualitätskontrollstation, wie Automatisierung eine präzise Überwachung unterstützt und die allgemeine Zuverlässigkeit der Produktion verbessert.


AufgabeUmgebungs-Überwachung
Was ist zu tun:Ein System erstellen, das die Fabrikhalle automatisch überwacht. Den Lüfter einschalten, wenn es zu warm/feucht/gasbelastet wird, und wieder ausschalten, sobald sich die Situation verbessert hat
Notwendige Bauteile:Luft-Qualitäts-Sensor (ID:58)
Temperatur/Luftfeuchte Sensor (ID: 55)
Lüfter (ID: 47)
Optional: LED Rot (ID: 38)
Ziele:Lüfter einschalten, wenn Temperatur, Luftfeuchtigkeit oder Luftqualität schlecht sind
Überwachen und deaktivieren, sobald die Werte wieder im sicheren Bereich liegen
Optional: Rote LED bei schlechter Luftqualität einschalten
Hinweise zur
Implementierung:
Definiere praxisnahe Sensor-Schwellenwerte
Vermeide die Verwendung von delay() – nutze stattdessen Zeitintervalle
Verwende unterschiedliche Intervalle für Messungen und Warnungen
Gute Luftqualität bedeutet nicht immer gute Temperatur – prüfe die Werte, bevor der Lüfter ausgeschaltet wird

Umweltüberwachung in einer Fabrik ist entscheidend, um sichere und gesunde Arbeitsbedingungen zu gewährleisten. Temperatur, Luftfeuchtigkeit und Luftqualität wirken sich direkt auf Mitarbeitende und Maschinen aus. Wird die Luft zu warm, zu feucht oder enthält sie schädliche Gase, kann dies den Komfort der Mitarbeitenden beeinträchtigen, Geräte beschädigen und sogar Gesundheitsrisiken darstellen. Ein automatisiertes Überwachungssystem hilft dabei, optimale Bedingungen aufrechtzuerhalten, ohne dass eine ständige manuelle Kontrolle erforderlich ist.

In dieser Aufgabe messen Sensoren kontinuierlich die Luftqualität sowie Temperatur und Luftfeuchtigkeit. Überschreitet einer dieser Werte einen definierten Grenzwert, aktiviert das System automatisch den Ventilator, um die Luftzirkulation zu verbessern. Der Ventilator hilft dabei, Hitze zu reduzieren, überschüssige Feuchtigkeit zu entfernen oder belastete Luft zu beseitigen. Sobald die gemessenen Werte wieder in einem sicheren Bereich liegen, schaltet das System den Ventilator erneut aus, um Energie zu sparen und unnötigen Betrieb zu vermeiden. Der Ventilator stellt in diesem Fall eine Darstellung von Klimaanlagen (AC-Systemen) dar, die Fabriken belüften und für sichere Bedingungen sorgen.

Eine optionale rote LED kann als visuelle Warnanzeige verwendet werden. Wenn sich die Luftqualität verschlechtert, leuchtet die LED auf und signalisiert sofort ein Problem. Dadurch wird das System transparenter und ermöglicht es den Mitarbeitenden, Umweltprobleme auf einen Blick zu erkennen. Im Falle schwerwiegender Umweltprobleme können die Mitarbeitenden sich sofort evakuieren oder Gegenmaßnahmen ergreifen.

Verschiedene Funktionen sind wichtig, um einen zuverlässigen Betrieb zu gewährleisten. Praxisgerechte Sensor-Grenzwerte müssen definiert werden, damit das System angemessen reagiert – weder zu früh noch zu spät. Das Programm sollte delay() vermeiden und stattdessen mit Zeitintervallen arbeiten, sodass eine kontinuierliche Überwachung ohne Blockierung anderer Prozesse möglich ist. Die Verwendung getrennter Intervalle für Sensorabfragen und Warnsignale verbessert die Effizienz und Reaktionsfähigkeit des Systems. Zudem bedeutet eine gute Luftqualität nicht automatisch, dass Temperatur oder Luftfeuchtigkeit akzeptabel sind, daher müssen alle Parameter überprüft werden, bevor der Ventilator ausgeschaltet wird.

Durch die Kombination aus kontinuierlicher Überwachung, automatischer Steuerung und klaren Warnsignalen zeigt dieses Umweltüberwachungssystem, wie intelligente Automatisierung die Sicherheit verbessern, die Energieeffizienz steigern und die Arbeitsbedingungen in industriellen Umgebungen optimieren kann.


AufgabeImplementierung einer Warn-/Alarm-Anlage
Was ist zu tun:Ein Alarmsignal auslösen, wenn jemand oder etwas den gesperrten Bereich betritt, indem der Abstandssensor überwacht wird. Verringert sich die Distanz stark, den Summer und die rote LED aktivieren, um einen Alarm zu erzeugen. Die Not-Aus-Taste (E-Stop) verwenden, um den Alarm zu stoppen bzw. zurückzusetzen.
Notwendige Bauteile:LED Rot (ID: 37, 38)
Taster (ID:43)
Buzzer (ID: 45)
Distanz-Sensor (ID: 54)
Ziele:Bewegung im gesperrten Bereich erkennen
Alarm über den Summer auslösen
Zurücksetzen über einen Taster
Hinweise zur
Implementierung:
Verwende einen zeitgesteuerten Alarmton, nicht nur einen durchgehenden Dauerton
Rücksetzen nicht erlauben, solange die Bedrohung weiterhin besteht

Ein Warnsystem ist ein wichtiger Bestandteil der Sicherheit in Fabriken, insbesondere in gesperrten oder gefährlichen Bereichen. Bestimmte Zonen können bewegliche Maschinen, hohe Spannungen oder empfindliche Geräte enthalten, die während des Betriebs nicht betreten werden dürfen. Ein automatisiertes Alarmsystem hilft dabei, unbefugtes Betreten zu erkennen und Mitarbeitende sofort zu warnen, um Unfälle oder Schäden zu verhindern.

In dieser Aufgabe verwendet das System einen Abstandssensor, um einen gesperrten Bereich zu überwachen. Dies funktioniert ähnlich wie eine Lichtschranke, wie sie typischerweise in einer realen Fabrik eingesetzt wird.
Wenn sich der gemessene Abstand plötzlich verringert, deutet dies darauf hin, dass eine Person oder ein Objekt in die überwachte Zone eingetreten ist. Wird diese Veränderung erkannt, aktiviert das System sowohl den Summer als auch die rote LED, um ein klares visuelles und akustisches Alarmsignal zu erzeugen. Dadurch wird sichergestellt, dass die Warnung auch in einer lauten Fabrikumgebung wahrgenommen wird.
Maschinen erfordern jedoch Wartung, Werkzeugwechsel usw. Wenn die Produktion nicht läuft, führt ein aktiver Alarm, der bei jedem Betreten eines Mitarbeiters ausgelöst wird, zu einer Störung.

Der Summer sollte keinen durchgehenden Ton erzeugen, sondern stattdessen ein zeitlich gesteuertes oder pulsierendes Alarmsignal abgeben. Dadurch wird die Warnung effektiver und leichter als solche erkennbar. Die rote LED verstärkt den Alarm visuell und bietet eine sofortige Anzeige von Gefahr.

Der Taster dient als Not-Aus- und Reset-Steuerung. Allerdings darf das System nicht zurückgesetzt werden, solange die Gefahr noch besteht. Erst wenn der Abstandssensor erkennt, dass der gesperrte Bereich wieder frei ist, sollte der Alarm deaktiviert und das System zurücksetzbar sein. Dadurch werden unsichere Situationen verhindert, bei denen ein Alarm stummgeschaltet werden könnte, während die Gefahr weiterhin besteht.

Durch die Kombination aus sensorbasierter Erkennung, akustischen und visuellen Warnsignalen sowie einem kontrollierten Rücksetzmechanismus zeigt dieses Warnsystem, wie Automatisierung die Sicherheit verbessert, schnelle Reaktionen auf Gefahren ermöglicht und sowohl Mitarbeitende als auch Anlagen in industriellen Umgebungen schützt.

Ein solches Warnsystem ist noch effektiver, wenn es mit physischen Barrieren kombiniert wird. Im Modell verhindern Barrieren vor der CNC-Maschine und dem Roboter, dass Personen versehentlich gefährliche Bereiche betreten. Diese Barrieren arbeiten zusammen mit dem Abstandssensor und dem Alarmsystem und schaffen mehrere Schutzebenen. Während die Sensoren unerwartete Bewegungen erkennen, blockieren die physischen Barrieren den Zugang und reduzieren so das Risiko von Verletzungen oder Geräteschäden.

Dieser Ansatz spiegelt reale industrielle Umgebungen wider. In Fabriken ist Maschinen häufig durch Schutzvorrichtungen, Zäune oder Lichtvorhänge abgesichert, um einen unbeabsichtigten Kontakt mit beweglichen Teilen zu verhindern. Selbst wenn Mitarbeitende Warnhinweise ignorieren, bieten diese physischen Barrieren eine letzte Schutzlinie. Durch die Kombination aus automatisierter Erkennung und physischem Schutz können Fabriken hohe Sicherheitsstandards aufrechterhalten und gleichzeitig einen effizienten Maschinenbetrieb gewährleisten. Im Modell veranschaulichen die Barrieren dieses Prinzip im Kleinen und zeigen den Lernenden, wie mehrschichtige Sicherheitssysteme – bestehend aus Sensoren, Alarmen und Barrieren – zusammenarbeiten, um Menschen und Geräte zu schützen.


AufgabeVollständiger Produktionszyklus
Was ist zu tun: Erwecke die FactoryBox zum Leben. Nutze das Flussdiagramm als Referenz für den Ablauf. Starte den Prozess mit dem Drücken des Start-Tasters und kombiniere ihn mit den Prozessen aus vorangegangenen Challenges.
Notwendige Bauteile:Servo-Motor (ID: 49, 50)
Lichtschranke (ID: 48)
4-Digit Display (ID: 56)
Stepper Motor (ID: 51)
LED Blau (ID: 39)
Taster (ID: 41, 44)
IO Expander (ID: 52)
LCD Display (ID: 53)
LED Bar (ID: 57)
LED Strip (ID: 40)
Solenoid (ID: 46)
Ziele:Start der Produktion per Knopfdruck
Visualisierung des Ablaufs mittels LED-Streifen
Zählen der Teile und Anzeige des Fortschritts
Simulation des CNC-Prozesses und des robotischen Entladens
Zurücksetzen per Reset-Taste
Hinweise zur
Implementierung:
Entscheide, ob alles einmal ausgelöst wird oder in einer Schleife läuft
Verwendung von klaren Code-Kommentaren zur Erklärung der Logik

AufgabeVerbinden von Produktion und Hallen-Funktionen
Was ist zu tun:Füge dem Produktionprozess die grundlegenden Hallen-Überwachungsfuntionen hinzu. Kombiniere hierfür die verschiedenen Challenges wie das Alarm-System.
Bsp.: Wenn ein Alarm auslöst, muss alle Produktion zum Stillstand kommen. Wird der Notstop (e-stop) ausgelöst gilt dies ebenfalls.
Notwendige Bauteile:(Alle Teile der vorangegangenen Challenge)
Zusätzlich:
LED Weiß (ID: 33, 34, 35, 36)
LED Rot (ID: 37, 38)
LDR (ID: 32)
Taster (ID: 42, 43)
Buzzer (ID: 45)
Distanz-Sensor (ID: 54)
Luft-Qualitäts-Sensor (ID:58)
Temperatur/Luftfeuchte Sensor (ID: 55)
Lüfter (ID: 47)
Ziele:Füge Luftqualitäts- und Beleuchtungs-Funktionen hinzu
Ermögliche das Auslösen von Alarmen während CNC/Roboter-Bewegungen.
Pausiere die Produktion wenn Alarm oder der Not-Stop ausgelöst werden.
Hinweise zur
Implementierung:
Verwende nicht-blockierenden (Keine delays() verwenden!)
Definiere klare Bedingungen für die Aktivierung eines System

Zusätzliche ChallengeBeschreibung
ISRs und TimersNutze Interrupt Service Routines (ISRs) für Reaktionen in Echtzeit.
Kombinieren der Hallen-FeaturesImplementiere die Feautures der Hallo so, dass sie reibungslos während der Produktion funktionieren
Refaktorisieren des CodesRefaktorisiere den Code mit wiederverwendbaren Funktionen und Klassen
LED AnimationenKreiere indivielle Animationen für die LED-Streifen oder die CNC-Maschine
Startup KalibrierungFüge eine Kalibrierung aller Sensoren bei Systemstart hinzu.