Add USB To Your Electronics Projects! - The USB Protocol Explained

Поділитися
Вставка
  • Опубліковано 24 січ 2023
  • USB is both the simplest and most complex interface to use. It is simple to plug in and let the computer handle. It is complex to create and run a microcontroller with it.
    -- Links --
    My Website: sinelab.net
    Buy me a coffee: www.buymeacoffee.com/thesinelab
    Bitcoin Address: bc1qwlfr2ml9km4r5vhpfh7f3m60k80whhcq3ysths
    Ethereum Address: 0x7e8B8Ff8D6bD8DfB48b4A139694BB343f040Bb3f
    Schematic: sinelab.net/pdf/usb_test.pdf
    Code: sinelab.net/code/usbify.zip
    ASF-USB: asf.microchip.com/docs/latest...
    LUFA: www.fourwalledcubicle.com/LUFA...
    USB Datasheet: sinelab.net/pdf/usb-20-specif...
    ATmega16u2 Datasheet: sinelab.net/pdf/ATmega16u2.pdf
    Adapter: www.aliexpress.us/item/225183...
    --
  • Наука та технологія

КОМЕНТАРІ • 365

  • @SineLab
    @SineLab  10 місяців тому +6

    For anyone wondering, here's a link to the SMD adapter: www.aliexpress.us/item/2251832624996364.html?spm=a2g0o.productlist.main.7.76c52ecbfcRb7K&algo_pvid=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c&algo_exp_id=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c-3&pdp_ext_f=%7B%22sku_id%22%3A%2264495190690%22%7D&pdp_npi=2%40dis%21USD%2111.8%219.91%21%21%21%21%21%40211bf12316751972869527289d06f4%2164495190690%21sea&curPageLogUid=S39oAQQcKzaA

  • @unknownerorr2740
    @unknownerorr2740 Рік тому +230

    I have no idea how I ended up here. I'm light years away from this level of engineering. But this video was explained so well. This seems really helpful! Thank you for making this!

    • @SineLab
      @SineLab  Рік тому +14

      Thanks for watching! I'm sure you will find it more personally useful in the future. :)

    • @AutoFirePad
      @AutoFirePad Рік тому +10

      These are your first steps...

    • @voice5sur5
      @voice5sur5 11 місяців тому +2

      same i'm here and was able to watch 40% of the video despite having not skill or knowledge about what i'm watching. he did a good job.

    • @tissuepaper9962
      @tissuepaper9962 10 місяців тому +7

      If you've ever successfully used Arduino to do anything, you can handle this. Everything you need to know to use USB on a day-to-day basis is in the chip documentation. Most of these details about the exact workings of the protocol aren't relevant if you just want to make something with USB capability, and you can always come back later when you need to understand more. Good luck.

    • @vking4784
      @vking4784 10 місяців тому +1

      I use to watch this stuff and think just this but i'm now gratefull that i did i outstand in a lot of ways at work and at clubs in uni because i just enjoyed the subject and focused on whatever came at hand on youtube so just whatch whatever stuff comes along if you dont learn anything its still a great way to have a keywords to search for and in no time you'll be able to undstand a lot of complicated stuff .
      Good luck to you

  • @BoredInNW6
    @BoredInNW6 Рік тому +34

    Oh wow! I had no idea those solderless SMD adaptors existed! The whole video was good, but that bit of information was life changing!

    • @SineLab
      @SineLab  Рік тому +4

      Those adapters are really handy

    • @myetis1990
      @myetis1990 Рік тому +6

      @@SineLab and expensive too :)

    • @Mr.Leeroy
      @Mr.Leeroy Рік тому +2

      they are mainly aimed at pre-programming before assembly line, not prototyping.

    • @tissuepaper9962
      @tissuepaper9962 10 місяців тому

      @@Mr.Leeroy I've also seen some companies using them as a way to make a universal development board for their whole range of chips. I want to say it was a TI board that I'm thinking of.

    • @teejay872
      @teejay872 10 місяців тому

      @@myetis1990 They used to be in the hundert dollars pricerange. But you can get them for "cheap" in china nowdays.

  • @PhilXavierSierraJones
    @PhilXavierSierraJones Рік тому +143

    If you *just* need serial connection to be turned into USB connection, CH340 (with some series of chips requiring even less external components than the rest, like CH340C) is a really, really cheap option.

    • @jan.tichavsky
      @jan.tichavsky Рік тому +8

      Even better is to use the $1 RP2040 or whole Raspberry Pico board. USB with C or Python, plenty of power, good amount of I/O and the board is ready to use, embed in existing project.

    • @TheCuteZombie
      @TheCuteZombie Рік тому

      The problem is, those implementations are already talked into exaustion by all other sources. Just type "diy USB" in any search engine and you are bombarded by usb to serial and the likes. Good for a cheap, fast and not customizable application, but horrendous for anyone actually trying to understand the protocol and create a more complex application.

    • @carlosgarcialalicata
      @carlosgarcialalicata Рік тому +6

      I prefer CP2102N, smaller and even less external requirements

    • @urnoob5528
      @urnoob5528 Рік тому +1

      @@jan.tichavsky ch340 is like cheaper and easier to use
      dont even need to program.
      and by plenty of power, do u mean strapping a whole other microcontroller to ur device or do u mean it consumes more power
      did u read what the comment said? we just need an interface to usb. for example, for a microcontroller or cpu like 8051 and 6502, mybe these are too old, what about atmega328p which a lot of people still uses then? we could just add a hardwired usb chip like ch340
      nobody sane would put a rp2040 on there, at that point, just use the rp2040, and all the other parts in ur existing project has now become extra and obsolete
      8051 and 6502 are too old for commercial products, but who to judge u if u use them for home or hobbyist project? that is another reason to opt for a usb chip, rp2040 overkills and defeats the purpose, it seems ironic to use rp2040 as the usb interface while these older micros are the actual brain of the project
      of course this assumes that u didnt start ur project with rp2040 in mind but other components
      if u have thought of usb, u would have chosen the appropriate components in the first place, like rp2040

    • @Mr.Leeroy
      @Mr.Leeroy Рік тому +2

      USB to TTL is only one class of USB spec. It won't do HID, Mass Storage, other..
      But, ofc, there are easier ways. Like Digispark based on tiny85 with premade libs, which can do some.

  • @Mike98006
    @Mike98006 Рік тому +37

    Great introduction to USB programming. It would be nice to see a video explaining how HID interfaces work and how they correlate with the low-level USB transfers described in this video.

    • @SineLab
      @SineLab  Рік тому +5

      Thanks for the idea!

  • @lalchandra4590
    @lalchandra4590 3 місяці тому +1

    Oh really this is 15 min long video. I think it's level is many hours of study in college. I shocked that this video's every frame is informative.
    Thanks for saving alot my time.

  • @alexstone691
    @alexstone691 Рік тому +167

    I thought finally a VUSB tutorial that a mortal can understand, most distributers dont ship to Serbia and locals are ripoff and dont have most modern ics

    • @SineLab
      @SineLab  Рік тому +38

      I've added V-USB to my list of future videos. ;)

    • @alexstone691
      @alexstone691 Рік тому +8

      @@SineLab I've made whole library with libusb without understanding the protocol, the video was quite useful not gonna lie

    • @lasskinn474
      @lasskinn474 Рік тому +2

      @@SineLab please do, it would get at least somewhat popular.

    • @jessyltr581
      @jessyltr581 Рік тому +1

      Seems like you could easily build a honnest buisness selling ics in Serbia then you'd beat competition through good customer support and parts availability.

    • @alexstone691
      @alexstone691 Рік тому +4

      @@jessyltr581 Probably not, the country is pretty corrupt and taxes are high so if any politician or anyone important has anything to do with existing companies then youre screwed

  • @jercos
    @jercos Рік тому +54

    Excellent overview, though for nearly $4 in the current market, I'd favor an RP2040/pi pico over an atmega. PIOs can handle matrix scanning, sensor interfacing, and even a second USB, while the SIO peripheral offers the low-latency pin access often missing from 32-bit mcus.

    • @SineLab
      @SineLab  Рік тому +5

      Pick whichever solution works best for your project :)

    • @Mr.Leeroy
      @Mr.Leeroy Рік тому +3

      RP2040 can be had at $1 nowadays.
      So, yeah, it or Pico is a winner at availability.
      This video, on the other hand, is clearly a low level hardware exercise, and AVRs are still a great foundation for that.

    • @PainterVierax
      @PainterVierax Рік тому +1

      @@Mr.Leeroy RP2040 is not a great solution either.
      This chip has very weak current output capabilities (max 12mA) and often requires the addition of discrete transistors.
      It's great to have two cores but they are quite obsolete ARM Cortex M0.
      Then compared to classic AVR or PIC, those 32bit MCUs have a convoluted HAL when digging a bit into advanced programming and they rarely have integrated logic level shifters to communicate with the still very popular 5V logic.

    • @Mr.Leeroy
      @Mr.Leeroy Рік тому +3

      @@PainterVierax It is a bad practice to connect IO directly anyway (in any industrial device). STM32 is guaranteeing even less current (9mA IIRC). Most of the pins on RP2040 are 5v tolerant and level shifter requires 2 FETs, that are dirt cheap, I see zero issue with that.

    • @PainterVierax
      @PainterVierax Рік тому

      @@Mr.Leeroy Direct i/o is only a bad practice when you have non-rugged MCUs because I saw that on almost every PCB design embedding MCUs, SoCs or good old processors.
      Though industrial devices generally don't use USB but Canbus, RS485 or Ethernet which require proper transceivers nonetheless.
      A proper RP2040-based devboard means that a lot of discrete components have to be around.
      I don't preach for STM32 either. Its HAL is atrociously convoluted.

  • @StephenBrown85
    @StephenBrown85 Рік тому +11

    This was a really nice and concise intro - a lot of other videos on the topic are 45 minutes long and so boring I couldn't make it through!

    • @SineLab
      @SineLab  Рік тому

      Thank you for watching through it :)

    • @crossbones911
      @crossbones911 Рік тому +1

      I agree. It's a good primer.

  • @soroush92
    @soroush92 Рік тому +2

    God knows how many times I tried to find a useful resource to get familiar with usb protocol. God bless u and ur family sir. I will follow u forever ♥️

  • @thompsonschwabbel6622
    @thompsonschwabbel6622 2 місяці тому

    i've harvested a bunch of analog turning knobs, sliders, latching and tactile switches from a ancient fried 8-channel sony mixpult. I'm gonna use them to upgrade my flightsim setup; this video is worth its time in gold since i had no idea how to cross the analog-digital bridge. thank you a thousand times.

    • @SineLab
      @SineLab  2 місяці тому

      Thank you for watching and good look with your project :)

  • @rusticbear195
    @rusticbear195 2 місяці тому

    This is not at all what I was looking for, but I'm glad I got here. This was a wonderfully in depth guide

  • @RegisMichelLeclerc
    @RegisMichelLeclerc Рік тому +9

    Ben Eater has made a video on the USB protocol explaining it from the oscilloscope point of view, with an implementation on 6502.

  • @Delali
    @Delali Рік тому +5

    This is really cool to learn. I kinda got a little lost mid-way but i think its because of all the technical terms.
    I'd definitely implement some of the ideas here soon on my channel. Always good to learn

  • @snipsnap9995
    @snipsnap9995 Рік тому +2

    This is exactly the type of video I was looking for a few months ago! This is the perfect start for those who want to hack around with USB

  • @stevekoehn1675
    @stevekoehn1675 Рік тому +5

    You explain these concepts so efficiently and clearly. My brain is getting older and this is what I need! Thanks

    • @SineLab
      @SineLab  Рік тому +1

      I'm glad I could help!

  • @cognisent_
    @cognisent_ Рік тому +1

    Well hello there, small channel that the UA-cam algorithm decided to promote! This video was awesome! I had no idea I'd be learning about the bit level USB protocol this Saturday. I am going to try to commit kjkjkjkk to memory because that seems like some fun trivia to store. I'm about to go binge the rest of your videos and I'm excited to see what you make next! Thanks for making awesome content, new friend 🫂!

    • @SineLab
      @SineLab  Рік тому +1

      Thank you, enjoy all of the videos I have to offer :)

  • @SodAlmighty
    @SodAlmighty 9 місяців тому

    That was the most detailed and useful USB tutorial I've ever seen.

    • @SineLab
      @SineLab  7 місяців тому

      I'm glad you found it helpful

  • @andrew2004sydney
    @andrew2004sydney Рік тому +2

    Cool video, dude! I was expecting the USB FTDI UART merry-go-round ride, but instead we went on the USB roller coaster, underwater in the dark! Thanks

  • @dalesmith8666
    @dalesmith8666 10 місяців тому +2

    The absolute easiest USB chip to use is the Microchip PIC18F4550, DIP40! Plenty of examples, great datasheet, and applications notes. Been using these for years! No surface mount nonsense, either! An excellent book is Jan Axleson USB Complete, for those that want to learn and experiment.

  • @Listeningtomuzak
    @Listeningtomuzak Рік тому +3

    I studied molecular biology. It’s amazing how DNA encodes its information so efficiently - i.e. at the most basic level our genes are coded following the same structure as the USB packet. There’s a binding site that allows for a protein complex to latch on upstream of the gene. Then that complex slides along the DNA, sniffing for the START sequence. Downstream of that is the body of the data, followed by a STOP sequence. At a higher level, there’s plenty of extra modifying data in and around the gene, as well as different interpretations of the data where chunks can be edited out. The bulk of this coding scheme evolved in very, very early life and every cell on earth depends on this established protocol. There’s so much more going on at the higher control level of gene translation that we still don’t understand - we need the brilliant minds of computer science to reveal to us how exactly the cell operates translation and gene expression.

    • @dc37009
      @dc37009 Місяць тому

      Beautifully illustrated ~Thanks !
      ...and I think your talking about immortal scale, beyond Rain Man. I think AI will have something helpful to say on the subject !

  • @carlosbah4623
    @carlosbah4623 3 місяці тому

    Just discovered this channel! Very good. ¡Gracias por compartir!

  • @myetis1990
    @myetis1990 Рік тому +1

    thank you for the great content. cant wait to see the next video about usb. hope it will be a mass storage class tutorial. or DFU

  • @usamakr
    @usamakr Рік тому +2

    Great overview. Thanks for putting the effort in making this content.

    • @SineLab
      @SineLab  Рік тому

      Glad you enjoyed it!

  • @michalsebek2089
    @michalsebek2089 22 дні тому

    Fun fact, on Arduino Uno, the chip handling the USB-serial conversion is actually the ATmega 16U2 microcontroller. Furthermore, you can easily reprogram it to another purpose. Although its IO is very limited, it is connected to the main ATmega328P microcontroller through two pins (the ones that normally serve as the serial line), so you can use a serial protocol to exchange data between the two microcontrollers on-board.

  • @GregMatoga
    @GregMatoga Рік тому +9

    Sooo excited to test that out! Although, I have this lurking feeling of dread of programming a custom driver

    • @SineLab
      @SineLab  Рік тому +3

      Get ready to debug it! :)

    • @newmonengineering
      @newmonengineering Рік тому +1

      I built a custom driver one time...Microsoft is not nice. Maybe Linux is better? I only programmed it for windows. It was a file based storage type driver and was an absolute nightmare. It did finally work after 6 months of playing with it. But like I say, Microsoft is not nice. It's a real pain to get working. So many parts to the puzzle and getting them all to work together is a serious pain. However now there are many HID compliant ways around drivers, it is probably the best route if you can modify one and use the standards they have for the various driverless devices in that category. All the best to you if you write a driver!

    • @BrightBlueJim
      @BrightBlueJim 3 місяці тому

      A very common thing, at least among electronics hobbyists, is to NOT program a custom driver. Many projects I've seen just use one of the standard Human Interface Devices, like keyboard, joystick, serial, or mass storage, with the most common being serial. This allows your "driver" to just be user code (i.e., not a device driver at all) that takes care of one side of a client/server relationship between the host and device.

  • @YTInnovativeSolution
    @YTInnovativeSolution 29 днів тому

    So what you are saying is.....
    USB protocol is very similar to automotive CAN Bus communications and since auto makers also have 'K-Line' communications, that could be related too. Thanks for the info. Well delivered with the graphics.

  • @chrisw1462
    @chrisw1462 Рік тому +5

    Definitely looking forward to more of this series. I've been interested in making my own USB projects for quite some time, and have had to rely on things like the CH340 serial to USB chips and ESP32-2 and 3 microcontrollers that have built in USB.

    • @cutterboard4144
      @cutterboard4144 Рік тому

      Its super simple with arduino and the right µc. i personally like to use the atmega32u4 "leonardo". But a few months ago i got my hands on some ESP32 chips with wlan and i might switch to them for future projects.

    • @urnoob5528
      @urnoob5528 Рік тому +2

      and he still talked about built in usb, so in actuality u were left hanging

  • @TradieTrev
    @TradieTrev Рік тому +1

    That's a damn good explanation, this is totally how they made the rubber ducky/bad usb devices!

  • @colinmcintyre1769
    @colinmcintyre1769 Рік тому +1

    I didn't know I needed this. Thank you.

    • @SineLab
      @SineLab  11 місяців тому +1

      You're welcome :)

  • @e74av
    @e74av Рік тому +1

    One of the most interesting videos lately :)

    • @SineLab
      @SineLab  Рік тому

      Thank you for watching :)

  • @cat22_a1
    @cat22_a1 Рік тому +2

    Years ago I was tasked with writing a raw USB driver from scratch for Itanium. It was quite a challenge but i eventually got it working. All I had to go by was the spec. We had no libraries or even a file system. Code was loaded by direct injection using a special card.

  • @ServiceOrchestramegastore
    @ServiceOrchestramegastore 10 місяців тому

    Actually there are lot to learn in this tutorial than the topic. TFS!!

  • @xzddakfdmiug5832
    @xzddakfdmiug5832 Рік тому

    Thanks for covering this interesting and popular protocol.

    • @SineLab
      @SineLab  Рік тому

      Thanks for watching!

  • @ZomB1986
    @ZomB1986 Рік тому +2

    If it's not a keyboard or serial endpoint, then you *still* don't have to write drivers for your PC. You can make a regular application that interfaces with USB hardware, like I did with a LabSphere spectrometer with proprietary communications (reverse engineered with Wireshark). I even did it in Java.

  • @djmips
    @djmips Рік тому +1

    Nice! I've always wanted to know this but had a big mental block about reading up on it since the documentation is vast.

    • @SineLab
      @SineLab  Рік тому +1

      Yes, the datasheet is overly complicated

  • @MrRecorder1
    @MrRecorder1 Рік тому +59

    Just wondering: I totally expected you to mention the FTDI-series of chips here. If you purely want to ADD USB to your project, I would go for those. They are pricey, but you can in fact mostly ADD them and leave the rest of your design unchanged (serial communication channels are needed ofc). Also you can get fully fledged modules for quick setup. I typically end up using arduino's to add USB-support for devised however. I like their versatility. And for home projects, who really cares if you use 20 microcontrollers for a task that really would only require one :D

    • @SineLab
      @SineLab  Рік тому +16

      You are right, if all you need is serial then that would be the best option, along with cheaper alternatives like the CH340. This video was more about usb devices like keyboards, mice, etc. :)

    • @akkudakkupl
      @akkudakkupl Рік тому

      @NRGY VIA is not the right chip to serve async serial. You want an uart for that

    • @akkudakkupl
      @akkudakkupl Рік тому +1

      @NRGY Read up on asynchronous serial communication. You need an UART to recieve it, you could do it in software, but that will limit the speed a lot, in addition your computer will have to waste time on doing serial stuff instead of doing computing stuff.
      There are no 'fifo' lines in RS232, there is RX and TX.

    • @AJMansfield1
      @AJMansfield1 Рік тому +3

      Though even for a prototype it does sometimes feel a bit silly to have a USB serial uC talking to a GPIO expander uC talking to our applications uC talking to a GPS uC and a bluetooth uC and a battery charge controller uC which itself is talking to the battery's own protection uC...

    • @akkudakkupl
      @akkudakkupl Рік тому

      @NRGY Read this en.wikipedia.org/wiki/Asynchronous_serial_communication

  • @michaelzlprime
    @michaelzlprime Рік тому +1

    Great and concise guide!

  • @JoseGustavoAbreuMurta
    @JoseGustavoAbreuMurta 3 місяці тому

    Very good explanation about USB. Thank you

  • @edwardvanhazendonk
    @edwardvanhazendonk Рік тому +1

    Great explanation, good to understand and as always protocols are not always straight forward.

  • @MrVipulLal
    @MrVipulLal Рік тому +1

    Great explanation. Many thanks 🙏

    • @SineLab
      @SineLab  11 місяців тому

      I'm glad you found it helpful!

  • @BalugaWhale37
    @BalugaWhale37 Рік тому +4

    Very comprehensive. The J/K explanation was most interesting.

  • @HollyTroll
    @HollyTroll Рік тому

    this was very very informative - thank you!

    • @SineLab
      @SineLab  Рік тому

      You're welcome! Thanks for watching!

  • @sgwong513
    @sgwong513 Рік тому

    great explanation. good to know how usb works.

  • @epolpier
    @epolpier Рік тому +1

    Endpoint0 is not only for configuration. There are many classes that use it for "normal" communication using class specific requests.

  • @SB-qm5wg
    @SB-qm5wg Рік тому

    Excellent video. Good info. I enjoyed that. TY

    • @SineLab
      @SineLab  Рік тому

      Thanks for watching!

  • @Harm10412
    @Harm10412 10 місяців тому

    This was an awesome video!

  • @rick_er2481
    @rick_er2481 Рік тому

    Amazing content, looking forward to future video's

  • @lfmtube
    @lfmtube Рік тому

    Very useful and well made video. Thank you

  • @Zhaymoor
    @Zhaymoor Рік тому

    Great explanation, thank you

  • @JyrkiKoivisto
    @JyrkiKoivisto Місяць тому

    I once coded a device driver for AROS operating system (vusbhc (virtual usb host contoller), hosted on Linux) that talked to the Amiga "native" usb stack and used the user space libusb on Linux to talk to the real usb hardware, a stack inside of a stack... :)

    • @JyrkiKoivisto
      @JyrkiKoivisto Місяць тому

      ua-cam.com/video/BsEUUgSfAK0/v-deo.htmlsi=806HN-iQ5J1ogvEs

  • @user-yn1vv8ey8u
    @user-yn1vv8ey8u 4 місяці тому

    Excellent man.

  • @timewave02012
    @timewave02012 Рік тому +5

    On the software side, a lot of people have trouble grasping the concept of the HID report descriptor, and how it dictates the format of the HID reports, so that might be worth explaining if you're looking for topics. Canned driver/library code usually handles it poorly, with hardcoded report descriptors, and no obvious connection between the descriptor and the code that generates the reports.

    • @SineLab
      @SineLab  Рік тому +2

      Thanks, that's a good topic.

    • @mrkv4k
      @mrkv4k Рік тому

      Great point. I'm building my own Joystick and this stuff gave me nightmares.

    • @timewave02012
      @timewave02012 Рік тому

      @@mrkv4k Did you end up figuring it out?

    • @mrkv4k
      @mrkv4k Рік тому +1

      @@timewave02012 Well, yes. After reading much of the USB documentation, going through some examples and a bit of try and error. I am using the PIC24FJ64GB004 uC and I managed to get it working with the Microchip Harmony example libarary, but I can't recommend it, because it's hard to extrapolate for an actuall application.
      I am building the mechanical part now, the electronic part is working and has a 32 possible button inputs and 7 analog channels (3-axis plus 4 sliders).

  • @sagar73594
    @sagar73594 Рік тому

    Great Scott, good one.

  • @prakashm1468
    @prakashm1468 Рік тому

    Great video bro!! Thank you so much.

    • @SineLab
      @SineLab  Рік тому

      Thank you for watching it!

  • @fpgaguy
    @fpgaguy 3 місяці тому

    Very nicely done, and as a surprise you use vi, very nice indeed.

    • @SineLab
      @SineLab  3 місяці тому

      Vi/Vim is a programmer's best friend :)

    • @fpgaguy
      @fpgaguy 3 місяці тому

      @@SineLab I have been using since 85 but started when I first brought up Unix box at home I built from bsd 4 sources Back then there was not much X so it used termcap to a vt102.

  • @jonahy-m2099
    @jonahy-m2099 Рік тому +2

    Great job👍😊

  • @RoamingAdhocrat
    @RoamingAdhocrat Рік тому

    ooooh. this is relevant to my interests. subbed!!

    • @SineLab
      @SineLab  Рік тому

      Awesome, thank you!

  • @zetaconvex1987
    @zetaconvex1987 Рік тому

    Niceley explained. You obviously know more than me. Just a point: I think the differential pair is to help with clock drift. It's nice to see a an MCU with USB support, although I have never dealt with standalone chips. My soldering isn't up to it. I go for boards that I can plug in. I've implemented a USB driver using an RP2040 and tinyusb. Amazingly, it actually works given the complexity of USB.

    • @tiger12506
      @tiger12506 Рік тому +4

      The differential pair is for noise. You can subtract the one signal from the other to completely remove any "common-mode" noise -- that is, noise that is common to both wires (external noise). Further, equal and opposite voltages result in equal and opposite magnetic fields that cancel each other out in a twisted pair. The KJKJKJKK sync at the start of each packet is what fixes clock drift.

    • @zetaconvex1987
      @zetaconvex1987 Рік тому +1

      @@tiger12506 My bad. I think I mean the whole JK thing. If you have a stream of zeros, for example, which is quite common, the lines will toggle, helping to mitigate clock drift.

    • @BrightBlueJim
      @BrightBlueJim 3 місяці тому

      @@zetaconvex1987 That's actually part of the NRZI protocol, which unlike RS-232, does not assume that you have fixed and stable clocking, allowing the receiver (or device, in USB parlance) to synchronize with the clock on a bit-by-bit basis rather than between characters. NRZI always has at least one transition per bit. It also has the advantage of always having the same amount of time high and low, on every bit, which allows for connections that must be isolated through a transformer, since establishing the high and low references is simple. In practice, USB interfaces are rarely if ever actually isolated, expecting that the devices can always be set to use the same ground as the host, but the design allows for it just the same.

  • @qzorn4440
    @qzorn4440 Рік тому

    wow after this I think I will stick to something simple like USB4 Thunderbolt. 🤣 Thank a lot for the great description.

  • @Bianchi77
    @Bianchi77 11 місяців тому +1

    Nice info, thanks for sharing it :)

    • @SineLab
      @SineLab  10 місяців тому

      You're welcome! :)

  • @trollobite1629
    @trollobite1629 4 години тому

    RS232 is a long way from being dead, it is literally everywhere especially in networking. You will find it on Cisco, Infeneria/Transmode, Cienna etc, it's so prevalent we have to carry USB to RS232 converter leads.

  • @stompsalot
    @stompsalot Рік тому

    this is so cool! thank you! subbed 😊

    • @SineLab
      @SineLab  Рік тому +1

      Thanks for subbing!

  • @Gastell0
    @Gastell0 Рік тому

    Native serial ports are still present on many business workstations, which is nice

    • @Mr.Leeroy
      @Mr.Leeroy Рік тому +1

      they are on all consumer motherboards I know, just as a header and not IO plate connector.
      Look up COM port in a manual pdf for yours.

  • @HenkvanHoek
    @HenkvanHoek Рік тому +2

    I like the explanation a lot. Question, where did you get the smd adapter. I could not find it.

    • @SineLab
      @SineLab  Рік тому +3

      Here is a link to one on aliexpress: www.aliexpress.us/item/2251832624996364.html?spm=a2g0o.productlist.main.7.76c52ecbfcRb7K&algo_pvid=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c&algo_exp_id=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c-3&pdp_ext_f=%7B%22sku_id%22%3A%2264495190690%22%7D&pdp_npi=2%40dis%21USD%2111.8%219.91%21%21%21%21%21%40211bf12316751972869527289d06f4%2164495190690%21sea&curPageLogUid=S39oAQQcKzaA

    • @HenkvanHoek
      @HenkvanHoek Рік тому

      @@SineLab ordered. Thanks!

  • @neilbedwell7763
    @neilbedwell7763 Рік тому

    Great video learnt a lot thanks

  • @TheRailroad99
    @TheRailroad99 17 днів тому

    The hardware part was a great overview!
    The software one was a little too fast however. Just editing the callback does not explain at all how the stack works. (How to configure multiple/custom endpoints etc)

  • @gabrielphilips6980
    @gabrielphilips6980 Рік тому

    Very good video, thank you for this.

    • @SineLab
      @SineLab  Рік тому

      You're welcome! :)

  • @AleksandarRadev
    @AleksandarRadev Рік тому

    Nice overview!

  • @petercheung63
    @petercheung63 Рік тому

    super good video, thanks

  • @c1ph3rpunk
    @c1ph3rpunk Рік тому

    Ben Eater has an excellent video on how the USB protocol works.

  • @Quazee137
    @Quazee137 Рік тому

    Here is a though for a project. Use the RPi Pico with a 2.8" up to a 4" LCD display. Create icons for keys in a 4 by (5 or 6) matrix. With this you can have more than one set of usable macros. Have two keys for moving through the other sets. I see all these keypad type of macros key but they use mechanical keys with fixed icons on them. Hold both up/down same time to go into upload mode for keypad the icons and macros.
    ATM I am playing with MMBasic on the Picos sadly no USB HID abilities.
    For my current use as controllers it just works. I only need minicom and the pico.
    Just musing after looking at the many ways here on youtube. Have FUN.😄
    I have a box of Arduino's in many forms along with STM32 boards just starting to learn to play with them.
    LOL forgot to say the LCD needs touch.

  • @ncdave4life
    @ncdave4life 10 місяців тому

    Great tutorial! You should probably mention that you mean "USB 2.0" whenever you say "USB."

  • @mrtechie6810
    @mrtechie6810 Рік тому +1

    Great! Now how would one change those pesky WiFi devices to use Ethernet? For example the Sonoff TH16.
    I need a remote smart thermostat on the building roof, and there is no WiFi AP there, so I would like to run a cable or use Ethernet over powerline.

  • @mr_noodler
    @mr_noodler 10 місяців тому

    Awesome video

  • @richpaul6806
    @richpaul6806 10 місяців тому

    Im curious about that solderless adapter. Can you give some more information on where to buy something like that? Ive never seen one before.

    • @SineLab
      @SineLab  10 місяців тому

      Here's a link to one: www.aliexpress.us/item/2251832624996364.html?spm=a2g0o.productlist.main.7.76c52ecbfcRb7K&algo_pvid=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c&algo_exp_id=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c-3&pdp_ext_f=%7B%22sku_id%22%3A%2264495190690%22%7D&pdp_npi=2%40dis%21USD%2111.8%219.91%21%21%21%21%21%40211bf12316751972869527289d06f4%2164495190690%21sea&curPageLogUid=S39oAQQcKzaA

  • @skanderbenmrad946
    @skanderbenmrad946 10 місяців тому

    Very good. Thank's

  • @HuskyNET
    @HuskyNET Рік тому +2

    I think you’ve mixed up NACK and STALL at 9:46. NACK means error and STALL means device busy.

  • @1Chitus
    @1Chitus 9 місяців тому +2

    Timestamps:
    @0:01 intro
    @1:00 selecting a microcontroller (why you need to be picky)
    @2:50 parts & circuit diagram.
    @3:57 USB protocol explained
    @12:32 Libraries to interface with USB protocol. Luff library FTW No need for drivers.
    @14:46 debugging programs.

  • @hewiweng99
    @hewiweng99 Рік тому

    Very well explained. Thank you!

  • @EStLouisAsassin
    @EStLouisAsassin 3 місяці тому

    @SineLab
    Is it possible to convert an isa signal to usb? If not with this device,could you recommend a card that could accomplish this? Thanks !

  • @ElectroWolf_Arts
    @ElectroWolf_Arts 7 місяців тому

    the signal in 5:53 which one produces that pattern ?? the PC or the Device (keyboard for example) ?

  • @alexandru-cosminvintila6115
    @alexandru-cosminvintila6115 Рік тому +1

    how about sending commands to a 3d printer via usb(the 3d printer has a ch340 that transforms usb data to serial for the 3d printer mcu)? Can this be a viable solution for sending, let's say G28 gcode command(go to home) to the 3d printer? Thank you,

  • @raymondbyczko
    @raymondbyczko Рік тому

    Thank you!

  • @nalinux
    @nalinux Рік тому

    Very interesting, thanks.

    • @SineLab
      @SineLab  Рік тому +1

      Glad you enjoyed it!

  • @mayank8387
    @mayank8387 Рік тому

    Thanks for sharing! :)

    • @SineLab
      @SineLab  Рік тому

      You're welcome! I'm glad you liked it! :)

  • @Umski
    @Umski Рік тому

    About 20 years ago my 4th year project supervisor at uni casually suggested that I could implement a USB interface on an FPGA - needless to say it didn’t progress past a paper-based feasibility study 😂 I was following up to the J/K sync 🤯

    • @SineLab
      @SineLab  Рік тому

      What a project that could have been!

  • @MishTheMash
    @MishTheMash Рік тому +1

    PFFFT, Finally somebody decided to do a clear explanation of this.

    • @SineLab
      @SineLab  Рік тому

      It was about time.

  • @A_Canadian_In_Poland
    @A_Canadian_In_Poland 2 місяці тому

    The Arduino board has a ATMega16U2 on it, pre-programmed as a USB to serial converter. Perhaps showing a project using it?

    • @SineLab
      @SineLab  2 місяці тому

      That would make for an interesting project

  • @luisrey8986
    @luisrey8986 Рік тому

    Excelente! 👍

  • @ShirishJadav162
    @ShirishJadav162 Рік тому

    I want to make a small usb uart host such that I can connect some Arduino to its usb to collect serial data and store.. basically a usb serial data logger. Yes i can also log direct serial data but it's for a device that does not have gpio for seperate uart and sends data over usb serial. Any good suggestions ? Currently I do with raspberry pi but I want smaller simpler solution if possible.

  • @savagesarethebest7251
    @savagesarethebest7251 Рік тому +1

    This was a fantastic video about USB, and I have seen quite a few of them before. +Sub :)

    • @SineLab
      @SineLab  Рік тому

      Awesome, thank you!

  • @hesham1216
    @hesham1216 Рік тому

    Can I use this circuit to add usb A to a mobile phone circuit?

  • @EStLouisAsassin
    @EStLouisAsassin 3 місяці тому

    @Sine Lab
    Is it possible to convert an isa signal to usb? If not with this device,could you recommend a card that could accomplish this? Thanks !

    • @SineLab
      @SineLab  3 місяці тому

      I'm not sure what exactly you are referring to when you say an 'isa signal', but you should be able to write custom firmware to make it work.

  • @-AnyWho
    @-AnyWho 10 місяців тому

    i have a old led battery powered closet light that i never used cuz i don't buy batteries so i got a old usb cable cut one end off and soldered the black and red wire to the two main battery terminals and mounted it by my keyboard and plugged it in usb port on pc. now i have a night light for keyboard and it shuts off when i turn pc off ...

  • @radarmusen
    @radarmusen Рік тому

    I had tried it on a Leonardo, I still remember the failure when I realized that it hard to work in the editor after programming it to write hello world again and again on a keyboard hid.

  • @Pandakaniya
    @Pandakaniya Рік тому

    I today found your channel accidentally. Please continue this good work :)

    • @SineLab
      @SineLab  Рік тому +1

      I don't have any plans to stop :)

  • @NOW-IS
    @NOW-IS 9 місяців тому

    Could USB (at least hardware layer) be used for a custom low power bus system with one master and many slaves?

  • @aaronmarkstaller228
    @aaronmarkstaller228 Рік тому

    How do I add usb that’s simple convert usb to i2c or can or pwm

  • @Rueeee97
    @Rueeee97 10 місяців тому

    What's the name of that smd adapter you're using? I can't seem to find it online

    • @SineLab
      @SineLab  10 місяців тому

      Here's a link to one: www.aliexpress.us/item/2251832624996364.html?spm=a2g0o.productlist.main.7.76c52ecbfcRb7K&algo_pvid=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c&algo_exp_id=19f78b0c-252a-414f-99fe-3a8ca3f2ad5c-3&pdp_ext_f=%7B%22sku_id%22%3A%2264495190690%22%7D&pdp_npi=2%40dis%21USD%2111.8%219.91%21%21%21%21%21%40211bf12316751972869527289d06f4%2164495190690%21sea&curPageLogUid=S39oAQQcKzaA