FAQ
Wie kommuniziert Serilab per Serial mit deiner Hardware?
Serilab funktioniert mit jedem Board, das einen USB-Serial-Port bereitstellt – Arduino, ESP32, Teensy, Raspberry Pi Pico, Daisy Seed und viele mehr. Die Verbindung läuft über die Web Serial API des Browsers und tauscht reinen Text aus – eine Nachricht pro Zeile. Kein Binärprotokoll und nichts Board-Spezifisches: Wenn deine Firmware eine Zeile printen kann, kann sie mit Serilab reden.
Das Beispiel weiter unten nutzt einen Daisy Seed, aber das Format ist auf jedem Board identisch – nur die print/read-Aufrufe unterscheiden sich (auf Arduino nutzt du Serial.println(...) und Serial.readStringUntil('\n')).
Die Regeln sind einfach:
- Jede Nachricht ist eine einzelne Zeile, abgeschlossen mit einem Zeilenumbruch (
\n). - Die Standard-Baudrate ist 115200 (in der Toolbar anpassbar – sie muss zur Firmware passen).
- Daten nutzen das Format
channel:value; Debug-Text bekommt den Präfixlog:.
Gerät → Serilab (was dein Board sendet)
Serilab schaut sich jede eingehende Zeile an und sortiert sie in eine von drei Kategorien:
| Zeile, die dein Board sendet | Wohin sie in Serilab geht |
|---|---|
knob1:64 |
Der Wert 64 wird unter dem Channel knob1 gespeichert und steuert jedes Widget, das daran gebunden ist. Erscheint zusätzlich im Serial-Log. |
log: booting up… |
Erscheint im Debug-Log (der Präfix log: wird entfernt). Von Widgets ignoriert. |
hello world |
Erscheint nur im Serial-Log (kein Doppelpunkt = kein Channel). |
Der Channel-Name ist also einfach der Text vor dem ersten Doppelpunkt, der Wert ist alles danach. Binde ein Ausgabe-Widget (LED, LCD, Scope…) an einen Channel-Namen, und es aktualisiert sich automatisch, sobald eine passende Zeile ankommt.
Serilab → Gerät (was dein Board empfängt)
Wenn du einen Regler bewegst, einen Toggle drückst oder den Performer laufen lässt, schickt Serilab genau dasselbe Format zurück an dein Board:
knob1:64
led1:1
Die Firmware muss nur eine Zeile lesen und am ersten : aufteilen.
Beispiel: Daisy Seed
Ein konkretes Board, damit es greifbar wird. Dieselben drei Ideen – Wert senden, Debug-Zeile senden, Befehl empfangen – lassen sich direkt auf Serial.println() / Serial.readStringUntil('\n') bei Arduino, ESP32, Teensy und dem Rest übertragen.
Setup – den USB-Serial-Logger einmalig starten:
#include "daisy_seed.h"
using namespace daisy;
DaisySeed hw;
int main(void)
{
hw.Init();
hw.StartLog(false); // false = nicht auf ein Serial-Terminal warten
while (1)
{
// ... siehe unten ...
System::Delay(10);
}
}
Einen Wert an ein Widget senden – im Format channel:value:
int knobValue = hw.adc.Get(0) >> 5; // 0–127
hw.PrintLine("knob1:%d", knobValue); // aktualisiert den Channel "knob1" in Serilab
Eine Debug-Nachricht senden – mit log: als Präfix:
hw.PrintLine("log: cutoff = %d Hz", cutoff);
hw.PrintLine("log: warning, buffer underrun");
PrintLine hängt das \n selbst an, damit die Zeile vollständig ist.
Einen Befehl von Serilab empfangen – eine Zeile lesen und am ersten Doppelpunkt aufteilen:
// Wird für jede vollständige Zeile aufgerufen, die von Serilab kommt
void HandleLine(const char* line)
{
const char* colon = strchr(line, ':');
if (!colon) return;
char channel[32];
size_t len = colon - line;
strncpy(channel, line, len);
channel[len] = '\0';
int value = atoi(colon + 1);
if (strcmp(channel, "led1") == 0)
led.Set(value > 0); // z. B. ein Toggle-Widget, das an "led1" gebunden ist
}
Gut zu wissen
- Der USB-Serial-Port kann immer nur von einem Programm gehalten werden. Schließe dein Flash-/Terminal-Tool, bevor du dich in Serilab verbindest (und umgekehrt).
- Serilab behält die letzten 500 Debug-Zeilen und 200 Serial-Zeilen; ältere Zeilen fallen raus.
- Die
log:-Prüfung ist case-insensitive (log:,LOG:,Log:funktionieren alle).
Gibt es eine fertige Library für den Daisy Seed?
Ja. Für den Daisy Seed gibt es einen fertigen, quelloffenen HAL, der das channel:value-Format und das Lesen/Schreiben über Serial schon mitbringt – du musst den Boilerplate nicht selbst schreiben. Code und Anleitung: Serilab HAL auf GitHub.
Für alle anderen Boards reicht wie gehabt ein einfaches print bzw. read pro Zeile – siehe das Beispiel oben.
Welche Browser werden unterstützt?
Die Web Serial API wird von Chrome und Edge auf dem Desktop unterstützt. Firefox und Safari unterstützen Web Serial derzeit nicht.
Welche Hardware kann ich verwenden?
Alles, was sich als serielles USB-Gerät ausgibt: Arduino, ESP32, Teensy, Raspberry Pi Pico und viele mehr. Wenn dein Microcontroller einen USB-Serial-Port hat, funktioniert er mit Serilab.
Wo werden meine Projekte gespeichert?
Lokal im Browser (localStorage). Deine Daten verlassen deinen Rechner nicht. Projekte können zusätzlich als Datei exportiert und auf anderen Geräten importiert werden.
Ist Serilab wirklich kostenlos?
Ja – komplett und ohne Einschränkungen. Kein Account, kein Abo, kein Tracking. Wenn du das Projekt unterstützen möchtest, freue ich mich über einen Kaffee auf Ko-fi.
Gibt es eine mobile Version?
Nein. Web Serial wird nur auf Desktop-Browsern unterstützt. Eine mobile Version ist aktuell nicht geplant.