Playing I2s Audio On The Omega2

Made by Pavel Metrokhin

About the project

Now, you can listen to your favorite local and internet tunes using your Omega2!

Project info

Difficulty:

Estimated time:

1 hour

Published:

10th April 2018

Items used in this project


Hardware components

OM-O2P On-Modules - SOM Omega2+ Module x 1
DEV-14439 SparkFun Accessories Expansion Dock for Onion Omega x 1
Adafruit MAX98367A I2S Amp x 1
AS03104MR-N50-R Speakers & Transducers 3W 4 OHM 81DB 300HZ N50 Mini Speaker x 1
MFR-25FTF52-100K Through Hole 1/4W 100 kOhm 1% x 1
920-0181-01 Jumper Wires Qty. 100 5" BLK FEM Jumpers x 1

Software app and online services

Onion Firmware b178

Story


Onion Omega2 very latest firmware, b177, adds I2S support to the Omega. Let’s go ahead and upgrade our OS. Please note, the upgrading process has to be done via either SSH or a Serial connection. Note that it will not work on the Terminal app on the Onion Console.

From the command line issue the following command:

oupgrade --latest 

Make sure to note that this is the latest release, and not the stable release.As such, proceed with caution!

Connecting to the Amp

Let’s wire everything up! We’ll need the following ingredients:

  • 2.5W Speaker
  • Omega2/2+
  • Onion Dock with the Expansion Header (Expansion Dock, Arduino Dock R2, Power Dock 2)
  • 7 Male-to-Male Jumper Wires
  • 100K Ohm Resistor

We’ll be connecting things together:

  • Connect the speaker to the I2S Amp (Positive to + terminal and Negative to – terminal)
  • Omega’s 5V and GND to Vin and GND to I2S Amp
  • Omega’s GPIO2 (I2S WS) to LRC (Left-right clock)
  • WS stands for Word Select, it tells the amp which channel is active (left or right), hence it’s also sometimes called Left-Right Clock
  • Omega GPIO 3 (I2S CLK) to BCLK (bit clock)
  • Omega GPIO 1 (I2S SDO) to DIN
  • SDO – serial data out from Omega goes to Data In on the amp
  • Connect Gain and Vin on the I2S amp with 100kΩ Resistor
  • This resistor is used to decrease the amp gain, greatly improving the sound quality on our little speaker

Your setup should look something like this:

Installing Software

After your Omega is done updating, we’ll need to install some software to help us play music files:

opkg updateopkg install alsa-utils mpg123 

Enabling the I2S Pins

Next, we’ll need to change the mux settings for GPIO 0-3 to switch them from regular GPIOs to I2S pins. To do so, run the following command:

omega2-ctrl gpiomux set i2s i2s 

And you’ll see the following output:

set gpiomux i2s -> i2s 

Playing Audio Files

Now, we are all set and ready to play some tunes using your Omega2! To play a WAV file we’ll use the following command:

aplay <WAV FILE> 

To play an MP3 file, issue the following command:

mpg3 <MP3 FILE> 

If you want to stop playback before the file is done, hit Ctrl+C.

For example, if you want to listen to an MP3 file, transfer it to your Omega and use mpg123 to play it:

root@Omega-F159:~# mpg123 glass-onion.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.22.3; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes

Playing MPEG stream 1 of 1: glass-onion.mp3 ...

MPEG 1.0 layer III, 160 kbit/s, 44100 Hz stereo
Title: Glass Onion Artist: The Beatles

Album: White Album CD 1
Year: 1968 Genre: Rock & Roll 

Playing Internet Radio

You can also use mpg123 to stream internet radio! You will need the .m3u URL of the radio station that you want to play. For example, you can download the .m3ufile from any internet radio web-site. We downloaded the file from here. Now, open the file using any text editor (e. g. notepad, vi), copy the link, and run the mpg123 command with the URL as the argument:

root@Omega-F159:~# mpg123 http://uk5.internet-radio.com:8251/
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
       version 1.22.3; written and copyright by Michael Hipp and others
       free software (LGPL) without any warranty but with best wishes

Directory: http://uk5.internet-radio.com:8251/
Playing MPEG stream 1 of 1:  ...
ICY-NAME: Classic Rock HD Plus
ICY-URL: http://classicrockflorida.com

MPEG 1.0 layer III, 192 kbit/s, 44100 Hz joint-stereo

ICY-META: StreamTitle='Santana - Oye Como Va';

And here you have it! There is a video tutorial also available for you!



Schematics


I2S Amp + Speaker + Omega2

Fritzing Diagrarm: I2S Amp + Speaker + Omega2

Leave your feedback...