nuttx/Documentation/platforms/xtensa/esp32/boards/esp32-audio-kit/index.rst
Alan Carvalho de Assis b87eb7c82f esp32: Add Ai-Thinker ESP32 Audio Kit board
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.
2023-03-28 20:58:36 +03:00

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