Arduino from Scratch - Digital Thermometer

 by matt.e.jenkins
Featured
DSC00220.JPG
DSC00240.JPG
DSC00221.JPG
DSC00222.JPG
DSC00227.JPG

I have loved making projects with Arduinos, but at $30 a piece your projects can get expensive. So I want to show you how you can make your own Arduino from scratch and save money doing it. Make your own Arduino for around $8. For this instructable I show you how to make one on a breadboard and with it make a digital thermometer.


 
Remove these adsRemove these ads by Signing Up

Step 1: Parts you need for the Arduino:

DSC00248.JPG
  • Full Size Breadboard ($8 adafruit.com)
  • 22 AWG Wire or jumper wires ($6 adafruit.com)
  • 1 - 7805 Voltage Regulator ($0.18 taydaelectronics.com)
  • 2 - LEDs ($0.02 each taydaelectronics.com)
  • 2 - 220 Ohm Resistors ($0.10 each taydaelectronics.com)
  • 1 - 10k Ohm Resistor ($0.10 taydaelectronics.com)
  • 2 - 10 uF Capacitors ($0.01 each taydaelectronics.com)
  • 1 - 16 MHz Clock Crystal ($0.07 taydaelectronics.com)
  • 2 - 22 pF Capacitors ($0.10 for pack of 10 taydaelectronics.com)
  • 1 - Small Momentary Normally Open "off" Button ($0.05 taydaelectronics.com)
  • 1 - Breadboard-friendly 2.1mm DC barrel jack and 9V Wall Wort with 2.1mm Plug (2.1mm jack $0.95 adafruit.com)
  • 1 - ATMega328 with Bootloader ($6 adafruit.com or cheaper other places if you can add your own bootloader)
Many of these parts you can also buy from Radio Shack.
Assuming you have a breadboard, wire, and a way to program (see step 4) the Arduino parts cost a total of $7.71 +shipping.
lmajer says: Apr 4, 2013. 1:41 PM
Can this be modified to mesure soldering iron tip temperature?
waterlubber says: Mar 10, 2013. 10:34 AM
How do I use a thermistor (one that has variable resistance) with this? I already have a program that returns the resistance of the thermistor, how do I make that into degress F? (or Celsuis, I know how to convert)
arabi2 says: Dec 19, 2012. 8:50 AM
is there much difference between tmp36 and tmp35 ?!!?.....
arabi2 says: Dec 19, 2012. 8:15 AM
photo of the circuit
picture000.jpg
arabi2 says: Dec 19, 2012. 8:08 AM
the LCD isn't working.... all connections are good... programmed and ( done compiling ) ......... it doesn't power on at all :(
omar hussein says: Dec 19, 2012. 7:17 AM
yes........
Aperture Laboratories says: Dec 18, 2012. 8:29 PM
What if I used a 16x2 character oled display from adafruit? Should I use the liquidcrystal library as written in your code or should I swap it with the library adafruit wrote specialy for the oled? Would swaping the librarys even work?

Link to the display found Here
matt.e.jenkins (author) in reply to Aperture LaboratoriesDec 19, 2012. 7:07 AM
I haven't even seen that OLED before. It looks really cool. From a simple look it might work with the LiquidCrystal.h library but it apparently has it's own library so you should give that a try instead. Let me know how it works.
Aperture Laboratories in reply to matt.e.jenkinsDec 19, 2012. 7:13 AM
Cool, I'll let you know
omar hussein says: Dec 19, 2012. 6:58 AM
all connections are OK ... but for Bin 2.... isn't connected.. is there any prob. ?!!
matt.e.jenkins (author) in reply to omar husseinDec 19, 2012. 7:04 AM
pin 2? For the LCD? that one goes to 5v.
omar hussein says: Dec 19, 2012. 5:48 AM
LCD didn't work .. what should i do !!
matt.e.jenkins (author) in reply to omar husseinDec 19, 2012. 6:21 AM
It must be hooked up wrong. If my instructions are confusing, you should try
http://learn.adafruit.com/character-lcds
Maraudergal915 says: Jan 15, 2012. 8:14 AM
I have a question. What kind of Board do you have to select when using a FTDI friendly when programing it?
soshimo in reply to Maraudergal915Jan 16, 2012. 4:15 PM
The board type should match the chip you are using (and the bootloader image). So, if you are using a 2650 you should pick the mega board. If using a 328 or 168, pick the uno. Take a look at boards.txt file to see what information is specified for each board type. These are usually maximum image size, cpu frequency, fuses, bootloader information, etc... There is nothing in there about what type of USB->Serial device you use. You specify that by choosing the correct com port. The device driver for whatever FTDI hardware you are using takes care of everything else so the device will output rs232 at ttl levels and look like any other rs232 terminal to the atmega uart.
Maraudergal915 in reply to soshimoJan 17, 2012. 2:47 PM
Thank you as well. I think I understand alot better then I did.
matt.e.jenkins (author) in reply to Maraudergal915Jan 15, 2012. 8:26 AM
You can select Uno.
Maraudergal915 in reply to matt.e.jenkinsJan 15, 2012. 8:31 AM
But when I select Uno I am still getting a stk500_getsync(): not in sync:resp=0x00
matt.e.jenkins (author) in reply to Maraudergal915Jan 15, 2012. 8:37 AM
That is strange. Troubleshooting errors like that is a bit beyond me. Did you get the FTDI Friend from Adafruit? They have helpful forums in which you can ask a question. I would try shuting down the PC and trying again. And maybe trying a different computer if you can. I have had issues like that before that I could not fix, but it worked on a different computer. Sorry, that's not much help.
Maraudergal915 in reply to matt.e.jenkinsJan 15, 2012. 8:41 AM
Thank you sir and Yes I had gotten the FTDI Friend from Adafruit. We had went to go buy the Arduino bored model for the Uno just to see if we could get it to program and to see if it was just something we were doing wrong, but we had gotten it to program perfectly but every time we try to do it on the one we built it just keeps giving us the same not in sync. Thank you for your help sir.
nfriedly in reply to Maraudergal915Jun 2, 2012. 9:05 PM
I had this problem and was able to solving it by disconnecting reset line from the FTDIFriend (pin 1 on the arduino, pin 6/RTS on the FTDIFriend) and instead manually pressing the reset button on the breadboard right after clicking upload on my computer.

(I tried pressing the reset button while the FTDIFriend was uploading and noticed that nothing happened until it decided that the upload had failed, then the Arduino would reset.)
emdarcher in reply to nfriedlyJul 10, 2012. 6:25 PM
you could add a 0.1uf capacitor between the reset pin and the corresponding pin on the FTDI friend and it should work
soshimo in reply to Maraudergal915Jan 16, 2012. 4:02 PM
I had the same problem, then I examined a schematic for the Duemilanove and noticed a couple of things missing from most tutorials.

First, add a 1k resistor inline with the rx/tx lines going to the microprocessor.

Secondly add an ac coupling capacitor (try 4.7uf or somewhere around there) in series with the DTR line going to the reset.

The bootloader works by bringing DTR low first, which should reset the device. The bootloader is always loaded after reset so after DTR is brought low it begins to try to communicate over the UART. If DTR never goes low the device will never reset and whatever sketch is running will keep running (and therefore the bootloader will not be running).

Finally, make sure you actually have the arduino hex image loaded on the device. There really is no easy way to do this - when I'm in doubt I drop it in my Duemilanove (mine is the DIP type and the chip isn't soldered in, so it's easy to take it out and replace with another) and see if I can download a sketch. If I can't download a sketch I usually plug my MkII ISP into the arduino board and download the correct hex file using winavr.
steveoondyou says: Nov 20, 2011. 6:11 PM
wild. i didnt know they were so simple to build, thats interesting.
soshimo in reply to steveoondyouJan 16, 2012. 4:21 PM
If you can live with the built in RC oscillator you can reduce the BOM even more by eliminating the crystal and capacitors. If you want a little more stability (but not as much as a crystal) use a ceramic resonator - many have built in capacitance so external capacitors are not required. Many microprocessors share similar small BOM configurations - PICs have a built in RC oscillator - same BOM (except for the chip of course).
Aperture Laboratories says: Dec 30, 2011. 11:53 AM
cool!
Aperture Laboratories says: Dec 30, 2011. 7:33 AM
could you use an arduino uno and use the same code for the FTDI friend and the project still work?
matt.e.jenkins (author) in reply to Aperture LaboratoriesDec 30, 2011. 10:23 AM
Yup. You can use your arduino UNO. It would work. Let me know if you have other questions.
atif khair says: Nov 16, 2011. 12:33 AM
I really like the work Digital thermometer no complex connection on the board.
Jaycon
insmac says: Oct 28, 2011. 8:09 AM
Hmm...any particular reason not to use the Boarduino from adafruit? At $17.50 for all the parts and PC board to mount them on...
matt.e.jenkins (author) in reply to insmacOct 28, 2011. 10:24 AM
I know of it and adafruit sells great things. But I think it is fun to create things from scratch. Plus it helps me and others know how it works.
PaulMakesThings in reply to matt.e.jenkinsOct 30, 2011. 9:58 PM
I would also add that if someone wants to create a device which they plan to produce several of, knowing how to make this from scratch lets them integrate it all into one board, giving it a more unified professional design. Also in that case the savings add up.
Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!