Hi allerseits, ich zerbreche mir nun schon einige Tage den Kopf wie ich ein Projekt realisieren kann, aber leider bin ich nicht so fit bei der Elektronikentwicklung und hoffe nun, dass ihr mir vielleicht den ein oder anderen Tipp geben könnt. Oder auch einen ganz anderen Lösungsansatz. Und zwar geht es um folgendes: Ich möchte ein vorhandenes Projekt erweitern, wo als Microcontroller ein ESP-12 Modulboard (NodeMCU/ Arduino IDE) eingesetzt wird. Es soll eine Sensoreinheit / Platine entworfen werden, die mit Hilfe eines 4-poligen Kabels mit der Hauptplatine verbunden ist und von dort mit Strom versorgt wird. Also stehen für die Datenübertragung nur 2 Leitungen zur Verfügung - Länge maximal 3 Meter. Die Sensoreinheit soll einmal pro Stunde Luftfeuchtigkeit, Temperatur und Luftdruck messen und zum ESP-12 Modul übertragen und zusätzlich noch 1 Minute lang eine Audioaufnahme machen (Mikrofon, Verstärker, A/D Wandler) und ebenfalls ans ESP-Modul senden. Dort soll es als wav zwischengespeichert werden. Ich habe jetzt schon ziemlich lange herumgedacht, aber da ich schon ewig nichts mehr entwickelt habe (hab zwar eine Elektronikausbildung, aber war die letzten 10 Jahre nur Programmierer), komme ich einfach nicht weiter. Ich würde mich sehr über Anregungen freuen, wie ihr so eine Aufgabenstellung lösen würdet - auch sehr gerne ohne Bezug auf meinen nachfolgenden Lösungsansatz. Das Hauptproblem für mich ist die Übertragung der Audioaufnahmen bzw. auch die richtige Aufnahme. Ich suche nach einer guten Lösung für das Problem, also muss es überhaupt nicht so gemacht werden wie ich es mir bis jetzt vorgestellt habe. Aktuell habe ich es so probiert: Die 3 Sensordaten (Temp, Humidity und Luftdruck) habe ich einfach via I2C-Bus an mein ESP12-Modul übertragen, auch wenn die Kabellänge für I2C Bus sehr lange ist - aber ich habs probiert und bin mit den Messwerten sehr zufrieden. Aber bei der Audioübertragung hänge ich leider. Mein letzter Plan war es, mittels Mikrofon + Verstärker (fertiges Board mit kleiner Schaltung) und einem PIC12f1840 als A/D Konverter und I2C Slave die Daten auch über den I2C Bus zu streamen. Nach langem tüfteln habe ich es zwar geschafft einen einzelnen Wert vom A/D Konverter via I2C übertragen, aber um saubere Audioaufnahmen zu bekommen, muss ich das ganze ja in einem sauberen Takt aufnehmen und streamen.. da bin ich dann ausgestiegen. Ich weiß nicht wie ich das anstellen soll. Ich habe im Moment einfach beim Eintreffen der Datenanforderung vom I2C Master einen A/D Wert ausgelesen und zurückgeschickt. Aber wenn ich immer auf den Interrupt vom I2C Bus warte und dann einen Wert auslese und schicke, dann passt ja meine Taktrate für die Audioaufnahme nicht - oder kann ich das irgendwie umgehen? Ich war jetzt am überlegen ob ich bei meinem Sensorboard einen kleinen Speicher dazubauen soll, damit ich zuerst eine Minute Audiodaten aufnehme und dann alles auf einmal via I2C streame. Der PIC hat ja zu wenig Speicher für eine Minute raw Audio und vermutlich ist er auch gar nicht ideal für diesen Einsatz oder? Aber ich möchte eine möglichst günstige Variante, weil wenn ich das schaffe eine größere Stückzahl gefertigt werden soll. Bevor ich jetzt weiter viele Stunden reinstecke und dann bemerke, dass es mit dieser Variante ohnehin nicht vernünftig funktionieren kann, wollte ich nun zuerst mal hier fragen wie ihr soetwas lösen würdet. Bin über jeden Input froh! Gibt es irgendeine Möglichkeit die Sensordaten wie gehabt via I2C zu übertragen und dann irgendwie direkt die Audiodaten vom Verstärker bis zur Hauptplatine (2 Meter Kabel dazwischen - 2 polig) zu senden und dort einen extra A/D-Konverter zu speisen oder so? Wie man merkt kenne ich mich wirklich nicht mehr so gut aus - könnte sein dass es auch eine ganz einfache Lösung gibt, aber mir fällt nichts mehr ein. Vielen Dank, ein verzweifelter Hobbybastler
>damit ich zuerst eine Minute Audiodaten aufnehme
Jetzt denkst du mal kräftig nach und überlegst
wie viel Speicher du für eine angemessene Samplerate
für eine Minute Audiodaten benötigst. 8kHz sollten
für ein Mikrofon reichen.
Also das Audio Aufnehmen ist so eine Sache. Schau mal hier: https://github.com/TMRh20/TMRpcm/wiki/Advanced-Features Abschnitt: Recording Audio. Vielleicht kannst Du das auf den ESP übernehmen. Ich hab allerdings keine Ahnung ob das mit dem ESP8266 funktioniert. Das müsstest Du ausprobieren.
holger schrieb: >>damit ich zuerst eine Minute Audiodaten aufnehme > > Jetzt denkst du mal kräftig nach und überlegst > wie viel Speicher du für eine angemessene Samplerate > für eine Minute Audiodaten benötigst. 8kHz sollten > für ein Mikrofon reichen. 16 bit, 8 Khz, Mono ergibt ~936 Kbyte oder hab ich da was falsch gerechnet? Oder was meinst du? @Florian: danke, schau ich mir gleich an
Peter M. schrieb: > 16 bit, 8 Khz, Mono wer braucht 16 bit bei 8kHz mono? zu MP3 ginge ja auch noch und das sollte doch locker über Tx und Rx oder I2C gehen.
Joachim B. schrieb: > Peter M. schrieb: >> 16 bit, 8 Khz, Mono > > wer braucht 16 bit bei 8kHz mono? > > zu MP3 ginge ja auch noch und das sollte doch locker über Tx und Rx oder > I2C gehen. Du willst einen ESP8266 dazu bringen MP3 zu encodieren??? Interessanter Gedanke, aber ich glaube nicht dass das funktionieren wird. Zumal man dafür erst einmal einen MP3 Encoder braucht, sei es Software oder Hardware. Software dürfte ziemlich problematisch werden. Ich denke dass da eine low quality WAV datei besser geeignet ist.
Hier gibt es einen funktionierenden Ansatz: https://www.hackster.io/middleca/sending-sound-over-the-internet-f097b4
Florian T. schrieb: > Du willst einen ESP8266 dazu bringen MP3 zu encodieren??? Interessanter > Gedanke, aber ich glaube nicht dass das funktionieren wird. weisst du denn was der TO meint in welche Richtung? Wo steht das der ESP encoden soll? vielleicht soll er nur decoden? Der TO hat zwar viel geschrieben aber nichts über die Signalrichungen verraten oder eine Skizze angefertigt wer was machen soll, geschweige denn ein Pflichtenheft erstellt wer wie mit wem! Oder ich bin zu unbedarft um es zu verstehen!
:
Bearbeitet durch User
Hi nochmal, danke für die vielen Beiträge bis jetzt. Ich hab zwar einen ganzen Roman geschrieben, aber hätte das wohl einfacher formulieren sollen. Nein, ich möchte kein MP3 codieren, ich möchte eine wav-Datei erstellen die ich anschließend mit FFT in seine Frequenzen aufteilen kann. Sobald ich eine wav-Datei habe kann ich die an meinen Server senden und dort analysieren. Mein Problem ist es, diese wav-Datei in ausreichender Qualität zu erzeugen, dass da noch Frequenzmuster erkannt werden (keine Wörter etc, sondern einfach nur in welchen Bereichen es Frequenzspitzen gibt und so). Ich weiß einfach nicht wie ich am besten den Engpass mit den 2 Datenleitungen übergehen kann. Nur Sensordaten (Temperatur, Luftfeuchtigkeit, Luftdruck) übertragen schaff ich, nur Audiodatenübertragen und speichern schaff ich auch. Aber ich weiß nicht welchen Ansatz ich wählen soll, wenn ich zuerst die Sensorwerte übertragen möchte und danach die Audiodaten. Wie gesagt, für euch Profis hört sich das vielleicht dumm an und es kann auch sein, dass es eine einfache Lösung gibt, aber ich bin ein Anfänger in diesem Bereich.
Florian T. schrieb: > Hier gibt es einen funktionierenden Ansatz: > https://www.hackster.io/middleca/sending-sound-over-the-internet-f097b4 soo, vielen Dank für diesen Link! Ist zwar nicht genau meins, aber es hat mich auf die Idee gebracht wie ich meine I2C Kommunikation ändern kann, damit ich das mit der richtigen Sample-Frequency hinbekommen kann. Ich hoffe damit funktioniert es. Werde nochmals posten ob es geklappt hat. Falls noch wer einen ganz anderen Lösungsvorschlag hat ist er gerne gesehen :) Vielen Dank!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.