• Summary of Server Power Supplies posted on 02 May 2015

    For my purposes, must have a cardedge connector

    Primary: HP PS3381-1C1 - 12V@32A, 5V@5A post

    I've been using one of these for a few months on my Mini Kossel without any issues. It handles a 40W cartridge heater and a 120W heated bed with ease. The fan is noisy, but it could be worse. Can be had for $10 shipped!

    I'm working on an easy PSU conversion board for this here.

    Other options:

    • Dell NPS330BB A - 12V@18A, 5V@35A, 3.3V@10A post Looks like a great LED PSU!
    • HP 511777-001 - 12V@38.3A post
    • Sony APS-111 - 12V@34A post
    • HP DPS-600PB - 12V@64.5A, 5V@2A, 3.3V@8A post
    • Some HP - 12V@100A post
    • More


  • Updating InfluxDB and Grafana on the Raspberry Pi posted on 25 Apr 2015

    Mostly for my own records, here's the straightforward way to update InfluxDB and Grafana. I'm actually running on an Odroid-C1, but these instructions should be the same on any ARM platform (and similar on other platforms).

    cd ~/gocode/src/github.com/influxdb/influxdb/
    ./package.sh 0.9.0.pre
    sudo dpkg -i influxdb_0.9.0.pre_armhf.deb
    sudo service influxdb restart
    cd ~/gocode/src/github.com/grafana/grafana/
    godep update
    git pull origin master
    go build .
    npm install
    go run build.go package
    sudo dpkg -i dist/grafana_2.0.0-beta1_armhf.deb
    sudo service grafana restart

    Might need some nasty stuff in between there

    • Merge config
    • Fix service


  • MQTT to 430MHz RF bridge posted on 06 Nov 2014

    For this project, I wanted a way to control my wireless power outlets from Etekcity with MQTT messages. MQTT is an excellent publish-subscribe protocol designed to power the internet of things; I use it along with Node-Red to control devices around my apartment.

    These outlets are controlled with a very simple protocol over ASK 433MHz RF. The protocol is documented pretty well elsewhere, so I won't cover it in depth.

    Months ago, I created an identical device using a Netduino 2 Pro, but it wasn't fast enough to handle the radio protocol, so I had to pair it with a second microprocessor (I used a TI Tiva C Launchpad). This iteration of the project was created to simplify my setup and to let me attach the device to my network via Wifi rather than wired ethernet.

    To create this device, I wired a TI CC3200 Launchpad to a 433MHz ASK transmitter. These transmitters are super simple - you have to supply 5v, ground, and a transmit signal.

    Once the device was wired up, all it needed was some code. I used knolleary/pubsubclient to communicate over MQTT. The application code is pretty simple - it subscribes to one topic and repeats any messages it receives over the RF link.

    Initially, I attempted to write the RF communications routine using the Energia supplied delay functions. Sadly, the microsecond delay function didn't work very well. When I measured the pulse timings with my logic analyzer, I saw that the delays were off, sometimes by a factor of 5x or more. Rather than troubleshoot a function I'm totally unfamiliar with, I took the easy way out - loop iteration based delays. With the help of my logic analyzer, I was easily able to create delays that perfectly matched my requirements. In a more complicated system, this wouldn't be a reasonable option, but this device is simple enough that it's not an issue.

    I've now been using this device for a few months and haven't had any issues with it. It's super reliable and can be hidden away anywhere USB power is available.

    My code is available on Github along with a wiring diagram.


  • Playing with a TI CC3200 launchpad posted on 01 Sep 2014

    I recently got a new TI CC3200 launchpad from Newark. This weekend, I finally had the chance to play with it. One word - WOW.

    Alright, so the demo that ships with the board isn't really impressive. What is impressive, however, is the CC3200 IC on the board. This chip costs about $9 in 1k quantities and contains everything you need to build a wifi connected embedded system. If you're familiar with the previous CC3000 wifi module, this IC is very similar, except it comes as a 64 pin QFN and includes an ARM Cortex-M4 applications processor.

    I haven't had the chance to get Energia up and running with the CC3200 yet; I'm holding off until they ship a stable version with CC3200 support.

    Since I haven't actually worked with this chip, I can't really give it a recommendation. Still, if you're designing a cost sensitive product that needs wifi connectivity, you would be crazy to leave this chip out of your evaluation list.


  • Force DPI Scaling on Windows posted on 12 May 2014

    Windows exposes a number of ways to disable DPI scaling, but no way to forcefully enable it. This is a problem when apps tell windows they support high DPI but then go on to render at exactly the same size - making for unreadable text and unclickable buttons.

    In my case, I tried editing the application's manifest to set DpiAware to false, but that had no effect. Rather than switch my laptop's resolution every time I needed to use Cadence OrCAD, I did a little debugging with Ollydbg. Turns out, at some point, SetProcessDPIAware is called. I already had an idea on how to solve it, so I didn't stick around to find the offending library (though I suspect it was being set by gdiplus).

    I probably could have patched OrCAD (less so gdiplus), but there is a far more flexible solution. All we need to do is hook the SetProcessDPIAware function as a program is starting, and we gain the ability to block the function call, leaving the target application no way to tell windows not to scale it.

    I used the minhook library to build a DLL that will do just that. When it is loaded by an application, the code replaces SetProcessDPIAware with an implementation that does nothing.

    The DLL must be present right as the app is initializing, else it won't be able to block the function call. Rather than inject the DLL at runtime, I used CFF Explorer to add it to the misbehaving application's import table. This causes it to be loaded automatically as the application is starting up.

    To maintain Windows 8 compatibility, I didn't hook SetProcessDpiAwareness.

    Using the tool

    To use DPIMangler yourself, get the binaries here. Next, get CFF Explorer or a similar tool. Open the target executable in CFF Explorer, go to the Import Adder, and click Add. Select the appropriate DPIMangler binary, then choose any exported function and click Import By Name. Next, click Rebuild Import Table and save the application. That's it! Next time you run the program, calls to SetProcessDPIAware will be blocked.

    If this isn't working for you, make sure the application doesn't declare DpiAware in its manifest. Additionally, it's possible the program is calling SetProcessDPIAwareness, which I haven't hooked here. If that's the case, feel free to contact me on Twitter, and I'll try to get a new release out.


    Before: OrCAD on high DPI is practically unusable with no scaling

    After: much more usable with forced scaling


  • Fixing MarkdownPad live preview on Lenovo Yoga 2 Pro (and other high DPI screens) posted on 11 May 2014

    Here's a quick and dirty font size fix I applied to the Markdownpad-github.css file. I just switched all font-size items to use em instead of px. It probably formats some things totally incorrectly, but it's good enough for me for the moment.

    To use, open Tools -> Options -> Stylesheets and replace the contents of markdownpad-github.css (or create a new stylesheet)

    See gist


  • Can letters in the kitchen posted on 01 Apr 2014

    Earlier today, my roommate texted me a picture of a sign that her work was going to throw out. When she got home, I convinced her that we should go and retrieve it!

    First, we removed the letter faces.

    With the faces free, we removed the screws that were holding the letters to their bulky mounting rail.

    Letters free from the rail.

    We were surprised to find that the letters were lit with neon. We removed the bulbs and placed them aside.

    After returning home, we cleaned the letters and lined them up to prepare for lighting.

    We then stuffed the letters with string lights.

    Letters in place above our kitchen cabinets. We were lucky they fit!

    This was a fun diversion for today, but we'll probably have to redo them with LEDs if we decide to keep them around for long.

    If you like this spontaneous bit of work, you should see what my roommate does over at Electric Trees!


  • Hotend for Metal FDM, Part 2 posted on 09 Mar 2014

    What if you could do something like SLS but with a hot tip? Take a 1200C tip and move around the work surface melting tiny metal beads. Alternatively, use a torch.

    Or perhaps metal beads could be extruded with FDM and fused later with a laser or in a kiln.


  • Hotend for Metal FDM posted on 08 Mar 2014

    Hotend & nozzle metal

    • Able to withstand 700-1100C
    • Not going to interact badly with molten aluminum, zinc, or copper
    • Hard enough that a 0.5mm hole is still 0.5mm after extruding a bunch of molten metal through it

    Hotend design

    • Thermal expansion from worst metal shouldn't cause a jam
      • worst case expansion * worst case tolerance + magic extra tolerance
    • Minimum amount of metal is molten at any given moment.

    Nozzle design

    • Metal should extrude with minimum turbulence
      • Nozzle 10x longer than diameter of extrusion?

    Coldend design

    • Thermal transfer up filament should be minimized

    Heat break design

    • Heat leakage into the coldend should be minimized
    • Filament must be supported enough that it won't bend under the pressure of extrusion
      • Ceramic sheath? Stainless tube?
    • If the heat break can't withstand the full pressure of extrusion, the hotend will need to be anchored to the coldend externally

    Extruder design

    • Filament should not be marred (eg, by a sharp gear) to minimize the risk of jamming in the cold end or damaging any components
    • Filament must be pushed with enough force to extrude
      • Need to find data on how soft metals are at various temps

    Filament research

    • Find filament of multiple metals in the same diameter & tolerance (at/near extrusion temperature after thermal expansion)


    In my mind, this hotend looks a lot like an E3d hotend made from steel or titanium, but with a directly mounted extruder and a lot more cooling (possibly water cooled?). It would be heated with a high temp heater cartridge (maybe?) and have a much heftier heat break, possibly supplemented by external thin steel wires.

    General questions

    • How will molten aluminum interact with titanium? Would it be an appropriate nozzle material? How about steel?
    • Any idea how to figure out a graph of extrusion force vs temperature for aluminum (w/ a given diameter nozzle)?
    • How horrible is it going to be to deal with thermal expansion across this entire design? If more than one metal is used, everything needs to be matched up for expansion, yes?
    • What sort of surface will be able to handle the thermal stress of being printed onto?
    • How can part adhesion to the print bed be maintained with high levels of material shrinkage?
    • Ceramics are exciting and could open a lot of opportunities, but I have no idea where to start with designing and specifying ceramic parts.
    • I know there are some additional issues I haven't mentioned here and certainly some I haven't even considered. Feel free to chime in an any of them!


  • Kinivo Bluetooth module posted on 28 Feb 2014

    Module Overview

    Kinivo BTC 450


    Audio wire colors: Left: blue, Gnd: red/copper twist, Right: green

    Power wire colors: Positive: red, Negative: copper (both are in thin plastic sheaths)


    All switches are NO with 10k pullups to 3.3v

    Has exposed SPI and UART ports

    Remote Overview

    Axxess RF remote

    Been running for almost two years on the same battery! Surprisingly, the plastic is visibly worn where it's been rubbing under my radio.

    • 8 buttons
    • Powered by a coin cell
    • uC is an rfPIC
    • Receiver uses a PIC18F2520

    I used a custom firmware to toggle test points on the receiver when buttons are pressed. I preserved all radio communications so I can still control the radio station or CD track (as if I'd ever want to).