Looking at ESP32 I2S support
Fundstück
Exzellent – viel besser. Danke für den Fund! Bei MicroPython » Hardware API » I2S support findet sich die (experimentelle) generische Schnittstellenbeschreibung.
Historie
Hier die Entwicklungshistorie dieser Funktionalität für MicroPython auf ESP32:
- ESP32 I2S support · Issue #185 · micropython/micropython-esp32 · GitHub
- ESP32 support for I2S · Issue #4170 · micropython/micropython · GitHub
- https://github.com/micropython/micropython/pull/4471
Aktueller Stand
Example usage - I2S Master Receive - Adafruit I2S MEMS Microphone (SPH0645LM4H)
from machine import I2S
from machine import Pin
bck_pin = Pin(14) # Bit clock output
ws_pin = Pin(13) # Word clock output
sdin_pin = Pin(12) # Serial data input
audio_in = I2S(I2S.NUM0, # create I2S peripheral to read audio
bck=bck_pin, ws=ws_pin, sdin=sdin_pin, # sample data from an Adafruit I2S MEMS
standard=I2S.PHILIPS, mode=I2S.MASTER_RX, # microphone breakout board,
dataformat=I2S.B32, # based on SPH0645LM4H device
channelformat=I2S.RIGHT_LEFT,
samplerate=16000,
dmacount=16,dmalen=256)
samples = bytearray(2048) # bytearray to receive audio samples
num_bytes_read = audio_in.readinto(samples) # read audio samples from microphone
# note: blocks until sample array is full
# - see optional timeout argument
# to configure maximum blocking duration
Sieht recht anständig aus. So wie hier ersichtlich in der Python Domäne super kompakt herausgeführt – standing on the shoulders of… ![]()
Gedanken
Wenn wir das – aus der Perspektive von Bee Observer betrachtet – nach Pycom MicroPython portiert bekämen, könnten wir mehrere Fliegen mit einer Klapy… [1] [2] [3].
So langsam sollten wir wirklich irgendwo eine Liste dieser Art von Edelsteinen anlegen, die wir auf diese Weise portieren wollen würden, sobald wir irgendwann soweit sind. ↩︎
Natürlich sollte das Vanilla/Genuine MicroPython genauso auf Pycom Geräten laufen, nur fehlt dann die essentielle Softwareunterstützung für die meisten Funkperipheriegeräte – es bleibt dann vermutlich nur WiFi übrig. ↩︎
Umgekehrt kommen für solche Versuche und der folgenden Anwendung in der Praxis natürlich haufenweise generische ESP32 breakouts in Frage. Wir freuen uns über positive Nachrichten, wenn hier jemand unter uns entsprechende Anstrengungen unternehmen sollte, sich dem Thema zu nähern. Auch Schadensberichte à la “dies und jenes funktioniert nicht” nehmen wir hier gerne im Logbuch auf. ↩︎