Smart głośnik dla każdego ESP32

Masz MEMS SPM1423 z modulacją PDM?
i podpięty mniej więcej jak na schemaciku, to jest akurat M5Stack PDM Mini Unit, ale Echo z pewnością ma mikrofon podpięty tak samo

Nie rozumiem.
Może o prostu polecę standardowym tekstem - wrzuć YAMLa?

Mikrofon i yamla masz na samej górze postu. Nic nie zmieniałem tylko płytkę na deckitc v4 + parę linijek kodu które nie dotyczą samego audio i i2s. Przytoczę ci za to odpowiedź na ten problem z innego forum to może bardziej ci rozjaśni problem (bo mi generalnie nic nie mówi :smile:)

Do tego dokumentacja: Inter-IC Sound (I2S) - ESP32 - — ESP-IDF Programming Guide latest documentation

1 polubienie

Dlatego zamieściłem schemat - wejście SELECT decyduje o tym, czy mikrofon wysyła umowny kanał lewy czy prawy, dlatego to ważne, bo nie wiemy czy odbiornik będzie sobie szukał, ale pewnie nie a nie widzę opcji do konfiguracji tego, więc trzeba ściągnąć do masy. Jeśli jest do zasilania to wtedy mikrofon pracuje na drugim kanale, ten pin nie może być w powietrzu.

Druga kwestia to modulacja PDM, powinieneś mieć w sekcji mikrofonu to, a masz coś innego

    adc_type: external
    pdm: true

Jak to zadziała to masz ogromne piwo! :beer:

pytałem czy masz

ale wygrzebałem z 1 posta

konfiguracja którą wspomniałem jest dla SPM1423, nie wiem jaka ma być dla twojego mikrofonu, prawdopodobnie masz prawidłową, za to możesz pin wyboru kanału przełączyć w przeciwną pozycję…

1 polubienie

@szopen nakierowałeś mnie z tym żeby ukierunkować mu kanał i wychodzi na to że zadziałało :smiley: teraz część kodu odpowiadająca za audio wygląda tak:

  - id: i2s_mic
    i2s_lrclk_pin: GPIO22  #WS
    i2s_bclk_pin: GPIO21   #SCK
  - id: i2s_out
    i2s_lrclk_pin: GPIO32 #LRCLK
    i2s_bclk_pin: GPIO27  #BLCK

microphone:
  - platform: i2s_audio
    id: mikrofon
    adc_type: external 
    channel: right
    bits_per_sample: 32bit
    i2s_audio_id: i2s_mic 
    i2s_din_pin: GPIO4   #DIN,SDIN,SD,SDATA
    pdm: false
        
voice_assistant:
  id: va
  microphone: mikrofon
  use_wake_word: true
  noise_suppression_level: 2
  auto_gain: 31dBFS
  on_listening:
      - rtttl.play: 'two_short:d=4,o=5,b=100:16e6,16e6'



    
media_player:
  - platform: i2s_audio
    id: player
    name: ESP Media Player
    dac_type: external
    i2s_audio_id: i2s_out
    mode: mono
    i2s_dout_pin: GPIO2 #DIN,SDIN,SD,SDATA
    on_play:
      - logger.log: "playing"
      - switch.turn_off: use_wake_word
    on_pause:
      - logger.log: "paused"
      - switch.turn_on: use_wake_word
    on_idle:
      - logger.log: "idle"
      - switch.turn_on: use_wake_word

A ja wreszcie mogę kontynuować ciąg dalszy pojektu :saluting_face:

4 polubienia