This project shows the use of a simple thermistor to measure temperature and display the temperature graphically on a Nokia 3310 LCD. Thermistors are incredibly cheap (about 50 cents), and provide fraction of a degree accuracy. The Nokia 3310 Library originally written by CC Darmini was modified yet again, this time to use per pixel access while maintaining the ability to draw text.
Thermistor Project LCD Screenshot
Thermistor Up Close
Custom Development Board (but anything can be used)
Details
The temperature sensing is achieved with a thermistor. These are simple devices whose resistance changes based on temperature. There is an equation, the Steinhart and Hart equation, that allows us to calculate the resistance using constants provided in the datasheet. In our case, we’ve used the Vishay thermistor NTCLE100E3103JB0 because Sparkfun.com sells it. We make a simple resistor divider using a 10k resistor and read the resistance using an ADC pin on our AVR. The accuracy of the resistor is extremely important. Its value is used in our calculations. If you choose a similar resistor but without this exact value, be sure you change the code to reflect the resistor you are using.
Our good ole’ Nokia 3310 LCD is used again. We’ve modified CC Darmini’s LCD library again. Last time, we modified it to get per pixel access using a local pixel buffer. This time we realized that we needed to be able to modify the pixels just as we did before but don’t want to actually update the display until we are completely done. This is only a performance gain if you are writing a significant portion of the screen. The modified library already only wrote to the bytes that had be modified.
Lastly, the current temp is sent out over the serial port at 9600 for logging. The schematic does not reflect this because it is not necessary. We recommend the super simple FTDI breakout board to easily power and add serial over USB to any of your projects.
I received a dissection microscope as a present for Christmas. The video below demonstrates how well it works for inspecting small soldering jobs. It has proven invaluable for troubleshooting soldering jobs and doing surface mount soldering. It is mono (only one eyepiece) and only 20x and 40x power but it does the job great. The fact that it is is dissection microscope means there is plenty of room at the bottom for working. I use a compact florescent light to illuminate it because I get lots of light and the bulb doesn’t make my working area hot. Having a nice pair of bent angle tweezers has been great for holding things while soldering or repairing bad soldering jobs. The soldering job in the video was done before I had the microscope on the fine pitch pins of the Nokia 3310 LCD. I soldered a section cut out from an IDE ribbon cable. From looking around, $94 for this microscope appears to be the least expensive way to get this functionality.
This project allows one to use a universal IR remote to control an AVR based Etch A Sketch. For display, we use the Nokia 3310 LCD ($10 from SparkFun.com). The Etch A Sketch functionality is simply the ability to draw in a straight line up, down, left, right. The purpose of this project was to demonstrate the improvements to CC Dharmani’s NOkia 3310 library that allows per pixel access using a pixel buffer. The improved version has been included in the source of this project *. As originally written, the library worked great displaying fonts of two different sizes, clearing the screen, and drawing a boarder around the edges. Because of the way one must talk to the screen, it did not allow raw pixel access or random drawing. Doing so requires a local cache (buffer) of the pixels. This way, if you want to set a single pixel, you have the old value that you set to modify and write it back. The improvements shown here do just that. Additionally, we also have included a small tool to allow a .pgm file to be converted to a header for a splash screen. The additional routine to display the image is also included.
* Hopefully CC Dharmani and I will get together and put this library in a source repository to store continual improvements.
Details
For input, we use a 38kHz IR demodulating receiver. These can be picked up for $4 at RadioShack or $0.75 on Digikey (parts list below). Sparkfun.com also has a fancy one for $9.95. For display, we use our handy dandy Nokia 3310 replacement LCD. We talk to it using SPI. The arrow keys on the remote move the cursor and draw a line as it goes. The MENU or MUTE buttons swipe the screen.
Quickly hacked program to read in a 84×56 8-bits per pixel .pgm file and spit out a splash.h file for inclusion to an AVR project to display images.
Steps for making splash screens (included as header files) with pgmtoheader.c:
open a file that you want to display on your Nokia 3310 (black and white graphics are best) in GIMP or Photoshop
resize to a height of 56
use the thresholding tool to find a good value to use as the point between black and white. You probably will have to slide it back and forth until you get a good image.
stretch/resize to 84×56
save as .pgm (raw not ascii)
open a hexeditor (I use khexedit) and hack off the header portion (or modify the code to skip over it)
compile pgmtoheader with ‘gcc -o pgmtoheader pgmtoheader.c’
run the pgmtoheader program on it with ‘./pgmtoheader /path/to/file.pgm > splash.h’
you can now #include “splash.h” in the 3310_routines.c and call LCD_drawSplash() to display it.