SMPTE Timecode mit ESP32

Hi, ich habe ein Projekt, in dem ich gerne ein SMPTE Timecode generieren möchte, und der zu einem gewissen Zeitpunkt startet zum laufen.
Ich bin mir nicht sicher, was besser als Startzeitpunkt zum nehmen ist (Zeit aus dem internet ziehen oder über ein GPS Modul)

bzw. wie würde ich überhaupt so einen Timecode generieren.. ich habe 0 Ahnung wo und wie ich ansetzen kann/muss

Die Zeitquelle hängt an der Verfügbarkeit eines Internetzugangs ab bzw die Sichtbarkeit eines großen Teils des Himmels außerhalb Gebäuden.
Ich würde einen RTC Baustein vorschlagen, der hie und da mit einer genauen Zeitquelle synchronisiert wird ( NTP bzw GPS).

Hab keine Ahnung was SMPTE ist und darum kann ich DIr nicht helfen. Hast Du schon mal "Arduino" und "smpte" in einer Suchmaschine eingegeben?

Grüße Uwe

Du brauchst einen 1sek/25 Takt.

Mit jedem Taktsignal erhöhst Du das Frame.
Mit jeder Frameänderung:
Frame senden.
Second, Minute, Hour ggfls. neu setzen.

Theoretisch hängst Du immer einem Frame der Zeit hinterher.
Praktisch ist es aber richtig, mit dem Takt den Frame erst zu senden und dann neu zu berechnen, und mit dem nächsten Takt den errechneten Timestamp zu senden.

Kein Hexenwerk.
Ich überleg grad, ob eine Ds3231 einen solchen Takt ausgeben kann....

Ein Tmestamp der von einem MASTER als Bitstream kommend an allen Slaves übernommen wird.
Innerhalb einer Sekunde gibt es 25 Marker bzw. 25 Timestamps in einer Sekunde :-) Also alle 40ms Ein Stamp mit der Nummer des Stamps innerhalb der Sekunde.

Danke

Nicht direkt. 32768 teilt sich auch nicht ganzzahling durch 25. Da ist dann die Frage: "Wie viel Jitter ist erlaubt?"

ein Mensch sollte es nicht merken... ob es jetzt ganz exact ist ... wäre egal

Auf sqw gehen 1024 hz.
Wenn ein Time-Frame etwas kürzer ist, macht das nichts.

Das Timesignal sagt nur, mit welchem Frame im Stream ein Sync durchgeführt wird.

Geht natürlich mit jedem, macht aber keinen Sinn.

Wenn es eine Außenanwendung wird würde ich GPS nehmen, wenn es Indoor ist, Internet (S)NTP.

Es würde mich wundern wenn du mit "SMPTE Timecode Arduino" nicht ausreichend Beispiele finden würdest.

Ansonsten wäre mein Ansatz den Master jede volle Sekunde auf das Referenz-Signal zu syncronisieren. Die nächsten 24 (oder andere) Nachrichten würde ich im Intervall senden.

Wobei die 25 nur ein europäischer möglicher Standard ist.

Laut smpte.org gehen auch

operating at nominal rates of 60, 59.94, 50, 48, 47.95, 30, 29.97, 25, 24, and 23.98 frames per second.

Mit Tricks, dass alle 10 Minuten ein paar Frames ausgelassn werden, um auf so krumme Werte wie 23.98 zu kommen.

Das ganze diente ursprünglich (gibts seit 50 Jahren) dazu, Tonspuren und Film zu synchonisieren, und bezieht sich dann auf den Film- bzw. Video-Start mit hh:mm:ss:ff und hat da überhaupt nichts mit GPS oder NTP Zeit zu tun.

Was hat das nun mit Arduino zu tun?

Soll ein ESP32 als Master ein LTC SMPTE Audiosignal ausgeben, um damit andere Geräte zu synchronisieren?

Die Thematik ist so alt, wie Stummfilm, NTSC, PAL und SECAM.
Ich wollte nicht unbedingt ausholen, dass KINO mit 24 picture arbeitet und die seit fast 15 Jahren unveränderten Schriften auch Midi, Dolby etc. pp. beinhalten, genauso wie sync über unterschiedliche Wege, bis hin zu Endpoints für Glasfaser.

Es gibt sogar ein Verfahren, was nicht auf 10 Minuten auslöst - aber das führt jetzt wirklich zu weit :wink:

Ich habe zumindest das Eingangspost verstanden, dass eine Timecodequelle mit einem ESP/Arduino gebaut werden soll.

Hmm... SMPTE LTC mit einem ESP32

Sieht ein wenig Aufwändig aus mit den 2 CPUs... kann man bestimmt ein wenig vereinfachen.

Das Projekt dazu ist hier verlinkt.

Ja, die Idee ist, dass ein paar Minuten vor der Show der Timecode startet (daher auch die Zeit ziehen aus dem Netz oder GPS) und dann mit den paar Minuten versatz dann pünktlich gestartet.

Wenn Du GPS nutzen willst, ist Outdoor Deine Destination?

Alternativ böte sich auch DCF77 oder ein Sync auf Mobilfunk an.

Die Frage ist, welche Medien stehen zur Verfügung und welche Genauigkeit ist gefordert.
Letztere las ich aussen vor. Deiner Beschreibung entnehme ich, dass es sich um ein lokales und nicht verteiltes Ereignis handelt :wink:

Selbst wenn ein Sync auf einen Stream gelegt wird, bleibt es ein lokales Ereignis.

Wenn Du "nur" einen TIK brauchst und ein WLAN zur Verfügung steht:

EDIT: Sorry, falscher Link. Das Projekt ist hier beschrieben:

Hier ist nur der Code:

Ich hätte Dir das gerne ausprobiert, aber die Infolage ist dünn und ich verfüge nur zu sehr begrenzten Zeiten über Hardware.
Das driftet hier auch wieder ab, sodas Du damit was anfangen kannst, aber ich bin dann auch erstmal raus.

Hi, das System sollte "mobil" sein.. also die anlage wird immer wieder neu auf und abgebaut.. dient als eine Art "Countdown" System zum starten der Show dann ... prinzipell ist es im urbanen Raum gedacht ... daher hätte ich es über mein Handy mit dem Netz verbinden lassen.

aber ich schau mir mal das Projekt genauer an

Sicher, aber ich vermute, das es komfortabler ist, wenn der Timecode der Wallclock entspricht, für den Fall das du eine Liveshow aufzeichnest.

Ich hätte da eine Projektidee... ein Timecode Generator der als Referenz für 3 Kameras und 5 Audiorekordern dient.

Wie genau muss der Timecode der Uhrzeit entsprechen? Oder ist das egal, wenn der konstant 37 Minuten daneben ist?

wenns konstant 37 Minuten daneben ist ist es auch egal, das kann man im der Programmierung ausgleichen .. blöd ist es wenn es einmal 3 min und dann 37 min ist..