Sep 032013

Up until now, you’ve only seen kuroBox in its 3D-printed white enclosure, but no more, behold my newest arrival:


It is truly a thing of beauty. It has been machined out of a solid billet of 6061-T6 Aluminium and then anodised. Its weight  feels just right in the hand, 266gr, sturdy  but not heavy. Anyway, here’s the rest of the shots:






And finally:kuroBox

May 052013

So, I promised lots of updates, but so far, I haven’t delivered! I’ve had some setbacks, as expected, but I’ve made incredible progress on so many fronts. Btw, if you’re not the geeky type, this post may not be for you, but just so you know: things are looking awesome!

But first, let me show you what my board currently looks like:

Current state of the kuroBox layout.

Current state of the kuroBox layout.

Yep, it looks like an absolute mess! But there are lots of very good reasons for this. I’ve abandoned a poor design choice I made early on. I was hoping to be able to use a SoC (System On a Chip) to offload writing to SD card. My idea was to buy a chip that would do the hard work of writing reliably to an SD card for me, so I wouldn’t have to learn about all that stuff, and could concentrate on the important things. It turns out that the datasheet for the SoC was … incomplete, and that it was actually quite crap. But it’s totally my fault, I didn’t do complete due diligence and I suffered a setback. That’s what all those red wires are for – I’m bypassing that SoC and going to the SD card directly. Good news is that I now have 4x more bandwidth to burn through, my board is cheaper to make (because of a lot less components), and I’ve learnt a lot!

Along the way, I’ve proven many of the independent systems, LTC, the graphics, RTC time keeping, RS232 interface, overcurrent protection, etc.

And this is what my current design looks like:



It kinda looks messier than before, but there’s only one main chip in there (a mighty 32bit, 168MHz processor with FPU), and wiring it up is a lot better. There’s also much more space for expansion for future projects. It’s currently at the fab house.

On another front, I think I’ve finalised the design for the enclosure:

Exploded view of boards, enclosure and connectors.

Exploded view of boards, enclosure and connectors.

It’s quite simple, just the lid with windows for the screen and buttons, and 4 LEMO connectors on the side, for power, LTC and 2 external serial ports. Once I get the PCB’s back from the fab house, I’ll do a 3d printed fitting and form test of the enclosure, and, once happy, I’ll send them off to get machined out of aluminium, and then black anodised. It’s going to look amazing!

So yes, stay tuned!

Feb 172013

2013-02-17 17.34.51I’ve been hard at work making a proof-of-concept demo of a IMU feeding rotation data into a 3d program.  In order to proceed with my idea and plan, I first have to prove that it works, testing the IMU under various conditions of speed, vibration, magnetic interference and long-term stability.

I found that the easiest way to test all this is to have instant feedback when I change the different parameters.

So I built this little box that houses the IMU, the VirtualCom chip, a Webcam and a USB Hub to join them together. This is by no way indicative of what the final box will look like – there will be no webcam and the data will be recorded on board onto an SD card. On the photo above you can see the webcam, and the microphone that came with the webcam (I didn’t want to remove it, so I just made a hole for it), and 2 rubber feet to avoid scratching the lens. The blue light indicates power and the green that the webcam is on.

I made a program using OpenCV for webcam capture and OpenGL for drawing. I overlaid some static geometry over the webcam footage that responds to the input from the IMU and I captured the result (which was a very interesting experience itself). You can see from the following video just a sample of the output.

Now that some sort of proof is done, that gives me the confidence to move onto the next step: designing the custom hardware. I will continue to do further tests and improvements in the meantime.

Jan 192013

Of all the crazy (but controlled) things I have done in my life, this is right up there!

When Fury Road finished, we were going to move to London, and find a job at one of the major studios, MFC, DD, etc. But I saw that I really liked the hands-on nature of what I was doing in Namibia, and the stuff I was creating had a real future.

So I decided to try and get my projects off the ground on my own, and for electronic work, there’s no better place than Japan! I am very fortunate to have an incredible wife who is Japanese, since this gives me residency rights in Japan.

So here I am, in Osaka, looking for a place to live, so I can set up my studio and get to work on these electronic gizmos for the film industry. Because there’s a whole bunch of ideas that I have that need implementing!

Over the next month I’ll be fitting out my studio with new soldering station, oscilloscope, IR reflow oven, 3d printer and (very importantly) fume extractor!

Lets get this thing off the ground!!

Nov 062012

Now, at the end of the year, looking back, how did the Aronia turn out? What worked, what didn’t, what did I learn and what would I do next time?



What Did Work

The TS7500 worked quite well, very easy to program (it’s basically straight C/C++ for linux), enough example code to get you into trouble and back out of it and the tech support people are very friendly, fast and helpful.

In the past, I had tried running a RS232 through the XUARTS at very high speeds (921600 baud) for continuous streaming (not burst transfers) and it had ended up giving me grief. The TS7500 locks the SPI bus every second for something, and that was enough for me to lose packets of data. But now, I decided to go through the USB port, through an FTDI USB serial port chip (more on this in another post), and not a single lost packet in 6 months of operation. I you don’t even have to boot all the way into linux – the image on the sdcard loads USB drive drivers, checks for a script called “tsinit” on the USB drive (if present) and executes it. I put all my code in that tsinit script (loading USB serial / ftdi drivers, making folders, setting up UARTS) and walked away!

The serial-enabled LCD from Seeedstudios was dead easy to use, you just have to make sure to flush commands before issuing more, since the UART driver on linux is buffered, and if you try to do packet-wait-packet type transfers, it won’t work as expected.

The Aronia PCB itself was designed with enough flexibility to change the way it was put together quite easily. I was using Molex Picoblades for my main connectors, but had also put in through-holes just in case. In the end, I ended up replacing some Picoblade connectors for direct soldering – much faster and easier, and I didn’t not require that particular part to be removable.

What Did Not Work

Well… the TS7500 also gave me its fair share of grief. Well, it’s mainly that I was trying to use the TS7500 as a pure embedded, real-time platform, which its not, so it’s my fault really. I was reading data off 3 serial ports, at different baud rates, with varying amount of data coming through. In theory, I should be getting packets like this: A, A, A, B, B, C, A, A, A, B, C, A, A, A, B, B, C, … (imagine I send 3x A packets, then 2x B packets, 1x C packet, etc…), but in reality, since the linux USB drivers would be “helping me” by buffering, I would read 20x A packets, then 10x C, then 5x B… etc,  so not really as interleaved at I had hoped. In the end, it didn’t matter as much, since the A packet is the “master” one, and the others don’t really change that much. In hindsight, I need a proper embedded system, with proper low-latency interrupts and where I have control at the end of each byte read.

We also blew up about 4 of these TS7500 boxes, kinda. We don’t actually know what’s going on with them. But they boot, get to the prompt screen, then reboot. Forever… We are abusing them quite a bit, so it’s quite a surprise that they are surviving this well though.

I had a couple of design flaws in the Aronia PCB. First and most important: I knew nothing about thermal design (operative word: knew, past tense). I now know a lot more! We were plugging these guys into 14v, I was then regulating to 5V with about 0.7A current usage. On a linear regulator – that’s a LOT of wattage coming off it. with only 2.5cm^2 of radiating copper thermal pad, in an airtight polycarbonate box. Yes, these linear regulators got so incredibly hot that they actually discoloured the PCB! I tried adding a 2x10cm aluminium plate, but that was also getting into the 90ºC+ range after 5 minutes. I ended up getting some SMPS from Recom, some 1A 34v-in, 5v-out ones and reworking them onto the board.

I also added, on the wires supplying the current, some diodes and fused to make sure that nothing blows up (except the fuse). All this should have been on the board, not added as an afterthought…

Another thing I would change with the PCB is to put the connectors at the very edge of the board instead of the middle. In its current form, I have to remove the TS7500 from on top so I can plug a connector in, which is very annoying when in the field. And of course, adding a console header to the board helps!

A massive let-down for me was my “brilliant” “UPS” “solution” that I had “envisioned”! Here’s my theory: 12V -> 5V regulator -> LiPo Rider Pro -> Aronia. The LiPo Rider Pro takes 5V in and outputs 5V. It also has a connector for a single-cell LiPo battery. When running off its input, it will charge the LiPo, when the input is disconnected, it will seamlessly switch to LiPo and boost it to 5V – exactly as what I want! The only problem is that the LiPo Rider does not care about the minimum voltage of the cell, so it will squeeze it for all the juice it has, even if it means over-discharging the cell. The cell has a built-in over-discharge protection circuit, where it stops giving anything if the voltage falls below 3.4V (or 3.3V, I forget). This, for the moment, sounds good. Except that the LiPo Rider will not supply anything on its output if a battery is not connected, even if it has a perfectly good 5V input. And this condition is exactly what happens when the battery is over-discharged, that it looks like no battery is there!

In the end, I just got rid of that whole thing and if power goes down, then power goes down. In practice, it didn’t really affect us much, but it did leaving me scratching my head for a few afternoons.