Home : Course Map : Chapter 24 :
Java Processor Demo 1: Code Description
Javelin Stamp as Temperature Sensor
JavaTech
Course Map
Chapter 24

IntroEmbeddedJava
In Eng. & Sci
J2ME Overview
Real Time Java
Java Hardware
  Chips
  Cores
  Boards
Javelin Stamp
Javelin Programs
  
   Demo 1
   Listing
   Demo 2  
   Demo 3  

SNAP
   Demo 2
 
Performance
Embed Apps
Exercises

     About JavaTech
     Codes List
     Exercises
     Feedback
     References
     Resources
     Tips
     Topic Index
     Course Guide
     What's New

The program described here was run in a Javelin evaluation card and provided a temperature data value over the serial line when sent a request from the program discussed in Chapter 23. We created three classes to run in the Javelin:

  • SendTempDataFromJavelin - the main program that sets up the temperature sensor, creates UART virtual peripheral objects to transmit and recieve data over the serial line.

  • TempDataGenJavelin - gets the temperature value from a DS1620 chip via the I/O pins. This class extends the abstract DataGenerator class.

  • DataGenerator - abstract class to represent data sources of different sorts. It's getData() method must be overriden by concrete subclasses.

The program creates both a receive and a transmit UART Virtual Peripheral class objects to provide 2-way serial communications. Each constructor assigns two I/O pins to the appropriate function and sets the serial mode for 9600 baud.

The reset signal will start the main() routine, which creates an instance of TempDataGenJavelin, which is reference by a DataGenerator type variable. DataGenerator is an abstract class (Javelin does not allow interfaces) with the single method getData(). The class TempDataGenJavelin extends DataGenerator and overrides getData() with a method that obtains temperature readings from the chip DS1620.

The process then goes into a loop and immediately invokes checkPW(). This method provides for a simple protocol that requires that the request for data first include a short password number. The method invokes the receiveInt(), which will wait for the requestor to transmit a two byte number that matches the password value. The method receives 2 bytes in big-endian format. That is, the least significant byte arrives first and the most significant last. It makes an int value with the two bytes (remember that in the Javelin, the integers are a maximum of two bytes long.)

If the password value is valid, then a string confirmation is transmitted to the requestor. Back in the main loop, the data int value is obtained from the DataGenerator and then transmitted as two bytes in big-endian format (Java specifications require big-endian representation). The loop then returns to the receiveInt() method again and waits for the next data request.

Note that the DS1620 chip can also be used to control a thermostat. So a straight-forward extension of the programs here would allow for setting the thermostat.

See code listing on next page.

References and Web Resources

Latest update: Dec. 14, 2004

  
  Part I Part II Part III
Java Core 1  2  3  4  5  6  7  8  9  10  11  12 13 14 15 16 17
18 19 20
21
22 23 24
Supplements

1  2  3  4  5  6  7  8  9  10  11  12

Tech 1  2  3  4  5  6  7  8  9  10  11  12
Physics 1  2  3  4  5  6  7  8  9  10  11  12

Java is a trademark of Sun Microsystems, Inc.