Maker.io main logo

Star Wars Scomp Link USB Port

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

制造商零件编号 BRK-USB-A-3.1
USB 3.1 TYPE A FEMALE RECEPTACLE
Saiko Systems Ltd.
制造商零件编号 4090
ADAFRUIT USB C BREAKOUT BOARD -
Adafruit Industries LLC
制造商零件编号 4161
VCNL4040 PROXIMITY AND LUX SENSO
Adafruit Industries LLC
制造商零件编号 2821
ESP8266 FEATHER HUZZAH LOOSE HDR
Adafruit Industries LLC
制造商零件编号 2927
DC MOTOR + STEPPER FEATHERWING A
Adafruit Industries LLC
制造商零件编号 A000005
ARDUINO NANO ATMEGA328 EVAL BRD
Arduino
制造商零件编号 858
STEPPER MOTOR PM GEARED UNI 5V
Adafruit Industries LLC
制造商零件编号 HG16-030-AB-00
12V DC PLANETARY GEAR MOTOR, 310
Nidec Components Corporation
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum