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 :)
- 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.
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.
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...
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.
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.
You usually don't find I2C in the high end space-rated parts simply due to the added complexity of a simplex protocol but you see tons of single-ended SPI parts. You don't need diff pairs unless it's for high speed or long cable runs. If your controller (FPGA, microcontroller, etc) has the resources, a good idea is to have a single SPI slave per master. Also since SPI is not standardized, vendors may have different signaling requirements which makes it slightly more difficult to put different chips on the same bus. Talking to SPI chips is super easy and can be implemented entirely in 7400-series logic if you want so it's entirely possible to have analog electronics send control signals to SPI devices without a single CPU in sight.
"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:
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.
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?
Thanks! Like yourselves we saw a clear niche for a ultra-reliable small embedded board suitable for robotics and other space constrained systems. I'd be very happy to send you one of our products to compare, i'll message your team email.
By "buy-in" I was referring to the parent comment and how the electronics guy chose to buy-in a pre-made module rather than design their own.
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