Maker.io main logo

Star Wars Scomp Link USB Port

50

2023-05-04 | By Zach Hipps

License: See Original Project 3D Printing

There's a really cool thing in Star Wars called a scomp link. It's basically a computer ‎terminal built for droids so that they can access data. I thought it would be cool to build ‎one of these scomp links and even make the center rotate like it does in the movies. To ‎make it even more interesting, I want it to be a functioning USB port for my computer. ‎There are going to be a lot of technical challenges to overcome. I'm unsure what type ‎of material I want to build this out of or how to get that rotating piece to work. The tricky ‎thing about this project is that that piece needs to rotate around a static center where ‎the USB port is going to be. So, I know I need to find some sort of bearing so that the ‎outer piece can rotate while the inner piece remains still.

wheel_1

I'm going to make an aluminum faceplate that is purely decorative. I’ll attach the front ‎faceplate to a front body piece and then have a back body piece where a motor can be ‎attached. I'll 3D print a mid-body piece that I'll be able to screw those parts into. I don't ‎have the machines available in my shop to machine the center rotor piece out of ‎aluminum, so I asked my friend Winston Moy for some help. Winston is an amazing ‎hobbyist machinist and digital fabrication guru. He took a look at my model and gave ‎me a couple of pieces of feedback to make it easier for him to machine this part.‎

faceplate_1

The next piece I need to figure out is the central hub where the USB connector is ‎located. I have an idea of how I'm going to do this, but I haven't actually tried it to see if ‎it's going to work, so I may not know until the very end when I put everything together ‎and write some code whether or not this is going to work. ‎

hub_2

One of the requirements of this device is that it needs to detect when something is ‎plugged into the USB port. I’ll use a USB Type A connector for the front of the device, ‎and a USB Type C connector for the back of the device. I can plug a USB C cable from ‎my computer into the device from the backside. I figured that I would need to get some ‎sort of proximity sensor to detect the presence of my hand, but as I look closer at this ‎USB Type A port breakout board, I notice that the shield has a separate pin from ‎ground. I just assumed that the shield is always connected to the ground pin, but ‎they're actually independent from one another. Out of curiosity, I tested the continuity ‎between the shield pin and ground with and without something plugged into the port. ‎To my surprise, the shield pin gets pulled to ground when I plug in a flash drive or ‎other USB cable! So that is how I'm going to detect whether or not something is ‎plugged in. I don't have to worry about proximity sensors or distance sensors or ‎anything like that. I literally just have to read the state of that shield pin, and I can use ‎that to determine whether or not something is plugged in and then spin the rotor. I'm ‎super excited about this discovery because that's going to simplify this project a whole ‎lot!‎

port_3

This project will need a microcontroller so I’m using an ESP8266 Feather Huzzah with ‎a DC motor + stepper featherwing. I could have also used an Arduino Nano and a ‎separate motor driver. I ordered a little stepper motor for this project to spin the central ‎rotor and it's a good thing I tested it before moving forward because it is definitely too ‎slow. The gearing ratio just doesn't allow it to spin fast enough. So instead I'm going to ‎use just a regular geared DC motor. This one is rated at a much higher RPM and is ‎plenty strong to spin the rotor. ‎

sprocket_4

I've got the sprocket installed on the motor and I've got the pulley that goes around and ‎spins the rotor. I did a belt calculator online to try to get the right ratio so that my 200 mm ‎belt would be a perfect fit, and I even left myself a little bit of room in there so that the ‎belt wouldn't be too tight. But my calculations were off because the belt is really just too ‎tight. It's putting way too much friction on that sprocket and the motor is having trouble ‎spinning. Right now, I'm using a pulley that has 92 teeth and that's too big. I thought ‎about trying to stretch the belt a little bit, but the gt2 timing belt is designed to not stretch ‎so that may be a non-starter. The other option is to reprint the pulley with fewer teeth. ‎First, I’ll try printing two more pulleys, one that has 80 teeth and one that has 84 teeth. ‎This will take three hours to see if they are the right size.‎

size_5

Bad news. I overcorrected. The 80-tooth pulley and the 84-tooth pulley are too small. ‎There's just no way I can take up the extra slack that I created so unfortunately, I have ‎to do another three-hour print to print two more. ‎

print_6

Now that the 88-tooth and 90-tooth pulleys are done being printed, I think this is going ‎to be much closer. The 88-tooth pulley was a little bit loose, but the 92-tooth pulley fits ‎perfectly, so let's go ahead and test this. I'll plug the motor in and see that it spins freely ‎without all that friction. It's a little slower than I had hoped, but you know what? It's ‎working at this point, so I'm just going to go with it. I drilled a little hole in the side of the ‎rotor, and that will accept a little set screw that will lock it to that rotating hub in the ‎middle. ‎

plug_7 ‎ ‎

As far as the microcontroller code, basically, all I do is just read the state of the shield ‎pin, and when it goes low, I can start spinning the rotor. Fortunately, that new pulley ‎size seemed to fix the problem, and this thing is working great. The Star Wars scomp ‎link USB port sits on my desk beside my keyboard. Any time I plug in a flash drive or ‎USB cable, the rotor spins back and forth using a random interval for some variance. I ‎realize this is a super nerdy project that serves no real use, but I had a blast building it ‎and solving all the little problems that arose!‎

complete_8

Mfr Part # 4090
ADAFRUIT USB C BREAKOUT BOARD -
Adafruit Industries LLC
Mfr Part # 4161
VCNL4040 PROXIMITY AND LUX SENSO
Adafruit Industries LLC
Mfr Part # 2821
ESP8266 FEATHER HUZZAH LOOSE HDR
Adafruit Industries LLC
$122.75
View More Details
Mfr Part # 2927
DC MOTOR + STEPPER FEATHERWING A
Adafruit Industries LLC
$163.81
View More Details
Mfr Part # A000005
ARDUINO NANO ATMEGA328 EVAL BRD
Arduino
$204.45
View More Details
Mfr Part # 858
STEPPER MOTOR PM GEARED UNI 5V
Adafruit Industries LLC
Mfr Part # HG16-030-AB-00
12V DC PLANETARY GEAR MOTOR, 310
Nidec Components Corporation
$218.74
View More Details
Add all DigiKey Parts to Cart
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.