The PIC16F1455 is a relatively new microcontroller. It can do USB communication with the built-in RC oscillator and has internal pull-up resistors for the USB data lines. This mean no extra hardware is necessary for USB functionality.

I needed something useful to send over USB and I noticed that the PIC16F1455 has a Temperature Indicator Module. This peripheral will let you read the operating temperature of the silicon die over the ADC. It's not terribly accurate, but the silicon die temperature will be about equal to the outside temperature.

Using the M-Stack USB Stack from Signal 11, I wrote a program to enumerate the PIC16F1455 as a USB CDC serial device and send the temperature in ADC counts as an ASCII string at 1 Hz. Then, I carefully soldered a male USB Type A connector to the PIC16F1455's Vdd, Vss, D+, and D- pins.

From the computer side, it's easy to connect to the USB temperature data logger like any other serial device, parse the incoming strings, and save the data to a file with a timestamp.

The last step is to map the ADC counts to a temperature scale. The register values increase linearly with temperature. The easiest approach is to record the ADC count at two known temperatures and interpolate between them.