TinyOS Programming Boot Camp Part III: Hardware Tour - PowerPoint PPT Presentation

1 / 31
About This Presentation
Title:

TinyOS Programming Boot Camp Part III: Hardware Tour

Description:

Many slave devices available. EEPROM used for logging and other permanent storage ... Low-power listening by switching on and off on a. sub-bit granularity ... – PowerPoint PPT presentation

Number of Views:85
Avg rating:3.0/5.0
Slides: 32
Provided by: robert1542
Category:

less

Transcript and Presenter's Notes

Title: TinyOS Programming Boot Camp Part III: Hardware Tour


1
TinyOS Programming Boot Camp Part III Hardware
Tour
  • David Culler, Jason Hill, Rob Szewczyk, Alec Woo
  • U.C. Berkeley
  • 2/9/2001

2
Hardware Tour
3
Outline
  • Design overview
  • Connector bus
  • Sensor motherboard
  • Sensor boards
  • Supporting hardware
  • Resources

4
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

5
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

6
Mote Connector Schematics
7
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

8
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

9
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 LSBgt 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

10
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.

11
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

12
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 doesnt buffer multiple bytes of either
    input or output
  • Operate in either polling or interrupt driven
    mode
  • TinyOS uses UARTs in interrupt driven mode

13
Rene the Motherboard
  • Main components
  • Processor ATMEL AVR 90LS8535
  • Reprogramming coprocessor
  • Short range radio
  • LEDs
  • I2C EEPROM

14
Rene Schematics
15
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

16
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

17
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

18
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

19
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
    1s and 0s 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

20
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
21
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

22
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

23
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

24
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

25
Basic Sensor Board
  • Sensors
  • Photo resistor PW1 and ADC1
  • Thermistor PW2 and ADC2
  • Prototyping area

26
Vibes Sensor Board
  • Vibes
  • Photo resistor PW1 and ADC1
  • Thermistor PW4, ADC6
  • 2 axis accelerometer ADC2 and 3, PW2
  • Digital temperature I2C Bus 1

27
2xMAG Board
  • Sensor
  • 2 axis magnetometer optimized for vehicle
    detection
  • Resources PW2, 3, and 4, ADC 6 and 7

28
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

29
Building Your Own
  • Tools
  • OrCAD capture and layout tools
  • Complete designs
  • Rene
  • Basic
  • Vibes
  • 2xMAG
  • Base board

30
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

31
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)
Write a Comment
User Comments (0)
About PowerShow.com