Pico-Audio
| ||
Overview
Provide Pico C demo.
Introduction
The Pico-Audio is an audio expansion module designed for Raspberry Pi Pico, which incorporates PCM5101A low power stereo decoder, and uses I2S bus for transmitting the audio signals. It supports a wide range of audio sampling rates, and allows headphone and speaker signal output at the same time.
Rev2.1 version:
This product is an audio module designed based on Pico. It adopts a CS4344 low-power stereo decoder, an I2S interface to transmit audio, and supports a wide range of audio sampling frequencies. It also can be output by headphones and speakers at the same time.
Features
- Support audio sampling frequency of 8~384,000Hz.
- Using 3-wire I2S, effectively reducing EMI.
- With undervoltage protection and a double mute system, it can automatically mute (stop output) when there is a clock error or power failure.
- Provides 20dB of out-of-band noise.
- Onboard standard 3.5mm headphone and 4-wire speaker output interface, support audio output.
- Provides Pico sound card, driver-free driver, compatible with Windows, Linux and other systems.
- Pico audio player provided.
Rev2.1:
- Support audio sampling frequency of 2~200KHz.
- The chip has a built-in PLL, and the audio clock pin can obtain the main clock screen and automatically reduce the frequency.
- Onboard standard 3.5mm headphone and 4-wire speaker output interface, support audio output.
- Provides Pico sound card driver-free program, compatible with Windows, Linux and other systems.
- Pico audio player provided.
Specification
- Operating voltage: 5V
- Logic voltage: 3.3V
- Audio Decoder: PCM5101A
- DAC SNR: 106 dB
- Logic level: 3.3V
- Audio bus: I2S
- Speaker driving: 2.6W/channel (4Ω BTL)
- Earphone driving: 40W per channel (16@Ω 3.3V)
Rec2.1
- Operating voltage: 5V
- Logic voltage: 3.3V
- Audio Decoder: CS4344
- DAC SNR: 105 dB
- Logic level: 3.3V
- Audio bus: I2S
- Speaker driving: 2.6W/channel (4Ω BTL)
- Earphone driving: 40W per channel (16@Ω 3.3V)
Hardware Resource
Initial Version
L+ and L- correspond to the positive and negative poles of the left speaker respectively; R+ and R- correspond to the positive and negative poles of the right speaker respectively.
Pin Function | Pico Pins (BCM) | Description |
VSYS | VSYS | Power supply (5V power input) |
3V3(OUT) | 3V3(OUT) | Logic Power (3.3V Power Input) |
GND | GND | Power Ground |
DIN | GPIO26 | Audio data input |
BCk | GPIO27 | Audio data bit clock input |
LRCK | GPIO28 | Audio data word clock input |
Rev2.1 Version
L+ and L- correspond to the positive and negative poles of the left speaker respectively; R+ and R- correspond to the positive and negative poles of the right speaker respectively.
Function Pin | Pico Pin(BCM) | Description |
VSYS | VSYS | Power supply (5V) |
GND | GND | Ground |
DIN | GPIO22 | Audio data input |
MCLK | GPIO26 | Chip main clock input |
LRCK | GPIO27 | Audio data word clock input |
SCLK | GPIO28 | Audio data bit clock input |
I2S
The most important thing to note about the I2S protocol is that it takes the second clock after the change of the sampling pulse as the first bit of data, and the first clock after the change of the following sampling pulse as the last bit of data.
LRCK: Audio data word clock input, when it is low level for the left channel data acquisition when it is a high level for the right channel data acquisition.
BCK: Audio data word clock input, when it produces a rising edge jump to collect data, the frequency must be 32 or 48 or 64 times the frequency of LRCK.
DATA: Audio data input, note that the data is signed data, data transmission can choose 16-bit, 24-bit, 32-bit data, high in the front, low in the back.
Get Started with Pico
Hardware Connection
Please take care of the direction when connecting the board to Pico/Pico2 according to the USB port.
You can also wire it according to the table:
PCM5101A | Pico/Pico2 | Description |
VSYS | VSYS | Power input (5V) |
3V3(OUT) | 3V3(OUT) | Logic level (3.3V) |
GND | GND | Ground |
DIN | GPIO26 | Audio data input |
BCk | GPIO27 | Audio data bit clock input |
LRCK | GPIO28 | Audio data word clock input |
Pico-Audio Rev2.1 | Pico/Pico2 | Description |
VSYS | VSYS | Power supply (5V) |
GND | GND | Ground |
DIN | GPIO22 | Audio data input |
MCLK | GPIO26 | Chip main clock input |
LRCK | GPIO27 | Audio data word input |
SCLK | GPIO28 | Audio data bit input |
Download Examples
Open a terminal of Raspberry Pi and run the following commands:
sudo apt-get install p7zip-full cd ~ sudo wget https://files.waveshare.com/upload/5/5a/Pico_Audio.7z 7z x Pico_Audio.7z -o./Pico-Audio cd ~/Pico_Audio
Please use the following command for Rev2.1:
sudo apt-get install p7zip-full cd ~ sudo wget https://files.waveshare.com/upload/5/5a/Pico-Audio-V2.7z 7z x Pico-Audio-V2.7z -o./Pico-Audio-V2 cd ~/Pico-Audio-V2
There are two folders in the Pico_Audio file, the audio output program is stored in the Pico_Audio folder, and the uf2 file of the sound card is stored in the usb_sound_card folder, which can be copied directly into Pico/Pico2.
cp usb_sound_card.uf2 /media/pi/RPI-RP2/
Run Examples
C Codes
- The following tutorials are operated on the Raspberry Pi, but due to the multi-platform and portable characteristics of CMake, it can be compiled successfully on the PC, but the operation is slightly different, and you need to judge by yourself.
- Go into the Pico-Audio directory and build the codes.
cd ~/Pico_Audio/Pico-Audio/
Please use the following command for Rev2.1.
cd ~/Pico-Audio-V2/Pico-Audio/
Create a "build" folder and enter, add the path of SDK:
../../pico-sdk is the default path of SDK, you need to modify it if the actual path is different in your pi.
We have created the build folder in the example, you can just enter it.
cd build export PICO_SDK_PATH=../../pico-sdk
Run cmake to generate Makefile file:
#Pico cmake -DPICO_BOARD=pico -DPICO_PLATFORM=rp2040 .. #Pico2 cmake -DPICO_BOARD=pico2 -DPICO_PLATFORM=rp2350 ..
Run make command to build the codes:
make -j9
After building, the uf2 file is generated.
Press and hold the key on the Pico board to connect the Pico/Pico2 to the USB port of the computer through the Micro USB cable, then release the key. After plugging in, the computer will automatically recognize a removable disk (RPI-RP2). Copy the audio_firmware.uf2 file in the build folder to the removable disk (RPI-RP2) recognized.
#Pico cp audio_firmware.uf2 /media/pi/RPI-RP2/ #Pico2 cp audio_firmware.uf2 /media/pi/RP
Resource
Documents
Demo Codes
Development Software
- Zimo221.7z
- Image2Lcd.7z
- Font Library Tutorial
- Image Extraction Tutorial
- Thonny Python IDE (Windows V3.3.3)
Pico Quick Start
Firmware Download
Text Tutorial
Introduction
MicroPython Series
- 【MicroPython】 machine.Pin Function
- 【MicroPython】 machine.PWM Function
- 【MicroPython】 machine.ADC Function
- 【MicroPython】 machine.UART Function
- 【MicroPython】 machine.I2C Function
- 【MicroPython】 machine.SPI Function
- 【MicroPython】 rp2.StateMachine
C/C++ Series
For C/C++, it is recommended to use Pico VS Code for development. This is a Microsoft Visual Studio Code extension designed to make it easier for you to create, develop, and debug projects for the Raspberry Pi Pico series development board. Whether you are a beginner or an experienced professional, this tool can help you confidently and easily develop Pico. Below we will introduce how to install and use the extension.
- Official website tutorial: https://www.raspberrypi.com/news/pico-vscode-extension/.
- This tutorial is applicable to Raspberry Pi Pico, Pico2, and our company's RP2040 and RP2350 series development boards.
- The development environment defaults to Windows as an example. For other environments, please refer to the official website tutorial for installation.
Arduino IDE Series
Install Arduino IDE
-
Download the Arduino IDE installation package from Arduino website.
-
Just click on "JUST DOWNLOAD".
-
Click to install after downloading.
-
Note: You will be prompted to install the driver during the installation process, we can click Install.
Install Arduino-Pico Core on Arduino IDE
-
Open Arduino IDE, click the File on the left corner and choose "Preferences".
-
Add the following link in "Additional boards manager URLs", then click OK.
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
Note: If you already have the ESP32 board URL, you can separate the URLs with commas like this:https://dl.espressif.com/dl/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
-
Click on Tools -> Board -> Board Manager -> Search for pico, it shows installed since my computer has already installed it.
Upload Demo At the First Time
-
Press and hold the BOOTSET button on the Pico board, connect the Pico to the USB port of the computer via the Micro USB cable, and release the button when the computer recognizes a removable hard drive (RPI-RP2).
- Download the demo from #Resource, open the D1-LED.ino under arduino\PWM\D1-LED path.
-
Click Tools -> Port, remember the existing COM, do not need to click this COM (different computers show different COM, remember the existing COM on your computer).
-
Connect the driver board to the computer with a USB cable, then click Tools -> Ports, select uf2 Board for the first connection, and after the upload is complete, connecting again will result in an additional COM port.
-
Click Tools -> Board -> Raspberry Pi Pico/RP2040 -> Raspberry Pi Pico.
-
After setting, click the right arrow to upload.
- If you encounter problems during the period, you need to reinstall or replace the Arduino IDE version, uninstall the Arduino IDE clean, after uninstalling the software you need to manually delete all the contents of the folder C:\Users\[name]\AppData\Local\Arduino15 (you need to show the hidden files in order to see it) and then reinstall.
Open Source Demo
- MicroPython Demo (GitHub)
- MicroPython Firmware/Blink Demo (C)
- Official Raspberry Pi C/C++ Demo
- Official Raspberry Pi MicroPython Demo
- Arduino Official C/C++ Demo
FAQ
Due to the memory limitation of Pico, it is not possible to store wav or mp3 files. So we don't provide a py demo that can play WAV or mp3, we suggest using our C demo, and you can find it in Demo code.
{{{5}}}
Support
Technical Support
If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 PM GMT+8 (Monday to Friday)