Tag 1

Heute haben wir als erstes Versucht eine Verbindung zwischen zwei ESP-32 mit Bluetooth herzustellen, das hat nach 3h Arbeit aber nicht funktioniert. Als nächsteshaben wir einen Ultraschall Sensor mit einem ESP-32 verbunden und es hingekriegt, dass eine Ausgabe pro Sekunde gemacht wird, wie weit die Wand entfernt ist. Anschliessend haben wir zwei Motoren an einen ESP-32 angeschlossen und sie einfach mal zum Laufen gebracht. Danach haben wir sie so programmiert, dass man sie mit zwei Knöpfen einschalten konnte. Wenn man den einten Knopf gedrückt hat, dann haben sich beide vorwärts gedreht und wenn man den anderen gedrückt hat drehten sie sich rückwärts. Nachdem das funktionierte, haben wir als finalen Schritt ein Programm geschrieben und alles auf nur einem ESP-32 so eingesteckt, dass die zwei Motoren sich erst drehen, wenn innerhalb von 50cm vor dem Ultraschallsensor etwas wahrgenommen wird –> dann drehen sich beide vorwärts. Ausserdem haben wir uns noch so grob überlegt, wie wir unser Auto etwa aufbauen möchten, aber das wird dann eher da Projekt morgen.

Tag 1

Heute haben wir uns in unserer Gruppe mit Lego-Teilen beschäftigt und ein Auto zusammengebaut. Anschliessend haben wir uns mit der Programmierung der Fernbedienung mittels Micropython auf einem Breadboard beschäftigt.

Mit Hilfe von ChatGPT haben wir einen Code erstellt, der Infrarot-Signale von einer Fernbedienung unterscheiden kann. Dazu haben wir den IR-Sensor so programmiert, dass er Signale vom Sender dekodiert und in eine Liste in Micropython (Thonny) einfügt. Eine solche Liste sieht wie folgt aus:

[1, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 3, 3, 3, 2, 2, 3, 1, 1, 1, 0, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Leider hat diese Methode nicht funktioniert, da sich die Datenmatrix jedes Mal verändert hat, auch wenn wir die gleiche Taste gedrückt haben. Darum haben wir uns Hilfe von einer anderen Gruppe geholt und haben mit der Bibliothek ir_rx gearbeitet. Mit dieser Bibliothek haben wir es geschafft, die unterschiedlichen Knöpfe auf der Fernbedienung voneinander zu unterscheiden.

Tag 1

Heute habe ich alle meine Teile zusammen, so dass ich sofort mit dem Bau des Projekts beginnen konnte. Als ich versuchte, das zu tun, wurde ich durch ein paar Probleme aufgehalten, wie der ESP32 nicht genug Strom für das Relais über normale Pins (keine Power-Pins wie der 5V-Pin) zu schalten. Also musste ich Transistoren und andere Teile wie Widerstände verwenden. Ich dachte dann, dass ich eine externe Stromversorgung bräuchte, also schloss ich eine 5-V-Stromversorgung an und versuchte, sie über den Transistor mit dem Relais zu verbinden. Dann habe ich vielleicht etwas übersehen und der Strom kam ohne Widerstand zum ESP32, was dazu führte, dass ich einen Mikrocontroller zerstörte (Oops). Aber dann bekam ich einen anderen Mikrocontroller und nahm mein Projekt wieder auf

Mein erster Versuch (Kabelsalat)

Tag 1: Erste Schritte

Setup des Mikrokontrollers

Zuerst haben wir unser Material zusammengsucht und den Laser, den LDR-Sensor und den NFC-Leser auf dem Mikrokonroller zu installiert. Zunächst wollten wir den Laser und den Empfänger auf dem selben Mikrokontroller anschliessen und mit Hilfe eines Spiegels den Laserstrahl zurück zum Sensor leiten. Jedoch gab es bei dieser Methode einige Probleme:

  • Durch den Spiegel wurde das Licht gestreut, daher konnte kein Signal vom Senor gelesen werden.
    • Wir haben verschiedene Arten vom Spiegeln wie Hohl- oder Wölbspielgel ausprobiert. Da sich das Licht aber nur am Brennpunkt bündelt, hat uns das auf eine sehr kurze Distanz limitiert.
    • Das Licht haben wir auch versucht mit einer Linse zu bündeln, aber das war ein grosser Aufwand und sehr unpraktisch für das fertige Projekt.

Schlussendlich haben wir uns entschieden, den Laser an einen Mirkrocontroller und an einem zweiten den LDR-Sensor und den NFC-Leser zu installieren. So sind wir nicht an eine bestimmte Distanz zwischen Sender und Empfänger gebunden und bekommen ein stabiles Signal, ohne zusätzliche Objekte wie Linsen oder Spiegel.

Installation Bibliothek auf ESP-32 für NFC-Leser

Wir haben versucht, den NFC-Leser mit Micropython zu verbinden, jedoch gab es Probleme mit der Bibliothek. Daher werden wir dies an Tag 2 weiterführen.

Design Hülle ESP32 Laser

Wir haben mit Fusion360 eine Box mit zwei Öffnungen für Laser und Kabel designt und werden diese mit dem 3D-Drucker ausdrucken. So haben wir eine ästhetisch ansprechende und vor allem schützende Hülle für den Mikrokontoller mit dem Laser.

3D-Modell für das Gehäuse des Lasers

LaserGuard: Lichtschranke mit Alarmfunktion und NFC-Deaktivierung

In diesem Projekt geht es darum, ein Sicherheitssystem zu entwickeln, das auf einer Lichtschranke basiert. Wir nutzen dafür einen ESP32 Mikrocontroller, der einen Laserstrahl aussendet. Wenn der Laser unterbrochen wird, soll ein Piepalarm ausgelöst werden. Um das System auszuschalten, wird eine NFC-Chipkarte verwendet. In diesem Blog werden wir den Entwicklungsprozess dokumentieren und unsere Erfahrungen teilen.

Vorbereitendes Projekt

C-3PO & R2-D2

Wir möchten uns in der Vorbereitung auf die Projektwoche mit dem Projekt R2D2 beschäftigen. Sie sollen dabei folgende Aufgaben nacheinander bearbeiten:

Aufgabe 1:

Lassen Sie eine LED blinken!

Tip: Benutzen Sie ChatGPT. Versuchen sie über die Fragetechnik bereits ChatGPT so weit zu informieren, dass er ihnen das richtige Skript schreibt.

Beispiel:

Hallo AI, ich möchte mit MicroPython auf einem ESP32 eine LED auf PIN 3 zum Blinken bringen. Wie könnte ein Skript aussehen?

Antwort von ChatGPT Version 3.5

Hallo! Gerne helfe ich Ihnen dabei, ein MicroPython-Skript für den ESP32 zu schreiben, mit dem eine LED auf Pin 3 blinkt. Hier ist ein Beispiel-Skript:

from machine import Pin
import time

led_pin = Pin(3, Pin.OUT)

while True:
    led_pin.on()
    time.sleep(0.5)
    led_pin.off()
    time.sleep(0.5)

Dieses Skript importiert die benötigten Module machine und time. Es definiert dann die Variable led_pin als Ausgangspin mit der Nummer 3. Der Hauptteil des Skripts enthält eine Schleife, die die LED ein- und ausschaltet und für jeweils eine halbe Sekunde pausiert.

Um dieses Skript auf dem ESP32 auszuführen, müssen Sie es auf das Gerät hochladen. Dazu können Sie eine serielle Verbindung oder eine Netzwerkverbindung verwenden. Sobald das Skript auf dem ESP32 ausgeführt wird, sollte die LED auf Pin 3 blinken.

Aufgabe 2:

Realisieren Sie einen Druckknopf (Taster) mit einem Pull-Up-Widerstand. Lassen Sie nach dem Drücken des Knopfes die LED blinken.

Aufgabe 3:

Verändern Sie den Druckknopf so, dass die LED nach dem drücken blinkt, bis der Knopf ein zweites mal gedrückt wird.

Aufgabe 4:

Lassen Sie die LED mithilfe eines Zufallsgenerators leuchten.

Aufgabe 5:

Schließen Sie einen Buzzer an, der nach dem Klicken und während des Leuchtens der LED einen Ton sendet, dabei soll der Ton ebenfalls per Zufall erzeugt werden.

Aufgabe 6:

Versuchen Sie eine Kommunikation zwischen zwei Robotern aufzuauben, sodass sie sich schonbar unterhalten.

Aufgabe 7:

Verpassen Sie ihrem Roboter Füße oder Räder.

Aufgabe 8:

Lassen Sie zwei Roboter miteinander kommunizieren. Nach der Kommunikation soll ein Robot beleidigt davon laufen.