Build und Auslieferung einer Vue-App: dist/, nginx und Deep Links

Die Web-App des Mitfahrlabors soll unter einer festen Adresse der Schule laufen, ohne Node.js auf dem Server. Der Artikel liest die Ausgabe von npm run build und erklärt, warum Umgebungsvariablen beim Bauen festgeschrieben werden und warum Neu laden auf /angebote/1 ohne passende Server-Regel mit 404 endet. Ausgeliefert wird mit nginx: statische Dateien, ein Proxy für die API, ein Fallback für Deep Links und Cache-Header, die zu den Dateinamen mit Hash passen. Als Variante liefert das Backend die App aus static/ aus.

Zeichenketten in Python

Eine Kurzübersicht der wesentlichen Operatoren, Funktionen und Methoden, die Python für Zeichenketten bietet: Literale und Sonderzeichen, Verketten, Zugriff auf einzelne Zeichen und Ausschnitte, Suchen, Ersetzen, Zerlegen und Zusammenfügen.

Objektsammlungen in Python: Übersicht

Python bietet vier wesentliche Strukturen für Objektsammlungen: Liste (list), Tupel (tuple), Dictionary (dict) und Set (set). Dieser Artikel stellt ihre Literale kurz vor und vergleicht, ob sie veränderbar und geordnet sind, Dopplungen erlauben und wie Du auf einzelne Elemente zugreifst.

Übungsaufgaben zu UART und RS-232: COM-Port, Zeichenrahmen und Baudrate

Sechs Übungsaufgaben zur asynchronen seriellen Schnittstelle: COM-Port für ein Firmware-Update wählen, Zeichenrahmen und Paritätsbit bestimmen, UART von SPI und CAN abgrenzen und eine unbekannte serielle Verbindung auswerten. Dazu kommen Aufgaben zu Geräteschnittstellen: Anschlüsse eines Industrie-PCs zuordnen, USB-Geräte mit Hub und Treiber betreiben, einen Datenlogger per Nullmodemkabel auslesen und einen Füllstandssensor in Betrieb nehmen und übergeben. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

UART und RS-232: Seriell ohne Takt

Jede Ausgabe im seriellen Monitor, jedes GPS-Modul und viele Funkmodule sprechen mit dem Mikrocontroller über UART – ohne Taktleitung, nur mit einer vereinbarten Baudrate. Du lernst den UART-Rahmen kennen, berechnest Übertragungsdauer und Baudratenfehler und unterscheidest TTL-UART, RS-232 und RS-485. Du schließt UART-Module an Arduino, ESP8266 und ESP32 an, ordnest die Anschlüsse von PC und Industrie-PC nach Signalart, lernst die Eigenschaften von USB kennen und verbindest zwei RS-232-Geräte per Nullmodemkabel.

Übungsaufgaben zu SPI: Sensoren mit eigener Auswahlleitung anbinden

Eine Übungsaufgabe zu SPI am Mikrocontroller: Du begründest, warum drei gleiche Sensoren nicht an einen I²C-Bus passen, verdrahtest sie mit eigenen Auswahlleitungen am SPI-Bus eines ESP32, deutest den SPI-Modus, bildest Steuerbytes aus dem Datenblatt, berechnest Zugriffsdauer und Busbelegung und planst den Anschluss eines weiteren Sensors über I²C. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

RS-485: Lange Leitungen, viele Teilnehmer

RS-485 bringt UART-Daten über verdrillte Aderpaare bis 1200 m weit und verbindet dabei bis zu 32 Teilnehmer an einer Leitung. Du lernst, warum die differenzielle Übertragung so störfest ist, wie ein RS-485-Bus mit Linientopologie, Abschluss- und Failsafe-Widerständen aufgebaut wird und wie Modbus RTU mit Adresse, Funktionscode und CRC darauf Daten austauscht. Du schließt einen Transceiver an Arduino, ESP8266 und ESP32 an, schaltest die Senderichtung um und prüfst mit einer Checkliste vorher Datenblatt und Bibliotheksdokumentation.

Übungsaufgaben zum I²C-Bus: Adressen, Peripheriebausteine und Oszillogramme

Drei Übungsaufgaben zum I²C-Bus am Mikrocontroller: I²C-Adressen aus Datenblatt und Schalterstellung bestimmen, digitale Temperatursensoren auswerten und weitere Sensoren einbinden, eine Port-Erweiterung ansteuern und Austauschvarianten beurteilen sowie die Adresse eines D/A-Umsetzers aus einem Oszillogramm ablesen. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Mikrocontroller-Programmierung: Wiederholung und Übungsaufgaben

Wiederholung und Übungsaufgaben zur Mikrocontroller-Programmierung in C – von Datentypen und Bitoperationen über Port-Register, Schleifen, PAP und Struktogramm bis zu Interrupts, Zustandsautomat und Fehlersuche. Du rechnest mit Datentypen und Bitmasken, führst Schreibtischtests durch, setzt einen Programmablaufplan und ein Struktogramm in C um, ergänzt den Zustandsautomaten einer Torsteuerung und findest fünf Fehler in einem kurzen Programm. Zu jeder der 19 Aufgaben lässt sich eine Beispiellösung einblenden.

Mikrocontroller: Wiederholung und Übungsaufgaben

Wiederholung und Übungsaufgaben zur Mikrocontroller-Hardware – von Speicher und Takt über Ein- und Ausgangsbeschaltung, Analogeingang, Timer und PWM bis zu Watchdog und Stromlaufplan. Du berechnest Vorwiderstände, Basiswiderstände, Spannungsteiler für 24-V-Signale, Umsetzwerte, PWM-Frequenzen und Timer-Vergleichswerte und analysierst zum Schluss den Stromlaufplan einer temperaturabhängigen Lüftersteuerung. Zu jeder der 19 Aufgaben lässt sich eine Beispiellösung einblenden.

Übungsaufgaben zur Zeitsteuerung mit millis() und zu Zustandsautomaten auf dem Mikrocontroller

Zwei Übungsaufgaben zur Zeitsteuerung auf Mikrocontrollern: Für einen Klimaregler im Gewächshaus baust Du ein Pumpenprogramm mit delay() in ein nicht blockierendes Programm mit millis() um und beurteilst, ob ein Vergleich den Überlauf übersteht. Für die Lichtanlage eines Lastenrads verfolgst Du ein UML-Zustandsdiagramm Schritt für Schritt und setzt es als Zustandsautomaten mit enum, switch und millis() um. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Zeit ohne delay(): millis(), nicht blockierende Abläufe und Zustandsautomaten auf dem Mikrocontroller

Warum delay() das ganze Programm anhält und wie Du mit millis() und micros() Abläufe programmierst, die nicht blockieren: Blinken ohne delay(), mehrere LEDs mit unterschiedlichem Takt und eine Tasterabfrage gleichzeitig, Entprellen mit einer Stoppuhr und der Überlauf von millis() nach knapp 50 Tagen, den die Differenz millis() – start sicher übersteht. Zum Schluss wird eine Ampel zum Zustandsautomaten mit enum und switch, dargestellt als UML-Zustandsdiagramm. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Übungsaufgaben zu Zeichenketten auf dem Mikrocontroller

Drei Übungsaufgaben zu Zeichenketten auf Mikrocontrollern: Für das Prüffeld eines Bodenfeuchte-Loggers sagst Du vorher, welche Zeilen ein Prüfprogramm aus char-Arrays und String-Methoden ausgibt. Für die Signalleuchte an einem Flurmonitor zerlegst Du serielle Befehle und schreibst den Befehlsinterpreter. In der Serviceschnittstelle eines Klimareglers findest und behebst Du Pufferüberläufe. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Zeichenketten auf dem Mikrocontroller: char-Arrays, String-Klasse, F()-Makro und serielle Befehle

Ein Mikrocontroller soll Messwerte als lesbare Zeile ausgeben und Befehle wie „LED AN“ oder „BLINK 500“ aus dem seriellen Monitor verstehen. Dafür braucht er Zeichenketten. Dieser Artikel zeigt die beiden Wege in C++: das char-Array mit Nullterminator und die Arduino-Klasse String, mit ihren wichtigsten Funktionen, Vor- und Nachteilen. Dazu kommen das F()-Makro gegen knappen RAM auf dem Uno, formatierte Messwertzeilen mit snprintf() und dtostrf() und das Zerlegen von Eingaben in Befehl, Zahl und CSV-Felder. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Synchronzähler entwerfen: Wertetabelle, DNF und KNF, KV-Diagramm und JK-Flipflops

Ein Asynchronzähler zeigt beim Übergang von 7 auf 8 kurz die Falschwerte 6, 4 und 0. Synchronzähler vermeiden das, weil alle Flipflops am selben Takt hängen, brauchen aber eine passende Ansteuerlogik. Dieser Artikel zeigt Schritt für Schritt den Entwurf: Zustandsfolgetabelle, Funktionsgleichungen als DNF und KNF, Vereinfachen mit Schaltalgebra und KV-Diagramm, charakteristische Gleichungen der Flipflops, Koeffizientenvergleich für J und K, die fertige Schaltung und zum Schluss ein BCD-Zähler mit Don’t-Care-Feldern.

Übungsaufgaben zu Wiederholungsstrukturen auf dem Mikrocontroller

Drei Übungsaufgaben zu Wiederholungsstrukturen auf Mikrocontrollern: an kurzen Programmausschnitten für ein Abfahrtssignal die Durchläufe von for-, while- und do-while-Schleifen bestimmen, für einen Klimaregler ein Lauflicht hin und zurück als Struktogramm entwerfen und programmieren, und im Prüffeld eine Messreihe mit Abbruchbedingungen, break und continue schreiben – samt der Frage, warum eine leere Warteschleife den ESP8266 neu starten lässt. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Wiederholungsstrukturen auf dem Mikrocontroller: loop(), for, while, do-while, break und continue

Wie ein Mikrocontroller-Programm Anweisungen wiederholt: loop() als Endlosschleife, die Zählschleife for für Blinkfolgen und ein Lauflicht, die kopfgesteuerte while-Schleife zum Warten auf einen Tastendruck und die fußgesteuerte do-while-Schleife, dazu break und continue. Außerdem: Warum eine blockierende Warteschleife den ESP8266 neu starten lässt (Watchdog, yield()) und wie Du Schleifen als Struktogramm und Aktivitätsdiagramm darstellst. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Übungsaufgaben zu Variablen, Konstanten und Datentypen auf Mikrocontrollern

Drei Übungsaufgaben zu Variablen und Datentypen auf Mikrocontrollern: für die Messgrößen eines Loggers passende Datentypen wählen und den Speicherbedarf berechnen, in einer Füllstandsanzeige Überlauf, Ganzzahldivision und einen zu kleinen Zeittyp finden und beheben, und ein Anzeigeprogramm mit Zahlen im Code auf eine Liste der Ein- und Ausgabeelemente und Konstanten umstellen. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Variablen, Konstanten und Datentypen auf 8- und 32-Bit-Mikrocontrollern

Wie Du Variablen anlegst und Werte zuweist, warum Pins als Konstanten in die Liste der Ein- und Ausgabeelemente gehören und wie sich const, #define und constexpr unterscheiden. Dazu: welcher Datentyp wie viel Speicher braucht, warum int auf dem Arduino Uno nur 16 Bit hat und auf den ESP-Boards 32 Bit, wie Überlauf, Ganzzahldivision und Typumwandlung zu falschen Ergebnissen führen und wo eine Variable gilt (global, lokal, static). Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Sensoren für das Raumklima: BME280/BMP280 per I²C und SPI, CO₂-Sensoren MH-Z19 und MH-Z14A per UART, PWM und Analogausgang

Zwei Sensorfamilien tauchen in fast jedem Raumklima-Projekt auf: die Bosch-Sensoren BME280 und BMP280 für Temperatur, Luftdruck und (nur BME280) Luftfeuchte und die NDIR-CO₂-Sensoren MH-Z19 und MH-Z14A von Winsen. Der Artikel zeigt, wie Du den Sensor auf dem Breakout erkennst, die passende Bibliothek installierst, den BME280 per I²C und per SPI anschließt und den CO₂-Gehalt per UART, PWM und Analogausgang ausliest – mit vollständigen Programmen für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno und den typischen Fehlerquellen.

Übungsaufgaben zu Registern und Bitoperationen: Ports, Bitmasken, Datenbytes und Grenzwerte

Zwei Übungsaufgaben zu Registern und Bitoperationen – von Datenbytes an einem Portexpander, Grenzströmen und Verlustleistung aus einem englischen Datenblatt und der Erweiterung um einen zweiten Expander bis zu Portbits, Bitmasken, Registercode und Statusbits eines Prüfadapters auf dem Arduino Uno und seiner Umstellung auf die Arduino-Funktionen. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Register und Bitoperationen: Ports, DDR, PORT und PIN, Bitmasken und was digitalWrite() intern tut

digitalWrite() schaltet einen Pin – aber was passiert dabei im Controller? Am Arduino Uno mit dem ATmega328P zeigt dieser Artikel, wie Du Ports und Portleitungen in Anschlussbelegung und Stromlaufplan findest, mit DDRx, PORTx und PINx Pins einstellst, schaltest und liest, Bits mit Masken setzt, löschst, umschaltest und abfragst, Datenbytes an Portbausteinen auswertest und was digitalWrite() intern tut. Dazu kommen ein Laufzeitvergleich mit dem direkten Registerzugriff, Grenzwerte aus dem Datenblatt, das Erweitern einer Schaltung und die GPIO-Register der ESP-Controller.

Übungsaufgaben zur analogen Ausgabe mit PWM

Drei Übungsaufgaben zur analogen Ausgabe mit PWM: Du wertest das Oszillogramm und die Timer-Einstellungen einer dimmbaren Leuchte aus, berechnest Tastgrad, Leistung, Auflösung und gammakorrigierte Helligkeitsstufen für eine Pflanzenleuchte und programmierst eine „atmende“ Ladeanzeige mit millis() und Gammakorrektur. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Analoge Ausgabe mit PWM: LED dimmen, Tastgrad und Frequenz, Lüfter und Lauflicht mit Überblendung

Ein digitaler Pin kennt nur an und aus – trotzdem kann er eine LED dimmen und einen Lüfter langsamer drehen lassen. Dieser Artikel erklärt die Pulsweitenmodulation mit Tastgrad, Periodendauer und Frequenz, zeigt, wie Du diese Größen aus einem Oszillogramm abliest, und dimmt eine LED mit analogWrite() und einem Poti. Danach passt Du die Helligkeit mit einer Gammakorrektur an das Auge an, wählst auf den ESP32-Boards mit ledcAttach() Frequenz und Auflösung, steuerst einen Lüfter über einen MOSFET, baust ein Lauflicht mit Überblendung und grenzt PWM von einem echten Analogausgang ab.

Übungsaufgaben zum Projekt Simon Says

Drei Übungsaufgaben zum Projekt Simon Says: Für eine Messe-Spielstation baust Du nach geändertem Pflichtenheft eine Schwierigkeitsstufe per Poti ein, für die Spielstation am Tag der offenen Tür formulierst Du Testfälle und findest zwei Fehler im Quelltext, und für den Akkubetrieb planst Du Hard- und Softwareänderungen samt Energiebilanz. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Projekt Simon Says: Mikrocontroller-Grundlagen zusammenführen und nach Pflichtenheft erweitern

Ein Merkspiel mit vier LEDs, vier Tastern und einem Summer führt die Grundlagen der Reihe zusammen: Aus Lastenheft und Pflichtenheft entsteht ein Zustandsautomat, Arrays verbinden LEDs, Taster und Töne, Zufallszahlen erzeugen die Folge, entprellte Taster und millis() prüfen die Eingabe, Level und Highscore zählen mit. Danach testest Du das Programm gegen das Pflichtenheft und planst eine kundenspezifische Erweiterung mit Hard- und Softwareänderungen und Energiebilanz. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Übungsaufgaben zu Interrupts, Timer und PWM im Datenblatt: Flags, Auslösung, Zeitbasis und PWM-Register

Zwei Übungsaufgaben zu Interrupts, Timern und Pulsweitenmodulation auf Registerebene – von der Drehzahlerfassung eines Förderbands mit externem Interrupt, englischem Registerauszug und Timer-Zeitbasis bis zur Lichtsteuerung eines Lastenrads, deren Interrupt-, Timer- und PWM-Register Du auswertest, korrigierst und mit der Arduino-API für vier Boards nachbaust. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.

Interrupts, Timer und PWM im Datenblatt: Interruptquellen, Flags, Flanken, Timer-Modi und PWM-Register

attachInterrupt(), millis() und analogWrite() verstecken, was im Controller passiert: Bits in Steuerregistern wählen Interruptquelle, Flanke, Timer-Modus und PWM-Ausgang. Am Arduino Uno (ATmega328P) findest Du Interruptquellen mit Flags und Freigabebits im Datenblatt, bestimmst die Auslösung aus einem englischen Registerauszug, berechnest Zähltakt und Vergleichstreffer eines Timers, stellst eine Zeitbasis im CTC-Modus ein und gibst ein Fast-PWM-Signal über die Register aus. Zum Schluss ordnest Du ein, welche Timer die Arduino-Funktionen belegen und wie die ESP-Controller das lösen.

Übungsaufgaben zu Interrupts auf dem Mikrocontroller

Zwei Übungsaufgaben zu Interrupts auf Mikrocontrollern: Im Programm für den Durchflusssensor einer Bewässerung findest Du die Verstöße gegen die Regeln für Interrupt-Service-Routinen, beschreibst ihre Folgen und korrigierst das Programm. Für den Tacho eines Lastenrads berechnest Du Geschwindigkeit, Impulsabstand und Auflösung aus gezählten Impulsen und programmierst die Messung mit einem Interrupt. Zu jeder Teilaufgabe lässt sich eine Beispiellösung einblenden.