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

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

Embed Size (px)

Citation preview

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

TinyOS Programming Boot Camp

Part III: Hardware Tour

David Culler, Jason Hill, Rob Szewczyk, Alec Woo

U.C. Berkeley

2/9/2001

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

Hardware Tour

Page 3: 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

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

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

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

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

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

Mote Connector Schematics

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

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

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

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

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

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

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

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.

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

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

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

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

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

Rene: the Motherboard

• Main components– Processor: ATMEL AVR 90LS8535

– Reprogramming coprocessor

– Short range radio

– LEDs

– I2C EEPROM

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

Rene Schematics

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

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

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

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

CurrentWakeup latency (cycles)

Wakeup granularity

(cycles)

Active 6 mA - -

Idle 2 mA 4 1

Power save 5 uA 4 122

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

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

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

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

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

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

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

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*

9000

10000

11000

12000

13000

14000

15000

16000

17000

18000

19000

0 10 20 30 40 50 60 70 80 90

Distance from base station (feet)

Sig

nal

str

en

gth

*Klemmer, Waterson, Whitehouse, 2000

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

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

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

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

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

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

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

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

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

Basic Sensor Board

• Sensors– Photo resistor – PW1 and ADC1

– Thermistor – PW2 and ADC2

– Prototyping area

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

Vibes Sensor Board

• Vibes– Photo resistor: PW1 and ADC1

– Thermistor: PW4, ADC6

– 2 axis accelerometer: ADC2 and 3, PW2

– Digital temperature: I2C Bus 1

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

2xMAG Board

• Sensor– 2 axis magnetometer optimized for vehicle detection

– Resources: PW2, 3, and 4, ADC 6 and 7

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

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

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

Building Your Own

• Tools – OrCAD – capture and layout tools

• Complete designs– Rene

– Basic

– Vibes

– 2xMAG

– Base board

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

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

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

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)