Mini-Monolith 2.0

Index


Now with LAN-Syndicate 2016 over, it's now time to build a more LAN friendly rig. MM 1.2 worked out okay, but now it's time to build something more practical. With my limited work space, building an all-acrylic case was the only option; but now I found a place I can do some metal work, so it's going to finally have a metal skeleton this time.

So ultimately I still want both the video card and the mother board being vertical (enjoy the view of both + avoid pooling water in case of leak), but to avoid wasting vertical space I'll use a riser cable to put the GPU behind the motherboard instead of on top.

For the first 6 months it's just going to be parts collection and another year to put it all together. Just as a preview; my build is going to involve 2 pumps 2 radiators (a 2 fan and a 3 fan rad.), a peltier plate and 3 water blocks. I'm going to try keeping it within the 9" x 14" x 22" luggage limitation which will be interesting to say the least.

I'll be updating the parts collection as they come in.



Yay, more parts came in: Got aluminum bars for the mother board base & case chassis, threading rivets, pcb boards fittings, temp & flow sensors, pass through plug parts, peltier, pump and fittings. TIG welding the aluminum is going to be interesting....


Unfortunately the pump threading wasn't NPT 1/4", but NPT 1/2", but that nothing some acrylic and NPT pipe tap can't fix. On a side note, who ever came up with the NPT pipe standards must have been high on something, 1/2" is more like 0.8" diameter.

5 Likes

That's an interesting project. What you're going to use the Pletier plate for?

Extra cooling! The idea here is one loop will pull air in, cool the water with the peltier and then cool the CPU and the other loop will be exhaust that pulls heat from the other side of the peltier. There will be a switch turn off the second half (+peltier) when not needed.

I'll be following this project, I'm especially intrigued by your plan with GPU placement.

If you look at the picture above, you'll see how the PCI-E cable is bent. The back of both boards will face each other, so the GPU fans will face to the left and the CPU socket will face to the right. Also you'll notice the stripped power cord; planning on passing the PSU through to the front.

Oh I can see how it is going to work, I am just eager to see your implementation.

Going to be interesting, can't wait to see how it goes.

Where did you get the riser cable? I need one for my current scratch build
Cheers

Seems like this would have been more useful before LANSyndicate? Being that LAN parties are kind of throwback

Regardless... looking forward to the build, sir

Well it's more of a matter of which LANSyndicate. This year's party was just a 20 min drive from my apartment. Also it's been less than a year since the completion of v1.2 of MM.

link: ebay/newegg .... on a side note, considering your build will likely finish before mine. Let me know if you encounter any issues. Also make sure your build involves drawing power externally (from PSU and not pci-e slot). So make sure it's a GPU with a 6/8 pin pwr connector on it.

So at this point I think I'm going to start with the water block. Although the one in MM 1.2 is nice, getting to the screws is annoying and having space to have it spring pressed rather than worry about tension the bolt is placing would be a plus. So instead of the T shape of the original, it'll be an inverse T with the 90 degree turn happening in the acrylic rather have a fitting do it (another plus as I don't have to worry about leaking 90 degree fittings). So for now I'm working on the UV lighting at the base... almost forgot, I'm also making it florescent blue instead of green.

Initially when I saw this LED strip, although it was rated for 12V, I thought each of those resistors went to an individual led in a parallel structure, but I found out those LEDs were in series, which led to the proto-board below.

<img src="/uploads/default/original/3X/8/a/8a4c6462371bd2fe0776cf5353be2d303e96b141.jpg" width="360" height="204"

As for the remainder of the strip, I'm going to glue them under the UV-green sata cables so they pulse.


On an unrelated note; my key board broke X_X (this is what I get for messing with the escape key cap)... but nothing a little soldering can't fix:


Kind of annoying when the last screw is hiding under the logo :P.... might replace it a custom back-lit logo if I get some time.

Also, I'm working on the power button too. For those wondering what's so special about two led lid buttons; rather than the traditional blink for sleep mode, it's going to pulse when asleep and have the power only pulse when off (yes there's a battery involved).

Since the power button is lower, I needed to add a riser, which is handy to fit more in a small space.

So that's it for now, next I'll split the proto-board and build the circuit for the arduino/cabling to attach to the motherboard.


I split the board and added the spacers, but the wiring will have to be for another day. After a few more cuts, the final board footprint will be about 1.5" x 3/4".


Got the board cut down to size (1 5/8" x 3/4"), but I'll probably hold off on the remaining wiring till I have everything for the front panel.

I don't know if you have enough room left on your Arduino but you could connect it to the internal USB header and make a display that shows the booting sequence and the system info.

1 Like

Actually there's going to be 2 arduino boards (the one hooking up to this being a fio as it has a battery circuit to it). This is going to be part of a 4" bay taking up 2 slots (2"x4"). On that note, have a link on a demo of that? Does it need to be one of the newer arduinos to do this? If an aduino can tell via USB if the PC is sleeping, this may even simplify things more as it eliminates a circuit.

I couldn't find the original link I looked at a couple years back, but I've found this: http://blog.workingsi.com/2013/07/lcd-system-monitor-for-pc-case-bling.html?m=1

I hope it's helpful.

Unfortunately that one is dependent on the OS, however this one covers it. Thanks for providing me the idea, now I don't need to rout peripheral power as a way to detect sleep mode.

1 Like

You're welcome! I'll follow the thread to see everything put toghether :D Good job and good luck, you'll never know when you'll need some.

Just installed the modified arduino ide... not as straight forward to install...
For linux:
After unzipping it:

  1. make sure Java 8 is installed
  2. $cd Arduino-master/build
  3. $ant
  4. $cd linux/dist
  5. $./install.sh
  6. run arduino (not the one in the local directory)

Update:
I ended up needing to try a number of things to get it to work. So I ended up running both install scripts in linux/dist and linux/work and before that running $ant build linux-dist . Anyway, if it all works, the version should be 1.6.10. I couldn't get the version of the code with the call backs to work, but I was able to get isSuspended() to work. By the way here is the git hub link.

So now the new circuit will involve a fio that will handle controlling the LEDs of the button and a Leonardo board for the USB and driving an OLED display/other lighting effects. Additionally the Leonardo board will also deliver power to the FIO/battery charging circuit.

Got the wires twisted (via drill):


solid yellow -> pwr sw | solid black -> reset | black yellow -> pwr LED | blue yellow -> HDD

Added pull down resistors to detect the LED input and sleep signal.


Technically for the LEDs I'm reading both ends, so it's not entirely a pull down set up and I have 2 LEDs for debugging.


Finished wiring everything (lots of wires X_X). Unfortunately the power connector for the battery was backwards (ya.... who thought black = 3.7v was a good idea), so I ordered another Arduino FIO.



Got everything wired up and sleeved. As you can see in the close up, I have all the header connector grouped in one connector (there's only a handful of ways the header can be arranged). Also I've tested it with MM1.2 without programming the leds (only debug LEDs light up).



Just finished programming the LEDs. I kind of forgot that I can just detect sleep mode via the power led blinking, so now I have 2 ways in the event newer mother boards do it differently.

CODE:


//LED pins
#define O_PWR_LD 3
#define O_SPWR_LD 5
#define O_HD_LD 6
//analog input pins
#define A_PWR_P 2
#define A_PWR_N 3
#define A_HD_P 6
#define A_HD_N 7
//external sleep signal
#define S_SLP 2

enum PStatus { SLEEP, OFF, ON };

PStatus gStatus;
int gOffTick;
int gOnTick;
int gFadeTick;
int gTick;

void setup()
{                
  pinMode(O_PWR_LD, OUTPUT);
  pinMode(O_SPWR_LD, OUTPUT);
  pinMode(O_HD_LD, OUTPUT);
  pinMode(S_SLP, INPUT);//has external pull down resistor
  
  gStatus = OFF;
  gOffTick = 1023; //off tick ceiling
  gOnTick = 0; //assume off
  gTick = 0;
  gFadeTick = 0;
  
  analogWrite(O_PWR_LD,250);
  analogWrite(O_SPWR_LD,150);
}

int fadeValue()
{
  return gFadeTick > 100 ? 100 - ((gFadeTick%100) * (gFadeTick%100) / 100)
                         : gFadeTick * gFadeTick / 100;
}

void showOn()
{
  analogWrite(O_PWR_LD,250);
  analogWrite(O_SPWR_LD,150);
}
void showOff()
{
  analogWrite(O_PWR_LD,fadeValue());
  analogWrite(O_SPWR_LD,0);
}
void showSleep()
{
  analogWrite(O_PWR_LD,fadeValue()+1);
  analogWrite(O_SPWR_LD,fadeValue()+1);  
}

void updateHD()
{
  int v = abs(analogRead(A_HD_P)-analogRead(A_HD_N));
  digitalWrite(O_HD_LD, v > 200 ? HIGH : LOW); //greater than ~1v
}

void loop()
{
  updateHD();
  bool forceSleep = digitalRead(S_SLP);
  int v = abs(analogRead(A_PWR_P)-analogRead(A_PWR_N));
  
  gTick = (gTick + 1)%15;
  
  if(gTick == 0) { gFadeTick = (gFadeTick + 1)%200; }
  
  if(v > 200)
  {
    gOffTick = 0;
    gOnTick = gOnTick < 1023 ? gOnTick+1 : gOnTick;
  }
  else
  {
    gOnTick = 0;
    gOffTick = gOffTick < 1023 ? gOffTick+1 : gOffTick;
  }
  
  if(forceSleep)
  {
    gStatus = SLEEP;
  }
  else
  {
    switch(gStatus)
    {
      case ON:
        if(gOffTick > 5) { gStatus = SLEEP; }
        break;
      case SLEEP:
        if(gOnTick > 500) { gStatus = ON; }
        else if(gOffTick > 1000) { gStatus = OFF; }
        break;
      case OFF:
      default:
        if(gOnTick > 0) { gStatus = ON; }
    }
  }
  
  switch(gStatus)
  {
    case ON:
      showOn();
      break;
    case SLEEP:
      showSleep();
      break;
    case OFF:
    default:
      showOff();
  }
  
  delay(1);
}

Pretty jealous of your parts box (and the Mobile Suit), where do you get your parts at? I just look at amazon, ebay and the few radio shack closing sales left. Any better places to look?

I like the idea of this build, looking forward to more updates.

That's just the tip of the ice burg, got 3 more of those and stack of tool boxes.

70% ebay, 25% amazon and 5% from Fry's electronics (in store). Typically if I don't want to spend much, it's ebay (from china) and if I need it sooner, it's amazon via (prime service). Once in a while you'll run into a us ebay seller that's cheaper than amazon.

1 Like