Code über Audiosignal erkennen und anzeigen.

  • Hallo zusammen,


    ich möchte über ein Audiosignal ein bestimmten Code erkennen (z.B. Binärcode oder Morsecode). Das Signal soll mit einem eingegeben Code über einen Arduino Uno und einen Lautsprecher ausgegben werden. Mir steht ein RasPi3 zur Verfügung, der das Signal und den mitgelieferten Code erkennen soll. Zum Schluss soll der Binärcode z.B. über eine Segmentanzeige ausgegeben werden.


    Ich habe schon einige Beiträge gelesen, habe allerdings keinen Ansatz gefunden mit dem ich weiterarbeiten kann. Bin beim lesen darauf gestoßen, dass ich mit dem Mikrofon auch eine Soundkarte benötige oder gibt es dort einfachere Möglichkeiten, da ich nur einen Code erkennen will? Außerdem stellt sich mir die Frage, wie ich das Audiosignal möglichst Störfrei empfangen kann und ob weitere Hardware notwendig ist um sowas zu realisieren?


    Sollten meine Fragen unverstänlich sein bitte ich um Entschuldigung, ich bin leider blutiger Anfänger:wallbash:


    Danke für hilfreiche Antworten


    :danke_ATDE:LG Flo

  • Alternativ könntest Du das Mikrofonsignal verstärken und in einen GPIO rein fahren. Ein Transistor könnte dafür schon genügen.

    Jetzt die Frequenz und den zeitlichen Ablauf auswerten und damit decodieren. Achte darauf, dass das Verstärkte Signal nicht mehr als 3,3V hat. Da die Daten am GPIO digitalisiert werden, dürfte es einfacher sein die Auswertung zu machen als wenn Du das analoge Signal der Soundkarte auswerten musst.

    Falls das zulässig ist, könntest Du das generierte Signal direkt in den GPIO leiten (wieder auf die 3,3V achten)...

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Öhm mit Pulseaudio kannst du dir nen virtuellen Eingang erstellen oder halt das Mik abgreifen. Dann gibts für Python die Bibliotheken "pyaudio" und "pydub" wobei bei letzterem das Audiosegment näher zu betrachten wäre.


    Edit:

    Soll das Signal eigentlich aus Umgebungsgeräuschen rausgefiltert werden oder läuft das im ruhigen Raum ab?

    Ich würde z.B. ne Variable nehmen und das Grundrauschen (also den RMS Wert errechnen) das ist dann dein Null Wert. Kommt jetzt ein Piep8o an beginnt ein timer zu zählen - endet der Ton stoppt der timer - aus den verschieden langen Laufzeiten des Signals kannst du dir nen table erstellen ( also z.b. [20ms] + [20ms] + [ 50ms] = Aktion X) Das beinhaltet dann aber nicht wirklich ne Fehlerkorrektur.

    Wenns mit Umgebungsgeräuschen funktionieren soll würd ich mit nem Bandfilter arbeiten > https://stackoverflow.com/ques…specific-frequency-filter

    Edited once, last by RedSun54519 ().