Seit Mitte '24 funktioniert die Skriptsprache vom RP2040 und dem ESP8266 auch auf den aktuellen ESP32-Varianten. Ziel dieser Sprache ist es mit wenigen Programm-Zeilen eine gestellte Aufgabe schnell zu lösen. Durch die verschiedenen eingebauten Funktionen reichen wenige Zeilen zur Realisierung eines VU-Meters bzw. eines Leuchtbandes auf Bildschirm und auf LEDs.
Die Scriptsprache läuft auch auf dem kleinen Waveshare ESP32-S3-Zero mit der eingebauten RGB-LED und seinen wenigen Anschlüssen. Ein Mikrofon-Breakout MAX9814 (Link zu einem ähnlichen Projekt) dient als Schallwandler mit automatischer Verstärkung. Das Ergebnis ist eine Schallproportionale Anzeige - gleichzeitig
- auf der internen RGB-LED als Helligkeit
- auf vier LED als Leuchtband
- an einer LED als Helligkeit (PWM)
- im Browser-Fenster als Meter-Ausschlag
Meter-Element im Browser zeigt Schallpegel des Mikrofons
Ein Waveshare ESP32-S3-Zero verfügt auf einer der beiden Anschlussleisten über alle für dieses Projekt benötigten Anschlüsse:
- GND - MAX9814
- 3.3V - MAX9814
- 1 - Analoger Eingang 0 - MAX9814 out
- 2 - Digitaler Ausgang LED 1
- 3 - Digitaler Ausgang LED 2
- 4 - Digitaler Ausgang LED 3
- 5 - Digitaler Ausgang LED 4
- 7 - Digitaler Ausgang PWM LED (optional)
espScript32 verfügt über einige eingebaute Funktionen, mit denen sich diese Aufgabe recht einfach und kurz lösen lässt. Mit 20 Zeilen erfolgen
- Initialisierung
- Messung des Schallpegels
- Umrechnung des Pegels für die Ausgabe
- Ausgabe auf dem Bildschirm
- Ausgabe an eingebaute Neopixel LED
- Ausgabe an angeschlossene LED1 bis LED4 (erweiterbar)
Anhand der Zeilennummern soll das Programm erläutert werden:
Zeile 1: Da es espScripr32 für verschiedene ESP32-Varianten gibt, erlaubt die Funktion adc.info() die Abfrage der aktuell verfügbaren Analogeingänge: ADC-Pins/GPIO: ai/a0 = 1, a1 = 2, a2 = 3, a3 = 4, a4 = 5. Hier wird Pin 1 als ADC0 verwendet.
Zeile 2: Der auf dem Mikrofon aufgedruckte Offset von 1,25 Volt wird entsprechend auf den ADC-Pegel umgerechnet, um ihn später zu berücksichtigen. Dies ist der Ruhepegel.
Zeile 3 und Zeile 4: Mit CSS wird das Aussehen der HTML-Elemente für den Ausgabe-Bildschirm formatiert.
Zeile 5: Die Eingebaute RGB-LED wird auf geringste Helligkeit initialisiert (kann entfallen).
Zeile 6: Das Meter-Element wird platziert und mit der Variablen pegel verbunden. Der Messbereich ist 0 bis 1000 mit der Erweiterung für andersfarbige Darstellung für besondere Pegel.
Zeile 8 und Zeile 20: Dies ist die Hauptschleife der Anwendung in Form einer Endlosschleife.
Zeile 9: Eine Pause sorgt dafür, dass das Browserfenster und der Interpreter ansprechbar bleiben; vergleicbar mit doevents in VBA.
Zeile 10: Messung des Effektivwerts der Mikrofonspannung in ADC-Einheiten (Wurzel des Quadratischen Mittelwerts = True RMS) mit Übergabe des Offsets (Ruhepegel).
Zeile 11 und Zeile 12: Umrechnung des Pegels für die Anzeigen.
Zeile 13: Übernahme für dei LED.
Zeile 14: Ausgabe an RGB-LED in Board.
Zeile 15 bis Zeile 18: Ansteuerung der LED1 bis LED4
Zeile 16: Zusatzausgabe als PWM-Signal an Pin 7 (optional).
Das gesamte Listing als reine Textdatei.