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
|