> ## Documentation Index
> Fetch the complete documentation index at: https://learn.pcbcupid.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Interface a single-channel ICS43434 I2S MEMS microphone with a Glyph ESP32 development board to capture digital audio for voice and sound projects.

# Single-Channel I2S Microphone

export const ShopHeader = ({title, url}) => <div style={{
  display: 'flex',
  justifyContent: 'flex-end',
  alignItems: 'center',
  width: '100%',
  marginBottom: '1rem',
  gap: '20px'
}}>
    <a href={url} target="_blank" rel="noopener noreferrer" style={{
  display: 'inline-flex',
  alignItems: 'center',
  backgroundColor: '#00b894',
  color: '#fff',
  padding: '8px 18px',
  borderRadius: '8px',
  textDecoration: 'none',
  fontSize: '0.95rem',
  fontWeight: 600,
  whiteSpace: 'nowrap',
  flexShrink: 0
}}>
      Shop now
    </a>
  </div>;

export const ImgGallery = ({images, modelUrl}) => {
  var [active, setActive] = useState(0);
  var [show3D, setShow3D] = useState(false);
  useEffect(function () {
    if (show3D || images.length <= 1) return;
    var t = setTimeout(function () {
      setActive(function (p) {
        return (p + 1) % images.length;
      });
    }, 3500);
    return function () {
      clearTimeout(t);
    };
  });
  var img = images[active];
  return <div style={{
    position: 'relative',
    background: 'linear-gradient(to bottom, #fff 0%, #fff 80%, #f8f8f8 100%)',
    borderRadius: '32px',
    border: '1px solid rgba(0,0,0,0.08)',
    overflow: 'hidden',
    marginTop: '0.75rem',
    marginBottom: '1.5rem'
  }}>
      <div style={{
    position: 'relative',
    height: '450px',
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    background: '#fff',
    padding: '1rem'
  }}>
        {show3D && modelUrl ? <div ref={function (el) {
    if (!el || el._mv) return;
    el._mv = true;
    var s = document.createElement('script');
    s.src = "https://ajax.googleapis.com/ajax/libs/model-viewer/4.2.0/model-viewer.min.js";
    s.type = "module";
    s.onload = function () {
      var mv = document.createElement('model-viewer');
      mv.setAttribute('src', modelUrl);
      mv.setAttribute('camera-controls', '');
      mv.setAttribute('auto-rotate', '');
      mv.style.width = "100%";
      mv.style.height = "100%";
      mv.style.backgroundColor = "#f8f8f8";
      el.innerHTML = "";
      el.appendChild(mv);
    };
    document.head.appendChild(s);
  }} style={{
    width: "100%",
    height: "100%"
  }} /> : <img src={img && img.url} alt={img && img.label} loading="lazy" style={{
    maxWidth: '100%',
    maxHeight: '100%',
    objectFit: 'contain',
    borderRadius: '8px'
  }} />}
      </div>
      <div style={{
    display: 'flex',
    justifyContent: 'center',
    gap: '12px',
    padding: '1rem',
    background: '#eee',
    borderTop: '1px solid rgba(0,0,0,0.08)'
  }}>
        {images.map(function (img, idx) {
    return <button key={img.id || idx} onClick={function () {
      setActive(idx);
      setShow3D(false);
    }} style={{
      padding: '0.6rem 1.5rem',
      borderRadius: '12px',
      border: !show3D && idx === active ? '1px solid #00b894' : '1px solid rgba(0,184,148,0.4)',
      background: !show3D && idx === active ? '#00b894' : '#fff',
      color: !show3D && idx === active ? '#fff' : '#000',
      cursor: 'pointer',
      fontSize: '0.75rem',
      fontWeight: 700,
      textTransform: 'uppercase',
      fontFamily: 'inherit'
    }}>
              {img.label}
            </button>;
  })}
        {modelUrl ? <button onClick={function () {
    setShow3D(true);
  }} style={{
    padding: '0.6rem 1.5rem',
    borderRadius: '12px',
    border: show3D ? '1px solid #00b894' : '1px solid rgba(0,184,148,0.4)',
    background: show3D ? '#00b894' : '#fff',
    color: show3D ? '#fff' : '#000',
    cursor: 'pointer',
    fontSize: '0.75rem',
    fontWeight: 700,
    textTransform: 'uppercase',
    fontFamily: 'inherit'
  }}>
            3D VIEW
          </button> : null}
      </div>
    </div>;
};

<ShopHeader title="1-Channel Microphone (ICS43434)" url="https://shop.pcbcupid.com/product/gs001/" />

<ImgGallery modelUrl="https://raw.githubusercontent.com/pcbcupid/pcbcupid-hardware-libraries/main/pcbcupid_3dmodels/glb/1Ch-MICROPHONE.glb" images={[{url: "https://files.pcbcupid.com/Documentation/Boards/g-sense/1ChMic/pcbcupid-single-channel-gesense.avif", label: "ILLUSTRATION VIEW", id: "illustration"}, {url: "https://files.pcbcupid.com/Documentation/Boards/g-sense/1ChMic/pcbcupid-1ch-microphone.avif", label: "BOARD VIEW", id: "board"}]} />

A **single-channel microphone** is a device designed to capture audio and output it as a single-channel signal (mono). This is the most common type of microphone used in applications like speech, music recording, or public addressing systems.

The **ICS-43434** digital I2S output bottom port microphone. The complete ICS-43434 solution consists of a MEMS sensor, signal conditioning, an analog-to-digital converter, decimation and antialiasing filters, power management, and an industry standard 24-bit I²S interface. The I²S interface allows the ICS-43434 to connect directly to digital processors, such as DSPs and microcontrollers, without the need for an audio codec in the system.

The ICS-43434 has multiple modes of operation: High Performance, Low Power (AlwaysOn) and Sleep. The ICS-43434 has high SNR and 120 db SPL AOP in all operational modes.

<Warning>
  **End of Life (EOL) Notice**: The **ICS43434** sensor has reached its End of Life. For more details and suggested replacements, please refer to the official [TDK InvenSense Product Page](https://invensense.tdk.com/en-us/products/ics-43434).
</Warning>

## Pin Configuration

* VDD: Power supply for the microphone (1.62V to 3.63V).
* GND: Ground connection.
* WS: Word Select (Frame Sync) input for I²S interface.
* SCK: Serial Clock input for I²S interface.
* SD: Serial Data output.
* L/R: Left/Right channel select. Determines whether the device outputs data on the left or right channel.

## Key Features

* Operating Voltage: 1.62V to 3.63V
* Current Consumption (Typical): 490 µA
* Sleep Current : 12uA
* Acoustic Overload Point: 120 dB SPL
* Signal-to-Noise Ratio (SNR): 65 dB(A)
* Frequency Response: 60 Hz to 20 kHz
* Sensitivity: -26 dBFS ±1 dB
* Interface: I²S (Integrated Interchip Sound)
* Output Format: 24-bit, two’s complement
* Channel Selection: Left/Right selectable via L/R pin
* Application Suitability: Optimized for voice capture and far-field audio

## Application

* Speech Recording: Captures clear voice signals for podcasts, interviews, or telecommunication.
* Music Recording: Records instruments or vocals in studios.
* Public Address Systems: Amplifies a speaker’s voice for large audiences.
* Broadcasting: Used in radio and TV stations for high-quality voice capture.

## Step 1: Hardware Required

1. Glyph Boards
2. Gsense 1CH Microphone

## Step 2: Circuit Diagram

![pcbcupid\_microsdcard](https://files.pcbcupid.com/Documentation/Boards/g-sense/1ChMic/pcbcupid_microphonech1.avif)

## Step 3: Code Setup

1. **Open Arduino IDE.**
2. **Make sure to install the "[Audio Tool](https://github.com/pschatzmann/arduino-audio-tools)" library**
3. **Copy and paste the following code into the Arduino IDE:**

```cpp theme={null}
#include "AudioTools.h"

AudioInfo info(44100, 1, 32);
I2SStream i2sStream; // Access I2S as stream
CsvOutput<int32_t> csvOutput(Serial);
StreamCopy copier(csvOutput, i2sStream); // copy i2sStream to csvOutput

// Arduino Setup
void setup(void) 
{
    Serial.begin(115200);
    AudioToolsLogger.begin(Serial, AudioToolsLogLevel::Info);
    
    auto cfg = i2sStream.defaultConfig(RX_MODE);
    cfg.copyFrom(info);
    cfg.i2s_format = I2S_STD_FORMAT; // or try with I2S_LSB_FORMAT
    cfg.pin_ws = 22;
    cfg.pin_bck = 20;
    cfg.pin_data_rx = 21; //SD Pin
    cfg.is_master = true; 
    cfg.use_apll = false;
    i2sStream.begin(cfg);

    // make sure that we have the correct channels set up
    csvOutput.begin(info);
}

// Arduino loop - copy data
void loop() 
{
    copier.copy();
}
```

## Step 4: Upload the Code

1. **Connect the Board**

* Connect your GLYPH board to your computer

2. **Select the Board and Port**

Do the following settings in your Arduino IDE,

* `Tools > Board > esp32 > Pcbcupid GLYPH C6`

<Warning>
  For the `Pcbcupid Glyph C3 ` to appear under `Tools > Board > esp32`, the esp32 board version installed in the Arduino IDE should be greater or equal to 3.1.0.
</Warning>

* `Tools > Port` and select the port connected to your GLYPH.
* `Tools > USB CDC on Boot >` ***Enabled***

<Warning>
  If `USB CDC on BOOT` not enabled, you won't be seeing any serial data on Arduino IDE.
</Warning>

3. **Upload the Code**

   * Click the upload button (➡️ icon) or use the shortcut `CRTL + U` in Arduino IDE to upload the code to the board.

## Step 4: Observe the output

The output can be visualized in the plotter of Arduino IDE, Please check the below image for reference

Output on Arduino IDE 1.x

<div style={{ textAlign: "center" }}>
  <img src="https://files.pcbcupid.com/Documentation/Boards/g-sense/1ChMic/pcbcupid-ics43434-1ch-microphone-oldIDE.avif" alt="PCBCUPID_arduino_IDE_1.x" />
</div>

Output on Arduino IDE 2.x

<div style={{ textAlign: "center" }}>
  <img src="https://files.pcbcupid.com/Documentation/Boards/g-sense/1ChMic/pcbcupid-ics43434-1ch-microphone.avif" alt="pcbcupid-arduino-ide-2.x" />
</div>
