PantryPod is a network appliance that scans UPCs on product packages, and transmits that information back to PantryTech in the host PC via a home network.
For a look at some of the engineering details.
|Here's PantryPod in a typical installation. This is mounted to the wall in a
kitchen pantry. It's in a very convenient location, yet still out of the way. The recycling bin is on the floor handily below. The
scanner is tucked into the docking slot on PantryPod. As you can see, this
version was built for the CueCat™ scanner in particular. But, the PantryPod
concept will work for many types of scanners from near-contact, like the
CueCat, to full scanning laser models.
CueCat was developed by Digital Convergence, but was easily reused as a general purpose barcode scanner.
|When you remove the CueCat from the dock, a sensor in PantryPod will detect this, and turn on power to the CueCat. By doing so, we save a little energy when it's not in use. If you then forget to put CueCat back in the dock, it will automatically power it down after a minute of non-use. So long as you scan something at least once each minute, PantryPod will keep CueCat powered and ready to scan another product.
This version of PantryPod is built with a great little embedded controller called EtherNut.
[Dec 2003] After about 7 months of steady use, I upgraded the home PC from 0.2 GHz to 3.0 GHz, and PantryTech/PantryPod started having errors. It was as if PantryTech responded too fast, and PantryPod didn't see it. It would try again in a few moments, and the error repeated. I took this as an opportunity to upgrade NutOS (in the EtherNut) from version 2.52 to 126.96.36.199. Along the way, I also embedded a web server into PantryPod, so you can browse into PantryPod itself. This is more useful for development, but does provide a few test modes so you can exercise the hardware, view the cache and the queue entries, and check software version information. It is also techno-candy to show off the threads that are running, the timers, sockets, and so forth. It's all quite cool.
Here's a few screen-shots:
If you really studied this, you may have noticed a negative uptime. I accidently used the wrong printf format specifier...