b87eb7c82f
This commit adds support to Ai-Thinker ESP32 Audio Kit V2.2 A247 board. There are two modules of this board. The old model uses AC101 audio and is not supported currently (AFAIK there is no AC101 driver) and the new version uses the ES8388 audio codec. This model is supported by this commit. Just read the documentation to test playing an audio file. TODO: Test audio recording.
156 lines
4.3 KiB
ReStructuredText
156 lines
4.3 KiB
ReStructuredText
===============
|
|
ESP32-AUDIO-KIT
|
|
===============
|
|
|
|
The `Ai-Thinker ESP32 Audio Kit <https://docs.ai-thinker.com/en/esp32-audio-kit>`_ is a development board for the ESP32 SoC from Espressif, based on Ai-Thinker ESP32-A1S audio module.
|
|
|
|
.. list-table::
|
|
:align: center
|
|
|
|
* - .. figure:: esp32-audio-kit.png
|
|
:align: center
|
|
|
|
Ai-Thinker ESP32 Audio Kit board
|
|
|
|
Features
|
|
========
|
|
|
|
- ESP32-A1S module
|
|
- Audio Earphones Output
|
|
- Audio LINEIN Input
|
|
- 2 Microphones in the board (stereo audio input)
|
|
- 8 Buttons in the boards (1 RST Button and 7 user buttons)
|
|
- MicroSD card slot
|
|
|
|
Some of the ESP32 I/O pins are broken out to the board's pin header.
|
|
|
|
Serial Console
|
|
==============
|
|
|
|
UART0 is, by default, the serial console. It connects to the on-board
|
|
Silabs CP2102 converter and is available on the USB connector (UART label).
|
|
|
|
It will show up as /dev/ttyUSB[n] where [n] normally is 0 if you don't have
|
|
another USB/Serial adapter connected in your computer.
|
|
|
|
Buttons and LEDs
|
|
================
|
|
|
|
Board Buttons
|
|
-------------
|
|
|
|
There are eight buttons labeled as RST, BOOT, KEY1..KEY6.
|
|
The RST button is not available to software.
|
|
|
|
The BOOT button is connected to IO0. On reset it is used as a strapping
|
|
pin to determine whether the chip boots normally or into the serial
|
|
bootloader. After reset, however, the BOOT button can be used for software
|
|
input.
|
|
|
|
Board LEDs
|
|
----------
|
|
|
|
There are several on-board LEDs for that indicate the presence of power
|
|
and USB activity.
|
|
|
|
I/O Mapping
|
|
===========
|
|
|
|
===== ========================= ==========
|
|
I/O Signal Notes
|
|
===== ========================= ==========
|
|
0 BOOT Button
|
|
2 DATA0 SDCard
|
|
4 DATA1 SDCard
|
|
5 KEY6 Button
|
|
12 DATA2 SDCard
|
|
13 KEY2 Button/DATA3 SDCard (DIP Switch)
|
|
14 CLK SDCard
|
|
15 CMD SDCard/JTAG MTDO (DIP Switch)
|
|
18 KEY5 Button
|
|
19 KEY3 Button/LED5
|
|
21 CTRL Audio AMP
|
|
22 LED4
|
|
23 KEY4 Button
|
|
34 SDCard Detect
|
|
36 KEY1 Button
|
|
===== ========================= ==========
|
|
|
|
Configurations
|
|
==============
|
|
|
|
All of the configurations presented below can be tested by running the following commands::
|
|
|
|
$ ./tools/configure.sh esp32-audio-kit:<config_name>
|
|
$ make flash ESPTOOL_PORT=/dev/ttyUSB0 -j
|
|
|
|
Where <config_name> is the name of board configuration you want to use, i.e.: nsh, buttons, wifi...
|
|
Then use a serial console terminal like ``minicom`` or ``picocom`` configured to 115200 8N1.
|
|
|
|
audio
|
|
-----
|
|
|
|
This configuration uses the I2S0 peripheral and the ES8388 audio codec
|
|
present on the ESP32-Audio-Kit board to play an audio file streamed over
|
|
HTTP while connected to a Wi-Fi network.
|
|
|
|
**Simple HTTP server**
|
|
|
|
Prepare a PCM-encoded (`.wav`) audio file with 16 bits/sample (sampled at
|
|
44.1kHz). This file must be placed into a folder in a computer that could
|
|
be accessed on the same Wi-Fi network the ESP32 will be connecting to.
|
|
|
|
Python provides a simple HTTP server. `cd` to the audio file folder on the
|
|
PC and run::
|
|
|
|
$ python3 -m http.server
|
|
|
|
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)
|
|
|
|
Look for your PC IP address and test playing the prepared audio on your
|
|
browser:
|
|
|
|
.. figure:: esp32-audio-config-file.png
|
|
:align: center
|
|
|
|
After successfully built and flashed, connect the board to the Wi-Fi network::
|
|
|
|
$ nsh> wapi psk wlan0 mypasswd 1
|
|
$ nsh> wapi essid wlan0 myssid 1
|
|
$ nsh> renew wlan0
|
|
|
|
Once connected, open NuttX's player and play the file according to its file
|
|
name and the IP address of the HTTP server (For example `tone.wav` and
|
|
`192.168.1.239:8000`, respectively)::
|
|
|
|
$ nsh> nxplayer
|
|
$ nxplayer> play http://192.168.1.239:8000/tone.wav
|
|
|
|
.. note::
|
|
The codec implementation on the LyraT board was validated using 16-bit,
|
|
44.1kHz WAV files. Other configurations might not work as expected.
|
|
|
|
nsh
|
|
---
|
|
|
|
Basic NuttShell configuration (console enabled in UART0, exposed via
|
|
USB connection by means of FT2232HL converter, at 115200 bps).
|
|
|
|
wifi
|
|
----
|
|
|
|
Enables Wi-Fi support. You can define your credentials this way::
|
|
|
|
$ make menuconfig
|
|
-> Application Configuration
|
|
-> Network Utilities
|
|
-> Network initialization (NETUTILS_NETINIT [=y])
|
|
-> WAPI Configuration
|
|
|
|
Or if you don't want to keep it saved in the firmware you can do it
|
|
at runtime::
|
|
|
|
nsh> wapi psk wlan0 mypasswd 3
|
|
nsh> wapi essid wlan0 myssid 1
|
|
nsh> renew wlan0
|