Forum: Mikrocontroller und Digitale Elektronik Sensorplatine via 4-poligem Kabel / Audioaufnahme und mehr


von Peter M. (pmkoon)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>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.

von Florian T. (florian_t)


Lesenswert?

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.

von Peter M. (pmkoon)


Lesenswert?

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

von H.Joachim S. (crazyhorse)


Lesenswert?

RS485

von Joachim B. (jar)


Lesenswert?

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.

von Florian T. (florian_t)


Lesenswert?

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.

von Florian T. (florian_t)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

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
von Peter M. (pmkoon)


Lesenswert?

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.

von Peter M. (pmkoon)


Lesenswert?

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
Noch kein Account? Hier anmelden.