Gas station without pumps

2016 May 5

PCB CAD tools

Filed under: Uncategorized — gasstationwithoutpumps @ 20:58
Tags: , , , ,

I’ve been using Eagle for designing printed circuit boards for a few years now, and I am reasonably happy with it as a free tool. However, I’m a little annoyed by the low quality of the schematics and by the awkward creation of new footprints for components, and so I am willing to consider other tools, and am looking for recommendations for free PCB tools that are better than Eagle.

Two I’ve heard of (but not tried yet) are

  • EasyEDA , which is web-based, and
  • DipTrace, which (like Eagle) is a commercial package with a free, but limited, hobbyist version.

I’ve not used either of these yet, and I don’t have any PCB designs to do right now (nor time to do them until the quarter ends), but I’m curious whether any of my readers have tried EasyEDA or DipTrace, particularly if they can compare them with Eagle.  I’m also curious whether there are other PCB tools out there that run under both Mac OS X and Linux and that are free, easy to use, and robust.

My son and I are planning a couple of boards this summer as part of the LED theater lights project, so there will be an opportunity then to try out different PCB tools, if anyone has ones to recommend.

2014 December 12

Roaring start for Kickstarter campaign

Filed under: Uncategorized — gasstationwithoutpumps @ 22:26
Tags: , , , ,

In a previous post, I talked about my son’s company Futuristic Lights being about to launch their Kickstarter campaign.  Well they launched it at noon today (, and within an hour they had made their $20,000 goal. According to the comments on their Facebook page, they made their goal within 15 minutes (probably not a Kickstarter record, but a real achievement nonetheless).

As I write this post, they have pledges of $34,511 from 203 backers after only 10 hours, with a corresponding commitment to make and ship 642 regular Kinetic boards and 1264 limited-edition boards.  This easily takes them over the 1000-unit price point for parts and assembly (the assembly is the same for both the regular and the limited-edition boards, as the differences are in the firmware and the appearance of the board). With 29.5 days still to go, they’ll probably go way over that.

I wonder if they’ll get enough orders to make 10,000 boards (which is probably the next price point for manufacturing). Given the usual Kickstarter project trends, they are unlikely to make 5 times their first-day sales, unless the Kickstarter staff decide to feature them (making one’s goal in 15 minutes is good advertising for Kickstarter!) or they get some other lucky press coverage.

If they do get enough backers to make 10,000 boards, they may have to rethink their plans for fulfillment, as what I had overheard of their planning may not scale up that high.  Still, the drop in manufacturing costs may let them afford to use a commercial fulfillment company.

I’m planning to order a set, but I’ve not decided whether to get a limited edition set or a regular set. Probably I’ll wait until later in the campaign, and get a limited-edition set only if they haven’t sold out of them—no sense depriving some glover who might really care about the limited edition.

I’m also wondering what I’ll do with the set when I get it, since I’ve no real need for gloving lights other than as a proud parent to say “My son designed these!”  At least, they should make good presents—but for whom?

The company has put together a fine web page for the Kickstarter with lots of demo videos and pictures of the boards.  The founders (Zohar and Abe) can be seen in the intro video at the top of the page.  Zohar is the CEO, the originator of the idea for the company, and the main force behind the marketing effort. Abe is the CTO (chief technical officer) and the engineer for both the hardware and software.

I’m very impressed by what this team of young entrepreneurs has accomplished—even if the project had failed to make its goals,  the amount my son has learned about engineering, manufacturing, and business management is far more than most kids get in 4 years of college (and he’s only 1/12 of the way through college at this point).  I just hope that this early success doesn’t distract him too much from college.

Update 2014 Dec 13:  Abe and Zohar wrote an article about the company that was published in Santa Cruz Tech Beat: Glowing Art Form – What’s Glove Got To Do With It.

2014 November 29

Futuristic Lights close to their Kickstarter launch

Filed under: Uncategorized — gasstationwithoutpumps @ 00:05
Tags: , , , ,

My son has been working hard at school, but perhaps not as much on school work as on his start-up company, Futuristic Lights. It was just over a year ago that I was writing about My son’s first PC board, and I talked more about what his company was doing about 6 months ago, when they participated in TechRaising 2014. During that year he has designed, written software for, and tested 4 PC boards: 1 through-hole and 3 with surface-mount components (not counting a test fixture and a tiny board for connecting LEDs to cables).

His most recent design (the “Kinetic”) is going to be a real product—they are starting a Kickstarter campaign soon (they want to start it before Christmas, though they probably won’t be able to ship product until March). They just got 100 prototypes delivered from their manufacturer last week, and they are pleased with how well they came out.

The Futuristic Lights Facebook page has demo videos of the new board, but does not currently show a picture of the board itself (they do have some nice shots of the previous prototype, which has the same functionality, but needed some redesign for durability and fitting in the cases).

I don’t know how big their goal will be for the Kickstarter campaign, but I think that they need to make at least 1000 of the Kinetic boards to get a low enough price on the manufacturing (the 100 prototypes cost almost as much per board as the retail price for the finished ones, but a lot of the costs drop dramatically at 1000 units, and some of the tooling costs were already paid to make the prototypes).

They’re currently working mainly on their marketing efforts (they’ve got 6.8k likes on their Facebook page, but I’ve no idea how many people are following them closely).  If they sell the lights in sets of 10 (one per finger), they’ll need to sell around 100 sets, which is a conversion rate of sales at 1.5% of likes, which seems high to me.  They’ll need to get a lot more people interested once the Kickstarter campaign starts, so they are gearing up for that.  I believe that they’ll be releasing new demo videos and some more technical videos that describe the features of the Kinetic boards over the next couple of weeks—you can follow the progress on their Facebook page.

My son, as Chief Technical Officer, is not a major part of the media campaign, but he’ll have to start lining up suppliers and manufacturers and figuring out lead times for the actual manufacturing.  The 100 prototypes took less than a month from ordering to delivery of assembled boards, but getting sourcing the parts for a small batch run may take longer, as Digi-Key and Mouser don’t always stock that many of all the parts they need—they may need to contact some of the chip makers directly.  They also need to get the cases, batteries, gloves, and custom boxes for shipping the sets.

This project has been a marvelous educational experience for my son—something that would be hard to duplicate at any university, as student projects rarely get past the prototyping stage into small batch manufacturing and fulfillment.


2013 September 3

My son’s first PC board

In Towards automatic measurement of conductivity of saline solution, I complained about not being able to use the KL25Z board, because my son was using it.  What he was doing with was building his first prototype for the light gloves project:

Here is his first PC board design, populated and mounted on the Freedom KL25Z board.  The 5cmx5cm board is a bit smaller than the KL25Z board is wide, so it only plugs in on one side (there is a screw acting as a spacer to keep it from being a cantilever).    He has not yet mounted the Bluetooth module.

Here is his first PC board design, populated and mounted on the Freedom KL25Z board. The 5cm×5cm board (the cheap size from Iteadstudio) is a bit smaller than the KL25Z board is wide, so it only plugs in on one side (there is a screw acting as a spacer to keep it from being a cantilever). He has not yet mounted the Bluetooth module.

The prototype board has many differences from the final design: no battery, no battery charger, no buck/boost regulator, no flash memory, no processor, screw terminals instead of jacks—even the LED driver chip is different, since the chip he plans to use is only available as a surface-mount device. But there is enough of the design here to start demoing and writing code.  They are hoping to keep the final board below 5cm×5cm, so as to get low PC board prices even in very small production runs.  That will mean all surface-mount parts, so I think I’ll have to get a hot-air rework tool so that they can assemble a prototype—I’ve been thinking that I might want one for myself to play with surface mount designs, so this isn’t really a hardship.

My son still owes me some money for buying him the PC board run, the screw terminals, the Bluetooth module and some heat-shrink tubing. It is a bit annoying that he isn’t old enough to get his own Visa card, so that he can do his shopping without me as an intermediary. (We’re not talking big bucks here—we’ve spent more on pizza for him when they work through dinner than they’ve spent on all parts combined.)

I’m pleased that he got his first PC board working on the first attempt—he did the design entirely on his own, though he did ask my advice about things like via sizes and how fat to make the wires. Since there can be moderately high currents for the LED driver, I recommended that he make the ground and power lines as fat as he could, and he decided to do a flood for each. The board looks quite nice:

The top view of the board with the screw terminal to be mounted on the top and sides, the header on the lower left, and the Bluetooth module on lower right.  The hole near the top right is for the screw that acts as a spacer.

The top view of the board with the screw terminal to be mounted on the top and sides, the header on the lower left, and the Bluetooth module on lower right. The hole near the top right is for the screw that acts as a spacer.


This is what the glove looks like with the five RGB LEDs lit up (I understand that the final design will have more LEDs—but the through-hole driver chip has limited pinout). They don’t have the user interface written yet, so the lights were set up by a quick-and-dirty Python script talking to the KL25Z board over a USB cable (which is also supplying power).


They have not implemented programmable flashing yet, but the pulse-width modulation (PWM) frequency is set very low here (much lower than what they intend to use in the final design), so that one gets a stroboscopic effect even with steady light settings, just from the PWM. That’s not my son in the picture, but the high-school student who started the project—my son has done most of the electronics and programming, but did not originate the idea.

The two teens spent a big chunk of the day wiring up the LEDs and writing a small test program, as they want to demo the glove tomorrow for the back-to-school event. It may also be an enticement for teens to join an Arduino/microcontroller club—look at the cool stuff you can learn to make!


Another view of the prototype light glove in action.

Once they got the demo working, they invited over a third member of the team to do some brainstorming about what else needs to be done (and how they’ll do it). It looks like they’ll be talking half the night.

Since it is clear that my son will be spending a lot of time on this engineering project this year, we decided to make it part of his official school work.  In addition to the engineering design work, he’ll also do some a paper for his econ course (on pricing the components and manufacturing, and setting a retail price for the gloves), and papers for a tech writing course.

His first tech writing assignment is to write up a description of the color space he decided to use for representation of colors in the program, and why he chose that color space out of the dozens available.  He spent a week thinking about color spaces anyway, before settling on a commonly chosen one—so writing up that reasoning for the other members of his team will be a good writing exercise.

2013 July 24

Debugging in unfamiliar territory

Filed under: Printed Circuit Boards — gasstationwithoutpumps @ 00:21
Tags: , , , ,

Today, my son tried doing some programming on the KL25Z board, which I had been playing with yesterday (after reloading the MBED download software).  I has been using the MBED online compiler, but he wanted to use gcc, using entirely code he wrote himself.

Over the weekend he had figured out how to do the clock startup and he wanted to test that, as well as the whole gnu tool chain for programming KL25 chips, as he plans to use a KL25 chip rather than an ATMega chip in the product he is designing.

The clock startup is a rather complicated state machine on the KL25 processors, which start out using a 32kHz internal clock, then need to be switched via two intermediate states to using the external 8MHz crystal with the phase-locked loop.  The state diagram for legal transitions is given in Figure 24-16 of the KL25 Sub-Family Reference Manual:

Figure 24-16, the legal state transitions for the clock generator module.

Figure 24-16, the legal state transitions for the clock generator module.

We have to get from  FEI (Frequency-locked-loop Engaged with Internal clock) to PEE (Phase-locked-loop  Engaged with External Clock), pasing through FBE (Frequency-locked-loop Bypassed External) and PBE (Phase-locked-loop Bypassed External).  There are some tests that need to be done to make sure that the external oscillator has stabilized before making the transitions.

He figured out how to do this startup with very little help from me (I’ve never seen such a complicated startup procedure)—basically we read the manual together and I explained the idea of the state diagram, but I did not read all the details about what was needed to enable the transitions or what registers needed to be set to what values to make the transitions.

He also spent a lot of time figuring out how the gnu linker scripts work, so that he could put things (like the initial stack pointer and PC values) in specific places, without having to write assembly language.  I’ve never worked with linker scripts, so he was on his own for that!

Today when he tried downloading his first program (a simple color-change blinker that used a system tick interrupt for timing), it didn’t work.  He faced the first problem of doing embedded programming—a bug results in no output.  Figuring out what went wrong is very difficult when there is no response.  He turned to me for help debugging—despite the fact that I have no knowledge of ARM assembly language nor gnu linker scripts.

Somewhat surprisingly, I was able to help him.  Here are some things that I helped him with today:

  • Linker symbols are addresses of variables, not constant integers.  When you want the value of a linker symbol in a C program you need to use &symbol to get the address.
  • To disassemble raw binary files, you can use objdump, but you need to give lots of extra options, to make up for the lack of internal information:
    objdump -D -m arm -b binary --disassembler-options=force-thumb foo.bin
    I’ve not used objdump in a long time, and never with a raw binary—we had to read the objdump manual to figure out what options were available. He spent some time disassembling both MBED binaries and the ones he generated with the gnu gcc compiler and linker, looking for important differences. He noted that the machine code generated by gcc with the default optimization setting was difficult to read, but when he turned on optimization it got cleaner and simpler, using the standard instructions for subroutine return, for example.
  • Pointer arithmetic in C knows the size of the objects pointed to, so incrementing a uint32_t* pointer to the next word is done by ++, not by +=4. He had never used pointer arithmetic before, and had not realized that pointers and integers increment differently.
  • Linker scripts do not do link-time expressions, but require constants. He had a computed location (the start of RAM on the chip, which is at 0x20000000 – (ram_size/4) ), but the linker script was not doing the computation. When he switched to using the constant 0x1ffff000 in the linker script, the initialization code he’d written for clearing the BSS region then had the correct start location to clear.
  • I asked him if he had turned on clock gating for the GPIO module and the port module he was using.  (I think that GPIO clocks can’t be turned off, but that the port module clocks can be, disabling the port to save power. GPIO uses the platform clock, but the ports use the bus clock.)
  • In linker scripts, if a block has nothing in it, then the “.” pointer is not changed, even if the block should be in RAM rather than flash memory. His bss_start address was messed up when his data block was empty, because the “.” still pointed to the word after the end of the program. He fixed this by adding .=ram_start to the appropriate place in his linker script.

Of the things I helped him debug, about the only things I knew ahead of time were the pointer arithmetic and that linker symbols are addresses.  He was doing a lot of stuff that I’ve never done (like using gcc’s __attribute__ keyword to make symbols weak so that interrupt service routines could default to a null handler, but be overridden in the linker by defining a real interrupt service routine).

By the end of the day, he had written a blinky program using the System Tick Timer with his own startup code and interrupt vector table, written entirely in C, compiled and linked entirely with the gcc toolchain downloaded with the OpenSDA chip—and he got it all to work. This is about an order of magnitude or two harder than writing the same blinky program using the MBED software development kit and online compiler. He needed to read big chunks of the KL25 reference manual to figure everything out, and some parts we had to read together.

In fact, we’re still not sure whether there is any reason to enable the clocks to port A before doing the clock startup sequence, which the MBED code does.  As far as we can tell from the manual, the port starts out with the pins defaulting to XTAL0 and EXTAL0 (the crystal), so it shouldn’t be necessary to turn on port A, but the manual is not really very clear on this point. [Update: 2013 Jluy 24 00:45.  My son checked, you do not need to enable port A.  The external oscillator starts up fine with port A left turned off, as we thought.]

I doubt that I could have done an all-C, all-gnu program any quicker than he did—and he now knows far more about ARM processors than I ever will.  I was just pleased that I have enough general debugging experience to have been able to help him the few places he got stuck.

He plans to use the KL25Z board in building a prototype of the device he has been doing PC board layouts for all summer.  He’s going to make a through-hole-part board for prototyping the electronics.  The board will not include the processor, but will have lots of connectors .  The Freedom KL25Z board is far too big to fit in the final case, but having a debugged development board and a through-hole-part PC board for the other will let him debug his design more easily than the all-SMD board that will be needed for the final product (he’s aiming for a 5cm×5cm final board size including the processor and all peripherals).  When he does get the SMD board designed, he’ll be able to use the KL25Z board as a programmer for it, since there is a simple 10-pin connector on the KL25Z board that allows using the “OpenSDA” chip on the board to program any KL25 chip through the single-wire-debug interface.  He’ll put a similar connector on the boards he designs, so that he can load firmware onto the boards (and so that hackers can load their own programs, once the open-source design is released).

Next Page »

Create a free website or blog at

%d bloggers like this: