2.1 Rationale and Sources of Project Idea
In trying to decide what our final project would be, we wanted to choose a project that had a nice mix of both hardware and software aspects. The temperature sensor lab we did in class seemed to be a good idea, but of course a final project would have to be more extensive than that. This inspired the idea of the weather station. It has several sensors (including two temperature sensors) which collect data useful for predicting and evaluating the weather. This flushed out the hardware side. On the software side, we thought it would be neat and useful to be able to sample data over a long period of time, and process and graph it.
2.3 Logical Structure
Three sensors (the two temperature sensors and the pressure sensor) each generate an analog signal representing their respective state, which connect to the microprocessor via the analog to digital connector (port A). The last sensor, the humidity sensors interfaces with the processor through external interrupts (port D.2). Our project can run completely independently of the user while collecting/storing data from sensors during normal operation. In order to view, edit, reset, or process this data, the user must connect to the microprocessor via RS232 9600 baud serial. Using an intuitive text-based interface, the user can easily navigate the entire system's array of functions.
2.4 Hardware/Software Trade-Offs
For the most part, there was little leeway in terms of deciding which parts would be accomplished with software and which with hardware. The sensors (hardware) would pass an analog voltage to the analog-to-digital converter (ADC), and from there the software would take the data and process it. An exception to this type of data collection was the humidity sensor. The sensor itself acts as a variable capacitor, so there was no voltage output we could translate into humidity. We considered writing complicated code to check the charge time on the capacitor after switching ports, but quickly decided we could simplify the task using hardware. We used a TLC555 2.1 Mhz timer IC with several resistors to output a square wave that was dependant on the frequency. This frequency varied very linearly between 6000Hz and 7200Hz representing 0% to 100% humidity respectively and could be easily read using microprocessor external interrupts.
Our project uses several standard interfaces to allow for easy connectivity.
-EIA RS232: The RS232 connection is based on 9-PIN asynchronous operation using a transfer rate of 9600 baud. The only pins we will be concerned about are the transmit data, receive data and signal ground. We use this protocol to easily allow HyperTerminal access to the program's user interface.
-ANSI Color Standard: Using escape characters ( ^[ ), following by specific standard ANSI/VT100 color codes we are able to allow the user to change specific color display options for graphing data.
-ASCII: ASCII (American Standard Code for Information Interchange) representation is a format to represent characters (example: ‘0,' ‘a' or ‘@') as numbers (between 0 and 127). We use ASCII characters to communicate with the user over a terminal connection.