2024
HOME

Mit Zwanzig Zeilen Zum Ziel - Scripting on ESP32
VU-Meter Effektivwert der Mikrofonspannung
espScript32 für ESP32, ESP32-S2, ESP32-C3 und ESP32-S3

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.


Online-Dateien


Der Download-Bereich zum ESP32 hält die notwendigen Daten und Informationen bereit. Dies sind zur Zeit:


												

Hinweise
Diese Skriptsprache basiert auf dem von Michael Moulinari (mmiscool) auf esp8266basic.com veröffentlichten und beschriebenen Original und ist dazu in hohem Maße kompatibel. Erstellt und erweitert von H. Berndt ab 2024 mittels Arduino IDE 2.1.0 und ESP-Core 2.0.11 und den in der Referenz angegebenen eingebundenen Bibliotheken.

DS18B20, DHT, WS2812, IR, Servo, Stepper, OLED-SD1306, LCD1602, BME280, ADS1115, MCP4725, MAX7219, SD, MCP410xx, AD9833, SX12xx, TFT-ILI9341, USB-HID, BLE, GPIO, ADC, DAC, PWM UART, I2C, SPI, UDP, HTTP, WIFI, Telnet, Thingspeak, Openweather, MQTT, Messenger

Die in 2015 publizierte Sprache für den ESP8266 wurde 2017 im rechts dargestellten Buch erläutert und angewendet. In 2023 erfolgte die Portierung mit eigener Feder dieser Sprache auf den Raspberry Pi Pico W mit dem RP2040 Mikrocontroller, nachdem mit der Skriptsprache MicroPython zuvor die Vorzüge dieses Bausteins beschrieben wurden. Nachdem ein altes heltec wifi-kit-32 nach jahrelangem Brownout-Koma wieder erwacht ist, begann der Versuch der Portierung und Erweiterung für die ESP32-Familie. Alle drei Varianten benutzen den selben Kern.


												

												


espScript32**
CYD TestBildUhr
Mehr Software

.
Startseite Bücher Software Digital RTV Musik Kontakt

Für Inhalt und weitere Verzweigung externer Links sind die Betreiber der dortigen Seiten verantwortlich - H.-J. Berndt