Preparing for LayerOne 2012 at Null Space Labs  our awesome hacker conference in Anaheim, CA on 5/26/2012!

This year for our electronic badges we wanted something that people could maybe get some more interaction out of than is usual. So I figured lets make the badges into RC cars. The idea being the badge itself was the chassis for the car.

First off I thought buy some wheels, motors, gears from some hobby/robot store and use those to build up the cars, well that didn’t go well unless our budget was $100’s per car, its crazy how much people charge for the little wheels and motors kits.

We looked at the usual Tamiya kits which aren’t terribly priced, strangely even though Tamiya is about 10 miles from us, it was cheaper to buy them from abroad and ship back, but still very costly. Also I wanted tanks, but sadly no.

These are about $18 ish, it varies. It does have more parts though but the gearbox though a sheer master of Japanese ingenuity and design, won’t work for us.

Next was the usual hobby and robotic online stores, waaaaaaaaaaay more expensive, motors alone were crazy priced, especially the geared ones. So plan C, China.. Remember we need motors, mounting hardware, hearing, wheels, axels, steering mechanism, remote control parts.

I live on the edge of the Toy District in Downtown Los Angeles, so I wandered around and looked through the various stores for suitable donors.

We pulled apart a bunch of these figuring we could just take all the motors and wheels off and re-use them, and we could at a massive saving the FX Race car I picked up for $3.50

Pulling the cars apart we found they all used the RX-2B/TX-2B chips, I contacted the OEM in China for some of the chips and we brought in a bundle of them. Silan Electronics. Data Sheet

Of course its such a popular chip, others have come across it too

krs did a way more awesome schematic though

We didn’t manage to source the SMD version which some cars had, some of which are a knock off of the Silan. For a very simple short range RF setup with 5 functions its not bad at all. The (RX-2B/TX-2B) chips themselves has nothing to do with the RF stage, it just encodes or decodes the pulse train into an on/off for each of the 5 outputs.


So I started working on  a prototype car I used the electronics out of the car, and the wheels and motors, the top part of the PCB we reverse engineered the remote control and added it to the badge pcb, it was designed to snap off so you could drive the car part around and it’d still identify you as a conference attendee.

Paper aeroplane with wheels. Back to the drawing board.


Note to self, check wear on router bit first…..

But now we’re getting to the basic shape, the rear and front are both measured up to fit.


Here it is compared to our cheapest car and the most expensive (at the toy market and its still only $12!!) Geared motor and motorised steering. Yes they’re cheap motors and they’ll wear out but the kits are $3.50 – $4.50 ish and you get two motors.

Its drivable at this point, the front wheels get stuck the maximum turning angles.

Back to eagle, to refine it a ‘tad’. Add three batteries, remote and the car. We’re using CR123a’s


Cut it out. Basically Model T to well a Model T really..


This is how Ferrari started BTW

Add some more bits, to hold the rear drive motor we had to go around the wheels rather than sleek, this isn’t great but not really an easy way to hold the rear on.

this one only has one battery, and so its running at 3V, a bit less since its an old battery. Adding two batteries its a lot faster. Of course all the video we shot of the nicer cars and other driving, seem to have disappeared..


The tuneable inductor was going to be the tricky part, krs and mmca sat and tried out different settings, a resistor is used to set speed of the encode/decode time allowing multiple cars on the same frequency. See page 6 of the data sheet 

The nicer cars have a 27.145Mhz carrier frequency crystal, the cheapest cars didn’t use crystals at all.. The FCC has been informed obviously. However they are surprisingly accurate.

The crystals were ‘hard’ to get , read unpossible in the USA. eBay as usual came through, one seller agreed to DHL them to me and I got them in a few days from again China, which is great, of course all the others I bought that had ‘30 day’ delivery times also turned up the next week. So I have quite a lot of 24.145Mhz crystals for you know all those things that I use 24.145Mhz for, don’t be surprised to see us selling them on eBay Winking smile 

We built a test harness for the chips to see how it works, it mixes a a frequency with a pulse train, sends that out, strips out just the pulses and the chip decodes it into a single pin on the ic, left, right up down etc.

Everything was going pretty well, it wasn’t going to break the bank for us and we had a pretty good car running around. It was zippy and as easy to control as the normal ones.

So I think ok better buy all the cars, head back to the same store, with one of the cars, the business card and quote from the first few we bought. The guy swears he’s never sold them, even though I have pictures of us in the store buying them. So that’s a problem the next cheapest car is $5.50 I haggle him down to $4.50 and knowing I have some of this newer type at NSL, I head back to take it apart and see how it goes together so we can mod the PCB chassis.

I take apart all of the other cars, not one of them is suitable for mounting as easily (of course) I find the distributor, they’ve either gone under or changed names, I find the new supplier in the same address but they don’t carry that line…

So what do we do, time is getting short.. OK I think, we’ll just give people a finished car and a remote, but that’s not much on the badge.  So of course what do we add to it, yes everyone’s favourite  “open source/hardware” begins with an A ends with ‘sounds terrible to the average Italian’.

We can still use the parts from the slightly more expensive cars as bases for PCB cars and robots but we’d need some more standoffs and bits to mount the motors, much easier when you’re building a few of them at the space, but the idea is to get people up and running as quickly as possible at the conference so they can hack on them and enjoy the rest of conference.

I redesign  the badge and have them sent out for quick turn PCB at Pentalogix.

A few minutes later and here it is. We stripped off everything not needed and made it able to run off 3V or less and 5V USB with magical jumpers. I forgot one of the power traces, so a quick wire jumper after the old, why isn’t it booting up! We’re using the slowduino boot loader (page is down) so it can run at 3V albeit at a slower clock rate of up to 8Mhz. We left the pads for the xtals too though so it can function as a full speed device.


So now instead of it being  car, it’s a remote control that has the inputs wired to the ATMega CPU so that it can be controlled via USB, autonomous, strapped to the car, add sensors , switches etc. We left in the blink LED well because LEDs and the duino..

The QRCODE came from an eagle script on a forum post from honken on Ian Lesnet’s dangerous prototypes forum, which is a great place btw

The top part you can cut off and the two parts still work, like everyone thinks worms can do. Though if you cut it off badly, neither will work…

New donor car, sadly not as awesome. I did try!

mmca and krs further tune and identify the parts we need. Spec Ana time, looking great.


Tuning the antenna lengths, by (A) doing the maths, (B) guessing and cutting lengths.  The peak is the 27.145Mhz the blips are the encoded data for the remote

Guessing worked better,, science!! oh wait!

Also you can see our spindle for the mini CNC PCB we’re building, its been sitting there since late last year…never enough time…

This actually worked for the proxmark, just a spool of wire. I think our best antenna was around a metre


It drives..



OK so now that’s working back to the store and pick up cars and hoping the guy still sells cars, that lady is the one who originally sold me the other cars, and she remembers but its all too late now.


This left side is pretty much all helicopters and cars. As I wait for krs to come pick me up they try to sell me helicopters and all sorts of other things, those ones are IR LED based for the remote control, but that’s another story.


Cheap $4.50 crap you say? Well consider this

Those ‘drift’ cars come with one on/off led headlights, tail lights, motors, spare wheels, rechargeable batteries, aa batteries, remote and some other stuff, I picked them up for $8 for staff and other volunteers. the other boxes have the $4.50 cars. Also they drift awesome since they have shiny plastic wheels, lots of fun and great donor parts.For $8 ! Granted we’re limited on what we can do with it as a robotic base, but for lots of cheap steerable bots its great.

For that price its really well made too. its got a can style electrolytic cap!, actual connectors and lots of screws holding things together.


Our pile of donor cars gets bigger along the way.. The engrish on these is great btw. It is all FAST YOU GO and SPEED BECOMING etc


And our neat pile of cars gets reduced


krs making the test boards.

With a prep sheets to help people build them at the conference.



I redesign the badge and send it in to Pentalogix’s off shore PCB fab.  We got them today (Wednesday), the conference is on Saturday.

Looks ok right? Granted I admit I didn’t spent as much time on the graphics this time…. The QRCode works great but I did waver on changing the URL to a or something so we could have changed the link during the conference.. Ahh well. I also have a QR code for NSL with the URL as a graphic inside it but I didn’t want to push my luck on how well it read. I spent a more time drawing the L1 logo, rather than stick with the BMP to eagle conversion, I did that the over drew it with rectangles and a circle, since its more of an even finish and easier to scale. the www box was meant to be place holder.. We used the standard 2×3 ICSP header instead of usual 6×1 which was a hassle since all our 2×3 to 2×3 cables had been converted into 2×3 to 1×6 adapters.. But easier for others. Which reminds me to go place an order for 2×3 IDC crimped headers..


But wait what??? The PCB is twice as thick!! its .125 vs .0602ish. I check the email order and sure enough I ordered .125 , I talked to Pentalogix and sure enough I did order that, the quick turns were .060s . I thought ‘oops’ so after some investigating I found a slight bug in the element14 to Pentalogix Eagle PCB quote web page, which Pentalogix are now aware of, it doesn’t properly transfer the thickness of the board and changes it to .125” you can change it here, but to be honest ‘finish thickness’ I didn’t notice as being 0.125” as the thickness of the PCB, plus defaults, It’s my fault though, I should have spotted it.


Anyways no biggie, it can probably stop bullets now. Its solid…

Blink ! krs built this while I was writing this post. One nice thing about the thick board is that the pins don’t protrude out the other side, so for a badge that’s great! since no pins to mess up fabric

We also get to break out Pickobear for the speaker add on, it’s a shield that plugs in and it’s a remix of the last years badge, but designed as a quick build with a few days turnaround.


Getting crazy! (still have to write the code for it!) its 11:17PM Wednesday….. Plenty of time.. It has a TI TPS61040 boost convertor on it too. Also we have to test it… yes hackerspace….


Batteries and holders arrived today as well, AA’s and CR123as and the battery holders .. super cheap too! from luckily paypal screwed something up, I’d ordered them from elsewhere and batteryspace had them cheaper, so I was able to reorder.


We’re giving away some prizes to people who do the best car/badge hack at layerone , they’re not awesome prizes but hopefully someone likes them, they’ll still have a RC car and a ATMega based controller board.


There’s a lot more I’m going to add to this post, especially technical details. All our projects are open source and are available in our SVN in including all the screw-ups right from the start.. I’m exhausted after this project, and we haven’t even got to the conference yet ! We’ve also got out PCB CNC we’re designing too.

It’s a shame we didn’t get the PCB car thing, I wish we had but it was just time and uncertainty and these are much more hackable with the CPU added.

Packing all the stuff for layerOne, as usual we’ll have an awesome HHV with scopes, Metcal irons , hot air guns  and hot plates, and we’ll be teaching as well as building kits. Hope to see some of you there.


If we’re using shoelaces as lanyards, the lanyard supplier let us down and they didn’t turn up on Friday morning…. the parts from Digikey are supposed to be in on Thursday PM..  Talk about cutting it tight, this is why Joe Grand did an awesome job at Defcon a much larger conference.


Also our 90W laser cutter we imported from China decided to clear port on Wednesday as well, so that is fabulous it would have been really useful to have it earlier  and now it gets to sit in a box in a warehouse til after layerOne.




next years badge ?



Fuses (when I get to the conference, and think OMG what are the fuses, even though we’re preprograming)

E 0xff
H 0xDA
L 0xE2

[Null Space Labs] = Juki 360 Rebuild, Part IV. Yes we’re in LA.

So it been a while since my last update, my lil’ dog of 16 years had to be put down and I wasn’t feeling it, then family visited from so we stalled abit.

So quick updates for the tl;dr people :-

  • Head rotation works, but have to add an encoder wheel since we ‘forgot’ about the tool home position inside the head tool pickup…
  • Y axis is all upgraded, new stepper motor drivers are in 1/2 step is on.
  • Switched to GRBL and StepDir, instead of, uhh, not stepdir.. Though using the
  • OpenPNP base firmware revision, i didn’t realise it was different til after porting it.
  • GUI is almost done, it can place one full board from feeders and trays
  • Replaced hoses as the old ones burst, which only happens when you say right lets video this.
  • Trapezoidal for the servos courtesy of Grbl.
  • Still having some issues with the vacuum sensor, might be bad or low pressure or something else, turned it off for the moment.

Pickobear uncut.

So we’re able to pick up and place with the new Grbl firmware and the updated GUI, its all GCODE now. I’ve moved more of the functions into the GCODE vs individual move, drop , vacuum, since the communication is just serial rx/tx and serial is a PITA for this sort of thing, since its all ACK/re-ACK. With an M command its just e.g. M21 pickup part, M22 putdown part and the machine reports yes/no. FTDI’s are decent chips but they will break down comms after long datastreams, I’ve had a lot of problem with them and high speed streaming, as well as overlapped IO support is meh, events don’t work that well so multithreaded serial comms based on events is in theory great, but the practise doesn’t always work well. so its all software handshakery.

We’ve done a lot of changes since the last update.


Grbl’s great, its easy to use and easy to add on too, we were already using the AtMega2560 anyway so lots of space, even with all the stuff I’ve added to it, we’re at maybe 17%of the  flash space. I had looked at it when we first started out, but it needed StepDIR and were using – + , our original drivers didn’t support StepDIR. Even luckier I’d put all the stepper controls on the same ports.

Changes for the 2560 are minor, just an interrupt rename and i don’t the sleep mode is working as it ought too, i assumed it was and then wondered how to handle the panel switches but turned out when i added the head movement ACK that it was, I was going to use timer3 to handle switches but then i noticed the main loop was executing constantly, some of the AVR’s have different sleep rules.

One thing i did do though is since the mega ICSP is under the shield and its on the machine, which is 3 metres away from desktop. I left the Arduino serial boot loader  on the chip, this way i can just script AVR Dude to load the firmware built in AVR Studio 4 to the mega over serial. so its a lot easier, the downside is that if you press a key too soon the boot loader seems to kick in, i haven’t checked this to be the reason for sure, but it seems like its that. Not a huge deal.

Running a test of the GUI

Pick and placing, it takes a lot to just do this seemingly simple thing.


Head rotation

Head motor, luckily we used a double ended shaft motor in case we needed an encoder, which it turns out we do. Look closely at the top of that shaft, see some thread? yeah we didn’t…. We CAD’d up a mount and fitted the motor.

The motor is 1,000 steps for a full 360 degree rotation, should be able to place the craziest of our boards, we like some gangsta lean in our part placements.

As a side note the magnetic sensor on top of the head, really don’t like the way they’re made or mounted, that wire takes a beating and it’ll fail again so we have to fix that too. You can see all our temporary fixes for the hoses that keep cracking, they’ve lasted 20 years though. The red line is the new one we’re using, which is way more high tech than what was available in those days, it should last longer than the tech is needed.

The rotation head needed a larger power supply, so that is now installed. Its the 24V power supply previously mentioned from all electronics.

Since we made the shield with the extended pins its easy to add things on to it. And now we’re on StepDir its just one wire to control the head ( Though we make a semi-fatal error at this step in choosing which direction the motor runs )

Setting up a test

After the rotation head was added to the software, i test placed two parts, they’re off, at this point i think its the solder paste or tape missing, so we add some. As you can see though the parts are rotated as they should be. We were uStreaming with the second camera so its all hanging off in space at the moment.


Krs adds some paste to the test pads. She’s the one who wants this thing finished the most as she builds most of our boards Smile

I’m remotely moving the head with the camera view. First home, then moving to the PCB to register the location of the part, then going through the steps of the part placement.

So the mistake in the choice of direction for the head rotation is that the head can unscrew itself and drop down the tool, the sensor doesn’t know the head is down and the tool is now below the PCB holder and auto changer, so the head will gleefully zip around and bang it into whatever it can find, which bends the head, which is not good at all.  So we’ll reverse the direction of the motor and use lots of Loctite. This is why the test videos show the parts poorly placed.

Pity these lessons learnt cost us a head each time.. But we move on..

A trial run through all the parts ( using 1206 resistors since they’re like .00004 each) as you can see they placed perfectly.

Ok, maybe not what you’d call perfect but they did place in the right spots, the head down motion was a little too strong and there’s no paste to hold the parts in place so they’ll wander around every time a part is placed. Still the software is working.

The vacuum sensor needs to be set quite accurately or it’ll do things like this :-

The tool is sitting perfectly on the vacuum test pad, the head brought it down to see if was there, blocks the air coming through the tool, but since it wasn’t picked up correctly ( head wrong orientation ) it just left it there.

The head moves to the pad, goes down, the air comes on, there is a settle time, then the machine reads the vacuum sensor, if its not blocked there is no tool, if it is, then there is a tool.  That is how it decides if the tool needs to be picked up or put back.


Finally we place a board with paste and all !

So last night(this morning) we finally managed to run a real board. For some reason i decided to go through each of the components and rotate them 90 deg rather than change the rotation in the feeder…. derp… As we did this the vacuum test failed, so you can see me going in change the code ( incorrectly!) and re running, it the bit you might not see is the machine doing a loop of picking up a part… i fix that and we move on.. First run we do a step by step. I noticed a few bugs as we go along so there are some pauses as we fix those.

Stencil pasted a board, you can read about this in our Arduino Mega build blog entry. Its a CNC’d brass sheet.

I taped the board down to stop it moving around, probably not needed.

Some of our feeders need some love and i wasn’t super careful about where i was picking up the parts from so it was a little sloppy, however it was 2AM and i ended up having to leave and come back after one of the alarms at work went off Smile

MMCA used one of his awesome swiss files to ‘fix’ one of the feeders that was catching

Here are some more GUI videos, they’re probably only interesting to those of thats like watching these things over and over..



Annotated some of the steps in the GUI.


One of the feeder pickups i didn’t setup properly, so it was placing them off!

Onto the hotplate, i wanted to see just how bad we could place parts and if they’d fix on the plate, all but one pulled onto the pads, the other worked but was right on the edge of a pad, it’d work fine. All we have to do is take more care when tell it where to pickup

Krs also has a bunch of videos of the machine placing that first board.


Anyway that is mostly it, we’re down to the tuning and bug fix stage so its been pretty fun.

But if you’ve got minerals help out the OpenPNP guys they’re doing good work, our stuff is available to everyone, but its reasonably specific to the Juki though it is GCODE.


Small update: Last night, I started adding the second USB port of the ADK to Grbl as well, its almost finished. I based it on the usb.cpp from ADK but i converted it to C  since the c++ generated a larger firmware and there is only one USB port, I want to keep the firmware tight.

BTW If you’re reading this and are on the yahoo zevatech list the moderator who’s apparently building a commercial retrofit for this machine is blocking our posts sharing this open source project. He said he wants credit for a CPU suggestion neither his or our project uses, a fix that wasn’t broken, and a camera solution we didn’t ask for advice on, or use.



Miss you girl

Atmel AVR Dragon vs the Kraken


Yesterday I was rewriting code for Null Space Labs ‘Cylon III’, a blinky toy thing we make and use for people to have soldering practice, it spawned from the EMSL Cylon and then through a few iterations from a simple 9 LED thing to a charlieplexed circle.

Cylon I

 Production version of [NSL] Cylon I

Cylon II (with an IR LED to mimic a tv-b-gone)

Cylon=b=gone mode


Cylon III

2011-08-21_15-48-14_753.jpg Pretty in....


We use the ATTiny2313 which a lot of people complain has no legs ( the MU package ), I think its great but it can be  a challenge especially with the milled versions of the PCB to fix and replace the chip.

Anyway I was playing around with different clock speeds in AVR Studio with the Atmel Dragon. The dragon is a terrible piece of hardware when it doesn’t work right, which is  often. It has a design flaw that causes a couple of chips to blow up regularly, so regularly in fact we keep a stock of the chips at Null Space Labs. My dragon has been repaired three times so far.

Then there is the software itself, the way it interacts with the USB has it disconnect and reconnecting after using the AVR Studio programming interface, sometimes it’ll hang and you’ll hear the USB connect/disconnect cycle until you unplug it ( which increases the chance of the chip blowing up issue  ) and exit AVR Studio 4, which is really annoying especially during debugging.

So I select the <4Mhz option and AVR Studio warns me that I won’t be able to program the chip if i set it this low, I say no and put it back on the internal 4Mhz. However I fail to take into account that CKDIV8 is set ( clock divide by  8). At this speed the Dragon is having problems reading and flashing the chip, even at 51khz which is the lowest speed. It’ll read the chip id once, or read fuses once, then require me to exit the programming software, and reload it.

So i think, ok reset the fuses since it’ll let me do one operation. But in AVR Studio you have to read the fuses then set them, you can’t set them by hand then program, this uses my one attempt before the Dragon fails to communicate.  It reads the fuses, but then fails to set them.. I try every variant, unplug the dragon, nope, this fails since it looses the USB setup or whatever AVR studio is doing, reset the target board, disconnect the target board. Nope, the only thing that works is exit the programming interface in AVR studio, let it reset the Dragon and back in again, at which point it reads the fuses again and then I can’t do anything with it, since it no longer communicates with the chip.

Anyway at this point I’m thinking its time just to replace the chip, but then I remember about our AVR programmer which is a smaller , simplified version of the USBAsp, we call it the Kraken.




Final version



We only use the ICSP mode and have our own SIL 6 pin programming header. The pogo pin version is much nicer than my hack.



Prototype version.

 AVR 2x6 To CX 1x6

Krs pulls one out of the back and builds it in less than 20 minutes, it’s programmed and ready to go. I  setup AVRDUDE and read the chip id, that works, read it again, still works.. So i try just to set the LFUSE so that the clock is set back to 8Mhz, and bingo it works straight away.



USBASP/Kraken 1, Atmel AVR Dragon 0




Atmel sells the Dragon for $49 it comes with no case (which doesn’t help the chip destroying problem either ). I personally think they should rev it, or sell it with a box,or at least a warning. Using it with a USB Hub will help alleviate the chip killing problem.

Here is the web page that lead us to keeping a stock of chips, we’ve fixed about 6 of them in the last few months, so far its always the same issue.

But why it can’t flash the ATTiny2313 when the USBAsp/Kraken can just seems like a software problem. Now if only we had access to DebugWire I could do without the Dragon altogether.

Still after you’ve seen a few of them with holes burnt through the chip and sometimes even into the PCB, you’ll know why Atmel calls it the Dragon. It’s funny how the people who make the chips can’t get their programmer to work well, when one guy in germany can.

I’d like to say no Dragons were harmed during this process, but one of our members ( who coincidentally named the Kraken project) blew his up while I was working on this problem ).

Since this blog was written around 8/22.. We’ve blown up another three dragons..

Links USBAsp home page Null Space Labs Version of the USBAsp How to fix the Dragon (and add some improvements)