***Question*** How can PicoW read MEMS digital microphone output? --- ***Answer*** Introduction *1. Overview.* We can connect the MEMS microphone output pin to a PicoW GPIO pin and read signal, into a list for later processing. --- *2. Simulation* For prototyping, we can simulate the microphone output signal as a GPIO output pin connected blinking LED, and use another GPIO input pin to read the blinking LED pin. --- *3. Trying Blink rates 1kHz, 2kHx, to simulate 1kHz, 2kHz tones* [![1k, 1k led blinking tones][1]][1] [![1k, 2k tones 2][2]][2] --- *4. / to continue, ...* --- ***References*** (1) [Adafruit PDM Microphone Breakout 1][3] (2) [Adafruit PDM Microphone Breakout 2][4] (3) [AliExpress Digital MP34DT01 Microphone Module Simple Pulse Density Modulation Output PDM Digital MEMS Microphone Module - HK$27][5] [(4) TaoBao MP34DT01 MEMS PDM Microphone - ¥25][6] [(5) 1000 Hz Test Tone - Sonic Electronix][7] --- ***Appendices*** Appendix A - MicroPython program blinking two LEDs simulating two MEMS digital microphone output signals # Pico W Blink Two LEDs - tlfong01 2023jan01hkt1941 # *** Modules *** import machine from machine import Pin, Timer # *** Configuration*** redLed = Pin(0, Pin.OUT) greenLed = Pin(1, Pin.OUT) redFreq = 2 greenFreq = 4 redTimer = Timer() greenTimer = Timer() # *** Callbacks *** def blinkRedLed(dummy): redLed.toggle() return def blinkGreenLed(dummy): greenLed.toggle() return # *** Main *** redTimer.init(freq = redFreq, mode = Timer.PERIODIC, callback = blinkRedLed) greenTimer.init(freq = greenFreq, mode = Timer.PERIODIC, callback = blinkGreenLed) # *** End of program *** --- *Appendix B - Blinking LEDs Video* [PicoW blinking two LEDS][8] --- *Appendix C - MEMS Mic, PicoW GPIO Eval Brd Setup* [![gpio eval brd][9]][9] # PicoW GPIO Input Testing v7.0 - tlfong01 2023jan02hkt1410 # *** 1.0 Modules *** import machine import utime from machine import Pin, Timer # *** 2.0 Configuration and Functions *** # 2.1 Blinking LED Configurations and Functions redFreq = 6 # Red LED blinking frequency greenFreq = 3 # Green LED blinking frequency redLed = Pin(0, Pin.OUT, value = 1) # Create Red LED object, init On greenLed = Pin(1, Pin.OUT, value = 1) # Create Green LED object, init On redTimer = Timer() # Red LED timer, callback blinkRedLed greenTimer = Timer() # Greed LED timer, callback blinkGreenLed # 2.2 Blinking LED Callbacks def blinkRedLed(dummy): redLed.toggle() return def blinkGreenLed(dummy): greenLed.toggle() return # *** 3.0 GPIO Input Configurations and Functions *** readGpioPin2 = Pin(2, Pin.IN, Pin.PULL_UP) # Create GPIO input pin object readGpioPin3 = Pin(3, Pin.IN, Pin.PULL_UP) # Create GPIO input pin object def readRedLed(): ledStatus = readGpioPin2() if ledStatus == 1: return "High" else: return "Low" def readGreenLed(): ledStatus = readGpioPin3() if ledStatus == 1: return "High" else: return "Low" def readPrintRedGreenLedStatus(): redLedStatus = readRedLed() greenLedStatus = readGreenLed() print('RedLedStatus =', redLedStatus) print('GreenLedStatus =', greenLedStatus) return ### *** 4.0 / to continue, ... *** # *** 9.0 Main *** # 9.1 Run Red/Green Timer for 2 seconds redTimer.init(freq = redFreq, mode = Timer.PERIODIC, callback = blinkRedLed) greenTimer.init(freq = greenFreq, mode = Timer.PERIODIC, callback = blinkGreenLed) utime.sleep(2) redTimer.deinit() greenTimer.deinit() # 9.2 Set/Read/Print Red/Green LED status redLed.on() greenLed.on() readPrintRedGreenLedStatus() # *** End of program *** --- [1]: https://i.sstatic.net/mofeV.jpg [2]: https://i.sstatic.net/W1qsp.jpg [3]: https://www.adafruit.com/product/4346 [4]: https://www.adafruit.com/product/2716?gclid=Cj0KCQiAtbqdBhDvARIsAGYnXBMlWo5Px8MPOsGz6mfOlcQTx8zKgi5kgOL-PCL5XbvoMZWBFNUa23UaAjYmEALw_wcB [5]: https://www.aliexpress.com/item/4001240664476.html?spm=a2g0o.productlist.main.11.391442abGc1Xty&algo_pvid=6a244fb2-b2ec-4056-9172-b6b7a664e1d8&algo_exp_id=6a244fb2-b2ec-4056-9172-b6b7a664e1d8-5&pdp_ext_f=%7B%22sku_id%22%3A%2210000015426511105%22%7D&pdp_npi=2%40dis%21HKD%2133.27%2126.32%21%21%21%21%21%40212248ba16725455499866162d0736%2110000015426511105%21sea&curPageLogUid=REzyejBWMWnE [6]: https://item.taobao.com/item.htm?_u=13thdsb1b52&id=626041686368 [7]: https://www.youtube.com/watch?v=TbPh0pmNjo8 [8]: https://youtu.be/SlbA8wIEvJY [9]: https://i.sstatic.net/GKznZ.jpg