Title: The aLife Home System
1The aLife Home System
2The aLife Home System
- Home automation with a different approach
- Market flooded
- They all take the same approach GUIs that wait
for user input - aLife is event driven based on
- Temperatures
- Security
- Energy
3aLife Example Event
4Project Goals And Objectives
- 1 goal Embedded Android
- Create a smart and customizable system
- Little to no learning curve
- Focus on active user interface
- Easy integration with any home
- Integrate with 3rd party devices
- Low cost
5Project Block Diagram
ZigBee Base
Base Station
6Remote Module
7Remote Modules - Communications
- Module Communication Network Wireless ZigBee
- More reliable, robust than wired
- Flexibility in module installation location
- Acceptable data rate (up to 250kbps)
- Acceptable transmission range (up to 75m)
- Open source, abundance of cheap hardware and
software available
8Remote Modules Block Diagram
9Remote Modules Schematic pg1
10Remote Modules Schematic pg2
11Remote Modules Schematic pg3
12Remote Modules Power Supply
- Power Supply Requirement Specifications
- 3.3VDC output, lt 20mV peak to peak ripple
- Source gt 250mA
- Efficiency gt 80
- Work off of both 120VAC and battery
- Implementation National Semi LM2841XMK-ADJL
switching buck DC-DC converter - 3.3VDC output, 2mV peak to peak ripple
(simulated) - 300mA max
- 83 efficiency (simulated)
13Remote Modules Power Supply
14Remote Modules MCU
- MCU Requirement Specifications
- Built in ZigBee transceiver
- Available ZigBee Consumer protocol stack
- Operate at gt 15MHz
- gt 32kB built in FLASH, gt 2kB built in RAM
- Features digital I/O, PWM, ADCs, UART, 12C
15Remote Modules MCU
- MCU Design Implementation
- Freescale MC13213R2
- Built in ZigBee transceiver
- 20 MHz
- 60kB FLASH, 4kB RAM
- 8x ADC, 2x UART, 1x I2C, 5x PWM, 22x GPIO
- BeeStack Zigbee 2007 compliant protocol stack
- Program firmware in C using CodeWarrior IDE
16Remote Modules MCU
17Remote Modules Base Comms
- Communication with Android Base Requirement Specs
- Must use a standard that is compatible with both
Android base and remote module hardware - Implementation
- RS232 using TI SN65C3221EPWR transceiver
- Up to 1M baud rate
- 15kV ESD protection
- No hardware handshaking
18Remote Modules Base Comms
19Remote Modules Type 1 Functions
- 120VAC Power Sensor Requirement Specifications
- Measure up to 1800W (max power rating for a
standard wall outlet) - Resolution down to 5W at 3 accuracy
- lt 10m Ohms AC impedance
- gt2kV electrical isolation between AC and digital
side - Ability to disconnect AC output to save appliance
power
20Remote Modules Type 1 Functions
- Power Sensor Design
- Allegro Micro ACS709LLFTR-20BB-T Hall effect
based AC current sensor exceeds specs - AC peak detector circuit for current sensor
output - On Semi MC33072ADR2G instrumentation amplifier
- Gain controlled via ADI AD5241BRZ1M 1M Ohm, 256
step digital Pot for power ranging from 3W up to
1700W - Theoretical resolution down to 3W at 2 accuracy
(still needs to be tested) - In series software controlled relay
21Remote Modules Type 1 Functions
22Remote Modules Type 1 Functions
- Temperature Sensor Requirement Specs
- Accurate to within /- 2 degrees Celsius
- Range of -30 to 100 degrees Celsius
- I2C interface
- Remote temperature sensor loop (type 2 function)
- Implementation
- NXP SA56004ED,118 temperature sensor
- Meets the above requirements
23Remote Modules Type 1 Functions
24Remote Modules Type 2 Functions
- Type 2 Requirement specifications
- 2 DAC and digital outputs Lighting, motor
control - 2 ADC inputs Remote current sensor input
- 1 Temperature sensor loop measure outdoor temp
- 1 Software controlled relay garage door control
- Surge and short circuit protection for all I/O
25Remote Modules Type 2 Functions
- Type 2 Function Implementation
- Digital and DACs outputs- PWM fed into low pass
op amp circuits using Micron MCP665-E/UN dual op
amp chip - Can change from gnd to 3.3V in 3ms
- Output can drive /- 90mA
- 2 ADC inputs
- Surge protection - 400W TVS, clamp at 7.3V
- Short protection - 70mA hold, 130mA trip PTCs
- 10A relay
26Remote Modules Type 2 Functions
27Remote Modules Type 2 Functions
28Remote Modules ZigBee Transceiver
- ZigBee Transceiver Requirement Specifications
- Transmission range of gt 30m
- ZigBee 2007 compliant protocol
- ZigBee Transceiver Design
- Single port antenna design to minimize components
- Transmission range still unknown pending antenna
development - Will use Freescales BeeStack Zigbee 2007
protocol, specifically designed for this MCU
29Remote Modules ZigBee Transceiver
30Remote Modules PCB
- PCB implementation
- We will generate a layout from our schematic in
Altium and manufacture our own custom PCBs with
the following target specs - 2-4 layer boards
- 3x3 or smaller outside dimensions
- Double sided component placement to minimize
board area
31Base Station Hardware
32Design decision - Functionality
- Need a board to be able to run the android
operating system. - Has to be able to handle multiple clients
accessing it at the same time (up to 5). - Supports serial communication to interact with
the ZigBee devices on the network
33Design decision - Practicality
- Its a wall mounted unit, so the overall weight
should be less than 5 pounds - Should be able to be wall mounted
- Needs to be powered off a wall outlet
- LCD should be bigger than 2 inches to be
considered easy to interact with
34Processor
35i.MX51 Specifications
- Processor ARM Cortex A8
- Runs anywhere from 600 MHz over 1GHz
- Meets the minimum android system requirements of
200 MHz - Supports Ethernet Connectivity
- Contains multiple interfaces that we needed to
interact with our system
36Picture of Complete System
- Included in this picture
- Processor board
- LCD Screen
- Expansion board
37Communication Scheme
- Serial Communication is the main way this board
talks to the network - Problem Android OS doesnt support
communication over serial ports! - After some difficulty implementing serial comm.,
we decided on using some lower level C code as an
intermediary
38Format for the C code
39Base Station Software
40Specifications and Requirements
- Functional
- Base station must be able to accept up to 5
simultaneous service request on a first come
first serve basis - Multiple request to service the same notification
must only be serviced once - Must be able to add/remove/update a row in
database with 98 reliability - Security
- All user must have unique login Allowed 5
unsuccessful attempts before lockout - Only registered remote client devices may have
service request fulfilled by the base station - Notifications
- All notifications must have a unique notification
ID - Users shall only receive notifications that they
are registered to receive
41Design Approach and Implementation
- V-Model
- Proven and well structured
- Allows for redesign
- Android Operation System
- Supports notifications
- Supports secure socket communication
- Database support
- Eclipse IDE w/ Android Development Tools (ADT)
Plug-in - Free
- Best support for Android Development
V Model
42Design Decision Database Management System (DBMS)
- SQLite
- Needed the use of a database for our software
- Had several choices, but implemented SQLite
- Extensive native support provided by Android
platform. - Will run on Base Station, no need for additional
hardware - No need for purchase server space.
- Relatively fast compared to other DBMS
43Software Block Diagram
44Software Block Diagram Background Services
- Fields
- PowerNotif (Boolean) Field tells whether a
powered device notification is set up - SecurityNotif (Boolean) Field tells whether a
security device notification is set up - ControlNotif (Boolean) Field tells whether a
control device notification is set up - ActiveDevices(Device ) Array of active
devices in the network - RequestedService (String) String representation
of a request -
- Methods
- BaseStation ()Constructor to create the GUI
interface for our system. - getActiveDevices() Takes in no parameters.
Returns all active devices in database. - addDevice(Device X) Adds specified device to
network and database. No return. - removeDevice(Device X) Removed specified
device from network and database. No return. - setNotifications() Takes no parameters. Sets
all initial notifications booleans. These will
dictate which notifications will be checked for
continuously throughout the program. - pollDevices(ActiveDevices) Takes in all active
devices and updates their information in the
database tables. Returns nothing. - socketParser (ByteStream) Takes in a socket
byte stream and returns the requested service in
string format. - requestService (Device X, RequestService) This
method will take in a device and service request
and will fulfill the said service. Returns
nothing.
45Software Block Diagram Devices Class
- Fields
- ID (Int) Device's ID
- Name (String) Name provided by user for device
- Status (Boolean) Provides status of device, on
or off - Methods
- getID() Takes in no parameters. Returns an Int,
the value of the devices ID. - setID(Int ID) Takes in an Int and updates ID
field. Does not return anything. - getName() Takes in no parameters. Returns a
String, the value of the devices Name. - setName(String name) Take in a String and
update Name field. Does not return anything. - getStatus() Takes in no parameters. Returns
Status of device - setStatus(Boolean Status) Takes in a boolean
and updates Status of device. Does not return
anything.
46Software Block Diagram PowerDevice
- Fields
- TotalWatts (Int) Provides total watts used by
device - SetWatts (Int) Provides user defined limit for
watt usage - CurrentTemp (Int) Provides current temperature
information - SetTemp (Int) Provides user defined limit for
temperature - PollTime (Int) Time the information was polled
- SetTime (Int) Set time for notification
purposes - Timeframe (Int) Timeframe for power information
i.e. 7 days or 30 days - Methods
- PowerDevice() Constructor to create object.
Will have generic and specific constructors. - turnOn() Takes in no parameters. Sends message
to ZigBee device to turn on - turnOff() Takes in no parameters. Sends
message to ZigBee device to turn on - getTemp() Takes no parameters. Polls ZigBee
device for temperature. - setTemp(Int Temp) Sets ZigBee device with
provided temperature. Does not return anything. - getWatt() Takes no parameters. Polls ZigBee
device for wattage. - getTimeframe() Takes in no parameters. Returns
the timeframe field. - setTimeframe(Int Timeframe) Sets the timeframe
field. Does not return anything.
47Software Block Diagram SecurityDevice
- Fields
- SetTime(Int) Provides set time for any
notifications - Methods
- SecurityDevice() Constructor to create object.
Will have generic and specific constructors. - isOpen() Takes in no parameters. Returns true
if ZigBee device is open. - IsLocked() Takes in no parameters. Returns
true if ZigBee device is locked.
48Software Block Diagram ControlDevice
- Fields
- SetTime(Int) Set time for notification
purposesMethods - ControlDevice() Constructor to create object.
Will have generic and specific constructors. - turnOn() Takes in no parameters. Sends message
to ZigBee device to turn on - turnOff() Takes in no parameters. Sends
message to ZigBee device to turn on
49Database Structure
- The SQLite database will be utilized to store
information about current users, devices, power
history, notification history, and notification
set ups. Each of these elements will be have
their own table in our database with their own
specified fields.
50Remote Client Device (RCD)
51Specifications and Requirements
- Reliability
- No crashes
- 90 Notification Rate with connection
- Usability
- Easy to answer notifications
- Unobtrusive
- Notifications only when needed
52Specifications and Requirements
- Android Phone
- Secure Connection
- Seamless transition between WiFi and Cell Network
- Fast notifications
- lt10 sec with a connection
53Research and Design Decisions
- Minimal focus on control
- Prevent detraction from the standard practices
- Notifications based on events
- Untapped market
- Cost savings
54Notifications Packet Structure
Type 1 (Power) Type 2(Power) Type (Power) Type 4 (Temperature) Type 5 (Temperature)
Notification type Notification type Notification Type Notification Type Notification Type
Notification Level Notification Level Notification Level Notification Level Notification Level
Notification ID Notification ID Notification ID Notification ID Notification ID
Button 1 Text Button 1 Text
Button 2 Text Button 2 Text
Button 3 Text Button 3 Text
Current Temp
Current Set Point
Current HVAC Mode
Page Flip Page Flip Page Flip Page Flip Page Flip
Display State with Control Options Display History with Notification Options Display History with Notification Options Display State with Control Options Display History with Notification Options
55Class Structures
- Android
- Notification
- Service
56Class Structures
57Design Approach and Implementation
58Testing Base Station
- Hardware
- Verified communication serially
- Could interact with the screen and it be user
friendly - Software
- Tested the adding of users and devices to the DB.
- Checked for concurrency issues among multiple
clients - Tested that the software would generate a
notification whenever it received a signal to do
so
59Testing Remote Client and Wireless Network
- Remote Client
- Showed that we can populate information from the
Base Stations database - Can interact with the Base Station through
notifications - Maintain TCP/IP connection with the system
- Wireless Network
- No real testing, unable to get the protocol stack
configured correctly
60Budgeting
- Base Station
- Freescale i.MX51 0.00 (on loan from Advantor
Systems) - Remote Client
- HTC Dream Android smartphone 0.00 (owned by a
group member) - Samsung Captivate Android smartphone 0.00
(owned by a group member) - Remote Modules per module costs on following
table
61Budgeting Per Remote Module
Item Type Manufacturer Part Number Cost/1 Multiple
MCU Freescale MC13213R2 0.00
Dual op amps Micron MCP665-E/UN 1.46
Temp Sensor NXP SA56004ED,118 0.85
Relay Tyco PB114006 1.18 2
Terminal Block Tyco 1-284093-0 2.21
DC-DC Converter National LM2841XMK-ADJL 3.90
Transformer Pulse BV030-7136.0 3.36
Current Sensor Allegro ACS709LLFTR-20BB-T 4.46
Instrum Amps On Semi MC33072AD 1.10
Digital Pot ADI AD5241BRZ1M 2.33
Balun Murata LDB212G4005C-001 0.42
Crystal AVX CX3225SB16000E0FPZ25 3.30
Misc 5.00
- Remote Modules
- Freescale MC13213 0.00 (sampled from
Freescale)
62Budgeting Remote Module Component Costs
- Total per module 100.00
- Additional costs for ZigBee base module
- RS232 transceiver TI SN65C3221EPWR, 2.63
- DB9 connector - Norcomp 171-009-113R911, 3.00
- No terminal block -2.21
- Bare PCBs (6 sq inch) 60.00 each
- Total cost of 4 remote modules 640.00
63Budgeting - Summary
- Total budge allowance - 600
- Base Station - 0.00
- Remote Client - 0.00
- Remote Modules - 640
- Total 640
- Slightly over budget, but we had a good
estimation from the start
64Milestone
65Successes/Difficulties
- Successes
- Working high level product from the base station
to user notification - Successfully manipulated our embedded platform to
handle the requests that we wanted - Difficulties
- Zigbee
- Serial Port Communication
66Questions
- Any questions or comments?