3D Printed Battery Recharge Dock for Parrot Rolling Spider

20150902_222523 (Large)

I got a Parrot Rolling Spider for fun. The batteries are 570mAH and the life is under 10 minutes, plus the reviews often mention that the batteries will lose their capacity quickly. Further research into this problem indicated that charging them slowly will alleviate this problem.

I wanted a few spare batteries and a way to recharge them. I decided to DIY a dock for them. I had a handful of spare parts, such as the MCP73831 and plenty of small perfboards. All I needed to do was 3D print something to hold the batteries in place, and this is what I came up with.

More pictures if you continue reading.
Continue reading

Olsson Block Low Temperature Troubleshooting

In my quest to have the best Ultimaker 2 possible, I have installed a Flex3Drive kit and Olsson Block kit.

Recently I have been having issues with inter-layer adhesion. I tried a speed test and would consistently fail them, either due to jamming or inter-layer splits… This is a story of how somebody more experienced in electrical and software engineering tackles a thermodynamics problem.

Bonus: this article contains a picture of my extra power 400W supply for the Ultimaker 2

Continue reading

Ultimate Ultimaker Upgrades 2015q2

After around 100 hours of printing, the teflon coupler above the nozzle of my Ultimaker2 started to deform under heat, causing friction on the filament. Combined with the relatively weak and not-gear-reduced feeder motor, this resulted in a frustrating amount of underextrusion.

So I decided to buy some replacement parts, and some upgrade parts in the process. Obviously I ordered a replacement teflon coupler. Second, I ordered a Flex3Drive kit. Third, I ordered a Olsson Block. After all of these were installed, I can honestly say my printer is now print-and-forget. In 30 hours and 5 filament swaps, I haven’t had any imperfections at all, and the only failed print was due to bad bed adhesion due to the model curling up. I haven’t had to touch the tuning menu once, and I never had to use my extruder floss. Continue reading to learn more about these upgrades and my experience with them. Continue reading

RoboGames 2015

I went to spectate RoboGames 2015. If you didn’t go, WHY THE HELL NOT?!

I live literally a 10 minute walk away so I went both Saturday and Sunday. Since I walked in, I accidentally walked through the back entrance, so I snuck into the pits without a badge 😀 but I did still pay for a ticket after. I got some pictures in the pits, not stuff I see every day.

I put together a highlights video. Actually probably only missed Friday, and missed 4 matches from Saturday and Sunday, I have about 20 GB of video… I’m putting a few up just as teasers but you should really come check out RoboGames next time or buy their DVD when they release it.

The combat is the only event where I could get good video without raising my arms. There were a ton of other competitions, like minisumo, line following, humanoids, soccer, hockey, etc. It really reminds me of the Canadian National Robot Games back in 2007, which I entered as a highschool student. The Canadian competition has long since been cancelled but it’s amazing how alive the Silicon Valley competition is.

Continue reading for more videos and pictures

Continue reading

SD Card Bootloader by Backdoor Code Injection

For various reasons, I decided to try writing a SD card bootloader for my Ultimaker2.

The project is open source and on my GitHub here.

My goal was to install this new bootloader without having physical access to the circuitry. Thus I cannot use a ISP tool and must be done through the bootloader that is already present on the Ultimaker2. The only way to do this is to partition off a portion of application memory region for a secondary bootloader that executes after the original bootloader. But the ATmega2560 has a restriction that prevents anything in the application memory region from modifying the flash memory at all. Overcoming this restriction is what this hack is all about, continue reading if you are interested in learning more.

Continue reading

PS4 Playing NES Cartridges

Update March 2015

This project won 2nd place in this Reddit contest about functional 3D printed projects. Thank you very much to ToyBuilder Labs for being the sponsor.

Questions and Answers

  • Why not use a bigger 3.5″ drive? They can hold much more and cost much less.
    • I can edit the design anytime I want and 3D print it anytime I want, so I will definitely consider it.
    • But I had a few spare 2.5″ drives laying around.
    • The fake cartridge is a funny idea so I did it for the LULz! (and protects the drives)
    • Please note: 3.5″ drives will require an external 12 volt power supply, while 2.5″ drives only require the 5 volts from the motherboard.
  • What parts are needed?
    • #4-40 thread 0.25″ long countersunk machine screws, for holding the hard drives inside the cartridges
    • #4-40 thread 0.5″ long countersunk machine screws, for holding the dock to the cover
    • 0.5″ long nails to hold the SATA connector in place
    • something like this SATA extender, but note that this isn’t the exact same one I used, so you should measure it yourself and edit my files before printing my files
  • How did you connect the cable to the motherboard?
    • This was actually pretty hard, I ended up gluing a popsicle stick to the connector first, and then used the stick to poke the connector inside and into the motherboard’s connector.
    • This can be improved by some sort of 3D printed dummy drive, but I got tired and wanted to wrap the project up.
  • In the picture of the Ultimaker, why do the plastic look a bit rough?
    • Those are failed prints, I only used them for the picture, specifically because the roughness emphasizes the fact that they are 3D printed.
    • The final good prints are so good that you cannot tell that they are actually 3D printed. The Ultimaker is very high quality.
  • Why didn’t you launch the game?
    • I didn’t connect the system to my network, so the PS4 didn’t let me launch them, since they are all digitally downloaded and thus require authorization first
    • Don’t worry, they all work once connected to the internet.
  • I’ve seen something similar before…
    • Adding a hard drive to the PS4 using SATA extensions isn’t a new idea at all, somebody already added 6 TB to it, using a 3.5″ drive, but he used a external enclosure and a external 12 volt power supply.
    • I went to CES2015 and saw Nyko’s Data Bank. I want to make it clear that I started my design a long time before Christmas, and was not inspired or influenced by Nyko
  • Ask me a question, if it is a popular question, I will answer it here.

You want files? Click Here. I hosted the files on YouMagine, and I provided the STEP file format, which you should be able to open with most 3D modeling software. So if you want to change the design for 3.5″ drives, or chose another cartridge shape, you can!

NOTE: the dimensions of the fake NES cartridge I used are not the same dimensions as genuine NES cartridges, so genuine cartridges will not fit in this project, and the fake cartridges will not fit inside a genuine NES deck.

Ultimaker2 Bearing Spool and Bearing Guide Upgrade

This is an upgrade to the Ultimaker2 3D printer for people who have spools that do not fit the original spool holder, and spools that are too tight and thus do not feed smoothly, causing under-extrusion.

It is composed of two assemblies: a replacement for the filament guide and a replacement for the spool holder. Both utilizes ordinary skateboard bearings to achieve smooth rotation. The conical shape of the spool holder allows for any sized spool to be used, easily swapped because it uses a wing nut.

um2 spool holder upgrade angleum2 spool holder upgrade sideum2 spool holder upgrade cross section

um2 filament guide upgrade angleum2 filament guide upgrade sideum2 filament guide upgrade cross section

Files are available on YouMagine. I want to emphasize that I am sharing the STEP files, not just STL, because STL are harder for people to import and modify than STEP files. SolidWorks files are also provided.

The cross section images shows you how to assemble the upgrade parts. The screw diameters are #6 for the filament guide and 5/16″ for the spool holder. Please figure everything else out from the cross section images.

Weekly Report December 20 2014

I have been using my new Aquarium Computer for a week now. It’s performance is great, but that is subjective, because I built it for my own needs and I feel that it meets them perfectly. The circuit I built for it is having problems, I will investigate further.

But I had to take it out of the tank already. I attempted to implement full drive encryption, which required secure boot to be enabled in the UEFI BIOS. Well… long story short, the UEFI BIOS crashed when I tried to save settings and the motherboard stopped booting. The only fix is to use the CMOS reset jumper on the motherboard. So I drained the mineral oil and did exactly that, and I also connected the jumper to some spare wires so if this happens again, I wouldn’t have to drain the oil again.

In the process, I found out that most of the hot glue has come loose. So now I have no fake plants or rocks anymore. I will rebuild the tank again with decorations, but next time I will use epoxy. (although the tank still looks beautiful without any decorations)

I also picked up a Seek Thermal camera. I have some pictures of the Aquarium Computer. Notice that I can see the hot and cold zones of the radiator, and the hot and cold tubing. The tank itself is pretty much one color only, thermal cameras cannot see through the tank, only the temperature on the surface.


The Seek Thermal is neat, I’d say it’s worth it. Apparently it’s not the best sensor, but it is the only one for Android right now. I don’t have any real professional uses for it, it’s just a toy for me.

Back to the Aquarium Computer. I noticed many things about the mineral oil. First, make sure you understand fluid dynamics a bit, you want to make sure you are not making the pump work harder than it is. What I mean is, place the outlet tubing in a shallow depth. The hot and cold oil don’t mix well, you can clearly see the temperature gradient visually because they have different refraction index. This means that the cold oil sinks extremely fast, instead of dispersing into the hot oil. I mention this because originally, I aimed my outlet tubing deep at the power supply, but now that I know this fact, I can have my outlet tubing much shallower and just let the cold oil fall onto the power supply. This made the pump work better because there is less pressure at the outlet. Also, hot oil flows much quicker, I noticed that running the radiator without fans will make the pump work better because hot oil flows better.

Also to the people who thinks that I don’t actually need so much RAM: i really need ram

Aquarium Computer

My trusty laptop is showing its age. 8 GB of RAM is not enough for the amount of 3D stuff I do now, and it can’t run the latest games at all any more. Since I got a full time job now (instead of a constantly travelling student), it’s time to get a desktop PC (first PC build, yay). But the process of building a PC is pretty boring, it’s just an exercise of picking out compatible parts for the right price. I decided to make it slightly more interesting by submerging the entire computer in a fish tank full of mineral oil.

UPDATE March 2015, I added a funny naked HDD activity indicator

Some pictures from the build process

20141214_234026gfx cardradiators under deskpcie risertop coverfirst bootdecorationfans

Animated Loop

Short Story (long story later, technical details and stuff):

Intel i7 4790S, Nvidia GTX 970, H97M chipset, Corsair CX600M. Built onto a polycarbonate tray that is then dipped into a fish tank full of mineral oil. Fancy features like bubbling treasure chest, NeoPixel LED strip, oil pump+radiator, temperature monitoring, removable SSD.

(part list? fine… here… these are not the prices I paid but here it is http://pcpartpicker.com/user/frank26080115/saved/HFDmP6)

Comments and questions are welcome, I would love to chat with you!

Reddit posts, please upvote: http://www.reddit.com/r/battlestations/comments/2pdd3q/aquarium_computer_mineral_oil_submerged_details/ and http://www.reddit.com/r/buildapc/comments/2pdeak/build_complete_aquarium_computer_mineral_oil/

Hi Hack a Day visitors, small correction: there’s 32 GB of RAM, I just didn’t put the same item twice in the part list.

News/Updates will be posted at the bottom of this page

Long Story… Continue reading

Q-Bot Tx Module for Taranis

Most micro (palm sized) quadcopters are RTF and comes with a crappy cheap transmitter, and I really want to use my awesome expensive Taranis. I found out that Q-Bot comes with a tiny transmitter module that I can connect to my Taranis.

I didn’t want some ugly thing dangling off of my Taranis so I decided to 3D print a module that will contain the Q-Bot transmitter circuitry and plug into the Taranis’ module bay, which fits “JR” style transmitter modules.

20141115_110602 (Large)
20141115_110254 (Large)

and here is what it looked like before:

The 3D files (SLDPRT, STEP, STL) Continue reading

My First 3D Printed Quadcopter

20141102_144912 (Large)20141101_120057 (Large)

3D printed using my Ultimaker2 and many colors of PLA plastic at 100% in-fill. It is my first design, featuring folding arms, tucked away electronics, and anti-vibration mounted flight controller. It is designed to be friendly with FDM 3D printers, employing some special techniques. The frame is extremely strong.

20141101_120023 (Large)3d_screenshot_23d_screenshot_120141029_202031 (Large)

I need more practice. I need to buy a few more propellers and few more batteries as well so I can practice for longer.

Flight controller is a Continue reading

FrSky X4R-SB Smart Port hack and Naze32

Continuing from my previous FrSky X4R-SB hack (read for some context), I really wanted Smart Port telemetry to work with Naze32. I forked the original baseflight firmware and added two key new functionalities:

  • implemented the Smart Port telemetry protocol
  • GPS can be assigned to any serial port (as opposed to only one port)
    • this is important because we are running out of ports
    • I made it possible for GPS to be connected to software/bitbang serial, to free up a hardware UART

please read my fork’s wiki, at this time, I can only test with my limited hardware, more help testing/coding would be appreciated.

Update 10/26/2014: I was asked to make the same contribution to Cleanflight, which I have done today.

The new forked firmware requires a circuit modification on both the X4R-SB and Naze32, see pictures: Continue reading

FrSky X4R-SB S.BUS anti-invert hack

I am building a quadcopter using a FrSky Taranis X9D radio. It came with a FrSky X8R receiver. I wanted to keep my wiring clean by using the S.BUS feature on the FrSky receivers, I purchased a smaller FrSky X4R-SB receiver. The X8R has 8 PWM channel pins and the X4R-SB has 3 PWM channel pins, but if I use S.BUS (which is serial, not PWM), I can access 16 channels using only 1 pin, on both X8R and X4R-SB. The X4R-SB is much smaller, making it more ideal. (do not confuse the X4R-SB with the D4R-II, this is important, D4R-II uses CPPM, not S.BUS)

(update 10/25/2014: a follow up hack for Smart Port)

I want to use a Naze32 flight controller, which is open source and does have code to interpret S.BUS protocol. S.BUS is UART communication but it is inverted and the Naze32’s UART cannot accept inverted input. Some flight controllers, such as the Pixhawk, has a dedicated inverter just to solve this problem, but the Naze32 does not.

The first option is to buy a “S.BUS to CPPM converter” but CPPM is not a serial bus like S.BUS and thus does not have the advantages of being a serial bus. CPPM uses timing, timing needs to be measured (measuring things = possible error) and the signal edges can be affected by capacitance, noise, etc. Also having such a converter means there will be a tiny bit more latency in the system. These two disadvantages are probably too insignificant to notice performance wise. But I still didn’t want to spend another $13 + tax + shipping just to solve a problem that shouldn’t have existed in the first place.

The second solution is to buy an “inverter cable” which is a cable that has a NOT gate inline and then shrink wrapped. Or I can just buy a NOT gate and make the cable myself. I still didn’t want to spend the money. I opted to hunt down the inverter on the X4R-SB circuit instead, and connect a wire to the input of the inverter (labelled as “A” in the datasheet). This provides me access to the un-inverted signal that I can directly connect to the Naze32.

See the pictures below to understand how this hack was done.


And just in case I confused you even more, all you need to do is connect a wire to the “A” pin.

I have tested it with Naze32 Rev5 and firmware f4d556c68876ccd5902bddf1cade32f1bb382c9f. Works like a charm.

It is probably possible to perform the same hack on a X8R but the X8R is constructed using two PCBs and the inverter is covered up by one of them. Separating the two PCBs is very difficult and risky.

The Smart Port (I think it’s also called S.PORT) is another inverted serial bus available on the X4R-SB and X8R but it is bidirectional. Since whatever you want to connect to it will need a bidirectional circuit anyways, it is not worth it to perform another surgery on the Smart Port. Also, the Naze32 can use SoftSerial to transmit in an inverted fashion, so a dedicated inverter isn’t even required. (SoftSerial would not work well for taking inputs, but outputs is OK)

3D Printed Raspberry Pi Case + Camera Case + Server

There is a law of the universe which states that if you own a Raspberry Pi and a 3D printer, you must print a case for it.

3d_trans20141018_193540 (Large)20141018_193504 (Large)20141018_193521 (Large)20141018_193530 (Large)3d_exp_bot3d_exp_top20141018_005438 (Large)20141018_005336 (Large)3d.fw

There are plenty of case designs for the original R-Pi Model B, and some for the R-Pi Model B+, but there are a few minor annoyances I noticed about them. Plus I really like DIY my own designs, so I designed my own case to suit my own needs.

  • Designed specifically for 3D printing, meaning careful attention to how plastic is extruded, no weak spots, and no overhangs. Plenty of fillets and chamfers.
  • No screws required. The case is held together using latches that take advantage of the plastic’s natural flexibility. It is designed for just sitting on a desk, or attached via velcro/double-sided-tape.
  • I also designed a small case for the camera, which follows the same principles.

These parts are because I am going to set up a web server for my 3D printer, running OctoPrint and also serving live video through the camera. I also setup a cron job to take a picture periodically and upload it to this server. I can also stream video to my Ustream channel. (neither of these servers are 24/7)

I am sharing all of the source files for the models, not just STL files. It is very annoying when people only share STL files, because STL are not import or editing friendly. With my SLDPRT file, you can change one height dimension inside and it will re-adjust the entire case, maybe if you need more clearance on the bottom for screws.

files for R-Pi case

files for camera case

Ultimaker2 Improved Filament Feeder

The Ultimaker2 3D printer has a problematic filament feeder mechanism assembly. When the filament is stuck and the feeder motor turns, it can grind away the filament, causing a gouge in the filament. The gouge makes the problem worse since the tensioner bearing will force the gouge into the feeder’s knurled wheel more, causing even more grinding. This jam happens frequently because sometimes even if the temperature sensor reports that the print head hot end has heated up, the plastic hasn’t melted yet and can’t move yet.

The Ultimaker2’s feeder design is both beautiful and disappointing. It is beautiful in the sense that is is symmetrical and compact. If you had a dual extruder, you can use the same feeder mechanism for both feeders, cutting down on manufacturing costs. But it is impossible to disassemble without removing the stepper motor because the same 4 screws that holds the feeder together also holds the stepper motor in place. If you attempt to open the feeder mechanism to clear a jam, the motor will fall off. The motor is also covered by a metal casing so you need to remove the casing as well. This is very annoying.

There is no other way to move the tensioner bearing because the design is so compact and the spring is tight. There is no other way to remove the feed tube either.

What I needed was a feeder mechanism that can be opened up without removing the stepper motor, and also allow the tensioner bearing to be moved out of the way easily. I came up with the following design:


Continue reading

3D Printed Tripod Adapter for Smartphones

I got a new 3D printer, a Ultimaker 2. After testing it out with some small test prints, I printed my first own custom design on this printer. (I’ve only designed for SLT printing previously and not extrusion printing before, this is my first design for extrusion printing).

It’s an adapter that holds my smartphone (Samsung Galaxy Note 3 with a wireless charging S-View flip cover case) and has threads (a 1/4″-20 threaded nut) so it can be mounted to a standard camera tripod. This phone has 4K video recording so why not?

The design is very custom because I need to consider the fact that I have a S-View flip cover case.

(I know I could also use threaded metal inserts, but nuts are easier to buy at the local Home Depot)

Continue reading

Weekly Report August 16 2014

Nothing geeky to talk about. I managed to rent a 1 BR apartment in San Mateo for about $1725/month in a pretty good spot (but whoever built the place did not seem to own a ruler and whoever painted it didn’t own masking tape). Here’s me planning the layout using SolidWorks and Ikea’s catalog.
ikea floor plan

Weekly Report July 20 2014

My project involving the PlayStation 4 and DualShock 4 has caught the attention of Sony, and after interviewing me, Sony Computer Entertainment America hired me as hardware engineer for PlayStation peripherals. Today is the day I take a one way flight from Toronto to San Francisco, and tomorrow will be my first day! Follow your passion, don’t be afraid to fail, and don’t be afraid to show off your skills.

And since I’m leaving my family… Continue reading