309005360b
CI / platformio (pull_request) Failing after 4m52s
New IDF project targeting AI-Thinker ESP32-A1S Audio Kit (ESP32, ES8388
codec). Replaces the Arduino PLIP_FIRMWARE with a proper IDF component
structure aligned on box3_voice / scenario_mesh infrastructure.
Phases implemented and hardware-verified:
- A: ES8388 I2C init + I2S TX; 440 Hz test tone exits the speaker
- B: WiFi STA + httpd :80 (GET /status, POST /game/scenario, /game/file)
- C: ESP-NOW CMD receiver via shared scenario_mesh lib; op=play dispatched
to audio; screen/evt/led logged (no display on PLIP)
- D: Off-hook GPIO monitor (GPIO4=BOOT button stand-in); ring tone cadence;
POST /voice/hook to master on pickup/hangup (200 OK confirmed)
MAC (first observed): a0:b7:65:e7:f6:44
IP (DHCP): 192.168.0.138
Files:
plip_voice/CMakeLists.txt - project root; EXTRA_COMPONENT_DIRS=../lib/scenario_mesh
plip_voice/partitions.csv - 4MB OTA dual-bank + SPIFFS (matches PLIP_FIRMWARE)
plip_voice/sdkconfig.defaults - ESP32 target, 4MB flash DIO, ch=11 hint (no creds)
plip_voice/main/Kconfig.projbuild - PLIP_ menu (SSID/pwd/channel/master_url/hook_gpio)
plip_voice/main/board_config.h - A1S pin map (I2C 32/33, I2S 0/27/25/26/35, PA=21)
plip_voice/main/es8388.[ch] - ES8388 I2C register init sequence (legacy i2c driver)
plip_voice/main/audio.[ch] - I2S TX + async play queue + ring task
plip_voice/main/net.[ch] - WiFi STA + httpd (NVS creds with Kconfig fallback)
plip_voice/main/cmd_exec.[ch] - D5 CMD executor (play→audio; screen/evt/led→log)
plip_voice/main/hook_client.[ch] - POST /voice/hook via esp_http_client
plip_voice/main/phone.[ch] - Off-hook GPIO ISR + debounce + ring control
plip_voice/main/main.c - app_main boot sequence (all four phases)
Build: IDF 5.4.4, target esp32, clean.
Flash: /dev/cu.usbserial-0001, 4MB flash verified.
43 lines
1.6 KiB
C
43 lines
1.6 KiB
C
#pragma once
|
|
|
|
/*
|
|
* AI-Thinker ESP32-A1S Audio Kit V2.2 — Hardware Pin Configuration
|
|
* ES8388 codec (I2C control + I2S data), SD card (SPI), power amp.
|
|
* DIP switch: 1=OFF, 2=ON, 3=ON, 4=OFF, 5=OFF (SD active, KEY2 busy)
|
|
*/
|
|
|
|
/* ---------- I2C Bus (ES8388 control) ---------- */
|
|
#define PLIP_I2C_PORT I2C_NUM_0
|
|
#define PLIP_I2C_SCL 32
|
|
#define PLIP_I2C_SDA 33
|
|
#define PLIP_I2C_FREQ_HZ 400000
|
|
|
|
/* ---------- ES8388 Audio Codec (I2C address) ---------- */
|
|
#define PLIP_ES8388_ADDR 0x10 /* 7-bit: 0x10 with ADDR pin low */
|
|
|
|
/* ---------- I2S Audio Data ---------- */
|
|
#define PLIP_I2S_NUM I2S_NUM_0
|
|
#define PLIP_I2S_MCLK 0 /* GPIO0 — must be 0/1/3 on original ESP32 */
|
|
#define PLIP_I2S_BCLK 27
|
|
#define PLIP_I2S_WS 25 /* LRCK */
|
|
#define PLIP_I2S_DOUT 26 /* DAC → speaker */
|
|
#define PLIP_I2S_DIN 35 /* ADC ← mic (input-only) */
|
|
|
|
/* ---------- Power Amplifier ---------- */
|
|
#define PLIP_PA_ENABLE 21 /* Active HIGH, drives NS4150 amp */
|
|
|
|
/* ---------- SD Card (SPI / HSPI) ---------- */
|
|
#define PLIP_SD_CS 13
|
|
#define PLIP_SD_MOSI 15
|
|
#define PLIP_SD_MISO 2
|
|
#define PLIP_SD_SCK 14
|
|
#define PLIP_SD_MOUNT "/sdcard"
|
|
|
|
/* ---------- Audio Parameters ---------- */
|
|
#define PLIP_SAMPLE_RATE 16000
|
|
#define PLIP_BITS_PER_SAMPLE 16
|
|
#define PLIP_CHANNELS 2 /* ES8388 I2S always stereo; output averaged */
|
|
|
|
/* ---------- Off-hook GPIO (dev kit uses BOOT/KEY1 GPIO4 as stand-in) ---------- */
|
|
/* Actual value comes from CONFIG_PLIP_HOOK_GPIO (Kconfig) */
|