Piconomix FW Library (px-fwlib) 0.10.0 released


  • Upgrade to Doxygen 1.9.2
  • Update and ordering of Doxygen documentation (inspect px-fwlib/doc directory)
  • Massive clean up effort to make coding style and naming convention consistent
  • First class citizen support for Arduino Uno, ATmega328P-XMINI, ATmega328PB-XMINI and ST Nucleo64-L053R8
  • Rename “px_defines.h” to “px_defs.h”
  • Major upgrade from px_dbg to px_log module (with optional VT100 color text support)
  • New utility modules: px_ascii, px_btn, px_dbg_ft, px_sbuf (do yourself a favour and have a peek at these)
  • New device drivers: px_max31855, px_lis3dh
  • Upgrade px_log_fs to mark records as archived, for example after a record has been succesfully uploaded to an internet server
  • Harmonised px_gpio function names, e.g. px_gpio_pin_set_hi() changed to px_gpio_out_set_hi()
  • Experimental px_gfx window object system (work in progress)
  • More than a year’s worth of bug fixes and tweaks

An early Christmas present. Happy Holidays!

P.S. Sincere apologies for changing APIs and breaking existing code bases! I hope that most of it is easy to fix with search&replace.
P.S.S. Smoke testing was performed on all of the examples and apps but if you find a bug, please let me know.
P.S.S.S. Love it or hate it? Either way, feedback is much appreciated 🙂


PX-HER0 board on Crowd Supply

It has been a long journey, but the day has finally arrived. My PX-HER0 board campaign is live on Crowd Supply. Click HERE

Greek word of the year: meraki

I found this gem yesterday in a school cafeteria:

meraki [may-rah-kee] (adjective)

This is a word that modern Greeks often use to describe doing something with soul, creativity, or love — when you put “something of yourself” into what you’re doing, whatever it may be. Meraki is often used to describe cooking or preparing a meal, but it can also mean arranging a room, choosing decorations, or setting an elegant table.

Source: https://www.npr.org/templates/story/story.php?storyId=4457805

Piconomix FW Library featured on hackaday.com

I finally enjoyed my 15 minutes of fame when an article called “Arduino Gets a Command Line Interface” by Bryan Cockfield was published on Hackaday on 10 Nov 2018. I am extremely grateful for all of the kind words, comments, stars and GitHub repository forks that it generated. This open source project has been a work of love for more than a decade and it is great to get the feedback that people like it and that it matters. In the process I have learned to be a better internet citizen: the simple act of saying thanks or giving someone’s creation a good rating goes a very long way. Who says there’s no such thing as “free energy”? 🙂

Full disclosure. Did you see the movie “Field of Dreams” starring the great Kevin Costner? Particularly the quote: “build it and they will come”? I wish it worked like that, but in the real world it does not work out quite that way. There are a gazillion open source projects and products out there, all competing for your attention. I submitted a tip to Hackaday and it got accepted after it passed their stringent criteria. You need to let other people know about your project without “shilling” in the process.

As always, I hope you have a grand day!

Design Logic 2001 contest runner-up

Yep, that’s me, proud runner up in the Atmel Design Logic 2001 contest! It was a long, long time ago and the world was much, much smaller. Here is the link to the PALM III PDA winning entry.

Circuit Cellar issue 137 December 2001, page 36:

To put it in context, here are all three pages for prosperity:

Logging temperature with Maxim DS18B20 1-Wire sensor

My 12 year old son needed to manually log temperature for 12 hours as part of a school science assignment. I saw this as a great opportunity to demonstrate my incredible engineering skills assist him as a responsible and caring parent.

Yes I know, with an Arduino the job would probably be finished in 5 minutes flat, but where’s the fun in that?! Besides, I’m old-school and stubborn 🙂 I whipped out my ATmega328P  Scorpion Board and crafted a portable 1-Wire bit bang C module and DS18B20 driver (project download link).

Here is a screenshot of the CLI running on the board:

And here is the data graphed over 24 hours. The sensor was resting outside on a brick window sill, which explains why it does not reflect the actual ambient temperature well.

Test&debug your embedded C module with Excel and Visual Studio

For a while now I’ve had a mental itch that needed to be scratched and finally found some time to do something about it. I had a function called rtc_date_time_to_sec_since_y2k() to convert date&time to seconds since Y2K, but I did not have one in the reverse direction… until now 🙂

Here is the best solution that I could find, but I wanted something simpler that I understood well and it only needed to work from 2000 to 2099 (I’m a firm believer in the KISS principle).

First I used an Excel Spreadsheet to have a broad overview of the algorithm:

Finally I created a test project for my RTC C module in the free (as in beer) Visual Studio Community Edition 2017. It tests the whole space (every second from 2000-01-01 00:00:00 to 2099-12-31 23:59:59) and took only 10 minutes on an Intel Core i7-6700 CPU @ 3.40GHz. Running the same test on an 8-bit Atmel AVR @ 7.37 MHz would take (a projected) 25 days!

I use a “defines.h“, “compiler.h” and “pgm_P.h” to make my embedded C modules portable.

Creating a good programming & test jig is not that hard

Creating a good programming & test jig can be a daunting task if you’ve never attempted it before. Here is an example to demonstrate that it’s not that hard if you have a good plan.

I recently had to create a programming jig for an ATmega328PB based board. 1mm diameter test pads were placed on the bottom of the PCB to give access to the ISP pins. Normally one would add two 3mm diameter holes to locate the PCB on the jig, but this PCB was too small and only had two indents on each side to keep it in place. Here is a picture of the board placed on the jig and held in place with two M3 hex spacers on each side:

Here is a picture with the board removed. Note the spring loaded test pins sticking through the top mezzanine PCB:

The test board has 12 through-hole pins that would prevent it from sitting flat on top of the top mezzanine PCB. Holes are made in the top mezzanine PCB to accommodate these through-hole pins:

Here is a picture with the top mezzanine PCB removed. Note that the spring loaded test pins are not soldered to the bottom routing PCB. The gold coating of the test pins and the tight fit of the through-hole pads make a good electrical connection:

The ISP test pads are routed to a standard 2×3 header on the side. +3V3 is supplied with a bench supply via the blue screw terminal. Finally, here is a side profile view to show how it all stacks up:

The two PCBs were ordered from Seeed Studio and the test pins consists of an ECT SPR-25W-1 solder cup receptacle and an ECT POGO-25T36 needle probe.

As always, enjoy, and I hope a few pictures were worth a thousand words.

P.S. If you haven’t seen the Piconomix FW library yet, check it out! Your feedback is very important, please answer the 10 second poll on the same page.