310 likes | 468 Views
TinyOS Programming Boot Camp Part III: Hardware Tour. David Culler, Jason Hill, Rob Szewczyk, Alec Woo U.C. Berkeley 2/9/2001. Hardware Tour. Outline. Design overview Connector bus Sensor motherboard Sensor boards Supporting hardware Resources. Design Rationale.
E N D
TinyOS Programming Boot Camp Part III: Hardware Tour David Culler, Jason Hill, Rob Szewczyk, Alec Woo U.C. Berkeley 2/9/2001
Outline • Design overview • Connector bus • Sensor motherboard • Sensor boards • Supporting hardware • Resources
Design Rationale • Want to experiment with a wide variety of sensors • Need a wide variety of interfaces, analog and digital • Sensor platforms should be easy to design • Want to preserve processor and communication module • Major investment in SW and programming environment • Want interoperability between the various types of sensors • Every sensor node needs communication to be useful • Need a fixed interface to match the sensor modules with processor and communication
Design Rationale • Main board requirements • Easy to program and debug • Need an easy access to most signals in the system • Need standard interfaces • Basic self-monitoring and maintenance capability • Ability to reprogram remotely • Ability to control radio cell size • Ability to monitor signal strength • Other self monitoring added on sensor packs • Sensor requirements • Digital serial interfaces • Analog sensor support • Ability to control on/off state of individual sensors
Mote Expansion Connector • Documented hardware interface • Swap components on either side of the connector while preserving investment in sensors or main boards • Sensor interfaces • 4 lines dedicated to switching components on and off • 7 analog voltage sensing lines • 2 I2C busses • SPI • UART lines • Debugging aids • All radio-related signals: RX, TX, base band, control signals, signal strength • Programming interfaces • SPI and reset signals for the main processor and the coprocessor • Ground, Vcc for both analog and digital circuits • 12 lines reserved for future use
Power Lines • Need to control on/off state of individual sensors • Independently switched, used as outputs • Capability • Sink up to 20 mA, source a bit less • If more current is required by a sensor circuit, use MOSFETs • No higher level protocol attached • The place to implement functionality not provided by standard interfaces
Analog Lines and AD Conversion • Most sensors provide an analog interface • Simple voltage dividers with photo resistors, thermistors, etc. • Whetstone bridges, condenser microphones, etc. • Need analog voltage sensing lines • 10 bit ADC, 2 LSB=> 8 usable bits • 3 mV error • Rail-to-rail range • Sampling rate • Max 15.4 ksps in continuous sampling mode • Max 4 ksps in a single sampling mode • 8 multiplexed channels • One dedicated to sampling BBOUT • Sampling rate high enough for most environmental phenomena • Interrupt driven, or polling version
I2C Bus • 2-wire serial bus: clock and data • Clock is an “or” of all clock generators, the slowest clock generator dictates the speed • Bi-directional data line • Higher level protocol than UART or SPI • Defines a protocol for multiple device access, up to 128 devices per bus • Defines a multiple master arbitration • Allows for multi-byte transactions • Speed: up to 400 kbps • Software implementation • Soft timing constraints mean that the use of timers is not mandatory, use tasks instead • Either 1 bit or 1 byte per task • Many slave devices available • EEPROM used for logging and other permanent storage • IO extenders, ADC converters, sensors, etc.
SPI • 3-wire, full duplex serial bus: clock, MISO, MOSI • Connector bus defines 2 SPI busses • Speed: up to 1 mbps • Hardware support on the main processor, software implementation on the coprocessor • Low-voltage programming interface to ATMEL microcontrollers • Interaction with coprocessor • Cyclic 16 bit distributed register
UART • A standard way for exchanging information with a PC • Voltage conversion and connector required, provided by the programming board • Available speed: 2400 bps to 115 kbps • Most reliable for communication with PC: 19.2 kbps • Large clock rate errors at high sending rates • 1 byte FIFOs • Hardware doesn’t buffer multiple bytes of either input or output • Operate in either polling or interrupt driven mode • TinyOS uses UARTs in interrupt driven mode
Rene: the Motherboard • Main components • Processor: ATMEL AVR 90LS8535 • Reprogramming coprocessor • Short range radio • LEDs • I2C EEPROM
AVR Processor Core • Clock speed: 4 MHz • Memory • 8 Kbytes of program memory (flash) • 512 bytes of data RAM • 512 bytes of EEPROM on chip (write: 4 ms/byte) • 32 8 bit registers • IO capabilities • 32 general purpose IO lines • Some lines also serve more specialized purposes, e.g. UART • 10-bit 8-channel ADC • Connector interface means that the IO lines serve a more specific purposes • Interrupts • No external interrupts available • No interrupt queuing
AVR Processor Core • Timers • 8 bit timer/counter – unused in current applications • 16 bit counter – one comparator used for radio sampling, other functions unused • 8 bit, externally clocked timer/counter – used for periodic sampling of sensors and sleep control • More advanced timer features (input capture, PWM output) are available, through not explicitly allocated on the connector, use at your own risk • Power consumption • Restrictions • No truly general purpose registers • Limited arithmetic/logic instructions
Programming the Processor • Program the runtime memory image into a flash • No loader, no dynamic linker • Programming steps • Extract the code and data segments from an executable into an SREC file • Erase the current contents of the flash • Reset the processor • Download the program • Serial download protocol • Each download command contains the address, and the contents of to be stored • 10 ms delay per byte of code • Verify the program: read the flash, match it against the source image • After reset, start executing C runtime • No ability to write the flash on the fly • Requires a coprocessor for reprogramming
Coprocessor Circuit • Coprocessor: ATMEL AVR AT90S2343 • 2 Kbytes of code space • 1 MHz internal clock • Required connections • SPI for programming the main microcontroller • RESET for the main controller • I2C for accessing EEPROM storage • Insufficient pins – I2C and SPI clock lines are shared • Minimal capability • Software SPI • Software I2C
Radio Circuit • RFM Monolithics TR1000 916 MHz radio • On/off keying at 10 kbps (max. 19.2 kbps) • Capable of 115 kbps using amplitude shift keying • Capable of turning on in 30 us • Low-power listening by switching on and off on a sub-bit granularity • Processor interface • RFM CNTRL 0 and 1 – switch between transmit, receive, and sleep • Raw, unbuffered access to transmit (RFM TX) and receive (RFM RX) • Requires DC balanced signal – an equal number of 1’s and 0’s in the signal • Sampling on reception and modulating on transmission done is software • Too much noise in received signal to use UART for sampling • too little flexibility offered by UART • Imposes real time constraints on the system • Power usage • Transmit current: 7 mA • Receive current: 4.5 mA • Sleep: 5 uA
Radio Signal Strength • Measuring the quality of reception from a node is useful • Aid in multihop routing decisions • Help with location estimation • Signal strength measurement • Based on base band sampling • Demodulated and amplified analog signal, fed into ADC channel 0 • Raw samples further processed in TinyOS • Empirical evaluation* *Klemmer, Waterson, Whitehouse, 2000
Radio Transmission Strength Control • Useful in networking experiments • Control the cell size • Allow for power savings • Principles of operation • Radiated power is proportional to the square of the current on RFM TX pin • Signal strength control • Controlled through a digital potentiometer (DS 1804), 0-50 kOhms • Currently no observable effects on power usage • Evaluation • Optimal transmission at the pot setting of 10 kOhms • Changing the range from 45 to 90 feet in an indoor environment • Changing the transmit strength has no effect on power usage • Effects secondary to shape/length of the antenna
LEDs • Basic mote UI and a great debugging tool • Power consumption: 6mA • LED consumes as much power as the main microcontroller • If power is a concern, turn them off! • LED 1 and LED 2 multiplexed with the signal strength potentiometer control • Use them for controlling any other DS 1804 pots, one at a time
Matching SW and HW: hardware.h • Define a hardware.h for each motherboard • Map motherboard abstractions onto physical pins • RFM RX, TX, and control pins • Allocate the connector pins onto the motherboard resources: PW lines, I2C busses, UARTs, etc. • Define a header file for each sensor board • Assign symbolic names (e.G. PHOTO_PWR) to the connector signals • Attempt to maintain a consistent convention in hardware design • Photo and temperature on the same signals in both basic and advanced boards
Mote Connector Caveats • Multipurpose lines • LED1 and LED2 are used to control the signal strength potentiometer. They can also be used to control digital pots on sensor boards • PW3 can be used as a PWM output • PW4 can be used as a timer input capture, useful for PWM inputs • Other restrictions • Relationship between the main processor and the coprocessor dictates that their SPI busses are permanently connected • Shortage of pins on the coprocessor dictates that the SPI SCK is shared with the I2C BUS 2 CLK • Cannot use this bus when the board is plugged into the programming port • Cannot use the logging component when a board is set up for programming
Basic Sensor Board • Sensors • Photo resistor – PW1 and ADC1 • Thermistor – PW2 and ADC2 • Prototyping area
Vibes Sensor Board • Vibes • Photo resistor: PW1 and ADC1 • Thermistor: PW4, ADC6 • 2 axis accelerometer: ADC2 and 3, PW2 • Digital temperature: I2C Bus 1
2xMAG Board • Sensor • 2 axis magnetometer optimized for vehicle detection • Resources: PW2, 3, and 4, ADC 6 and 7
Programming Board • SPI interface through the parallel port • Programming either the main microcontroller or the coprocessor with a flip of the switch • RS232 connector • Voltage conversion • CTS/RTS signal grounded • Program the serial port accordingly
Building Your Own • Tools • OrCAD – capture and layout tools • Complete designs • Rene • Basic • Vibes • 2xMAG • Base board
Resources • Datasheets • ATMEL 8535 datasheet • RFM TR1000 datasheet • 24WC256 EEPROM • ADXL202 2 axis accelerometer • HMC1002 2 axis magnetometer • Schematics • Rene motherboard • Basic sensor board • Vibration sensor board • Vehicle detection board • Base board • Debugging board
Exercise • Basic sensor modification • Add a buzzer to the basic sensor board • Connect buzzer to Vcc and to an unused PW line. The buzzer should turn on when pulled PW is pulled low • Write a component to interface with a buzzer • Use a similar component as a template • Using the previous application as a template, create an application which beeps when the average light level drops below some threshold (audience choice)