Erkennen eines bestimmten Geräusches per Arduino (Piezo)

Gast #5171663
Lesenswert?

Hi,

ich möchte ein sporadisch auftretendes, wiederkehrendes, zu 95% gleich 
bleibendes Geräusch erkennen lassen können.
Das ganze soll über einen Piezoabnehmer laufen.


Konkret: Die Piezoscheibe wird auf einen Untergrund geklebt, und auf dem 
Untergrund kommt ein z.B. hohes Klopfen. Dieses Klopfen ist meistens 
gleich (mechanisch ausgeführt). Jedoch gibt es auch ein paar 
Störgeräusche.

An einem Oszilloskopen könnte man die genaue Form des zu erkennenden 
Geräusches sehen.

Meine Idee ist eine FFT, sodass ich jede einzelne Frequenz und ihre 
dazugehörigen Amplituden habe.

Der Arduino soll dann nach einmaligem einspeichern, jedes weitere 
Geräusch mit diesem (und ein bisschen Toleranz) vergleichen. Wenn es 
passt, soll ein Zähler hochgesetzt werden.

Wie kann ich das im groben Umsetzen ?
Gast #5171844
Lesenswert?

Wie funktionieren denn Spracherkenneungen?
Das ist doch im Grunde nichts anderes, außer, dass statt eines 
Piezosensors ein Mikrophon genommen wird..

Und eine Spracherkennung stelle ich mir bei weitem aufwendiger vor als 
eine "klopf"erkennung. Und trotzdem funktionieren Spracherkennungen 
relativ flott..
Moderator (Firma: Titel) Persönliche Seite #5171999
Lesenswert?

yescafe schrieb:
> Meine Idee ist eine FFT, sodass ich jede einzelne Frequenz und ihre
> dazugehörigen Amplituden habe.
Eine FFT analysiert nur einen winzigen Abschnitt des Signals. Und man 
bekommt dann auch nur ein bestimmtes Spektrum für diesen kleinen 
Abschnitt. Und der Witz ist, dass die Suche ja andauernd parallel 
durchlaufen muss. Man kann also nicht einen Abschnitt aufnehmen und den 
analysieren, und dann den nachfolgenden aufnehmen und den analysieren 
und so fort, sondern man muss kontinuierlich analysieren.

yescafe schrieb:
> Der Arduino soll dann nach einmaligem einspeichern, jedes weitere
> Geräusch mit diesem (und ein bisschen Toleranz) vergleichen.
Ein gelerntes Signal mit einem anderen vergleichen, das hört sich 
jetzt eher nach Kreuzkorrelation an.

Aber jedes der genannten Verfahren zusammen mit "Echtzeit" und "Arduino" 
hört sich sportlich an...
Gast #5172826
Lesenswert?

Lothar M. schrieb:
> yescafe schrieb:
>> Der Arduino soll dann nach einmaligem einspeichern, jedes weitere
>> Geräusch mit diesem (und ein bisschen Toleranz) vergleichen.
> Ein gelerntes Signal mit einem anderen vergleichen, das hört sich
> jetzt eher nach Kreuzkorrelation an.


Naja, jeder Sprachroboter, dem man erst einen Befehl diktieren muss, 
bevor er ihn versteht, wäre dann genau das gleiche (und auch das was ich 
möchte)

Sprich, auf einen knopf drücken, das Geräusch aufnehmen (oder 
wahrnehmen, die Quelle, ob Mikrophon oder Piezo ist ja egal) und dann 
soll immer, wenn das Geräusch wieder kommt, das Geräusch registriert 
werden..
Moderator (Firma: Titel) Persönliche Seite #5172889
Lesenswert?

yescafe schrieb:
> Naja, jeder Sprachroboter, dem man erst einen Befehl diktieren muss,
> bevor er ihn versteht, wäre dann genau das gleiche (und auch das was ich
> möchte)
Und was steckt hinter diesem exemplarischen "Sprachroboter"? Richtig: 
ein Rechenbolide mit zig hundert MHz...

> Sprich, auf einen knopf drücken, das Geräusch aufnehmen (oder
> wahrnehmen, die Quelle, ob Mikrophon oder Piezo ist ja egal) und dann
> soll immer, wenn das Geräusch wieder kommt, das Geräusch registriert
> werden..
Ja, dir ist aber offenbar noch nicht ganz klar, dass das einen 
gewaltigen Rechenaufwand bedeutet, weil du das ja in Echtzeit erfasst 
haben willst. So hat z.B. eine simple optische Maus schon zigfach mehr 
Rechenleistung für die Bildverarbeitung als der AVR im Arduino.

Aber wenn du das Signal schon eindeutig auf dem  Oszilloskop erkennst, 
warum probierst du nicht den total simplen Weg über die 
Hüllkurve/Amplitude des Signals?
Gast #5172945
Lesenswert?

Lothar M. schrieb:
> Und was steckt hinter diesem exemplarischen "Sprachroboter"? Richtig:
> ein Rechenbolide mit zig hundert MHz...

Okay, interessant, mir waren die Größenordnungen nicht ganz klar.

1. Es gibt doch aber auch Spracherkennungen, die mit AVR funktionieren. 
Gut, die sind natürlich nicht so genial wie in unseren Handys, aber in 
meinem Fall muss ich ja tatsächlich nur ein einziges Geräusch mit einer 
genauigkeit von 100% wieder erkennen.. Also nur ein "Sprachbefehl".

2. Ich habe so gesehen keine Platzprobleme. Das Signal des Piezos kann 
ich (bzw. muss ich sogar) per Funk (oder Wlan) an einen Empfänger (1 
meter weit weg) schicken. Dann kann ich die Rechenarbeit ja im Empfänger 
machen lassen, dass also nur die Rohdaten in den Piezo reingehen, an das 
Hauptgerät versendet werden, dort verarbeitet werden. Und das Hauptgerät 
kann auch größer (in der Leistung) sein.


Raspberry Pi wäre eine Idee? Das nächsthöhere, was mir einfiele, sind 
Handyprozessoren. Doch ich denke, die sind noch mal um Größenordnungen 
komplizierter zu programmieren?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren