No video

ESP32 - Intro to I2S Episode 1, explanation with basic example outputting a square wave

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

Пікірлер: 51

  • @maximus6884
    @maximus68842 жыл бұрын

    Your clear explanation on i2s was long due to the world. Thank you.

  • @noweare1
    @noweare12 жыл бұрын

    Good job. Answered a lot of questions that I had after reading the esp32 documentation on I2S !

  • @csabahusla7766
    @csabahusla7766 Жыл бұрын

    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.

  • @fvgm
    @fvgm2 жыл бұрын

    Nice and clear explanation about I2S interface. Thank you.

  • @dansam1395
    @dansam13954 жыл бұрын

    fantastic explanation on i2s works, well done!

  • @XTronical

    @XTronical

    4 жыл бұрын

    Thanks for the feedback

  • @anonymous.youtuber
    @anonymous.youtuber3 жыл бұрын

    Thank you for the excellent explanation! 🙏🏻

  • @XTronical

    @XTronical

    3 жыл бұрын

    Thanks for the feedback

  • @gearscodeandfire
    @gearscodeandfire Жыл бұрын

    this was wonderful, very glad i found it!

  • @TheDiverJim
    @TheDiverJim2 жыл бұрын

    great vid. You have many great vids. How is this not a 100k channel?

  • @abhilashpatel1809
    @abhilashpatel18092 жыл бұрын

    best explanation!!

  • @joepklijs1791
    @joepklijs17912 жыл бұрын

    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?

  • @projetos_leotronico
    @projetos_leotronico4 жыл бұрын

    Great! Tks.

  • @elchev5082
    @elchev5082 Жыл бұрын

    Could I ask you why you masked Output value? You add two 16bit values (OuputValue is uint16_t) so I think that Value32But = (OutputValue

  • @graysong5787
    @graysong57873 жыл бұрын

    Thank you!

  • @maureljulien
    @maureljulien Жыл бұрын

    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 !

  • @XTronical

    @XTronical

    Жыл бұрын

    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.

  • @weekal5515
    @weekal55153 жыл бұрын

    Ive been reserching i2s but the information is so clutterd with non standerd with standers or naming the pins otherly its just painful

  • @JanHKila
    @JanHKila3 жыл бұрын

    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?

  • @XTronical

    @XTronical

    3 жыл бұрын

    Yes, a mistake. They are inversely proportional as you say, good spot!

  • @stanislavtodorov8705
    @stanislavtodorov8705 Жыл бұрын

    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?

  • @XTronical

    @XTronical

    Жыл бұрын

    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.

  • @stanislavtodorov8705

    @stanislavtodorov8705

    Жыл бұрын

    @@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.

  • @supermamaoo
    @supermamaoo3 жыл бұрын

    Very good explanation. Just a question: is it possible to use a ESP8266 instead of ESP32 ?

  • @XTronical

    @XTronical

    3 жыл бұрын

    Yes, should be OK. It supports i2s it's just a little less powerful and less memory than the 32.

  • @SA-oj3bo
    @SA-oj3bo2 жыл бұрын

    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.

  • @XTronical

    @XTronical

    2 жыл бұрын

    Sorry, I've never looked at this.

  • @kitlinghou6848
    @kitlinghou6848 Жыл бұрын

    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 ?

  • @XTronical

    @XTronical

    Жыл бұрын

    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.

  • @kitlinghou6848

    @kitlinghou6848

    Жыл бұрын

    @@XTronical Thank you for your reply. Would you share all information you have such as library, connection diagram etc to me?

  • @XTronical

    @XTronical

    Жыл бұрын

    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. kzread.info/dash/bejne/mJOu1pmzlKqwc6Q.html Good luck :)

  • @neilinsane5545
    @neilinsane55453 жыл бұрын

    Help, How can I generate a sine cosine wave with PCM5102?

  • @XTronical

    @XTronical

    3 жыл бұрын

    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.

  • @sophiebolinski665
    @sophiebolinski6653 жыл бұрын

    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!

  • @samsamm777

    @samsamm777

    2 жыл бұрын

    I have the same problem, dont know which library to install

  • @XTronical

    @XTronical

    2 жыл бұрын

    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

  • @brianharper9798
    @brianharper97984 жыл бұрын

    Ooh, Could build another synthesizer.

  • @rockett8610
    @rockett86103 жыл бұрын

    Why using 25 27 26 in this order?

  • @XTronical

    @XTronical

    3 жыл бұрын

    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.

  • @SergeyILinykh
    @SergeyILinykh4 жыл бұрын

    Will all of your examples work with I2S PCM5102?

  • @XTronical

    @XTronical

    4 жыл бұрын

    Yes, they will. Just follow the wiring in the episode on Internet radio from a few episodes ago

  • @SergeyILinykh

    @SergeyILinykh

    4 жыл бұрын

    @@XTronical Thank you!

  • @geraldoleandro4824
    @geraldoleandro48243 жыл бұрын

    Favor ativar legenda.

  • @JerryEricsson
    @JerryEricsson3 жыл бұрын

    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...."

  • @Marc_Wolfe
    @Marc_Wolfe6 ай бұрын

    Oh boy, library successfully installed. Finally might have a good example to test my DAC.... nope. More youtube garbage.

  • @XTronical

    @XTronical

    6 ай бұрын

    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.

  • @Marc_Wolfe

    @Marc_Wolfe

    6 ай бұрын

    @@XTronical Instead of documentation, you and dozens others want to re-design... re-PAINT, the wheel.

  • @XTronical

    @XTronical

    6 ай бұрын

    My website is available for further information. People upload what interests them. Nature of the beast.

  • @Marc_Wolfe

    @Marc_Wolfe

    6 ай бұрын

    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.

  • @XTronical

    @XTronical

    6 ай бұрын

    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.