2025
HOME
Oktober 2025:
Download RadioScript

Mini Radio Scripting
Mini-Radio selber programmieren, schnell mit zehn Zeilen zum Ziel... 

D-220 Skala


D-220 Skala
Komplett in RadioScript erstelle Firmware für Display oder Browser. Quelltexte.
Das Radio mit dem Chip SI4732 und einem ESP32-S3, sowie einem farbigen Display 320x170 hat nun eine eigene Script-Sprache, die mit wenig Aufwand schnell Ergebnisse liefern kann. Programmiert wird über WiFi und im Browser. Ausgeführt und gespeichert werden die Scipte im Radio.

Es handelt sich um ein Werkzeug mit dem unter anderem einige Elemente der RTTY/CW-Firmware erstellt und getestet wurden. Werkzeuge können nützlich sein, aber in falschen Händen auch Schaden anrichten.

Die Sprache wird auf dieselbe Art und Weise wie jede Firmware zum Radio hochgeladen und steht dann über WiFi - zunächst mit eigenem Hot Spot oder AP - bereit. Zur Programmierung wird eine gute WiFi-Verbindung benötigt. Neben einer grafischen Firmware lassen sich auch nur im Browser Radio-Oberflächen erstellen. Wegen CSS- und JavaScript-Unterstützung sind die Möglichkeiten fast unbegrenzt.

Es ist ein Interpreter und erlaubt dadurch sehr schnelle Umlaufzeiten (Programmänderung > Ergebnis). Interpreter wie JavaScript oder Python brauchen ebenfalls keine Compiler. Diese beiden Sprachen sind in 2025 überall, wobei JavaScript im Browser des Anwenders läuft. Über die serielle Schnittstelle steht der gesamte Befehlssatz dieser espRadioScript32-Sprache zur Verfügung, wenn kein Programm ausgeführt wird



Übersicht

Diese Software ist ein Werkzeug für verschiedene Mikrocontroller und unterstützt das ATS-Mini-Radio mit dem SI4732 und ESP32-S3 LILY in dieser Erweiterung/Anpassung. Es diente hier u. a. zum schnellen Test neuer Firmware-Funktionen, sowie Display Layouts. Die Terminal-Darstellung der Decoder, die AFC-Anzeige entstand auf diese Weise durch die schnelle Untersuchung der sogenannten Properties des SI4732 unter Umgehung der SI4735-Bibliothek Vorgaben.

Um das Radio einzuschalten und die Frequenz 104.2 MHz einzustellen reicht eine einzige Zeile:

RX 104.2

Das funktioniert in AM genauso mit z. B. RX 6085. Mit Volume 60 wird das Radio laut. Diese Sprache setzt eine gute WiFi-Verbindung voraus. Einige ATS-Mini-Radios mit ESP32-S3-Wroom besitzen keine WiFi-Antenne, sondern nur einen Antennenanschluss. Dort sollte zwingend eine Antenne angebracht werden, damit die Kommunikation zwischen Browser und Radio frustfrei bei der Programmierung funktioniert.


Prinzip
Wie jede Firmware wird diese Sprache zum Radio als Binärdatei *.bin hochgeladen. Der Interpreter im Radio baut dann zunächst einen eigenen Hot Spot oder AP auf und gibt dies auf seinem Display bekannt. Ein PC, Tablet oder Smartphone verbindet sein WLAN nun mit diesem AP und gibt im Browser die angegebene IP an. Damit kann zunächst ohne Router und Internet das Radio programmiert werden. Weitere Ausführungen findet man unter espScript32 und in der Referenz zur Radio-Erweiterung.

Die Arbeitsweise hat nun folgenden Ablauf:

  1. EDIT aufrufen, um das aktuelle Programm anzuzeigen
  2. Unter einem neuen Namen abspeichern mit Save
  3. Alles markieren (Strg+A) und Löschen (Entf)
  4. Das neue Programm erstellen oder einfügen
  5. Mit Save die Änderungen IM Radio speichern
  6. Mit RUN das gespeicherte Programm im Radio ausführen

Der Browser zeigt nun eine Seite mit der Programmausgabe (falls Ausgaben vorhanden). Solange dieses Fenster aktiv ist, besteht ein ständiger schneller Austausch zwischen Browser und Radio über sogenannte Web-Sockets. Diese setzen eine stabile WLAN-Verbindung voraus, ohne die das System nicht funktioniert. Ist keine Browserausgabe erforderlich, so kann das Fenster geschlossen werden und das Programm wird im Radio autark abgearbeitet.

Um einen Eindruck der WLAN-Stärken zu erhalten kann das folgende Listing dienen. Es scannt alle 5 Sekunden die vorhandenen Netzwerke und gibt deren Stärke im Browser an:

Timer 5000,[tm]
wPrint "Scanning Wifi..."

[tm]
n = wifi.scan()
Cls
Print "Networks found: " & n
For i = 1 To n
Print i & ". " & wifi.ssid(i) & " and " & wifi.rssi(i) & " dB"
Next i
Wait

___

Der eigene Router sollte mindestens im 60er Bereich liegen!

Wer sofort die Ergebnisse auf das Display geben möchte -, hier die TFT-Version:

' WiFi-Scanner Mini Radio
' Strongest is last
LF = chr(10)

[tm]
Timer 0
tty "Scanne Wifi..." & LF
n = wifi.scan()
tty "Netzwerke im Bereich: " & n & LF
for i = n to 1 step -1
tty i & ". " & wifi.ssid(i) & " mit " & wifi.rssi(i) & " dB" & LF
delay 3
next i
tty "------------------------------------------" & LF
tty n & " Netzwerke gefunden."
tty LF & "------------------------------------------" & LF
Timer 5000,[tm]
Wait


RadioScript - Beispiele im Klartext


Diese Sprache ist an anderer Stelle für den ESP8266, RP2040 und ESP32 beschrieben. Alle Erweiterungen basieren auf dem Original von mmiscool mit seinem Quelltext auf Github.

Es folgen einige Beispiele, die als Text kopiert und eingefügt werden können. Dazu klickt man auf den Link wodurch das Listing als Klartext angezeigt wird. Mit den folgenden Schritten wird das entsprechende Script dann zur Ausführung gebracht:

  1. Alles markieren (Strg+A) und kopieren (Strg+C)
  2. In der Programmierumgebung Edit ein nicht vorhandenes Programm öffnen (test)
  3. Kopiertes Listing einfügen (Strg+V)
  4. Programm mit Save im Radio speichern (wichtig)
  5. Programm mit Run starten

Die speziellen Mini-Radio-Befehle und Funktionen sind in der Referenz zu esp32Script angehängt. Zuviele HTML-Elemente (Buttons usw.) können den Programmlauf erschweren. Eine schlechte WiFi-Verbindung zur Programmierzeit verursacht unkontrollierte Hänger!


Beispiele: ATS-Hardware ohne Radio (LILY-Board)


Beispiele: Einfaches Radio (Browser)


Beispiele: Radio und TFT-Display ohne Browserausgaben


Beispiele: Low Level Radio


Beispiele: SSB


Beispiel: Internet und JavaScript

Ist das Radio per Router auch mit dem Internet verbunden, so ergeben sich viele neue Möglichkeiten. Als Beispiel wird das Browser-Radio mit der großen Schrift mit einer ad hoc Internet-Recherche erweitert.

An der Stelle des RDS-Radiotextes sollen im AM-Betrieb Angaben zum eingestellten Rundfunk-Sender über die eingestellte Frequenz auf Knopfdruck erfolgen. Auf Wunsch ist die Suche im Netz auch automatisch nach einer Frequenzänderung möglich, wodurch ein Scan in den Rundfunkbändern sehr viel mehr Vergnügen bereitet.

Diese Erweiterung zeigt das Zusammenwirken dieser Scriptsprache mit JavaScript und HTML. Während das Radio die Frequenz vorgibt, sucht eine JavaScript-Routine im Netz nach den Informationen, die dann wiederum per JavaScript den RadioScript-Elementen zugänglich gemacht werden.

Diese Variante benötigt die angegebene JavaScript-Datei (Link speichern unter...) mit dem Namen loadFreq.js im /uploads-Verzeichnis. Über das Menü File und Upload a File kann man diese Datei über die Dateiauswahl aufrufen und mit Upload hochladen. Sie wird dann vom Programm mit der Zeile javascript "loadFreq.js" eingebunden (ohne /uploads) und später die darin enthaltene Funktion mit jscall "loadFrequency()" aufgerufen.
Das Einbinden über html-Anweisungen führt vermutlich aufgrund eines Konflikts der Syntax in der Funktion und der html-Kommando-Einbindung zu Problemen. Die Suche verwendet den Begriff "Europe" als Zielumgebung-Vorgabe,

Die sonst selten verwendeten Anweisungen JavaScript und JsCall kommen hier zum Einsatz.



Fehler/Bugs

Fehlersuche ist mühsam und zeitintensiv. Es gibt einige Unzulänglichkeiten dieser Scriping-Firmware, die erst im Laufe der Zeit durch gezielte Reproduktion behoben werden können. Bis dahin ist jeder Bug als Feature zu werten. Genervte Anwender sollten bedenken, dass ein makelloser Diamant kein Licht bricht – erst die Fehler lassen ihn funkeln.

Die Benutzung erfolgt auf eigenes Risiko!


Down- und Upload


Diese von mir modifizierte, erweiterte und weiterhin noch vorläufige Software mit besonderer Unterstützung für diesen Empfänger kann mittels USB-Kabel übertragen bzw. geflasht werden. Sie liegt als Binärdatei in einem Zip-Archiv vor. Nach dem Download und dem Entpacken in einem beliebigen Verzeichnis, muss diese Datei zum Radio hochgeladen werden. Dies erfolgt am einfachsten mit einem modernen Browser am PC. Alternativ ist dies unter Android auch mobil möglich. Hier die einzelnen Schritte:

Die serielle Schnittstelle des Radios erscheint nun in der Auswahl. Nachdem die Verbindung hergestellt ist meldet das ESP-Tool etwa:

esptool.js

Serial port WebSerial VendorID 0x303a ProductID 0x1001
Connecting... Detecting chip type... ESP32-S3
Chip is ESP32-S3 (QFN56) (revision v0.1)
Features: Wi-Fi,BLE,Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: f4:12:fa:dc:5b:55
Uploading stub...
Running stub...
Stub running...

Das Radio schaltet sich ab.

  • Unter Choose a file bei einem der vier Möglichkeiten mit dem Offset 0x0 kann nun die Binärdatei des entpackten Archivs mit der Endung *.bin gewählt werden.
  • Mit Klick auf Program startet - auf eigenes Risiko - der kurze Upload oder der sogenannte Flashvorgang.
  • Das Radio muss danach einmal aus- und wieder eingeschaltet werden.

Beim ersten erfolgreichen Start spannt der ESP32-S3 ein eigenes WiFi-Netzwerk auf. Ein PC oder Tablet verbindet sich dann zunächst mit diesem Netzwerk und gibt die angezeigte IP 192.168.4.1 in der Browser-Adress-Zeile ein.

Das weitere Vorgehen kann in der Kurzanleitung zur Programmierumgebung nachgelesen werden.

Ist in den Optionen später ein Router mit Passwort eingetragen, so sucht RadioScript32 zunächst diese Verbindung. ist in den Optionen ein Autostart eingestellt, so startet das default-Programm 30 Sekunden nach dem Einschalten.

Sollte sich die Firmware seltsam verhalten, so ist meist als Ursache die Speicherbelegung einer vorherigen Firmware auszumachen. Vor der Übertragung sollte dann mit dem ESPTool der gesamte Speicher gelöscht (Erase) werden.


Mobiler Down- und Upload (Android)


Verfügt man über ein mobiles Gerät mit Android-Betriebssystem, kann die Firmware auch ohne Linux, MacOS oder Windows geflasht werden. Dazu werden zwei Apps aus dem Play-Store benötigt: Serial USB Terminal und ESP32_Flash.

Mit einem Dateimanager z. B. Total-Commander (mein Favorit auf Android) die heruntergeladene Zip-Datei in einem Serial-Verzeichnis entpackend kopieren (was ja von Serial USB Term unter Downloads angelegt ist). Dann mit dem Terminal-Programm unter Settings Flow-Control DTR/DSR oder RTS/CTS wählen (unverbunden). Dann verbinden und mit den beiden Schaltflächen die Leitungen schalten, bis das Radio im Download-Modus wartet (alternativ das Radio aufschrauben und Taster drücken):

Verbindung beenden und zu ESP32_Flash wechseln:

ESP32-S3 wählen und Bootloader Auto auf OFF, Datei targetxxxx.bin wählen und 0x0000 als Adresse angeben. Flash betätigen und geduldig die Meldungen lesen...


Hinweis: Neuere Geräte zeigen manchmal Probleme mit dem jeweils eingebauten Display. Es ist sinnvoll die Original-Firmware vom Kauf zu sichern. Unter Windows erfolgt das auf bequeme Art mit dem Flash Download Tool V3.9.8 vom Hersteller des ESP32. Eingestellt auf ESP32-S3 und Developer öffnet sich das Tool. Darin findet man den neuen Tab chipInfoDump zum Download der Firmware auf den PC. Nach richtiger Wahl der seriellen Schnittstelle (port) erhält man mit Chip Info Details zum angeschlossenen ESP. Die Sicherung der Firmware erfolgt mit Read Flash adsdress 0x0 size 0x200000. Das Tool speichert so 2 MB Flash als Datei mit der Endung *.bin in einem Verzeichnis flash_dump. Diese Datei kann, wie weiter oben beschrieben, im Browser wieder hochgeladen werden, um den Originalzustand wiederherzustellen.

Da ein ESP32-S3 keinen eigenen Hardware UART (serielle Schnittstelle) besitzt, kann es passieren, dass die Verbindung nicht funktioniert, weil das System nicht hochfährt. Fehlen die beiden Taster Boot/Reset so kann man versuchen mit einem seriellen Terminal-Programm die beiden Leitungen DTR und RTS zu schalten, um so ein Reset zu erzeugen bzw. den ESP in den Download-Modus zu versetzen - ohne das Gerät öffnen zu müssen.

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 2024 wieder erwacht ist, begann der Versuch der Portierung und Erweiterung für die ESP32-Familie. Alle drei Varianten benutzen denselben Kern.


Custom Firmware mit RTTY/CW Decoder
Mehr RTV
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