dillon krasovec : jerod ellingson : robert glissmann : ben walker : patrick hanschen team teneo +cdr.

Download Report

Transcript dillon krasovec : jerod ellingson : robert glissmann : ben walker : patrick hanschen team teneo +cdr.

dillon krasovec : jerod ellingson : robert glissmann : ben walker : patrick hanschen
team teneo
+cdr
mission
: universal human
interface device
: intuitive alternative to mouse and
keyboard or any difficult to learn
remote controller
glove architecture
adc
adc
glove schematic
gyro schematic
glove progress
: flex sensor
+ circuit design
+ analog input on MSP
+ testing
: external ADCs
+ circuit design
+ spi communication
+ streaming data
80%



33%

e progress
: accelerometer
+
+
+
+
circuit design
communication
streaming data
packet data
65%



: gyro
+
+
+
+
circuit design
analog input on MSP
process angle data
connecting to external ADC
50%


SPI
State Machine
1/x
Data Out
Data In
SPI Slave
Slave
Select
SMClk
SPI Master
MSP430F2616
•3 SPI State Machines
•2 different clock speeds
asynchronous spi communication
void main()
{
.
.
Place commands in
FIFO buffer
.
[ Other tasks ]
.
Read data from
FIFO buffer
.
FIFO
Command
Buffer
FIFO
Receive
Buffer
void spi_interrupt()
{
.
.
Read next command
.
.
Buffer received data
.
.
Send next command
.
.
Request
ADXL Data*
Request
Flex
Data*
Process
ADXL Data
Quantize
Flex Data
Request
Gyro Data*
Process
Data
Send
Data*
timing
: what we want
+ transmission specification: packets/sec
: limitations
+ get sufficient samples for precision
+ allow sufficient processing
: achieving correct timing
+ set ADXL sampling clock
+ choose buffer fill threshold
Request
ADXL Data*
Request
Flex Data*
Process
ADXL Data
Request
ADXL Data*
Quantize
Flex Data
Request
Gyro Data*
Request
Flex Data*
Process
Data
Quantize
Flex Data
Request
Gyro Data*
Send
Data*
Process
ADXL Data
Process
Data
Send
Data*
pc-hub
-f2616
class diagram
calls
pc hub
HID_emulator
<<boundary>>
+DeviceDescriptor();
RF_receiver
<<boundary>>
+inBuff[]; char
+outBuff[]; char
glove
+getHandState();
+polledByADC();
Gets data from
IR_camera
<<entity>>
+Init();
+transmit();
+transmitComplete();
+sendFeature(char []);
+writeBytes(char[]);
+readBytes(char &[]);
+connect(ID);
Xml_interface
<<boundary>>
+filename
+getProfileList();
+saveProfileList();
+loadSettings();
+saveSettings();
Gesture
<<entity>>
+ID(); string
+BitwiseDescriptor();
+XmlNodeDescriptor();
+getName()
+getBitwiseDescriptor();
+getXmlNode();
+populateFromXmlNod
e():
modifies
AnalogSensor
<<entity>>
+SlaveSelect();
+LookupTable();
ProfileBuffer
<<entity>>
+ActiveProfile
+list<Gesture> gestures
+rename(string);
+saveProfile();
+cancel();
+createNewGesture();
+saveGesture();
+cancelGesture();
AtmelUSB_interface
<<entity>>
displays
polls
+getx();
+gety();
+getz();
+setMode();
HubController
<<controller>>
+RF_receive();
+HID_emulator();
+IR_tracker();
pc
shows/hides
calls
transmits to
calls
calls
RF_transmitter
<<boundary>>
+inBuff[]; char
+outBuff[]; char
+sendBuff();
Accelerometer
<<entity>>
Gives data/ gets status
gets data from
gets/sets
GloveController
<<controller>>
+HandState(); struct
+FingerTrends();
+AccelTrends();
ControllerState();
+getSensorData();
+sendHandStat()
+executeScheduledTasks();
+processCurrentState();
+sendMouseState();
+sendKeyboardState();
MainUI_window
<<controller>>
+List<Profile> profile();
+ProfileBuffer();
+XmlFileInterface();
+save();
+cancel();
+createNewProfile();
+editProfile();
+downloadProfile();
Profile
<<entity>>
+List<Gesture>gestures
+name(); string
+description(); string
+setName();
+getName();
+setDescription();
+getDescription();
+getGestureList(); List<Gesture>
+addGesture(Gesture);
+removeGesture();
Composed of
infrared cam
:
:
:
:
:
:
PixArt
wii remote
cmos + preprocessing
outputs x y coords and spot size
no official spec sheet
hacks and snooping
ared cam
:
:
:
:
intermediate circuit
25Mhz oscillator
i2c – different clk
init()
+ mode
+ sensitivity
: timer driven polling
radiofrequency
:
:
:
:
:
ez430-rf2500
pin header interface
initially a risk
uart for debugging
spi ports
+ successful
+ only has two – pins are shared
+ no uart for debugging
: current progress = 85%
packets
RC LC M
5 discrete bits middle I
5 discrete bits index T
12 bytes
accel x-vector
accel y-vector
accel z-vector
misc.
3 bits palm
gyro pitch
gyro roll
15
3 bits
rotation
8 7
0
pc hub gesture lookup
10
8
5 4
3 2 1 0
key RDir PDir RD LD T I M
hash
function
index
keyboard seq.
mouse action
0
3 chars
2 bits
1
3 chars
2 bits
…
…
…
8
3 chars
2 bits
master to usb emulator
: spi (3-wire) from master to USB emulator
+ frame packet (5-bytes) indicates key presses and mouse position
K1 K2 K3
∆X ∆Y
+ single status-byte returned by emulator
+ indicates whether a new Profile LUT is available
+ hub’s look-up table is updated with “focused transfer”
: all other transactions and look-ups cease
: tables are not persistent between sessions (mouse stored statically)
+ current progress = 25%
pc hub schematic
usb emulator module
: atmel processor (At90USB1287) implements human
interface device (HID) protocol
+ vendor ID (VID) and product ID (PID) distinguish unit from
other USB devices
+ device descriptors
: mouse
: keyboard
: generic device
emulator module
: receives output reports from PC utility
+ when requested by the Hub master processor, reports
are forwarded via SPI
: receives commands from hub master via SPI:
+ keys and mouse state to assert in output reports
: current progress =
30%
pc config utility
: software utility allows for complete configuration
of glove gesture mapping
+ written in visual c#
: usability profiles enable users to save groups of
gestures for a specific type of application
+ eight or fewer gestures per profile
+ three-key hotkeys
: application saves profiles by serializing to XML
<?xml version="1.0" encoding="utf-8" ?>
<Profiles>
<Profile name="Mouse" default="true" description="Basic mouse controller">
<Gesture id="g45t"> …
config utility
: library support for device detection
+ windows messages provide connection notification
: DLL wrapper enables communication to Hub device via
host “output reports”
+ allows utility to detect when USB device is connected
+ gesture descriptors are packed into six-byte structures
+ profile description table transmitted via OUT reports
: current progress =
70%
Configuration Utility UI
helicopter hub design
pitch
throttle
pirouette
roll
zigbee
heli-hub architecture
rc LPF
adc
v follower
MSP430F2616
gpio
jtag
SP
dac
helicopter hub schematic
controller blues
: controller is now optional
+ very challenging control application
+ may require more powerful processor
+ testing could be hazardous
: testing shows…
+ even coaxial helicopter challenging to fly
+ hovering requires constant adjustment
+ uncertain if glove will be easier or harder
e
milestone
1
: derive angle and movement from
accelerometer
: acquire and process flex and gyro data
: IR cam prototyping
: integrating RF + emulator + IR into hub proto
: demonstrate pass-through function on helihub
: rev. 1 PCB’s
e
milestone
2
:
:
:
:
:
glove construction
helicopter controllable by glove
glove fully emulates HID device on a PC
GUI with google sketchup profiles
rev. 2 PCB’s construction
budget
= $620
:
:
:
:
:
repair parts and batteries for heli
PCB sensors
PCB revisions
glove and accessories
surface mount components
= $190
-=
-=
-=
-=
-=
$60
$60
$200
$60
$50
Division of Labor
task
dillon
robert
IR unit
d
r
drivers / USB
d
r
gyroscopes / accelerometers
ben
jared
p
j
p
j
b
flex sensors / buttons
software system sesign
patrick
d
r
sensor processing and comm
b
helicopter controller interface
PCB
d
r
b
p
j
construction
d
r
b
p
j
questions
dillon krasovec : jerod ellingson : robert glissmann : ben walker : patrick hanschen