enabling the internet of things short range wireless and m2m

Post on 01-Apr-2015

229 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Enabling the Internet of Things

Short Range Wireless and M2M

Our Expertise

Intelligent Embedded Wireless Communications

Bluetooth, 802.11, 802.15.4 (ZigBee), Wibree

Wireless agnostic scripting language

Middleware and Data Synchronisation

Low Power, High Efficiency Modules

Serving an embedded market

Built in internet connectivity

Expertise in Automotive, Medical and Retail

Integrated Protocol stacks and protocol conversion

Fast time to market

Enabling over 5 million credit card transactions daily

Things just want to connect…

My temperature is…My temperature is… Your Blood Pressure is…Your Blood Pressure is… I’ve just driven…I’ve just driven…

I’ve copied…I’ve copied… I can see…I can see… I’ve sold…I’ve sold…

Now there’s an easy, wireless way to do it.

The Internet of Things

+ “Thing” + Internet

= M2MWelcome to the world of Cellular-Free communications.

“Things” are “Host-free”

• Most machines have very limited host processing capability.• Using External Processors mean more power, more cost, greater time-

to-market and the need for expensive programming resource.• The Internet of Things need wireless processors that do everything.• EZURiO provides everything you need in one module.

What Designers Ask

These are the Key Features for “Time to Market”

EZURiO

Does it wake up and take control?

Can it find and connect to an access point?

Can it tell the middleware its IP address?

Can it store read and data from sensors?

Can I get rid of an additional processor?

Can it run a user program?

Can it be programmed with simple tools?

All you need in one package

EZURiO

Solution User accessible processor

Scripting Language

Integrated Antenna

Easy to integrate

Module 802.11b/g

Web Server

I/O and ADC

General Physical Size v. Small

Bluetooth Compatible

Simple Software Development Tools

Performance Power Consumption Low

Power Save Modes

EZURiO modules are pin compatible with Siemens GPRS MC55/56

Enabling your “Thing”

Serial In >>> Wireless Out

• No host processing requirements – just send simple commands• Integrated 802.11 driver gives silicon independence• Integrated Bluetooth or TCP/IP stack • Access to I/O and ADC• AT Interface (Bluetooth)• Interpreter (802.11) to run scripts for data acquisition and wireless attachment

RS-232 Data & Commands

RF

What’s in an EZURiO Module?

RAM

ARMProcessor + UWUART

Power Management

802.11 b/g

Flash

I/O

ConnectionScripting

Event Handling

Non-volatile Memory

Our Module Architecture

ADC DAC GPIO High Speed UART

I/O Controller

UNIVERSAL WIRELESS

Scripting Interpreter

Web Server WirelessProtocol Stack

(TCP/IP + Driver)

Baseband

Radio

AES

Program Memory

UWScripts

128 bit Encryption

WEP / WPACompare “Standard”Wireless Module

Everything you need is in one module – it really is “Serial In >>> Wireless Out”

Flash Filing System

802.11 Basics

Nick Hunn - CTO

802.11b & g channels

US 11 channels

EU 13 channels

Japan 14 channels Channel Spacing – 5MHz

Cells (access points) can overlap as long as the transmitter in one does not result in overload in the adjacent cell.

This means the channels selected should be 25MHz apart.

16

11

11

11

1

16

•802.11 b & g operate at 2.4GHz – the same frequency band as Bluetooth and ZigBee.•The spectrum is divided into multiple channels, spaced 5MHz apart. •Access Points operate on a fixed, selected channel using DSSS. They do not frequency hop. •There is NO channel width specified, but a spectral mask of -30dm @ + 11MHz

802.11 Architecture - Infrastructure

• BSSID - Unique Name – MAC Address

• SSID – Access Point Name

• BSS Type – Infrastructure Mode

“Clients” ASSOCIATE with Access Points.

All 802.11 devices have a unique 48 bit MAC address.

If Access Points have the same SSID and are connected to a backbone, then clients can ROAM between them.

Clients

Access Point

Infrastructure Mode

802.11 Architecture – Ad-hoc

The Client starting the ad-hoc network acts as the “Access Point” to which other clients connect.

Devices can either connect in Infrastructure or ad-hoc mode. They cannot do both simultaneously.

Ad-hoc mode does not support Power Saving modes.

Ad-hoc is also known as IBSS (Independent Basic Service Set)

First Client Clients

Ad-hoc Mode

Data Packets

Header Source Address

Destination Address

SSID Address

Payload Frame Check

Simplified 802.11 packet

Header Destination Address

Source Address

Data Frame Check

Symbol Rate Coding

802.11g

54 64QAM

48 64QAM

36 16QAM

24 16QAM

18 QPSK

12 QPSK

802.11b 11 CCK

802.11g9 BPSK

6 BPSK

802.11b

5.5 CCK

2 DQPSK

1 DBSPK

Only a relatively small part of each transmitted packet contains data.

A lot of the transmitted information is concerned with routing information, protocols and integrity checking.

The data rate is shared between all connected clients.

Real Data throughputs never match symbol rates.

802.11 Range and Throughput

Range and throughput are closely linked – the more complex the coding scheme, the shorter the range.

0 5 10 15 20 25 30

54

48

36

24

18

12

11

9

6

5.5

2

1

802.11g only

Mixed 802.11b + 802.11g

Range (m) Throughput (Mbps)

Symbol Rate

0 20 40 60 80 100 120

54

48

36

24

18

12

11

9

6

5.5

2

1

Symbol Rate

Throughput & Latency

• Throughput and latency are not related. They rarely go together

• Decide what is important:– Latency– Reliability (QoS)– Raw Data Rate

• Quoted data rates rarely reflect reality– They are symbol rates– They include packet overheads– They are relevant at short range in a lab environment

• The wireless industry loves “go-faster stripes”. Real applications rarely need high data rates. Don’t be sucked into the hype.

• Most M2M applications can only handle rates of around 115kbps at their interfaces. However, the data may travel over the air at a much higher rate, reducing the power consumption.

Universal WirelessThe Wireless Development Platform

Tim Wheatley - VP Engineering

What is Universal Wireless?

Allows HOSTLESS application development

Sophisticated web server integration allows machines to have a web presence

Enables rapid application prototyping and demonstration

A complete wireless application development platform

Compatibility across Ezurio modules

Not just a wireless module!

Universal WirelessIn Action

Basic Use of the Module

• The WISM Development Platform• The WISM file system• Immediate mode commands

– at i 3– at+dir– at+del– at+run– Using the !function_name() syntax– !_flashdel()

• Using the UWTerminal Application– Downloading new scripts– Downloading web pages

OBD - Basic Operation

Vehicle Simulator

OBD – Serial Converter

OBD Cable RS232

Physical COM Port

OBD - Cable Replacement

Vehicle Simulator

OBD – Serial Converter

OBD Cable

WISMTCP/IP

Virtual COM Port

Wireless OBD Interface

Cable replacement…….

Application complete!WLAN Module programmed to automatically attach to AP and PC and transfer data

Uses a commercial OBD scan tool (Gendan) with unmodified Gendan EngineCheck firmware

No additional microcontroller is needed to manage the application – UW does it all.

Based on examples, the complete application takes only a few hours to complete!

OBD – Intelligent Cable Replacement

Vehicle Simulator

OBD – Serial Converter

OBD Cable

WISMTCP/IP

Wireless OBD Interface

Intelligent cable replacement……

Application complete!WLAN Module retrieves the data from the machine, processes it and only reports key information

WISM module actively participates in the data gathering and display

No additional microcontroller is needed to manage the application – UW does it all.

Based on examples, the complete application takes only a few hours to complete!

SMTP Client Interface

Implementation of a protocol in UWScript

Also shows the use of a custom command interface

WLAN module is programmed with comms related applications to remove the load from the host processor

Demonstrates the ability of the module to act as a ‘communication co-processor’

Command interface is tailored to the application – high and low level functions

Module could be made to emulate legacy solutions

Powersaving

• Powersave Mode 0– No power saving enabled

• Powersave Mode 1– IEEE powersaving enabled

• Powersave Mode 5– WLAN disabled, CPU active

• Powersave Mode 6– WLAN disabled, CPU sleeping

Firmware Upload

• Uploading firmware is managed by the UWLoad.exe executable.

• UWLoad.exe executable and sectormap.ini file must exist in same directory

• Set up correct port number for UWLoad (using command line parameter com=n)

• Reset the module when prompted.• Select the firmware file to load.• Firmware update will happen automatically.

Firmware Upload Tutorial

• Unzip the firmware and UWLoad tool from the UW_rash_2 0 1 1_Full_Delivery.zip and UWLoad.zip file respectively.

• Setup a shortcut to the UWLoad.exe file. Right click on the shortcut and set the command line parameter com=n from the ‘properties’.

• Run UWLoad.exe• Select ‘Load’• Reset the module• Select the UW_rash_2.0.1.1.s file• Firmware upgrade should complete automatically.

The Internet Protocols

The Internet Protocol Family

ARPHardware

DriverRARP

ICMP IP IGMP

TCP UDP

UserApplication

UserApplication DHCP

UserApplication

UserApplication

Transport

Network

Link

Application

FTP Client

TCP

IP

EthernetDriver

EthernetDriver

IP

TCP

FTP Server

FTP Protocol

TCP Protocol

IP Protocol

Ethernet Protocol

Peer to Peer Protocols

Routers

FTP Client

TCP

IP

WLAN Driver

EthernetDriver

IP

TCP

FTP Server

FTP Protocol

TCP Protocol

IP Protocol

WLAN Protocol

IP

Ethernet Driver

WLAN Driver

Ethernet Protocol

Wireless Medium Ethernet

IP Protocol

Internet Addressing

• Each node on the network has an IP address– E.g 192.168.1.1, 213.246.148.49

• Statically or dynamically allocated (DHCP)• IP packets contain source address and destination

address.– Destination addresses ensure that packets reach the final

destination– Source address ensure that responses reach the originator

• IP addresses can change many times as a packet passes across the network– This is transparent to the user!

Physical Addressing

• Each physical device on the network has a hardware address (MAC address)

• The MAC address is used either by the hardware interface or by the driver to identify ‘interesting’ packets

• Interesting packets are passed up the stack for further processing.

• Packets are addressed by both physical and IP addresses.

• Mapping between physical / IP addresses is handled by ARP protocol.

Ports

• Many applications can be implemented that use the underlying TCP/IP stack structure.

• Applications are identified by port numbers• There are many pre-allocated port numbers for well

known applications – 80 – HTTP– 21 – FTP– 25 – SMTP

• ‘User’ port numbers can lie in the range 1024 – 65535

Data Encapsulation

FTP Client

TCP

IP

EthernetDriver

User Data Packet

User Data Packet

User Data Packet

User Data Packet

TCP Header

TCP Header

TCP Header

IP Header

IP HeaderEthernet Header

Ethernet Tail

Port numbers, sequence number, CRC

IP addresses, TOS, Protocol etc

MAC addresses CRC

Internet Protocol (IP)

• Deals with delivery of a payload to the destination• Supplies source and destination addresses• Specifies type of service – which defines how the packet

is routed• Packet delivery is not guaranteed• Works packet by packet – no concept of a connection• Packet ordering is not guaranteed• Higher layer protocols must deal with this…..

Transmission Control Protocol (TCP)

• Provides – Reliable stream delivery of ordered data

– Virtual circuit connections

– Full duplex connections

• A connection is defined by a pair of end points – An endpoint is a (host, port) pair

– eg 145.23.4.3., 1876154.23.5.6, 345

• Connection establishment is by three way handshake• Connection terminates by a modified three way handshake

– Asymmetric release

– Symmetric release

Address Resolution Protocol

• IP address must map onto physical address• Host must somehow discover the physical address of

a target host on the same network given the target’s IP address

• ARP– Host broadcast ARP request containing target IP address – Target responds with ARP reply containing physical address

• Machines cache IP to physical address bindings– Broadcast is expensive – A cache prevents frequent broadcast– Entries must be removed after a fixed time to enable

replacement of hardware

Dynamic Host Configuration Protocol (DHCP)

• Main application of DHCP is distribution of IP addresses• Used by the module to request and obtain a dynamic IP

address from the router (access point). • Also used to provide gateway mask, gateway IP address

and primary and secondary DNS IP addresses.• Typically runs immediately after physical connection is

established with the router (i.e after attaching to the AP).

An Overview of Sockets

Client Server Model

• TCP/IP networking operates on a client server model.• One end operates as a server

– Offers a service to clients– Example is a web server

• One or more clients makes contact with the server and uses the service.

Sockets (1)

• A socket is used to establish a data connection between two devices.

• Uses the client / server model• Analagous to making a telephone call to a business

– Client calls the switchboard number for the business

– Switchboard operator answers the call

– Call is put through to an extension for the call to be handled

– Switchboard returns to listening out for more clients to call in.

• The ‘telephone number’ of the server is the IP address and the port number– 192.168.1.1:1056

• Typically the server will hand the connection to another port for the remainder of the call

Sockets (2)

Port 12567

Port 12568

Port 12569

Port 12570

Port 12571

Port 1342ServerIP Address: 213.246.148.49

Client 1

Sockets (3)

Port 12567

Port 12568

Port 12569

Port 12570

Port 12571

Port 1342ServerIP Address: 213.246.148.49

Client 2

Client 1

Sockets (4)

• Stages in creating socket:– Server:

• Create socket

• Bind socket to the listening port number

• Listen on the socket

• Accept incoming connections from clients

– Client:• Create socket

• Connect socket to server

Universal WirelessBasics and Concepts

UW WISM – Software Architecture

WiFi Driver Layer

WiFi Firmware

TCP/IP StackWiFi Control

Interface

WiFi Driver Abstraction

Layer

HTTP Server TAR (Tokeniser Abstraction Routines)

Flash File SystemTokeniser /

Interpreter

Interactive Mode

When the module is not running a script

Simple AT commands allow file manipulation

UW commands can be run in interactive mode

at+dir: display filesat+run: run named scriptat i n: display version informationat+cmp: Start / end script compilationat+del: delete named script

UW Language Basics

UW is a basic-like programming language

Scripts are simple text files

UwTerminal application is provided toSimplify the development process

autorun script – if present is run automatically on power on

Factory default script – installed at the factory, runs on power on – cannot be changed.

Universal WirelessLanguage Overview

Tim Wheatley - VP Engineering

UW Concepts - Streams

• Manage the flow of data around the module• Data devices act as data source / sinks

– E.g UART, UW script, TCP socket

• Bridge connects data source with a data sink and vice-versa

• Currently bridges are always 2-way i.e both data source and data sink are connected

• Provides flexibility for future expansion– Other data devices could be created – CAN bus, files, ADC for

example

UW Concepts - Streams

UART

UW Script

Socket

Data Device 1

Data Device 2

STDIN

STDOUT

UW Concepts - Streams

• By default a UW script creates one data device– stdout: All output created by print is sent to stdout– stdin: Input to the script is read from stdin

• After reset, stdin and stdout are bridged to the UART data device.

UW Concepts – Events (1)

• Events are asynchronous inputs to a UWScript• Avoid the need for polling in scripts

– Waitevent – tests in an ‘infinite loop’ or until an event handler returns 0

– pollevent

• When an event occurs a pre-installed handler is called– onevent evstdin call stdin_handler

UW Concepts – Events (2)

• Supported events are:– EVSTDIN : Data has arrived on stdin– EVRXBRKON : Break condition on UART detected– EVRXBRKOFF : Break condition on UART released– EVWEB : Web server has generated

event– EVSEARCH : Access point search is complete– EVSOCKETCLOSE : Socket has been closed– EVLINK : Change in WLAN link status

UW Concepts – Events (3)

• Examples of event use:– Detecting a break condition on the UART to interrupt a data

connection. – Detecting a change in the WLAN link status (loss of connection

for example) and taking appropriate remedial action.– Detecting a socket being closed by the remote end allowing a

clean socket close at the module.

UW Concepts – Web Server (1)

• WISM web server is fully integrated with UW scripts• Allows a UW script to generate dynamic web content

– <?UW“keyword(param)"?>– Anything in quotes is passed to the script as part of a EVWEB

event– Script writes HTML strings that are dynamically inserted into the

web page using webecho command

UW Concepts – Web Server (2)

• Forms posted from the web browser are passed to the script for processing– Allows the user to interact with the script – Forms are passed as a list of parameter / values– Script interprets parameter and acts on the basis of value

Tutorial 2 – Cable Replacement

• Navigate to Tutorials directory• Download script file ‘tutorial_2.uws’• This script establishes a TCP server on port number

1000• Run the script• Wait until the IP address for the module is reported• Open another UWTerminal session• Select the TCP Socket option• Enter the IP address of the module and the port number• Verify that the connection is made and that characters

can be transferred.

Variable Declaration

Types are:uword, sword

ulong, slongstring

Declaration syntax:uword uwValue1slong slReturnstring stIpString

Variable declarations can be anywhere in a script – but variables must be declared before use

Variable Scope

Global: variables are declared in the main body of the script

Local: Variables are declared in a subroutine or function

Super Global Variables: Declared outside the script and last all the time the module is on.

Variable Casting

Sometimes a variable of one type needs to be made into another type

e.g. if a routine returns a variable of one type which is then used as a parameter for another.

xxCASTyy() – converts a variable of type yy to type xx e.g uwVar = uwCASTsl(slVar) converts a signed long into a unsigned integer

Expressions

  *     Multiply       /     Divide       %   Modulus       +    Addition       -     Subtraction       <<  Arithmetic Shift Left       >>  Arithmetic Shift Right       <    Less Than       <=  Less Than Or Equal       >    Greater Than       >=  Greater Than Or Equal      ==  Equal To       !=   Not Equal To       &    Bitwise AND       ^     Bitwise XOR (exclusive OR)       |      Bitwise OR       &&  Logical AND       ^^    Logical XOR       ||     Logical OR 

Looping

for i = 1 TO 50 statements….next

i = 0while (i < 50) statements….. i = i + 1endwhile

Conditional Execution

if expression then statements……elseif expression then statementselse statementsendif

select varnamecase n statements….case m statements….case else statements….endselect

Output from a Script

Print – outputs characters to the stdout stream

Prints variables separated by ‘;’ e.g. print uwVal; slVal2; val3 print “This is a string”; uwVal; “\n”

print stVariable

Subroutines

subroutine name(var1, var2….varn) statementsendsub

Variables passed by referenceor by valuee.g testsub(uword byref par1) testsub(uword byval par2)Default is by value…..

Functions

function retvar name (var1, var2…varn) statementsendfunc var

Events

onevent EVRXBRKON call brkhandlewaitevent – waits for eventspollevent – polls for events

Event handler return code:0 – waitevent is terminated, script moves on to next instructionnon 0 – continue waiting for events

Tutorial Number 3

• Open tutorial_3.uws file in notepad• This simple script file prints a single line ‘Hello World”• Modify the script to print Hello World 10 times –

download and test• Modify the script to print Hello World and the number of

times it has been printed– Hello World 2– Hello World 3– Etc

Tutorial Number 4

• Open tutorial_4.uws• This script waits for an RX break event• Modify the RX break event handler to print ‘RX break

ON’• Modify the script to monitor the RX break OFF event and

add a handler to print ‘RX break OFF’• How can the script be modified to exit when the RX

break OFF condition is detected?• Modify the script to count the number of RX break ON

events and to exit after 10 events have been detected.

String Manipulation Functions

A rich set of string manipulationfunctions is provided – here aresome of the key ones…..

left$, right$, mid$strcmpstrposstrroleftstrvaldec

Handling STDIN

When data arrives on STDINan event is generated – EVSTDIN Event handler reads data fromstream and typically looks for end of line

EVSTDIN is generated whencharacters are transferred fromUART to STDIN stream –may be one or more……

String Matching

It is often useful to match astring against a number ofalternatives

e.g command look up

TableInit: sets up tableTableAdd: Adds entry in tableTableLookup: Looks up a string in the table and returns associated value

Tutorial Number 5

• Open tutorial_5.uws• This script implements a simple command line interface

for the module.• Experiment with the commands that it provides.• Add a new command ‘search’ which performs a WLAN

search and prints the results– Hint: the _wlansearchdump() built in function does a search and

prints the results

• Make this an ‘autorun’ script and verify that the command line interface works from power on

Universal WirelessWireless LAN Extensions

WLAN Searching

_wlansearchnet() – Searches for access points and populates table with results:

Following functions allow table to be scanned:_wlansearchfor()_wlansearchquery()_wlansearchquery$()

AP Name MAC Add Type Frequency Security RSSI

AP_1 2714 Infra 2412000000 OFF 195

AP_2 3245 Infra 2437000000 ON 207

AP_3 13567 ad-hoc 2467000000 OFF 163

WLAN Management

_wlanxxx() Functions:Connection:

_wlanattach()_wlandetach()

Security: _wlansecurity() _wlankey() _wlanauth()Regionalisation: _wlanregionset() _wlanregionget()

Tutorial 6

• Script_Demo10 searches for all access points and then looks for a named access point in the results.

• If the AP is present then it connects and waits to get an IP address.

• Modify this script to search for and attach to the “Uplands Broadband” access point.

• Once this works – modify the script to search for all “Uplands Boardband” access points and then attach to the one with the largest RSSI value. – Hint – the _wlansearchquery(n, 3) returns the RSSI value for the

nth AP that has been found

WLAN Ad-Hoc Networks (1)

Ad-hoc WLAN networks allow modules to communicate without using an access point.

First module to join an ad-hoc network will create it

Subsequent modules connect as if they are joining an access point

Channel must be selected – take care of the regionalisation!

Power-saving does not work in an ad-hoc network

WLAN Ad-Hoc Networks (2)

WLAN Power Management (1)

IEEE Power saving – AP allows the terminal to sleep when no dataIs transferred.

Terminal wakes on a regular basis to check if data has arrived or to send data

AP stores data to be sent to the terminal until the terminal wakes up.

If there is no data to be transferred then the terminal wakes for a veryshort time allowing significant reduction in average power.

This is an AP managed power saving mode – not available in ad-hoc

WLAN Power Management (2)

_psmodeset(0) – No power saving – module is awake all the time (~210mA)

_psmodeset(1) – WLAN chipset uses IEEE powersaving – must be attached (~45mA).

_psmodeset(5) – WLAN chipset disabled – enables low power when module is not attached (~30mA).

_psmodeset(6) – WLAN chipset disabled, MCU disabled. Module woken by user defined I/O pin(s) (~3mA).

Universal WirelessSocket Extensions

High Level Sockets

High level Interfaces: _socktcpserver() – sets up a server at the specified IP address and port

_socktcpclient() – connects to a server at specified IP address and port

Bridging

Functions: _netio(), stdio() and uartio() are used to get stream handles unbridge() disconnects an existing bridge

bridge() bridges between two streams

Low Level Sockets

A full set of socket API functions areprovided.

Allow finer control over sockets

A more complex interface

_socktcpcreate(), _sockudpcreate()_sockconnect(), _sockbind()_socklisten(), _sockaccept()_sockclose()

_socksendto(), _socksendall(), _sockrecv(), _sockrecvfrom()

Universal WirelessWeb Server Extensions

Dynamic Web Page Content

_webevget(): Gets the cause of the web event (either dynamic web content or post)

_webfname(): Returns the string from the <?UW”string”?> command embedded in the web page.

_webecho(): Outputs HTTP strings to the browser

_webevend(): Indicates that web processing is complete.

Handling Web Posts

Typically a POST from a browser is a list of parameters and values:

_webgetnumpostel(): Returns the number of parameters that have been sent

_webgetelement(): Gets a parameter from the list

Example Web Script

'// get the cause of the web event slRes = _webEvGet(evCause)

if ( evCause == 1 ) then '// get the name and argument list of the script/function for this event occuring slRes = _webFNameGet(tag) '// retrieve the name first findChar = "(" charPos = STRPOS( tag, findChar, 0 )

scriptname = LEFT$(tag, UWCASTSL(charPos)) '// then get the args - in this case there can be only one startPos = UWCASTSL(charPos) findChar = ")" charPos = STRPOS( tag, findChar, startPos ) arg1 = MID$( tag, startPos+1, (UWCASTSL(charPos) - startPos - 1) ) if mStrCompare(scriptName, "OBDGetData") == 0 then OBDGetData( UWCASTSL(STRVALDEC(arg1)) ) slRes = _WebEvEnd() exitfunc 1 elseif mStrCompare(scriptName, "ExitScript") == 0 then slRes = _WebEvEnd() exitfunc 0 endif elseif ( evCause == 2 ) then numElements = _webGetNumPostEl() result = _webGetElement(0, name, value) if mStrCompare(value, "ResetMIL") == 0 then

ResetMIL()endif

endif '// we have finished so end the web event slRes = _WebEvEnd()

This section deals with dynamiccontent

This section deals with postsFrom the browser

Market LeaderWireless technology solutions

{End statement}

top related