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

Комментарии • 52

  • @maximus6884
    @maximus6884 2 года назад +6

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

  • @noweare1
    @noweare1 2 года назад +2

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

  • @fvgm
    @fvgm 2 года назад +1

    Nice and clear explanation about I2S interface. Thank you.

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

  • @dansam1395
    @dansam1395 4 года назад +1

    fantastic explanation on i2s works, well done!

    • @XTronical
      @XTronical  4 года назад

      Thanks for the feedback

  • @anonymous.youtuber
    @anonymous.youtuber 3 года назад +1

    Thank you for the excellent explanation!
    🙏🏻

    • @XTronical
      @XTronical  3 года назад

      Thanks for the feedback

  • @gearscodeandfire
    @gearscodeandfire Год назад

    this was wonderful, very glad i found it!

  • @TheDiverJim
    @TheDiverJim 2 года назад

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

  • @abhilashpatel1809
    @abhilashpatel1809 2 года назад

    best explanation!!

  • @rajeshkolhe1522
    @rajeshkolhe1522 4 дня назад

    Hi sir ..i need I2s parallel how i can do it ?

  • @projetos_leotronico
    @projetos_leotronico 4 года назад +1

    Great! Tks.

  • @graysong5787
    @graysong5787 3 года назад

    Thank you!

  • @joepklijs1791
    @joepklijs1791 2 года назад

    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?

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

  • @weekal5515
    @weekal5515 3 года назад

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

  • @maureljulien
    @maureljulien 2 года назад

    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  2 года назад +1

      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.

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

  • @JanHKila
    @JanHKila 3 года назад

    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!

  • @SA-oj3bo
    @SA-oj3bo 2 года назад

    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.
      ruclips.net/video/f_zt7zdGJCA/видео.html
      Good luck :)

  • @SergeyILinykh
    @SergeyILinykh 4 года назад

    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!

  • @supermamaoo
    @supermamaoo 3 года назад

    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.

  • @sophiebolinski665
    @sophiebolinski665 3 года назад

    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 года назад +1

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

    • @XTronical
      @XTronical  2 года назад +1

      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

  • @neilinsane5545
    @neilinsane5545 4 года назад

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

    • @XTronical
      @XTronical  4 года назад

      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.

  • @brianharper9798
    @brianharper9798 4 года назад

    Ooh, Could build another synthesizer.

  • @rockett8610
    @rockett8610 3 года назад

    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.

  • @geraldoleandro4824
    @geraldoleandro4824 3 года назад

    Favor ativar legenda.

  • @JerryEricsson
    @JerryEricsson 3 года назад

    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_Wolfe 7 месяцев назад

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

    • @XTronical
      @XTronical  7 месяцев назад +1

      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 7 месяцев назад

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

    • @XTronical
      @XTronical  7 месяцев назад +1

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

    • @Marc_Wolfe
      @Marc_Wolfe 7 месяцев назад

      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  7 месяцев назад +1

      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.