ESP32 - Intro to I2S Episode 1, explanation with basic example outputting a square wave
HTML-код
- Опубликовано: 8 сен 2024
- The first in a series of videos explaining I2S and how to use with the ESP32. This opening episode keeps it very simple just using the included standard Espressiv libraries. There is a full explanation of how I2S is implemented followed by a run through of the demo software - which has been kept very simple.
A supporting web page is available with the demo code on at
www.xtronical.c...
Time-codes
Digital Audio explanation 2:47
I2S Explanation 5:12
Circuit 8:59
Selecting Mono/Left/Right channel on MAX98357A boards 12:19
Demo Software walkthrough 13:01
Affiliate links, for the items shown;
ESP32 : amzn.to/3kb02n8
ESP32 - Pack of three : amzn.to/2XfIRqH
I2S Decoder : MAX98357A : amzn.to/3fkHEnU (Only 2 left when I checked - sorry)
3W Speaker : amzn.to/2XeRP7i
Breadboards : amzn.to/30fWibZ
Wires : amzn.to/3k4PKoC
Pins and sockets : amzn.to/39O7a3K (I2S board doesn't some with them)
For other projects and ideas see :
Web : www.xtronical.com
If you'd like to support me via Patreon then the link is below and that would be just amazing. Patreons have access to all videos early plus can view all the posts on Patreon. There are other rewards if you're interested. If you just want to watch videos then that's also fantastic because without people viewing I wouldn't even do half of what I do. So thanks very much :)
Patreon at : / xtronical
If you don't like Patreon here are some other ways of saying thank you;
Kofi (Coffee) if you want to tip me for a brew! : ko-fi.com/xtro...
You can also visit my web site (link above) where you will find a paypal direct donation link.
Credits
Intro/Outro Music by Creo Music : www.creo-music.com
Some sounds from Freesound.org
Some images from OpenClipart-Vectors from Pixabay
Your clear explanation on i2s was long due to the world. Thank you.
Good job. Answered a lot of questions that I had after reading the esp32 documentation on I2S !
Nice and clear explanation about I2S interface. Thank you.
Nice work. I got answers to many questions about the use of I2S. This is the first time that I can successfully play different sounds on an external DAC from the BLE midi input on the ESP32.
fantastic explanation on i2s works, well done!
Thanks for the feedback
Thank you for the excellent explanation!
🙏🏻
Thanks for the feedback
this was wonderful, very glad i found it!
great vid. You have many great vids. How is this not a 100k channel?
best explanation!!
Hi sir ..i need I2s parallel how i can do it ?
Great! Tks.
Thank you!
Excellent video that answered a lot of questions for me.
I do have one remaining question though, in case you read this comment.
I am planning to hook up a Burr-Brown PCM69 to the ESP32.
The datasheet specifies a communication protocol that is exactly like I2s
However it specifies the requirement for an additional system clock to the DAC that needs to be synchronous with the falling edge of the Left/Right clock (called Word clock in the datasheet).
The sheet further mentions that the chip can operate from " any system clock up to 384Fs " .
Globally speaking; how would you go about implementing that from the ESP32?
Or should I use something like an external crystal for that clock signal?
Could I ask you why you masked Output value? You add two 16bit values (OuputValue is uint16_t) so I think that Value32But = (OutputValue
Ive been reserching i2s but the information is so clutterd with non standerd with standers or naming the pins otherly its just painful
Hi, thank you very much these precious informations. I'd have a quesiton. I want to use stereo headphone connected thru jack using two MAX98357. My question is how do I connect the two MAX negative output to jack ground pin ? directly together (but I suppose not...) ? Thank you for everything !
Yes, directly together for ground to ground of Jack then one positive to one jack connection and the other positive to the remaining last jack connection.
Great explanation, the best I've stumbled upon. Can I use two I2S ports as OUTPUTS simultaneously? My idea is to build a Bluetooth audio receiver which sends the data through two I2S ports at the same time. The idea is to implement high pass filter on one signal and low-pass on the other. Then feed the I2S signals to 2 external DACs and create a 2.1 audio system (subwoofer + 2 satelites). Do you think this is possible?
Yes, I believe you can. I've never tried but I don't see why not. Getting them perfectly in sync maybe the only issue. That said they'd only be a few bits out at most, which surely would not be noticeable. It would be such a small time scale.
@@XTronical @XTronical Awesome! Thanks for your prompt reply. Few samples will not be noticeable time difference. There are much more things to find out before worrying about sync. At first I have to find out how to initialize both I2S ports simultaneously...static const i2s_port_t i2s_num = I2S_NUM_???? Sorry, I'm complete noob.
Great, just what I need!
Is this a slip of the tongue? "longer wavelength and higher frequency".
Line: static const uint16_t WaveLength=100;
As I understand it for quite some time, a longer wavelength gives a lower frequency. Or do you have something else in mind?
Yes, a mistake. They are inversely proportional as you say, good spot!
Hi, I would like to use I2C MIC to capture the sound and forward it to the I2S DAC MAX98357A, I can not find any example how to do that. Can you help? Thx.
Sorry, I've never looked at this.
Thank you for your great explanation let us know more about i2s. Recently i wanna to build the audio spectrum to show as led matrix from mp3 in sd card. I think it is workable, is it possible got the analog signal from i2S to transform into fft to display the sound movement to led matrix, would you share your idea how to implement to esp32 board ?
It is possible. There is some maths you’ll can do on the digital data but I worked on this over a year ago and couldn't get it to work properly and I spent some time on it. I can tell you the library if you want and you can have a go if you wish.
@@XTronical Thank you for your reply. Would you share all information you have such as library, connection diagram etc to me?
There is nothing different for wiring as the analyser works with the digital file before it's output. I can't find the code that I did (I probably deleted it in frustration!). However I based all my work on the videos from the channel called "Dave's Garage", here's a link to the first video he does on the spectrum analyser. I used whatever library he does.
ruclips.net/video/f_zt7zdGJCA/видео.html
Good luck :)
Will all of your examples work with I2S PCM5102?
Yes, they will. Just follow the wiring in the episode on Internet radio from a few episodes ago
@@XTronical
Thank you!
Very good explanation.
Just a question: is it possible to use a ESP8266 instead of ESP32 ?
Yes, should be OK. It supports i2s it's just a little less powerful and less memory than the 32.
Hi, I have a really frustrating experience trying to set up the code you are explaining in this video. The #include "driver/i2s.h" statemanet throws a "no such file or directory" error. I have the according esp8266 library installed, I don't find the folder "driver" anywhere and I can not find any information about how to change my directory system or which file I have to include so that it is working... Would be a big help if you know something!
I have the same problem, dont know which library to install
Have you tried deleting the line. I think this library maybe standard include now and you don't need to write the words line explicitly, although I'm using esp32 in my examples not 8266
Help, How can I generate a sine cosine wave with PCM5102?
I haven't done this for i2s but I did do it for my dac audio series. This page has the code. www.xtronical.com/testing-the-dacaudio-hardware/
It would need a rewrite for i2s but does show the principles. When I release the full library for i2s this will be able to generate sine waves, if you want to wait.
Ooh, Could build another synthesizer.
Why using 25 27 26 in this order?
No reason, I probably saw them used in some documentation or just picked them semi randomly. There might have been some logic a while back but if there was I've forgotten it! The pins can be largely any you want.
Favor ativar legenda.
If you have heard it before; you will understand, and chuckle. If you have never heard it before, think about it, long and hard "put it back in the sand...."
Oh boy, library successfully installed. Finally might have a good example to test my DAC.... nope. More youtube garbage.
This is a simple intro, I've my own I2S library in some of my other videos. But there's a lot of crap on YT, so can't promise it'll do what you want. Probably best to not bother actually. Probably disappointing.
@@XTronical Instead of documentation, you and dozens others want to re-design... re-PAINT, the wheel.
My website is available for further information. People upload what interests them. Nature of the beast.
It's a shame doing things a new garbage way seems to interest so many people who have any idea how to code, and also bother to upload videos for others. It's also a shame that's the depth of your opinion.
One person's garbage is another person treasure. But if we're resorting to personal insults rather than constructive criticism then I'm out. Feel free to have the last word. I'm done.