Many of our Cornell Colleagues have to take bus to and from school. However, buses are not always on time. It is not their fault since the Ithaca weather and hence road condition can be highly unpredictable. On the consumer side, there is no choice except getting to the bus station on time despite having to stand in the chilly wind and heavy snow for perhaps 10 minutes or more.

What if we have an advanced warning system that gives out a signal at the approach of a bus? Suppose we have a transmitter on every bus that sends out the bus number code, and have a repeater on each bus stop repeat that signal when the bus passes by. To identify where the bus is at, the repeater may add in its stop number. This signal, when received and decoded by the user's receiver, gives out a warning signal when it matches the bus and stop number that the user set previously.

This project aim at building a prototype for a bus advanced warning system with two important differences. This prototype is based upon the Motorola MC68HC912B32 micro-controller. There shall be a compact DC power supply attached to the transmit and receive modules in the final product.

Since I am using a relatively powerful Micro-controller for this task, I added additional features to make this device more useful to the Cornell community. One of the features is a electronic planner that allows users to store telephone numbers of other students. Also, the users are able to store events in the organizer to remind them to do certain tasks. This is accomplished by building a digital clock.


Pin 7, the data pin, is connected to the micro-controller serial PORT S bit 0. This pin is used to transmit data into the micro-controller. The receiver gets the FM modulated signal through the antenna of 16 cm connected to pin 1, demodulates it into digital byte streams and sends it to pin 7. The micro-controller then takes this data and constantly matches it against the preset bus and stop code. Once matched, it activates a LED flashes to alert the user of the approach of bus.


Pin 5, the data pin, is connected to the other end of the micro-controller serial port pin 2. To clarify again, this should be the other end that is NOT connected to the micro-controller's serial port. Pin 2 on this end means the receiver pin and it is based on the data send from the transmit pin from the serial port connected to the board. The micro-controller, after accepted and encoded the bus and stop number that the user types in the terminal program, should send out the FM modulated bit stream continuously through the antenna connected to pin 2. The hardware has been set to a baud rate of 9600 and the carrier frequency to be 418 MHz. FM modulation is used to guard against loss and noise. 418 MHz is used to ensure transmission even in snow, which has a high absorption for frequencies at microwave frequency, namely 1-2 GHz.


I used the Seiko L1671 LCD display for the user interface. This 16 character dot matrix display is capable of displaying all of ASCI characters and the set of Japanese characters as well! The main problem of this LCD display, however, is the amount of time it requires for a character to be stored. In order to write to the display, I had to write a delay routine that loops for 800 cycles. At the very least, this would require around 2000 cycles which would be 250 us. Other than that, this display is relatively easily to program and has the capability to adjust contrast through the use of a variable resistor. The 8 data pins are connected to PORT A of the microcontroller. In addition, I am using PORT P to control the enable and read/write pins. Since there are many I/O pins on the board, the use of these pins does not pose a problem.