I wanted to be able to add an embedded Web server to my projects.
I chose the MatchPort AR because, with the same experience, hardware, and nearly the same software configuration, I would be able to move to a wireless solution with the MatchPort b/g Pro. (The MatchPort b/g uses a different OS.)
I wanted to get up to speed quickly, so I purchased the demo kit, thinking that would include all the software and hardware I would need to understand and learn how to use the MAR in a project of my own. This was more or less the case, but getting up to speed was much slower than expected.
I thought I would be up and running demo apps in an afternoon and off to my first project early the next morning. Instead, I spent hours understanding the paradigm assumed for the MAR, hunting down example code, working out details and trying to understand the MAR's somewhat convoluted documentation.
I hope this tutorial gives the first-time embedded TCP/IP/HTTP server users a fast and straightforward introduction to the MAR. And maybe I can save more experienced users the hassle of tracking down the details of how the MAR can be coaxed into becoming a working embedded network component.
Download The MatchPort AR Missing Tutorial (PDF).
This project has only a few modifications from the “Single Chip, Four Channel Datalogger” article by Dan Gravatt in the 2008 January Issue of Nuts&Volts (page 42), so I won’t go into much detail.
Below is the schematic. The changes from Dan’s datalogger are that I used the PIC16F886, which is pin-compatible with the PIC 16F876. I also used the PIC’s hardware serial I/O channels (pins 17 and 18) and I added an indicator LED that indicates logging in progress and the log interval (pin 22). The switch sets the mode between logging and writing data over the serial port.

The C data logger code is available here as is a hex file with 1 s log interval. I used the CCS compiler. This makes reading and writing program memory very straight forward with commands like write_program_eeprom( prog_mem_adr, value ) and read_program_eeprom(prog_mem_adr). The 16F886 has 8192 total program flash words. The total time of logging is determined by the delay setting at line 64 of main.c. Use a frequency counter at the indicator LED to set the desired logging interval. If you don’t add any lines to the code, you can increase the memory used for logging by setting START_ADR to the lowest open memory address. You can get this information with, e.g., the PICKit2 programming application or whatever your favorite PIC programmer provides.
Here’s the completed logger with a LM35 temperature sensor (suspended in the foreground) and a 7805 regulator (on the back left corner of the board) with a 9V battery attached.









Trying out new sensors for my PIC projects can be tedious with only LEDs or 2-line LCD displays to provide feedback. When I don't quite know what you are looking for, there can be some fiddling around to get things going. The USB Bit Whacker makes this first prototyping step really easy. With the 18F25xx or 18F45xx USB enabled chips from Microchip and some software created by Brian Schmalz (the USB Bit Whacker software), you can see how your new sensors are going to act with a PIC chip in just a few minutes.
The UBW lets you control pin input and output though the USB port on your computer with a few simple commands. Using standard USB/Serial drivers on the computer (available from Microchip and elsewhere), you can interact with your UBW through a terminal application or any language the speaks serial. That's all there is to it. I built an 18F4550 board that uses Brian's UBW firmware with a minor modifications. But for real speed, just buy one ready to go from Sparkfun (shown in the photo).
I got a new +/- 2g accelerometer and a UBW from Sparkfun and wanted to see them in action right away. Using my UBW from Sparkfun, I added some header pins and used some jumper wires to hook things up as shown in the photo (this part takes about 2 min if you move slowly). The accelerometer is a 2 axis (x-y) device that offers voltages at the outputs between 0 V and Vcc (roughly) that are proportional to the acceleration along the x and y axes. Since there isn't any difference between the acceleration due to gravitational force and that due to changing speeds, the device can work dynamically to measure motion (acceleration) or pseudo-statically, to measure orientation in a gravitational field.
(Click for full-size image)
With a few lines of Python code reading the serial port, I was able to log data from both axes of the accelerometer as I slowly rolled the accelerometer along my desktop. The resulting data is shown in the plot below. As you can see, I rotated the device through 360 degrees in about 22 seconds, taking a few readings per second.
Links:
* Sparkfun -- Lots of cool stuff here!
* UBW at Sparkfun
* UBW Homepage
* Accelerometer data sheet
* Accelerometer at Sparkfun
* Python data logger application
Working toward a CNC machine, I decided to use the LiniStepper as my Stepper motor driver. It is inexpensive, has a good feature set, is based on the Microchip 16F638A and open source. I have build two LiniSteppers to date (need 1, maybe 2 more). To test the stepper drivers, 4 control lines have to be set and a step clock function provided. A simple 555-based oscillator with some DIP switches will do. (You can buy a complete kit from James Newton for $19. That's what I did, but I had a small soldering incident that destroyed the board--hence this project.)
Here's the LinStepper driving a small stepper motor at 12V.

And here's a close up of the Stepper Tester.
If you want to build one of your own, here's the schematic and circuit board (600dpi) artwork. I used a 470 ohm resistor for the LED, 10K ohm resistors for the pull-ups, 2 500K pots for frequency and duty cycle adjustment and a .1 microfarad capacitor for the timing cap. The 7 pin header matches the layout of the LiniStepper. The upper 2-pin jumper in the photo is power input to the regulator circuit; the lower 2-pin header is for additional 5V supply (here I am powering the circuit directly from my bench supply).
FlatTop vs. 2-Cell in a dramatic tractor pull. For more information, see my previous post on Solarollers.
See the drag race between FlatTop and 2-Cell at YouTube.
The advantage in both cases goes to 2-Cell, although FlatTop does a lot better when heading south due to the angle of the Sun and 2-Cell's two solar cells.

These are fun and easy to build. The solar engine is made from two transistors and a threshold "switch" that allows the two capacitors to be charged by the solar cell. When the voltage across the capacitors reaches the threshold of the switch, the energy stored in the capacitor is released moving the Roller as current flows to the motor. This allows the vehicle to move in a wide range of light intensities.
Solar Roller and BEAM resources:

Alex Weber over at Instructables built a great programmable LED based on the AVR chip. Since I am tooled for PIC, I thought it would be fun to replicate what he has done. This simple project is fun and it provides a great building block for playing with collective behaviors.
Download detailed instructions and software LEDRec.c, LEDRec.h, LEDRec.hex for a PIC-based programmable LED.