Erschließung von I2S-Support und FFT für MicroPython auf Pycom/ESP32

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:

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 ofimage

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


  1. 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. ↩︎

  2. 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. ↩︎

  3. 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. ↩︎