• All
  • Autodesk
  • Cadsoft Eagle
  • Decade Box
  • Decade With Display
  • Eagle Tutorial
  • Resistance Decade Box
  • Star Trek
  • Tutorials
load more hold SHIFT key to load all load all

Space Dock for the Enterprise-D

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

One of my other projects is Eaglemoss' Enterprise-D build up and while waiting on the next parts delivery, I needed to continue builing something, hell, anything..  I wanted to keep projects Star Trek based.  I came up with something that very few people have made according to my research.  A Star Trek space dock, or station, whatever you want to call it.  I also wanted to incorporate it into the Enterprise-D buildup.  I think this was a cool idea as the Enterprise model wouldn't be built in a day, or even a year.  Over the course of the build, I could hang it underneath the Space Dock, as to say it was under construction. 

 First thing to note is I have never built a scratch built model.  So this was a learning experience that went better than I anticipated.  I am not an artistic person, so I went with a traditional Star Trek dock or station.  I will do a write up and throw in the schematics and software to help the next person.2

This model is mainly constructed from random crap I have laying around. The main body is a folding science project board, that is made out of foam with paper glued on each side. The main rods that span front to back, are 5/16" Allthread. The sides are pieces of foam board cut off the original. Then I just started adding details. A majority is random 3D models that I printed and glued on.

I don't have any design files as I didn't have any plans on how this would look.  So this write-up will focus on the electronics.  It's actually very basic, but that's all you need.  I am sure I will continue to get ideas and add new features.  Before I begin, this design eats batteries.  The next rework will focus on battery life.  But, for now, I just wanted to get it working.

It is powered by a 8AA @12V.  For my design, it had to supply at least 12V to power LED strips I used for lighting the windows.  From there, there is a cheap DC-DC regulator that puts out 7V that is fed into Arduino Pro Mini's RAW pin.  The Pro Mini's onboard regulator brings that down to 5V. 

The Pro Mini controls the individual LEDs through it's pins.  The Windows (12V LED strips) and the flood lights are controlled via NPN transistors as they require more current than the Pro Mini can provide.  You can find the schematic below.  Also notice that I have extra transistors and pins to add new features in the future.

The software is where this project shines.  The model also has a cheap HC-05 Bluetooth module for wireless control as it hangs from the ceiling and it would be a pain to turn it on and off manually.  The bluetooth module is controlled via an Android app known as RemoteXY.  This app is simplistic but awesome.  With this paired with a bluetooth module, is an extremely powerful tool.  I won't won't go into the details of this system here but I highly recommend researching the app.  Basically, you can control anything that the Pro Mini can control.  I have mine setup where you can individually turn on/off different features, i.e., you can turn off the flood lights, but still have the navigation lights and windows on. 

Features:

  • Flood lights (LEDs)
  • Lighted Windows
  • Blinking Navigation Lights
  • RGB Under Lighting (LED RGB Strips)
  • Crane LED Lighting
  • Simulated Welding LED mounting to a tiny Astronaut.

I am NOT affiliated with Amazon nor do I make money off these links!

You can find all files that I used below. You don't need these exact items. This list is for reference only.

# Component Cost Link
1 Arduino Pro Mini $16 Amazon
2 HC-05 Bluetooth $10 Amazon
3 [1]NPN Transistors $10 Amazon
4 [2]Battery Case $15 Amazon
5 LED Light Panel $8 Amazon
6 DC-DC Regulator $25 Amazon
7 12V LED Strip (White) $12 Amazon
/*
   -- Space Dock --

   This source code of graphical user interface
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 3.1.6 or later version
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/
     - for ANDROID 4.8.01 or later version;
     - for iOS 1.5.1 or later version;

   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

//Jled Setup
#include 
auto ledWelding = JLed(9).Candle(5, 170).Forever();
auto led = JLed(12).Blink(200, 800).Forever();
auto led2 = JLed(13).Blink (200, 800).Forever();
auto led3 = JLed(10).Blink(200, 800).DelayBefore(500).Forever();
auto led4 = JLed(11).Blink (200, 800).DelayBefore(500).Forever();

// RemoteXY select connection mode and include library
#define REMOTEXY_MODE__HARDSERIAL

#include 

// RemoteXY connection settings
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600


// RemoteXY configurate
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,8,0,16,0,84,1,13,26,1,
  130,1,1,8,61,24,28,130,2,6,
  9,52,22,28,130,1,1,37,61,57,
  28,130,0,2,83,59,9,28,130,0,
  2,71,59,9,28,65,113,4,72,56,
  7,130,0,2,59,59,9,28,130,0,
  2,47,59,9,28,65,113,4,48,56,
  7,130,1,35,50,23,3,27,65,113,
  4,60,56,7,2,0,5,61,26,5,
  4,25,31,31,78,97,118,46,46,46,
  46,0,79,70,70,0,2,0,5,73,
  26,5,4,25,31,31,87,105,110,100,
  46,0,79,70,70,0,65,113,4,84,
  56,7,2,0,5,85,26,5,4,25,
  31,31,87,101,108,100,46,46,0,79,
  70,70,0,2,0,5,49,26,5,4,
  25,31,31,76,105,103,104,116,115,0,
  79,70,70,0,4,192,33,49,25,5,
  4,25,130,1,35,62,23,3,27,4,
  192,33,61,25,5,4,25,130,1,35,
  74,23,3,27,4,192,33,73,25,5,
  4,25,130,1,35,86,23,3,27,4,
  192,33,85,25,5,4,25,129,0,7,
  2,51,5,30,83,116,97,114,32,84,
  114,101,107,32,83,112,97,99,101,32,
  68,111,99,107,0,129,0,14,94,36,
  4,208,82,111,115,115,82,111,98,111,
  116,105,99,115,46,99,111,109,0,68,
  49,7,10,50,20,26,37,86,111,108,
  116,97,103,101,0,130,0,10,42,16,
  3,28,129,0,14,42,9,3,153,80,
  111,119,101,114,0,130,0,36,42,23,
  3,28,129,0,40,42,16,3,153,66,
  114,105,103,104,116,110,101,115,115,0,
  130,1,1,35,61,1,93 };

// this structure defines all the variables and events of your control interface
struct {

  // input variables
  uint8_t switch_nav; // =1 if switch ON and =0 if OFF
  uint8_t switch_windows; // =1 if switch ON and =0 if OFF
  uint8_t switch_weld; // =1 if switch ON and =0 if OFF
  uint8_t switch_mainlight; // =1 if switch ON and =0 if OFF
  int8_t slider_lights; // =0..100 slider position
  int8_t slider_nav; // =0..100 slider position
  int8_t slider_windows; // =0..100 slider position
  int8_t slider_weld; // =0..100 slider position

  // output variables
  uint8_t led_windows_r; // =0..255 LED Red brightness
  uint8_t led_windows_g; // =0..255 LED Green brightness
  uint8_t led_windows_b; // =0..255 LED Blue brightness
  uint8_t led_lights_r; // =0..255 LED Red brightness
  uint8_t led_lights_g; // =0..255 LED Green brightness
  uint8_t led_lights_b; // =0..255 LED Blue brightness
  uint8_t led_nav_r; // =0..255 LED Red brightness
  uint8_t led_nav_g; // =0..255 LED Green brightness
  uint8_t led_nav_b; // =0..255 LED Blue brightness
  uint8_t led_weld_r; // =0..255 LED Red brightness
  uint8_t led_weld_g; // =0..255 LED Green brightness
  uint8_t led_weld_b; // =0..255 LED Blue brightness
  float graph;

  // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

#define PIN_SWITCH_NAV A0
#define PIN_SWITCH_WINDOWS 5
#define PIN_SWITCH_WELD 9
#define PIN_SWITCH_MAINLIGHT1 7
#define PIN_SWITCH_MAINLIGHT2 8


// Voltage Monitor  ///
const int voltageSensor = A2;

float vOUT = 0.0;
float vIN = 0.0;
float R1 = 28980.0;  //Actual resistance [R1 & R2]
float R2 = 7470.0;
int value = 0;


void setup()
{
  RemoteXY_Init ();

  pinMode (PIN_SWITCH_NAV, OUTPUT);
  pinMode (PIN_SWITCH_WINDOWS, OUTPUT);
  pinMode (PIN_SWITCH_WELD, OUTPUT);
  pinMode (PIN_SWITCH_MAINLIGHT1, OUTPUT);
  pinMode (PIN_SWITCH_MAINLIGHT2, OUTPUT);
}

void loop()
{
  value = analogRead(voltageSensor);
  vOUT = (value * 5.0) / 1024.0;
  vIN = vOUT / (R2/(R1+R2));
  RemoteXY.graph = vIN;
  
  RemoteXY_Handler ();

  //Will eventually monitor battery voltage once hardware is implemented
  //RemoteXY.graph = float (analogRead(A0)) / 204.8;

  if (digitalRead(PIN_SWITCH_NAV) == HIGH) {
    led.Update();
    led2.Update();
    led3.Update();
    led4.Update();
  } else {
  }

  if (digitalRead(PIN_SWITCH_WELD) == HIGH) {
    ledWelding.Update();
  } else {
    ledWelding.Stop(); // Have to stop the welding LED or else it will remain in a HIGH state
    ledWelding.Reset(); //Need to call Reset before any LED animation will play again
  }


  digitalWrite(PIN_SWITCH_NAV, (RemoteXY.switch_nav == 0) ? LOW : HIGH); {
    RemoteXY.led_nav_g = (digitalRead(PIN_SWITCH_NAV) == HIGH) ? 255 : 0;
    RemoteXY.led_nav_r = (digitalRead(PIN_SWITCH_NAV) == LOW) ? 255 : 0;
  }
  digitalWrite(PIN_SWITCH_WINDOWS, (RemoteXY.switch_windows == 0) ? LOW : HIGH); {
    RemoteXY.led_windows_g = (digitalRead(PIN_SWITCH_WINDOWS) == HIGH) ? 255 : 0;
    RemoteXY.led_windows_r = (digitalRead(PIN_SWITCH_WINDOWS) == LOW) ? 255 : 0;
  }
  digitalWrite(PIN_SWITCH_WELD, (RemoteXY.switch_weld == 0) ? LOW : HIGH); {
    RemoteXY.led_weld_g = (digitalRead(PIN_SWITCH_WELD) == HIGH) ? 255 : 0;
    RemoteXY.led_weld_r = (digitalRead(PIN_SWITCH_WELD) == LOW) ? 255 : 0;
  }
  digitalWrite(PIN_SWITCH_MAINLIGHT1, (RemoteXY.switch_mainlight == 0) ? LOW : HIGH); {
    RemoteXY.led_lights_g = (digitalRead(PIN_SWITCH_MAINLIGHT1) == HIGH) ? 255 : 0;
    RemoteXY.led_lights_r = (digitalRead(PIN_SWITCH_MAINLIGHT1) == LOW) ? 255 : 0;
  }
  digitalWrite(PIN_SWITCH_MAINLIGHT2, (RemoteXY.switch_mainlight == 0) ? LOW : HIGH);

  ///////Disabled until bugs are fixed////////////////////////
  /*  Dimmable LEDs controlled by Slider on Andriod   */
  //  if (digitalRead(PIN_SWITCH_WINDOWS) == HIGH) {
  //    analogWrite(WINDOWS, RemoteXY.slider_windows * 2.55);
  //  } else {
  //    analogWrite(WINDOWS, 0);
  //  }
  //  if (digitalRead(PIN_SWITCH_MAINLIGHT1) == HIGH) {
  //    analogWrite(WINDOWS, RemoteXY.slider_lights * 2.55);
  //  } else {
  //    analogWrite(WINDOWS, 0);
  //  }
}

 

 

 

 

[1]If you don't want the hassle of building the transistor circuit, you can buy pre-made modules that you can just wire in. Amazon NPN Modules

[2]This is just an example so you can power this with any 12V source. Just make sure it can supply a few amps!

 

One thought on “Space Dock for the Enterprise-D”

  1. Tuesday, 30 November 2021 09:39
    Test