Forum: Mikrocontroller und Digitale Elektronik Schloss öffnen durch Musiktöne


von Bernhard R. (b-r)


Lesenswert?

Hallo,

ich möchte für ein Kinderspiel eine Art musikalisches Codeschloss bauen.
Eine Kiste soll sich öffnen, wenn eine bestimmte (möglichst einfache, 
max. 5 verschiedene Töne) Melodie auf einer Flöte gespielt wird.
Für die Auswertung der Töne bin ich jetzt auf folgende Schaltung 
gestoßen:

http://www.myplace.nu/avr/gtuner/index.htm

Was meint Ihr? Könnte das damit hinhauen?
In der Software könnte man ja die Hysterese deutlich größer machen um 
einen Ton sicher zu erkennen.

Wie gesagt, keine Profianwendung, nur ein Spiel.

Wenn jemand andere Vorschläge hat die nicht auf einer kompliziert FFT - 
Analyse beruhen, gerne her damit ;-) Bin wirklich dankbar für weitere 
Ideen, bevor ich mir die Teile besorge.

Gruß,

Bernhard
von Tux (Gast)


Lesenswert?

Goetzel-Algorithmus/Filter wäre mein Vorschlag.
von J. S. (engineer) Benutzerseite


Lesenswert?

Tux schrieb:
> Goetzel-Algorithmus/Filter wäre mein Vorschlag.
Das wäre aber Kanonen auf Spatzen gerichtet :-)

Die Fötentöne können / sollen ja durch die Grundtöne identifiziert 
werden und da reicht der Vergleich mit jeweils einer einzigen der 
jeweils bekannten 5 Frequenzen. Das funktioniert dann, wenn die Töne 
genügend lange gepielt werden, also z.B. 32 Phasen, was auch bei tiefen 
Tönen leicht übertroffen wird. Man baut eine Art AGC mit einem Opamp und 
einen Rechteckkomparator der mit dem Sollton gespeist wird. Müsste jeder 
Micki-AVR locker schaffen. Wenn bei der Koerrelation des Signals ein 
genügend grosser Wert erzielt wird, ist die Bedingung erfüllt und die 
state machine wartet das Tonende ab - hüpft in die Warteschleife für den 
nächste Ton. Wenn Du es Dir mit dem Triggern der Phase ganz einfach 
machen willst, prozessierts Du komplex (IQ) indem Du ein 90° 
verschobenens Rechteck ausgibt. Dann halt auf zwei Komparatoren. Der 
Rest ist Mathe im AVR.
von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Guck dir mal den NE567 an, ist zwar schon alt, könnte bei deiner 
Anwendung aber reichen.

Gruß,
Alex
von c-hater (Gast)


Lesenswert?

Jürgen Schuhmacher schrieb:

> Tux schrieb:
>> Goetzel-Algorithmus/Filter wäre mein Vorschlag.
> Das wäre aber Kanonen auf Spatzen gerichtet :-)

Nicht wirklich. Goertzel ist doch wirklich recht einfach zu 
implementieren und arbeitet erheblich zuverlässiger als alles, was auf 
der Analyse von Nulldurchgängen beruht. Man spart sich viel Ärger, wenn 
man sich gleich für Goertzel entscheidet und den einmalig etwas höheren 
Aufwand in Kauf nimmt.
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Alex Bürgel schrieb:
> Guck dir mal den NE567 an, ist zwar schon alt, könnte bei deiner
> Anwendung aber reichen.

Leider geht der nur für eine Frequenz. Um 5 Tonhöhen auszuwerten, 
bräuchte man also 5 Stück und entsprechend viele Portpins.
Der Gitarrentuner ist doch schon ganz gut, muss bloss erweitert werden.
von Dominik S. (dasd)


Lesenswert?

Bernhard R. schrieb:
> für ein Kinderspiel

Jürgen Schuhmacher schrieb:
> Die Fötentöne

Ahh ja :D

Aber im Ernst...
Bevor man da irgendwelche "komplizierten" Hardwareaufbauten anfängt 
(OpAmps, etc.) würde ich das dann doch auch eher in Software lösen.
Dann hast du auch den Vorteil, dass du leicht verschiedene Möglichkeiten 
testen kannst.

Entweder du wandelst tatsächlich das o.g. Stimmgerät ab
oder
du nimmst wirklich den Goertzel :)

Bernhard R. schrieb:
> Wenn jemand andere Vorschläge hat die nicht auf einer kompliziert FFT -
> Analyse beruhen, gerne her damit ;-)

Den Algorithmus in C findet man bei Google, dann musst du eigentlich nur 
noch die Funktion aufrufen.
Ich würde behaupten, dass das auch nicht viel komplizierter ist als die 
andere Option. :)

Edit:
http://www.embedded.com/design/configurable-systems/4024443/The-Goertzel-Algorithm
von Tom P. (booner)


Lesenswert?

Hei,

da ich das nicht softwaremäßig lösen könnte,
würde ich einen billigen Gitarrentuner (<15 Euro)
nehmen und dessen Anzeige mit einem analogen Eingang
eines µC verheiraten.


Grüße,

Tom
von Bernhard R. (b-r)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

bin jetzt soweit, dass ich das Mikrofonsignal auf einen Pegel von ca. 
50mV bekommen habe.
Laut der Seite http://www.myplace.nu/avr/gtuner/index.htm passt das ja 
zur Auswertung.
Ich habe das Ausgangssignal jetzt mal über die Soundkarte mitgeschrieben 
und bekomme folgendes Signal für den Kammerton A angezeigt (siehe 
Anhang).
Leider habe ich kein richtiges Oszi um mir das Audiosignal mal genauer 
anzuschauen.
Jetzt wo ich dieses Signal sehe, verstehe ich den C-Code nicht mehr.
Wie kann ich durch zählen der Flankenübergänge auf die Grundfrequenz 
440Hz kommen?
Hab ich irgendwo einen Denkfehler oder kann mir jemand folgenden 
Code-Schnipsel erklären:
1
    for (i=0;i<32;i++)
2
    {
3
      while (bit_is_set(PINB,1))    // ignore hi->lo edge transitions
4
        if (count_hi > 80)      // skip if no edge is seen within
5
          break;          // a reasonable time
6
7
      while (bit_is_clear(PINB,1))  // wait for lo->hi edge
8
        if (count_hi > 80)      // skip if no edge is seen within
9
          break;          // a reasonable time
10
11
      count += (count_hi << 8) + inp(TCNT0); // get counter value
12
      outp(0,TCNT0);          // clear counter     
13
14
      if (count_hi > 80)        // skip if counter has accumulated a
15
        break;            // too high value
16
17
      count_hi = 0;          // clear hi count
18
    }
19
20
21
22
23
    // initially turn off both leds
24
    sbi(PORTB,0);
25
    sbi(PORTB,2);
26
27
    if (count_hi <= 80)          // if count is reasonable
28
    {
29
30
      count = count >> 5;        // average accumulated count by dividing with 32

Ich habe das so verstanden:
In der If Schleife wird 32mal ein Flankenwechsel abgefragt, die 
verstrichene Zeit zu einer Variablen hinzugefügt und danach die Variable 
durch 32 geteilt um einen Durchschnittswert zu bekommen. Wenn der 
Abstand zwischen zwei Flanken zu lange ist, wird die Messung 
unterbrochen.

Das passt aber nicht zu meinem aufgenommenen Signal.

Kann mich mal jemand erleuchten? Ich möchte das auf einem Attiny44 oder 
2323 umsetzten und den Code und die Funktionsweise verstehen.
von Roland (keanu-rolando)


Lesenswert?

Hallo Bernhard,
die o.g. Anfrage ist ja schon so lange her...;-)
und ich habe mir diese Idee für einen Geocache ausgeliehen,
da ich diese Idee genial finde...
Inzwischen habe ich eine funktionierende Lösung, die auf
Intervallerkennung optimiert ist, wobei der 1. Ton frei
wählbar ist, nur die Folgetöne müssen in die Intervallfolge
passen. Am 8.8.26 geht das System in den 1. Praxistest...
Wenn Dich das (noch) interessiert, dann melde Dich bei mir;
d.h. ich bin natürlich gerne bereit Dir näheres mitzuteilen.
Liebe Grüße
Roland
von Rainer W. (rawi)


Lesenswert?

Dominik S. schrieb:
> Bernhard R. schrieb:
>> Wenn jemand andere Vorschläge hat die nicht auf einer kompliziert FFT -
>> Analyse beruhen, gerne her damit ;-)
>
> Den Algorithmus in C findet man bei Google, dann musst du eigentlich nur
> noch die Funktion aufrufen.
> Ich würde behaupten, dass das auch nicht viel komplizierter ist als die
> andere Option. :)

Der Rechenaufwand für eine komplette FFT ist erheblich größer, als ein 
paar wenige Frequenzen mit dem Goertzel-Algorithmus abzuklappern.

Nur wenn du die Kompliziertheit einzig nach dem Codeumfang für einen 
Funktionsaufruf irgend einer Library bewertest, magst du Recht haben. 
Vor 13 Jahren dürfte die erforderliche Rechenleistung allerdings noch 
ein deutliches höheres Gewicht bei der Entscheidung gehabt haben. 
Inzwischen hat sich da viel verändert.
von Nemopuk (nemopuk)


Lesenswert?

Rainer W. schrieb:
> Inzwischen hat sich da viel verändert.

Stimmt. Zum Beispiel ist der STM32G431 für solche Aufgaben bestens 
ausgestattet. Und das ist kein High-End Bolide, sondern in der 3€ 
Mittelklasse.
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Nemopuk schrieb:
> Rainer W. schrieb:
>> Inzwischen hat sich da viel verändert.
>
> Stimmt. Zum Beispiel ist der STM32G431 für solche Aufgaben bestens
> ausgestattet. Und das ist kein High-End Bolide, sondern in der 3€
> Mittelklasse.

5 Goertzels im Audiobereich sind ein Witz. Dafür tut's auch ein 
70Cent-ATtiny. Tat's übrigens auch vor 13 Jahren schon. Da war es 
allerdings noch nicht ganz so einfach, weil die ollen Tinys nicht in 
Hardware multiplizieren konnten. Aber es war möglich.

Oder anders ausgedrückt: Wer für diese anspruchslose Aufgabe einen 
STM32G431 benötigt, der kann schlicht nicht programmieren.
von J. S. (engineer) Benutzerseite


Lesenswert?

Rainer W. schrieb:
> ein
> paar wenige Frequenzen mit dem Goertzel-Algorithmus abzuklappern.

Ich hatte damals vor 13 Jahren schon erklärt wie man das auch ohne kann 
- die beschriebene Mimik lässt sich 1:1 in SW machen, wobei es eben 
durchaus auch auf die Signalkonditionierung ankommt. In SW braucht es 
ein gewndeltes Signal mit entsprechende Amplitude und das idealerweise 
offesetfrei.
von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Angehängte Dateien:

Lesenswert?

Es braucht natürlich diese "Tonwand"
von Jörg (lixtop)


Lesenswert?

@Des|ntegrator

Wie hieß der Film nochmal?
von Markus T. (toybaer) Benutzerseite


Lesenswert?

von Rahul D. (rahul)


Lesenswert?

von Thilo L. (bc107)


Lesenswert?

Ob S. schrieb:
> 5 Goertzels im Audiobereich sind ein Witz.

Seh' ich genauso, zumal es bei dieser Anwendung ja nun wirklich 
keinerlei zeitkritische Anforderungen gibt. Hatte ich vor ca. 20 Jahren 
mit einem AT90S8515 (?) @ 4 MHz gemacht als Gitarrenstimmgerät für die 
Tochter.
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Habe mal meine Wühlkiste untersucht, nach einer schnellen einfachen 
Lösung für das Eingangsproblem.

Gefunden habe ich ein "Maix Dock M1W" Board.
Völlig überzogen für die Aufgabe, aber alles Nützliche schon drauf.

Mikrofon
FFT in Hardware
Gar ein KI Modul(wer es braucht)
Dual Core RISC-V64

Die sprichwörtliche "Kanone auf Spatzen".
Aber dafür kein Löten, kein Basteln mit Analog Verstärker/Kompressor 
usw.
Noch gibt es welche im Handel, aber die Luft wird zunehmend dünner.
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Arduino F. schrieb:

> Völlig überzogen für die Aufgabe

Das kann man wohl nicht anders sagen.

> aber alles Nützliche schon drauf.

Hat z.B. ein Tiny25 ebenfalls. Kostet bei Digikey 85Cent.
Hmm... Bis auf das Mikro und ein wenig Hühnerfutter zu dessen Anbindung. 
Zusammen noch mal so ca. ein knapper Euro.

Das ist schon ein bissel was anderes als 55 Euronen...
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Thilo L. schrieb:

> Seh' ich genauso, zumal es bei dieser Anwendung ja nun wirklich
> keinerlei zeitkritische Anforderungen gibt.

Na doch, gibt es natürlich schon. Es muss sichergestellt sein, dass 
jeder Goertzel jedes Sample mitbekommt und innerhalb einer Samplezeit 
verarbeitet.

Aber es gibt zwei einfache Tricks, um den Rechenzeitaufwand der 
Goertzels möglichst gleichmäßig zu verteilen.
1) Variation der Lauflängen der Goertzels
2) Versatz um ein Sample von Goertzel zu Goertzel

Oder natürlich Kombinationen beider Ansätze. Allerdings hängt es von der 
konkreten Anwendung ab, was sinnvoll ist, denn beide Ansätze haben 
natürlich auch Nachteile. So wie das praktisch immer in der 
Signalverarbeitung ist: nix ist perfekt.
von Thilo L. (bc107)


Lesenswert?

Ob S. schrieb:
> Na doch, gibt es natürlich schon.

Nö, seh' ich nicht. Mal angennommen, das Kind schafft es, pro Sekunde 
einen Ton zu spielen, dann habe ich, sagen wir mal, 100ms Zeit, um 
hunderte von Samples zu sammeln, und 900 ms für den Görtzel. WIMR hat 
mein Görtzel damals (=4 MHz-AVR) ca. 50 ms benötigt, also wo ist das 
Zeitproblem? Da kann ich lässig mit 10facher Redundanz arbeiten...
: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Thilo L. schrieb:

> Nö, seh' ich nicht.
[...]

1) Während der "Betriebszeit" des Goertzels muss er JEDES Sample 
mitbekommen, sonst filtert er nicht auf die gewünschte Frequenz.

2) Dazu kommt bei mehreren Goertzels das Problem, dass ein recht großer 
Teil des gesamten Rechenzeitaufwands nur bei jeweils einem Sample 
anfällt, dem letzten der "Betriebszeit". Aber auch dieses Sample muß 
deutlich innerhalb einer Samplezeit verabeitet sein, sonst kann für die 
konkurrierenden Goertzels Bedingung 1) nicht mehr sichergestellt werden.

Außerdem:

> 4 MHz-AVR

Was genau? Classic-Tiny oder Mega? Classic-Tinys können (mit einer 
Ausnahme) nicht in Hardware multiplizieren, Megas schon. Das macht einen 
ziemlichen Unterschied. Was der Mega in zwei Takten erledigt, dafür 
braucht der Tiny ca. 40.
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Ob S. schrieb:

> Was genau? Classic-Tiny oder Mega?

Ooops, gerade erst gesehen: AT90S8515. Keine Ahnung, ob die HW-Mul 
konnten. Habe ich nie verwendet. Der "Nachfolger" Mega8515 konnte das 
jedenfalls.
von Thilo L. (bc107)


Lesenswert?

Hmmm, entweder wir reden aneinander vorbei, oder ich verstehe Deine 
Argumente nicht.

Ich sammle einen Buffer voll Samples => fertig für die Verarbeitung 
durch den Görtzel. Ich kann nun sogar während des Görtzels weiter 
Samplen, muss ich aber nicht, das ich ja einen aussagekräftigen Buffer 
voll Samples bereits habe. Zur Sicherheit kann ich mehrmals samplen, der 
Redundanz wegen. Sobald ein Ton erkannt wurde, erhöhe ich einen Zähler.

Das ganze "Gesampele und Gegörtzele" führe ich einfach ongoing fort, 
ggfs. überlappend, bis mein Zähler auf 5 steht - Voilá!

Ich muss doch nicht lückenlos samplen, es reicht, wenn ich schnell einen 
Buffer mit (lückenlosen) Samples fülle, dann den Görtzel laufen lasse. 
Ob ich in der Zeit des Görtzels hunderte potentieller Samples verpasse 
oder nicht, spielt doch für die Decodierung keinerlei Rolle.

Wo ist mein Denkfehler? ;-)
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Thilo L. schrieb:

> Hmmm, entweder wir reden aneinander vorbei, oder ich verstehe Deine
> Argumente nicht.

Nun, zumindest habe ich jetzt wohl verstanden, welche Lösung dir 
vorschwebt. Du benutzt die Goertzels nacheinander. Also warte auf 
ersten erwarteten Ton, wenn "gesehen", warte auf zweiten erwarteten Ton 
(also: lasse Goertzel mit anderen Parmetern laufen) usw.

Das ist natürlich deutlich suboptimal. Jedes breitbandige Störgeräusch 
wird diese Logik durcheinander bringen. Teste das einfach mal dadurch: 
spiele zwei Töne, laß ein Schlüsselbund runterfallen, spiele die 
restlichen Töne...
von Thilo L. (bc107)


Lesenswert?

Na ja, die Töne werden auch nacheinander gespielt, also muss ich sie 
auch nacheinander detektieren, oder?
von Ove M. (Firma: ;-) gibt es auch) (hasenstall)


Lesenswert?

Du musst jeden Ton detektieren, das Ergebnis sequenziell in einen 
Speicher ablegen. Quasi Bit für Bit. Jeder Ton der erkannt wird belegt 
einen festen Platz. Gleich danach prüfst du ob die gewünschte 
Reihenfolge eingehalten ist. Wenn nicht, dann gleich alle 
Speicherpositionen löschen und wieder von vorne.

Ton 1 detektiert, Speicherflag 1 setzen, auf den nächsten Ton warten. 
Ist es dann der gewünschte 2. Ton, dann Speicherflag 2 setzen, ist es 
ein anderer, dann alle Speicherflags löschen und wieder bei eins 
starten. Usw.
Hast du dann alle fünf Flags gesetzt, Aktion auslösen.
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Thilo L. schrieb:

> Na ja, die Töne werden auch nacheinander gespielt, also muss ich sie
> auch nacheinander detektieren, oder?

Klar, die Sequenz der Töne muß natürlich sequentiell geprüft werden.

Der Trick ist aber, schon die die einzelnen Töne möglichst zuverlässig 
zu erkennen. Also auch dann, wenn sie z.B. nur relativ leise reinkommen 
oder dann, wenn ein breitbandiges Störgeräusch das tut, was 
Störgeräusche halt so tun: stören.

Wenn man also 5 Goertzels laufen lassen kann, dann nutzt man immer alle 
fünf. Den gewünschten Ton erkennt man dann am Verhältnis der Ergebnisse 
der 5 Kanäle. Das ist zwar noch nicht optimal, aber schon viel besser 
als die Auswertung nur eines einzelnen Kanals.

Das Prinzip zur Perfektion getrieben kannst du z.B. bei DTMF finden. 
Sehr gute Decoder benutzen da 16 Kanäle, weniger gute nur 8. Und sie tun 
das immer parallel und werten halt die Pegelverhältnisse der 8 oder 16 
Kanäle aus, nicht nur den Wert eines einzelnen Kanals. In Wirklichkeit 
ist es sogar noch komplizierter, weil bei den sehr guten Decodern mit 16 
Kanälen auch noch die Phasenlage der Einzelsignale ausgewertet wird. Das 
dient dazu, unerwünschte Oberwellen zu erkennen, also Fakes des 
eigentlich zu identifizierenden Tones auszusieben.

Leider kannst du bei der Melodieerkennung so weit nicht gehen, denn es 
ist völlig natürlich, dass Musikinstrumente auch Oberwellen produzieren 
(das macht ja gerade ihren typischen Klang aus). Im Gegensatz zu den 
synthetischen DTMF-Tönen, die per Definition weitgehend oberwellenfrei 
gesendet werden müssen.
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Vielleicht findet noch jemand das Gitarrenstimmgerät mit Arduino, sowie 
Code, das über ein paar LED als Anzeige arbeitete.

Dann müßte nur noch abgefragt werden, ob die LED in der richtigen 
Reihenfolge aufleuchten.
: Bearbeitet durch User
von Ulrich (Firma: DC3AX) (uprinz)


Lesenswert?

STM32F oder STM32U Serie, da gibt es eine ganze Reihe SoC die gleich 
ausreichend (12 Bit) gute ADC/DAC im Chip haben.

Software FFT gibt es wie Sand am Meer. Eine auf Audio ausgerichtete 
Übersicht gibt es zum Beispiel hier:
https://community.vcvrack.com/t/complete-list-of-native-fft-libraries-for-audio/9153

Wenn man dann noch Gemini oder eine anderen KI befragt, dann bekommt man 
einen guten Überblick, was man für so eine Software FFT als 
Rechenleistung benötigt und welche Chips als Rechenknechte in Frage 
kommen.

Ein STM32F411 Blackpill Board kann die Aufgabe mehr als lösen, es bringt 
nicht nur genug Rechenleistung für eine FFT, sondern auch einen DSP mit, 
der die FFT im Handumdrehen erledigt.

Arduino wäre für Software FFT zu langsam, die integrierten ADC von ESP32 
sind zu schlecht. Daher der Rat zu STM32.
von Norbert (der_norbert)


Lesenswert?

Ulrich schrieb:
> Ein STM32F411 Blackpill Board kann die Aufgabe mehr als lösen, es bringt
> nicht nur genug Rechenleistung für eine FFT, sondern auch einen DSP mit,
> der die FFT im Handumdrehen erledigt.

Grundsätzlich hast du Recht, jedoch:
Kanone ──▶ Spatz

Ein fertiges PICO oder PICO2 Board für den kleinsten unserer 
Euro-Scheine kann es ebenfalls. Bequem in Python. Erkennung von bis zu 
acht gleichzeitig erklingenden Töne in ca. 20ms. Wenn man sich auf die 
Hälfte der verfügbaren Kerne beschränkt. Sonst doppelt so schnell.
Und man benötigt keinen Programmer, wodurch man weiterhin nur den 
kleinen Euro Schein von oben braucht.
von Ulrich (Firma: DC3AX) (uprinz)


Lesenswert?

Blackpill Aliexpress ca 3,50€ für ein einzelnes exemplar, ca 7€ für 
zwei, ab 10€ gibt es gerne auch schon mal 4 Boards. Da kann man sich 
dann ordentlich einarbeiten und seine nächsten Projekte auch auf das 
Gelernte aufsetzen.

Die Programmer für STM kosten im Stick Format 6€ aber du brauchst für 
den BlackPill keinen Programmer, der hat einen integrierten ST-Link V2. 
Du kopierts einfach den bin file in das sich öffnende Verzeichnis, wenn 
das Ding im ST-Link Modus angestöpselt oder in den Modus resettet wird.
von Rbx (rcx)


Lesenswert?

https://store-usa.arduino.cc/products/arduino-tiny-machine-learning-kit
https://github.com/emlearn/emlearn

Oder die Flötentöne als Samples vorgeben, und dann matchen - könnte auch 
hilfreich sein. Die Flötentöne zum Vergleichen könnte man sogar mit 
Synth erstellen.
von Norbert (der_norbert)


Lesenswert?

Ulrich schrieb:
> Blackpill Aliexpress ca 3,50€ für ein einzelnes exemplar,

Ach so, also C³
Ich dachte wir wollen bequem in Deutschland ein Original einkaufen.
Wenn's C³ sein darf, hätte ich etwas für 1,49. Wollen wir das 
tatsächlich weiter machen? ;-)

Aber dass STLINK ein Laufwerk öffnet, das wusste ich noch nicht. Ich 
hatte meinen STMF4 bisher immer per ›st-flash‹ programmiert. Muss ich 
bei Gelegenheit doch mal reinschauen.


C³: cheap China crap
von Norbert (der_norbert)


Lesenswert?

Rbx schrieb:
> Oder die Flötentöne als Samples vorgeben, und dann matchen - könnte auch
> hilfreich sein. Die Flötentöne zum Vergleichen könnte man sogar mit
> Synth erstellen.

Der sourcecode würde mich mal interessieren. Und das erzielbare 
Ergebnis.
von Ulrich (Firma: DC3AX) (uprinz)


Lesenswert?

Norbert schrieb:
> Ach so, also C³
> Ich dachte wir wollen bequem in Deutschland ein Original einkaufen.

Das Eine muss das Andere nicht ausschließen. Wenn der TO am Projekt Spaß 
findet, dann kann er nach Rapid Prototyping auf C³ Hardware, eine eigene 
Platine designen und mit hochwertiger Elektronik bestücken.

Aber um eine Machbarkeit zu prüfen, gegen die eigenen Fähigkeiten 
abzugleichen und ggf. in die Ecke zu werfen, reicht das C³ schon aus.

Man sollte auch nicht die Module für 98 ct kaufen, bei denen nur 1x 
Verkauft steht, sondern schon einen Anbieter wählen, der schon >1000 
Module verkauft hat und diese für >3€ anbietet.

Ein Originalteil gibt es da in der Richtung kaum, es sind die gleichen 
Teile aus der gleichen Fabrik im gleichen China, sie haben nur eine 
andere Farbe und laufen zu einer anderen Uhrzeit vom Band. Ob ein echter 
STM32 drauf ist, kannst Du nur als Firmenkunde bei Mouser, Farnell oder 
Digikey herausfinden. Privatkunden steht da kaum eine Möglichkeit offen.

Das einzig wirklich super schlechte aus China ist, sind die 
Dupont-Stecker mit einer maximalen Steckzyklen Zahl von 3. Danach kommen 
die kleinen Steckbretter mit einer Zyklenzahl von 5 bis 10. Aber von den 
10 BluePills (STM32F10x), die ich schon verbastelt habe, war nur eine 
wirklich DOA.

Aber ja, ich habe auch sehr viele EVKs direkt von ST vom Messegeschenk 
bis zum 500€ STM32H7 Board. Ich habe auch alle ST-Link Programmer in 
allen Versionen. Aber ich arbeite auch seid 20 Jahren mit den Dingern. 
Trotzdem mag ich die Blue- und BlackPills, weil ich nicht erst über 
Datenblätter herausfinden muss, welche GPIOs bereits durch Zeug belegt 
ist, das ich nicht brauche.
von Loco M. (loco)


Lesenswert?

Ulrich schrieb:
> Blackpill Aliexpress ca 3,50€ für ein einzelnes exemplar, ca 7€ für
> zwei, ab 10€ gibt es gerne auch schon mal 4 Boards. Da kann man sich
> dann ordentlich einarbeiten und seine nächsten Projekte auch auf das
> Gelernte aufsetzen.
>
> Die Programmer für STM kosten im Stick Format 6€ aber du brauchst für
> den BlackPill keinen Programmer, der hat einen integrierten ST-Link V2.
> Du kopierts einfach den bin file in das sich öffnende Verzeichnis, wenn
> das Ding im ST-Link Modus angestöpselt oder in den Modus resettet wird.

Du darfst jetzt für jeden deiner genannten Artikel noch jeweils 3€ 
addieren, dann stimmt die Rechnung wieder.

Siehe:
 Beitrag "Re: China SUPER Bauteile-Schnäppchen Thread [V4]"
oder
 Beitrag "Wegfall der 150-Euro-Zollfreigrenze"
von Ulrich (Firma: DC3AX) (uprinz)


Lesenswert?

Loco M. schrieb:
> Du darfst jetzt für jeden deiner genannten Artikel noch jeweils 3€
> addieren, dann stimmt die Rechnung wieder.

Gut, also 6€ für einen einzelnes BlackPill, 13€ für den Viererpack.

Digikey: 14€ für ein DFRobot BlackPill, 16€ für das Nukleo, 26,25 für 
das AdaFruit BlackPill. Dazu kommen noch die Landesübliche Steuer und 
Mindermengenzuschlag für Bestellungen unter 60USD.
BerryBase will 32€ für ein BlackPill, Eckstein führt ihn nicht.

Solange die Elektronikbranche weiter aktiv ihre einstiegswilligen 
Jung-Kunden vergrault, bleiben eBay, Amazon-Shops und AliExpress die 
besten Quellen für "Ich möchte mal was probieren, ohne gleich Pleite zu 
sein, wenn's nicht klappt" Hardware.
von Norbert (der_norbert)


Lesenswert?

Ulrich schrieb:
> Solange die Elektronikbranche weiter aktiv ihre einstiegswilligen
> Jung-Kunden vergrault,

Vor ein paar Jahren konnte man in jedem blauen C Laden für'n Fünfer 
einen PICO mitnehmen. Bei Berrybase (und ganz sicher vielen anderen) 
immer noch.
Genauer gesagt, einen PICO für 4,10€ und einen PICO2 für 5,50€.
Bei Versand halt plus überschaubare 4,95€ Versandkosten.
Ich denke, das sind durchaus überschaubare Einstiegskosten.
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Rbx schrieb:
> Oder die Flötentöne als Samples vorgeben,

Bei der Auwahl aber unbedingt sorfältig bei der Melodiewahl vorgehen. 
Also kein französisches Lied verwenden, das mit l'amour anfängt.

Die Melodie darf auch nicht zu schwer sein, sonst flötest Du vergeblich, 
bis Du als Nachtlärmrabauke abgeholt wirst.

Das sind alles Punkte einer Risikobetrachtung, weshalb es das nicht von 
der Stange zu kaufen gibt.
von Ulrich (Firma: DC3AX) (uprinz)


Lesenswert?

Oh Mann! Da bin ich aber froh, dass man die Raspberry Pi Pico und 
Raspberry Pi Pico 2 nicht nur noch mit 0 und 2 abkürzt! Ich habe nicht 
verstanden, was Du mit PICO und PICO2 meinst! In meiner Karriere sind 
alle 3 Buchstaben Abkürzungen bereits mindestens 3-fach belegt, und alle 
4-buchstabigen bereits doppelt!

Klar gehen die RPi Picos auch! Der Pico hat einen etwas verrauschten 
ADC, der Pico 2 liegt da gleichauf mit dem STM32F4. Bei der Verwendung 
von 12-bit ADCs reichen Integer-Berechnungen, also tun es alle 
vorgeschlagenen SoC.
Vorteil von STM32F4 und PCO2 (;P) sind deren DSP, so könnte man die 
Mathematik effizienter laufen lassen was aber nur bei Batteriebetrieb 
etwas bringen würde.

Ich habe mit FFT schon viel aber mit Goertzel noch nie etwas gemacht.

Bedenken sollte man, dass echte Musikinstrumente eingesetzt werden 
sollen, der TO nannte eine Flöte. Also bekommt man es mit vielen 
Oberwellen zu tun, denn sie definieren die Klangfarbe des Instruments.

Dort kann eine FFT besser funktionieren als Goertzel, da letzterer ggf 
den falschen Peak findet. Für FFT gibt es dann noch die Möglichkeit des 
Harmonic Product Spectrum (HPS) die das Oberwellenproblem elegant lösen 
könnte, wenn harmonische Oberwellen dominieren.

In meiner Vorstellung muss man gewünschte Ergebnis bei Goertzel vorab 
ausrechnen und vorgeben. Bei der FFT hat man den Vorteil, dass man sich 
die erkannten Werte einfach ausgeben lassen kann, bevor man sie dann als 
Vergleichswerte vorgibt. Theoretisch kann man dem Schloss dann auf 
Knopfdruck immer wieder andere Tonfolgen vorspielen, um den Code zu 
ändern.
von Norbert (der_norbert)


Angehängte Dateien:

Lesenswert?

Ulrich schrieb:
> Vorteil von STM32F4 und PCO2 (;P) sind deren DSP, so könnte man die
> Mathematik effizienter laufen lassen

Hatte gestern noch einmal nachgesehen, auf einem ›Raspberry Pi Pico 
board based on the Raspberry Pi RP2040 microcontroller chip‹ kann man 
den ℕ-Goertzel mit acht Frequenzen tatsächlich alle 3½ms (MicroPython) 
laufen lassen *¹. Ich hatte zuvor fälschlicherweise 20ms angegeben.
Nützte man einen ℝ-Goertzel, dann geringfügig länger (als die 3½ms).

Im log (enthält ANSI-Farben, mit less -R anschauen) kann man einen Lauf 
mit sehr niedriger Amplitude plus Rauschen plus variablen 
Frequenzabweichungen sehen. Resultate (Erkennung) im Bereich 0…999, 
>=900 grün, >=800 magenta, sonst schwarz.

Und um andere Frequenzen zu detektieren berechnet man nur kurz die 
Breiten der bins und die acht Koeffizienten (Mikrosekunden-Kram)

*1) Sampling time für je einen Block beträgt 25,65ms und läuft ohne 
Unterbrechungen im Hintergrund.
: Bearbeitet durch User
von Walter S. (avatar)


Lesenswert?

Ulrich schrieb:
> Blackpill Aliexpress ca 3,50€ für ein einzelnes exemplar

das war vielleicht vor 2 Wochen noch so, jetzt 6,50
von Rainer W. (rawi)


Lesenswert?

Walter S. schrieb:
> das war vielleicht vor 2 Wochen noch so, jetzt 6,50

Du wirst dran sterben.

Oder du wartest, bis die neue digitale Plattform zur Abwicklung und 
Kontrolle der Einfuhr nach jetzigem Plan im 1. Juli 2028 verfügbar ist. 
Die 3 € Pauschale als ist nur eine Verzweifelungstat, um der 
Kleinpaketflut Herr zu werden, weil die Plattform noch nicht so weit 
ist. Gut (?) Ding will Weile haben.
Ob von den 3 €/Warengruppe wohl zusätzliches Personal eingestellt wird? 
Oder dauert so eine Einstellung auch wieder so lange, dass bis dahin die 
neue Plattform verfügbar ist?
: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.