Awesome work! It's really cool to see this from a high school team. While designing liquid rocket avionics [1] at Purdue Space Program, we went with a BotBlox switch that cost $80 apiece [2], which I thought was ridiculous. My proposal to in-house the Ethernet switch was vetoed because I was a filthy CS student (joke) and my co-lead (the electronics guy) said it wasn't worth our time designing and validating such a part.
An Ethernet switch for $6.9 directly from JLCPCB is pretty incredible, thank you for making this product sector a tiny bit better :)
[1] https://sagarpatil.me/projects/cms-avi-hw
[2] https://botblox.io/products/micro-gigabit-ethernet-switch
I think you should submit your project page [1] as another show HN, I found it to be interesting
Some thoughts:
- Agreed with not using I2C, I2C has been identified as a root cause in several cubesat mission failures: https://pure.tudelft.nl/ws/portalfiles/portal/10531886/art_3... and https://webapps.unsworks.library.unsw.edu.au/fapi/datastream... (yes clock stretching is evil). I2C should be banned for multi board communication
- Classic CAN have very small 8 byte MTU with frame preemption, which is actually useful for its intended purpose of time critical automotive data transfer. If that 4 byte brake packet is blocked by a 1500 byte packet then your car will crash and explode. But the tradeoff is that this makes it very slow for bulk data transfer
Wtf, I2C in a satellite!? I am by no means an electrical engineer or know anything about doing stuff in space but it seems absolutely obvious to me if you require any sort of communication, that you use differential signaling. Even on earth you can have interference, in space with all its radiation it's guaranteed. I'm surprised anything worked at all with I2C.
Yes, I2C is technically meant for intra-board use. But it works surprisingly well over large distances if you avoid daisy chaining and run one cable to each target. If you use multiple identical target chips you need to route everything individually to a central MUX anyways.
As an example, the Nintendo Switch used I2C over a ~2m cable to communicate between the controller and nunchuck. Worked fine even in noisy household settings with wifi and microwaves and whatnot.
At work we've used sensors for data logging that communicate using I2C over distances more than 20 meters, using plain Cat5 cable.
Thanks for this! I recently designed a sensor board that connects to our main board with I2C, and in chatting with an EE about it she mentioned I2C is not intended for intra-board use. I just put a scope on the signals yesterday and they seem okay. The cable is only 15cm long, and it connects to a multi-use port which would be difficult to make work with differential signals in addition to the other things that port can do. I’ll keep an eye on it but maybe it’s okay.
If you _must_ use I2C, then look at SMBUS if its an option for the parts. I2C's biggest failing is that there is no protocol level timeout, so one stuck device can block your entire bus unless you have a reset line for all the peripherals on it. https://www.analog.com/en/resources/design-notes/guide-to-co...
Classic I2C problem. After your CPU resets, at least clock out a bunch of cycles onto I2C to get interrupted I2C transactions to finish.
I2C doesn't really care about cable length all that much. The thing to keep in mind is the interplay between bus capacitance, pullup strength, and drive strength.
A longer cable means more bus capacitance, which means with the same pullup resistor the signal rise time will be higher, which means you need to reduce the bus speed. A stronger pullup will reduce the rise time (allowing a higher bus speed), but each chip's driver has to be able to overpower the pullup too. If the pullup is too strong for the drivers, you end up being unable to send a zero.
In practice your cables can be quite long, you just have to run it at a lower speed. If you really want to push it, there's always transceivers like the PCA9615 which turn it into a differential bus.
Not an EE here, but I've dragged some circuits together as a hobby and have only used I2C. Why would Nintendo opt for I2C instead of a differential pair? Is there some extra part cost? What part(s) would you use to go from I2C to differential?
I don't know why Nintendo did it. But it's certainly quite convenient, there are even standard form factor breakouts for the Nunchuck like in the link below. This gets you a controller with accelerometer, 2 buttons and a 2 axis joystick with plenty of libraries available for using it with Arduino, RPi etc.
https://learn.adafruit.com/adafruit-wii-nunchuck-breakout-ad...
I don't know about I2C specifically, but a related device is a serdes (serial-deseria) which converts between a parallel interface and one or more differential pairs.
https://www.latticesemi.com/what-is-serdes
Someone else mentioned the PCA9615 which looks like it'd to the job.
Do you mean the Wii?
Yes, of course I meant the Wii, sorry about the mix up. Too late to edit now.
"making this product sector a tiny bit better" is exactly what MUREX is all about :). It's something we honestly believe in and will continue working on as long as we're around. Believe it or not, the Ethernet Switch was the least problematic piece of hardware in our tech stack! If you want to take a look, we have our other boards in the docs as well. Your rocket is so f*ing cool as well! I definitely want to do something similar in college.
Ok this is sick, I love the philosophy of your team. I'll be strongly considering your CM4 carrier and ESC to integrate into future designs.
Also thank you, I've loved working on the PSP rocket! Bi-propellant rocketry is a pretty rare to do as an undergraduate, and you should consider applying to these schools if that's something that motivates you:
- Purdue: https://purdueseds.space/
- Berkeley: https://www.berkeleyse.org/
- UCLA: https://www.rocketproject.seas.ucla.edu/
- Georgia Tech: https://www.gtspaceprogram.com/
- ERAU: https://daytonabeach.erau.edu/about/labs/rocket-laboratory
This is a non-exhaustive list of schools I know that have undergraduate-run liquid rocketry programs.
and Portland State University!
https://www.pdx.edu/psu-space#psas
Undergrads, not catching on fire in space!
I'd add
https://www.colorado.edu/studentgroups/cobra/
Thanks everyone! Noted deeply in the heart. :)
Congratulations MUREX Robotics team, great job!
There are products at different price points on the market, for example this 55x55mm switch from my company Brainboxes[1] is sub $50. We choose that size so that we could also produce a gigabit option with the exact same footprint. We opted for microMatch[2] style connectors as you can get board to board as well as board to cable options.
Your co-leads decision to buy-in is quite common, as you can reduce time to market and also not have to manage the component lifecycle if you go with an off the shelf option.
[1] https://www.brainboxes.com/product/pure-embedded/pe-505
[2] https://www.te.com/en/products/brands/micro-match.html?tab=p...
That's a sick board! If we had found that before we made it, maybe would have just used this board haha. What is "buy-in"? Is it meaning us using JLCPCB to buy and assemble the chips?
Worth noting though that the switch you linked claims to be a gigabit switch while the switch from murex is 100Mbpbs.
Not sure if that justified the price difference