Die Transducer sind halt Resonatoren im US-Bereich und haben eine relativ begrenzte Bandbreite. Dafür bekommt man mit relativ wenig Leistung eine brauchbare Amplitude und beim Empfänger gleich ein Filterung. Für die Laufzeitmessung ist das tatsächlich nicht ideal, aber so sind nun mal die üblichen Transducer. Das Problem ist halt mitzubekommen welche Periode man gerade empfängt. Die Datentransferrate ist halt durch die Bandbreite begrenzt: die dürfte so in der Größenordnung 1-5 kHz liegen - da sind 1 ms/Bit schon recht gut.

Über eine etwas geänderte Signalform könnte man da noch einiges bei der Zeitmessung Verbessern:
Eine Möglichkeit ist dabei als Signal erst etwa 10-20 Periode zu senden (so dass der transducher gut Ampltude erreicht) und dann die Phase um 180 Grad zu ändern - die Ampltude geht dann schnell zurück und auf die andere Phase. Der Empfänger wertet dann den Punkt aus, wo die Amplidude wieder annähernd Null wird. Mit einer Phasenstarren Auswertung (d.h schon etwas Aufwändiger als mit dem HC05 Modul), kann man den Zeitpunkt so recht genau Treffen und damit die Unsicherheit um ganze Perioden überbrücken.

Der Code zum Senden benutzt schon so etwas wie eine Phasenmodulation: bei einem 1 Bit kommt die Extra Verzögerung dazu (sollte vermutlich besser etwa 12 µs sein, nicht nur 5 µs). Das gibt dann beim Empfänger einen deutlichen Einbruch (einmal kurz durch Null) in der Amplitude und auch einen Sprung in der Phase - sofern der Empfänger das misst. Das ist schon ein recht robustes Protokoll. Vermutlich könnte man die Bits sogar noch etwas schneller senden. Bei mehr als etwa 16 Bits muss man sich ggf. noch Gedanken um die Syncronisation machen - wobei der Empfänger im Prinzip die US Periode zählen könnte. Schneller senden hätte den Vorteil, dass einem Echos nicht so dazwischen kommen.