TinyOS Hardware Tour - University of California, Berkeley

Download Report

Transcript TinyOS Hardware Tour - University of California, Berkeley

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
• 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 Connector Schematics
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
Rene Schematics
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
Current
Wakeup
latency
(cycles)
Wakeup
granularity
(cycles)
Active
6 mA
-
-
Idle
2 mA
4
1
Power save
5 uA
4
122
• 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*
19000
18000
17000
Sign al strength
16000
15000
14000
13000
12000
11000
10000
9000
0
10
*Klemmer, Waterson, Whitehouse, 2000
20
30
40
50
Di stance from base station (feet)
60
70
80
90
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)