Ich möchte mit einem ESP8266-12f ein Audiosignal samplen und per UDP senden. Kann der ESP8266-12f 8Khz mit 8Bit samplen oder ist das schon zu schnell? Ziel ist es meine Klingelanlage "Smart" zu machen und auch mit dem an der Ausenstation sprechen zu können. Das ganze soll per UDP ins Netzwerk und dann weiter per VoIP an SmartPhone/Telefon. Um klein anzufangen, und weil ich noch keine erfahrung mit dem samplen habe, wollte ich erst mal audio von meinem PC in den ADC des ESP geben und dass wieder per Netzwerk an mein PC übertragen um es dann mit ffmpeg o.ä. wieder in eine Audio format zu verwandeln und anzuhören. Aber zu erst die Theorie: Ist das mit dem ESP8266-12f überhaupt möglich?
Geht nicht, dafür ust er viel zu langsam. Der ADC wird auch intern von der WiFi Schnittstelle benutzt. Außerdem taugt er nicht für Audio, da er zu sehr auf die vom IC selbst erzeugten Störungen reagiert. Du bräuchtest einen externen ADC mit Puffer und SPI oder I2S Schnittstelle.
Steve van de Grens schrieb: > Du bräuchtest einen externen ADC mit Puffer und SPI oder I2S > Schnittstelle. Danke für den Hinweis. Erfahrung was ich da nehmen kann oder Empfehlung/erfahrung? Ich hänge auch nicht wirklich an dem ESP8266. Wenns alternativen gibt, die das "out-of-the-box" können. Gibt halt fertige Projekte (https://github.com/peteh/doorman, https://github.com/atc1441/TCSintercomArduino, https://github.com/Syralist/tcs-monitor), die ich eben um die Sprachkomponente erweitern möchte. Würde das mit einem MCP3201 funktionieren?
Marc S. schrieb: > Würde das mit einem MCP3201 funktionieren? Ja, aber der braucht Platz, du musst dich um ein Frontend kümmern, ... Nimm einen fertigen audio codec. Die gibt es schon auf kleiner Platine für wenig Geld. Du kannst sogar gleich ein digitales Mikrofon nehmen das dir I2S liefert.
Gustl B. schrieb: > Ja, aber der braucht Platz, du musst dich um ein Frontend kümmern, ... Was meinst du mit "platz"? Ziel war ja erst mal das Audio Signal auf einer potenteren Kiste im Netz zu haben. Dort kann ich ja alles mögliche damit machen. >Nimm einen fertigen audio codec. Die gibt es schon auf kleiner Platine >für wenig Geld. Was könnte ich da nehmen? Sollte das gleich was sein was Asterisk kann oder warum sollte ich da achten? Endziel ist wie gesagt die Anbindung via VoIP (an Asterisk). Daher wollte ich die ESP Implementierung so simpel wie möglich halten.
Marc S. schrieb: > Was meinst du mit "platz"? Das Bauteil ist nicht klein und auch nicht SMD. Und die brauchst Platz, Platz auf der Platine für alles was noch nicht in dem Bauteil drinnen ist. Frontend, Versorgung, ... Marc S. schrieb: > Was könnte ich da nehmen? Naja, was willst du denn? Wenn du I2S haben willst, dann nimm einen Baustein an den du ein Mikrofon anschließen kannst und der I2S liefert. Oder nehme direkt ein Mikrofon mit I2S Ausgang. Die Suche nach I2S audio codec liefert echt viele Ergebnisse. Billige kleine Platinen mit Mikrofoneingang, einzelne Chips, ... Das ist am Ende deine Entscheidung ob du Platinen bauen willst und dann einzelne Chips suchst oder ob du eine fertige Platine an den ESP verbindest.
Hab insgesamt keine guten Erfahrungen mit den ASC von ESP. Die von den STM MCs sind deutlich rauschärmer. Oft haben die mehr als genug parallel, womit man noch bessere Ergebnisse ausrechnen kann. Fing schon beim STM8 an.
Gustl B. schrieb: > Das Bauteil ist nicht klein und auch nicht SMD. Und die brauchst Platz, > Platz auf der Platine für alles was noch nicht in dem Bauteil drinnen > ist. Frontend, Versorgung, ... Platz ist nicht das Problem. Geht erst mal um den Lerneffekt. Was bitte ein "Frontend" für den MCP3201 ist musst du mir erklären. Kenne das nur aus der Software Entwicklung für Benutzeroberflächen, das wird hier wohl kaum gemeint sein.
Marc S. schrieb: > Was bitte ein "Frontend" für den MCP3201 ist musst du mir erklären. AD Wandler können Spannung nur in einem bestimmten Spannungsbereich erfassen. Oft von Masse bis zur Referenzspannung. Audio ist aber oft um die Masse herum symmetrisch, hat also auch mal negative Spannung. Im einfachsten Fall reicht eine AC Kopplung und dann ein DC Offset mit Spannungsteiler. Aber Audiosignale haben auch oft nur eine sehr geringe Amplitude. Das kann der ADC zwar erfassen, aber der Wertebereich wird nur zu einem kleinen Teil Ausgenutzt. Das kann man durch einen OPV vor dem ADC verstärken. Audio codec chips haben das oft schon eingebaut, das ist die rundum sorglos Lösung. Denn ein normaler ADC ist nicht speziell auf Audio optimiert. Weil der MCP3101 bis auf den ADC nicht viel eingebaut hat braucht der einiges zusätzlich. Im Datenblatt ist das auf Seite 22. Ein Audio Codec wie der SGTL5000XNLA3 hat schon viel eingebaut. Man hat einstellbare Verstärkung, man kann den Audiopfad schalten zwischen den Quellen und Senken, ... Ist dafür aber mehr Komplexität bei der Software. Es gibt auch reine Audio ADCs wie den CS5343 der hat eingebaute Filter und braucht weniger externe Beschaltung.
Das Audio Signal muss auch durch einen steilflankigen Tiefpass geschickt werden, bevor es mit einem ADC gesampelt werden kann.
Im Netz gibt es viele Beispiele mit dem INMP441 Mic. Das kann schon selbst I2S und kostet auf einer Platine fertig verlötet (wenn man es nicht selbst löten kann) wenige Euro. Bei Ali unter 2. Also wieso eigentlich nicht sowas?
Das mit dem DC Offeset/AC Kopplung war ich mir so semi bewusst. Lösen wollte ich das so: "Siehe Anhang: Bildschirmfoto_vom_2023-12-31_18-47-28.png". Würde es tatsächlich erst mal mit dem MCP3201 versuchen. Da es mit einem Audio Codec nach mehr Arbeit aussieht, und ja der Lerneffekt erst mal im Vordergrund steht.
Marc S. schrieb: > Lösen wollte ich das so Der Filter ist zu simpel. Vor allem in Kombination mit der niedrigen Abtastrate. Außerdem vermisse ich da eine Verstärkerstufe. Pufferspeicher hast du damit auch noch keinen zwischen ADC und ESP.
Gustl B. schrieb: > Kannst du so machen. Wird auch irgendwie funktionieren. Steve van de Grens schrieb: > Der Filter ist zu simpel. Vor allem in Kombination mit der niedrigen > Abtastrate. Außerdem vermisse ich da eine Verstärkerstufe. > Pufferspeicher hast du damit auch noch keinen zwischen ADC und ESP. Verbesserungsvorschläge/tips oder gar Lösungsansätze sind immer gerne gesehen :)
Marc S. schrieb: > Verbesserungsvorschläge/tips oder gar Lösungsansätze sind immer gerne > gesehen Nimm einen Audio Codec. Sowas bauen heutzutage nicht mal mehr Hobbyelektroniker freiwillig diskret auf.
Marc S. schrieb: > Würde das mit einem MCP3201 funktionieren? Das ist zwar ein ADC, aber der ist für Dich nicht wirklich geeignet. Da lernst Du auch nur, wie man es nicht macht. Das ganze soll ja im Telekommunikationsumfeld eingesetzt werden. Da ist der Standard 8kHz mit 8 Bit logarithmischer Kodierung (A-law, u-law). Das entspricht etwa 13 Bit bei linearer Codierung. Vorteil: geringere Datenmenge (Du hast ja nur 8 bit), aber ohne großen Qualitätsverlust (hört sich fürs Ohr wie 13 oder 14 Bit an, weil das Ohr ja auch nichtlinear ist). Für so etwas gibts passende Bausteine, die die Daten passend ausgeben und auch entgegennehmen. Du willst ja sprechen und hören, also brauchst Du einen Coder und einen Decoder, also einen Codec, und das idealerweise in einem Chip. Einer der das kann ist der hier z.B.: https://www.ti.com/product/TLV320AIC1103 oder https://www.ti.com/product/TLV320AIC1110 Der kann beispielsweise auch DTMF erzeugen. Dieser Codec hat zwei Schnittstellen, und Du musst beide gleichzeitig benutzen! Über I2C programmierst Du die internen Register des Codecs. Über I2S sendest und empfängst Du die Audiodaten, und zwar ununterprochen und kontinuierlich. Dafür gibts auch ein Evalboard: https://www.ti.com/lit/ug/slau092/slau092.pdf Ob der ESP8266 das alles so kann, weiß ich nicht. Wenn ich überhaupt zu irgendetwas in dieser Richtung greifen würde, dann eher zu ESP32, weil der deutlich mehr Wumms hat. Aber da wissen andere mehr. fchk
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.