One of the key fea­tures of my microwave is Panasonic’s Grid­eye ther­mal sen­sor. This is a (rel­a­tive­ly) low cost ther­mal sen­sor that I have placed at the top of the microwave to mea­sure the sur­face tem­per­a­ture of the food.

The sen­sor is an I2C device which requires a 5V or 3.3V sup­ply. Want­i­ng to keep every­thing rel­a­tive­ly high lev­el I am imple­ment­ing it as a USB device.

For the demo I used a Bus­Pi­rate as an I2C-USB bridge. This got me through the demo but the pro­to­cols com­bine very bad­ly result­ing in a max­i­mum frame rate of about 1fps. The high laten­cy of USB com­mu­ni­ca­tions com­bines with the chat­ty­ness of I2C caus­ing every­thing to be very slow. So a prac­ti­cal imple­men­ta­tion can’t be a bridge, it must have some log­ic to con­trol the device and present a processed USB data stream.

There is an exist­ing one, Digikey has a break­out board that their Appli­ca­tion Engi­neers devel­oped. Sad­ly due to Panasonic’s lim­i­ta­tions on dis­trib­ut­ing the Grid­Eye sen­sor they only ship them with­in the US. The Appli­ca­tion Engi­neers team runs in an open hard­ware man­ner, the project page for the break­out board includes the cir­cuit dia­gram and firmware code. I got in con­tact with the author, Chris Baird, and while he didn’t have any blank PCBs he could ship he was hap­py to share the ger­ber files so I could make my own.

The sto­ry doesn’t end here though, because a sol­id dose of Not-Invent­ed-Here hit, jus­ti­fied by the twin desire to eval­u­ate KiCad and want­i­ng to imple­ment the USB Video pro­to­col, dri­ven in part by an absurd desire to shov­el yet anoth­er dri­ver into the Lin­ux Ker­nel.

As a nice bonus I reduced the cost, sig­nif­i­cant com­po­nents, exclud­ing the Grid­Eye, cost $9.81 AUD for the Digikey board com­pared to $2.60 AUD for mine. Though that it no way com­pen­sates for the time spent and comes with the dis­claimer that the Digikey board actu­al­ly works.

All files for the design being dis­cussed are avail­able at

Circuit Design

My cir­cuit design is below, I took a rather dif­fer­ent approach to the Digikey board, wiring an Atmel AVR direct­ly to the USB input. This will use V-USB, a soft­ware USB stack to com­mu­ni­cate. The ATTiny AVR used is capa­ble of run­ning V-USB on it’s inter­nal crys­tal, it should also have enough mem­o­ry allow­ing me to do USB based repro­gram­ming.

Eeschema circuit

The AVR must run off 5V in order to be fast enough to han­dle the USB com­mu­ni­ca­tions. USB com­mu­ni­ca­tions how­ev­er are a 3.3V sig­nal and while dri­ving it at 5V typ­i­cal­ly works it’s cer­tain­ly not a nice thing to do. The weak zen­ner diodes are a bidi­rec­tion­al lev­el con­ver­sion tech­nique.

The pow­er net­work actu­al­ly allows for two dif­fer­ent volt­age lev­els into the Grid­Eye. It isn’t clear from the datasheet what impact a dirty pow­er sup­ply has, so I have fit­ted an LDO to cre­ate a smooth 3.3V sig­nal. There is also a 5V Grid­Eye vari­ant (which I don’t cur­rent­ly have) that could be run direct­ly off the USB rail. To sup­port both cas­es I have an LDO designed in as well as pads for a zero ohm resis­tor to bridge the rails, one or the oth­er should be fit­ted.

The I2C bus uses an open-col­lec­tor sig­nal so nice­ly adapts to what­ev­er volt­age the Grid­Eye is pow­ered on. Run­ning at 5V the AVR reads 2.5V as high, com­fort­ably sup­port­ing 3.3V com­mu­ni­ca­tion.

I would have liked to have a spare IO to be able to dis­able the LDO in low pow­er mode. How­ev­er the Grid­Eye can be soft­ware con­fig­ured into a low pow­er state and the LDO does not con­sume much pow­er when idle. I could repur­pose the reset line for the job but that has sig­nif­i­cant down­sides.

Single Sided PCB

Click image for inter­ac­tive 3D mod­el
Load­ing …

My first attempt at a PCB was a two lay­ered sin­gle sided PCB, it is func­tion­al but not opti­mized as I decid­ed the approach was wrong and cre­at­ed a dou­ble sided PCB for man­u­fac­tur­ing.

It is a fair­ly long, sim­ple, PCB with a sim­ple flow left to right of the USB port, AVR chip and Grid­Eye sen­sor.

I cre­at­ed two ground planes, a shield plane around the out­side which is con­nect­ed to the USB shield and the screw holes, it is designed to be con­nect­ed to the chas­sis. The cen­ter of the board has a stan­dard dig­i­tal ground con­nect­ed to var­i­ous com­po­nents and the USB ground line. In my microwave sys­tem there should be a cen­tral (star) ground point, some­where else, which con­nects these two grounds. To pro­vide flex­i­bil­i­ty, main­ly for appli­ca­tions with­out a met­al chas­sis, there is an emp­ty 0603 pad in each cor­ner to bridge the two ground planes with either a capac­i­tor or a 0 ohm resis­tor .

After doing this lay­out I felt a two lay­er design would be much bet­ter. It would allow the board to be much small­er and I want­ed the sen­sor to be more cen­tral. Lat­er I learnt that the pro­to­type PCB man­u­fac­tur­ers all up their rates for boards over 5cm, so my 6cm board was fair­ly expen­sive. I swapped the large six pin con­nec­tor with a Tag-Con­nect con­nec­tor to try and be less ugly, with mixed suc­cess.

Two Sided PCB

Click image for inter­ac­tive 3D mod­el
Load­ing …

I start­ed this board more pro­fes­sion­al­ly, defin­ing a 3cm by 2cm board with M2 holes on each cor­ner. It was a lit­tle bit of a strug­gle to get every­thing to fit nice­ly but that prob­a­bly means it was the cor­rect size.

My main con­cern with the new design is that one of the USB data lines is also used in the pro­gram­ming process. I tried to make it as short as pos­si­ble but the pro­gram­ming con­nec­tor wouldn’t fit any­where but the far side of the board to the USB con­nec­tor. So that line is a long stub dur­ing oper­a­tion, not a nice thing to do to an RF sig­nal. Anec­do­tal evi­dence from forums sug­gests that I will get away with this but hav­ing the pro­gram­ming cable con­nect­ed will cause it to fail, I’m hap­py with that.

The Tag-Con­nect con­nec­tor can be seen on the far side to the USB port. It is actu­al­ly just a care­ful­ly arranged col­lec­tion of pads with holes to guide the plug. I haven’t used the Tag-Con­nect sys­tem before, I am attract­ed to it for a num­ber of rea­sons. The foot­print is small­er, in board size, only con­sum­ing one lay­er and not hav­ing a high part per­ma­nent­ly attached. Being a lay­out of pads it is cheap per board. And for man­u­fac­tur­ing it is easy to design a pogo pin set­up to hit the pads or use a bed of nails sys­tem. There is also a series of test points expos­ing the USB lines for man­u­fac­tur­ing.

Sev­er­al peo­ple have com­plained about the Tag-Con­nect rout­ing mean­ing that you take up as much board space as the stan­dard, larg­er, con­nec­tor. I cer­tain­ly found the rout­ing was annoy­ing, espe­cial­ly with the holes at either end requir­ing lines to go the long way around. I cheat­ed some­what by plac­ing vias on the pads, effec­tive­ly mak­ing some of the pins through holes, this made rout­ing much eas­i­er for me. For a two lay­ered board the Tag-Con­nect ben­e­fits are prob­a­bly mar­gin­al, with more lay­ers the ben­e­fits would be add up rapid­ly.


An order has been placed at OSH­Park for both the Digikey board and mine, the process was remark­ably good, lots of feed­back as to what would be man­u­fac­tured as you pro­gressed. My board has an oval hole which OSH­Park doesn’t sup­port but I’ll fix that some­how after the board is deliv­ered.

The Digikey board 20.35x22.91 mm (0.8x0.9 inch­es) and cost $1.20 USD per board.
My board is 30.02x20.02 mm (the 0.02mm is the cut line thick­ness) and cost $1.55 USD per board.

With­in 24 hours both boards had been sent for fab­ri­ca­tion, mine got a free upgrade to the spe­cial rush order stream.

I have ordered an 0603 resis­tor and an 0603 capac­i­tor part book from Super Deal Tech­nol­o­gy with some emp­ty pages. The Digikey board uses 0804 parts (designed for old folks with fad­ing eye­sight) but I’ll just put 0603s onto the larg­er pads. Part books are by far the best way to man­age SMD com­po­nents.

The remain­ing parts have been ordered from Element14, Digikey was cheap­er on the parts but more expen­sive with ship­ping.