Top Banner
Giving Robots Life with the .NET Micro Framework 004 R ob Miles University of Hull [email protected] twitter.com/RobMiles robmiles.com
53
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Rob Miles Giving Robots Life With the Micro Framework

Giving Robots Life with the .NET Micro Framework

004

Rob MilesUniversity of Hull

[email protected]

twitter.com/RobMiles

robmiles.com

Page 2: Rob Miles Giving Robots Life With the Micro Framework

• What is the .NET Micro Framework?• What can I do with it?• How do I connect Sensors and

Interfaces?• How can I control a robot with

the .NET Micro Framework?• Grand Finale

Agenda

Page 3: Rob Miles Giving Robots Life With the Micro Framework

• You might think of C#, Visual Studio and .NET as tools that you use to create PC applications• Compile and run your programs and run them on

your desktop or laptop

• However, there is more to .NET than this• You are probably aware that you can write .NET

applications for your Windows Mobile device

• But now you can also target all kinds of devices

.NET for Multiple Device types

Page 4: Rob Miles Giving Robots Life With the Micro Framework

• A version of .NET for tiny devices• Runs a .NET program held in the device

itself

• Designed for embedded applications• Lets you create embedded code in C#

• The cheapest platforms are now very affordable

The .NET Micro Framework

Page 5: Rob Miles Giving Robots Life With the Micro Framework

Windows

Tablet PC

Notebook PC

The Windows PC

Page 6: Rob Miles Giving Robots Life With the Micro Framework

Windows

Tablet PC

Notebook PC

Point of Sale

Medical Devices

ATMS & Kiosks

Machine Control

Industrial Automatio

n

Thin Clients

Embedded Windows

Page 7: Rob Miles Giving Robots Life With the Micro Framework

Windows

Tablet PC

Notebook PC

Point of Sale

Medical Devices

ATMS & Kiosks

Machine Control

Industrial Automatio

n

Thin ClientsWindows Mobile

Smartphone Windows MobilePocket PC Phone

Windows Automotive

Zune

VoIP Phones

MobileHandhelds

Set-top Boxes

Windows Embedded CE

Page 8: Rob Miles Giving Robots Life With the Micro Framework

Windows

Tablet PC

Notebook PC

WearableDevices

AuxiliaryDisplays

Remote Controls

Sensor Networks

Point of Sale

Medical Devices

ATMS & Kiosks

Machine Control

Industrial Automatio

n

Thin ClientsWindows Mobile

Smartphone Windows MobilePocket PC Phone

Windows Automotive

Zune

VoIP Phones

MobileHandhelds

Set-top Boxes

.NET Micro Framework

Page 9: Rob Miles Giving Robots Life With the Micro Framework

Platforms and HardwareWindows Vista Windows XP

EmbeddedWindows CE .NET Micro

Framework

Device Features

Connected,PC Class Performance, Accelerated Graphics

Connected,PC Class Performance

Connected, Graphical UI, Server, Browser, RAS DirectX

Connected, Small, Wearable, Graphical UI

Development Visual Studio + C#.NET Framework

Visual Studio + C#.NET Framework

Visual Studio + C#.NET Compact Framework

Visual Studio + C#.NET Micro Framework

Footprint X86 Dual Core, 64 Bit, Multi Processor

X86 X86, MIPS, SH4, ARM, with MMU, 12 MB,Managed Code

ARM 7, ARM 9, No MMU, 250-500KB, Managed Code

Power Mains Mains Low Power Very Low Power

Page 10: Rob Miles Giving Robots Life With the Micro Framework

Platforms and HardwareWindows Vista Windows XP

EmbeddedWindows CE .NET Micro

Framework

Device Features

Connected,PC Class Performance, Accelerated Graphics

Connected,PC Class Performance

Connected, Graphical UI, Server, Browser, RAS DirectX

Connected, Small, Wearable, Graphical UI

Development Visual Studio + C#.NET Framework

Visual Studio + C#.NET Framework

Visual Studio + C#.NET Compact Framework

Visual Studio + C#.NET Micro Framework

Footprint X86 Dual Core, 64 Bit, Multi Processor

X86 X86, MIPS, SH4, ARM, with MMU, 12 MB,Managed Code

ARM 7, ARM 9, No MMU, 250-500KB, Managed Code

Power Mains Mains Low Power Very Low Power

Page 11: Rob Miles Giving Robots Life With the Micro Framework

Platforms and HardwareWindows Vista Windows XP

EmbeddedWindows CE .NET Micro

Framework

Device Features

Connected,PC Class Performance, Accelerated Graphics

Connected,PC Class Performance

Connected, Graphical UI, Server, Browser, RAS DirectX

Connected, Small, Wearable, Graphical UI

Development Visual Studio + C#.NET Framework

Visual Studio + C#.NET Framework

Visual Studio + C#.NET Compact Framework

Visual Studio + C#.NET Micro Framework

Footprint X86 Dual Core, 64 Bit, Multi Processor

X86 X86, MIPS, SH4, ARM, with MMU, 12 MB,Managed Code

ARM 7, ARM 9, No MMU, 250-500KB, Managed Code

Power Mains Mains Low Power Very Low Power

Page 12: Rob Miles Giving Robots Life With the Micro Framework

.NET Framework on Windows

Services•Description•Discovery•Protocols

UI Controls•HTML•Web

Runtime•Interop•Remoting•Serialization

Design

ConfigurationCache

Session stateSecurity

ImagingDrawing 2D

TextPrinting

DesignADO.NET

SQL ServerCESQL Client

Xslt/XPathXML Document

Reader/writersSerialization

Service processConfiguration

ThreadingDiagnostics

NetIO

ResourcesReflection

SecurityCollections

GlobalizationText

Component model

System.Drawing

System.Windows.FormsSystem.Web

System.Data System.XML

System

Page 13: Rob Miles Giving Robots Life With the Micro Framework

.NET Compact Framework

Services•Description•Discovery•Protocols

UI Controls• HTML• Web

Runtime• Interop• Remoting• Serialization

Design

ConfigurationCache

Session stateSecurity

ImagingDrawing 2D

TextPrinting

DesignADO.NET

SQL ServerCESQL Client

Xslt/XPathXML Document

Reader/writersSerialization

Service processConfiguration

ThreadingDiagnostics

NetIO

ResourcesReflection

SecurityCollections

GlobalizationText

Component model

System.Drawing

System.Windows.FormsSystem.Web

System.Data System.XML

System

Page 14: Rob Miles Giving Robots Life With the Micro Framework

.NET Micro Framework Services• Description• Discovery• Protocols

UI Controls• HTML• Web

Design

ConfigurationCache

Session stateSecurity

ImagingDrawing 2D

TextPrinting

DesignADO.NET

SQL ServerCESQL Client

Xslt/XPathXML Document

Reader/writersSerialization

Service processConfiguration

ThreadingDiagnostics

NetIO

ResourcesReflection

SecurityCollections

GlobalizationText

Component model

System.Drawing

System.Windows.FormsSystem.Web

System.Data System.XML

System

InteropRuntime

SerializationRemoting

Page 15: Rob Miles Giving Robots Life With the Micro Framework

• A device powered by the .NET Micro Framework does not have/need an operating system

• Programs execute directly on the hardware using a "Bootable Run Time System"• Simplifies deployment• Reduces the demands on the target platform

• Programs still have access to many parts of the .NET API• Provided by the run-time system rather than an

operating system

The Missing Operating System

Page 16: Rob Miles Giving Robots Life With the Micro Framework

• C# source is compiled to Intermediate Language (MSIL)

• The MSIL is downloaded in a compressed form and interpreted in the Micro Framework device

• As far as the code is concerned it is running inside a standard .NET Assembly

• The program runs as soon as the device is powered up

How it works

Page 17: Rob Miles Giving Robots Life With the Micro Framework

• Not all .NET devices support all the components of the full .NET Framework• This is quite sensible given the limitations of

the platforms and the needs of the solutions

• However, all the fundamentals of .NET are present on all of the platforms• And they are used in exactly the same way

in your applications• And there are special purpose libraries

The .NET Framework Scope

Page 18: Rob Miles Giving Robots Life With the Micro Framework

• There are many different hardware platforms available

• Some are designed as processor boards that can be incorporated into your own hardware

• Some also have custom libraries for additional hardware abilities

Hardware Platforms

Page 19: Rob Miles Giving Robots Life With the Micro Framework

• TinyClr Fez Mini• It is pin compatible

with the Basic Stamp board

• It costs less than $50www.tinyclr.com

Tiny Micro Framework Platform

Page 20: Rob Miles Giving Robots Life With the Micro Framework

• Device Solutions Tahoe II • Touch screen• SD card slot• Network connection

www.devicesolutions.net/

Larger Micro Framework Platform

Page 21: Rob Miles Giving Robots Life With the Micro Framework

• ChipworkX Development System

• Touch screen• SD card slot• Network connection • USB hosting• MP3 playback www.ghilectronics.com

Fully Loaded Micro Framework Platform

Page 22: Rob Miles Giving Robots Life With the Micro Framework

• You also get a highly flexible emulator

• You can configure this to match any hardware platform

• You can also create emulations of hardware devices connected to the platform

Pretend Micro Framework Platform

Page 23: Rob Miles Giving Robots Life With the Micro Framework

• The development boards look rather expensive

• You would not base a product on these

• Instead you use them to create a prototype and then just use the processor component in a custom board

Making a Product

Page 24: Rob Miles Giving Robots Life With the Micro Framework

• Object based implementation of hardware• Single pins, I2C, Spi, serial, USB (host and client)

• Powerful graphics library with touch and gestures

• Fully networkable, provides DPWS, web server and web client support

• Can be used as the processing component in a custom made hardware solution

Platform Abilities

Page 25: Rob Miles Giving Robots Life With the Micro Framework

• Anything from simple embedded controllers to connected data terminals

• If you have an idea for a clever embedded device you now have the perfect platform

• You don’t have to learn another programming language or toolchain

What can the Micro Framework Do?

Page 26: Rob Miles Giving Robots Life With the Micro Framework

• Write programs in C# using Visual Studio 2008

• Full debugging support, even inside the device

• Run your program on the real device or the emulator

How do I write programs?

Page 27: Rob Miles Giving Robots Life With the Micro Framework

DemoSensor Interfacting

Page 28: Rob Miles Giving Robots Life With the Micro Framework

• The lab board lets you connect sensors to the processor

• Each port can be configured in software and its behaviours are exposed via C# objects

The FEZ Micro Lab Board

Page 29: Rob Miles Giving Robots Life With the Micro Framework

• The Fez Mini Robot kit puts the Micro Framework device in control of a robot

• The controller board has hard wired connections to the motor

• You can connect other devices as required

A Micro Framework Robot

Fez MiniRobot

Page 30: Rob Miles Giving Robots Life With the Micro Framework

DemoMaking a Cowardly Robot

Page 31: Rob Miles Giving Robots Life With the Micro Framework

• The sensors are implemented as objects which expose properties and methods

• When an sensor instance is created it is bound to a particular input pin

Robot SensorsFEZ_Pin.AnalogIn DistancePin = FEZ_Pin.AnalogIn.An1;FEZ_Components.DistanceDetector distanceDetector;

distanceDetector = new FEZ_Components.DistanceDetector(DistancePin, FEZ_Components.DistanceDetector.SharpSensorType.GP2D120);

Page 32: Rob Miles Giving Robots Life With the Micro Framework

• The program repeatedly looks for objects• When it finds one it moves backwards

Cowardly Codewhile (true){ float distance = distanceDetector.GetDistance_cm(); Debug.Print(distance.ToString()); if (distance < 4) { FEZMini_Robot.MoveRamp(-100, -100, 1); System.Threading.Thread.Sleep(300); FEZMini_Robot.Move(0, 0); } System.Threading.Thread.Sleep(200);}

Page 33: Rob Miles Giving Robots Life With the Micro Framework

• Devices are all implemented via objects, just like “ordinary” C# programs

Driving Devicesif (distance > 10) greenLed.TurnOn();else greenLed.ShutOff();

if (distance < 10) redLed.TurnOn();else redLed.ShutOff();

Page 34: Rob Miles Giving Robots Life With the Micro Framework

DemoMaking a Cowardly Robot With Lights

Page 35: Rob Miles Giving Robots Life With the Micro Framework

• Components can also generate events which are handled using delegates

Hardware EventskillSwitch.ButtonPressEvent += new FEZ_Components.Button.ButtonPressEventHandler(killSwitch_ButtonPressEvent);

...

static void killSwitch_ButtonPressEvent( FEZ_Pin.Interrupt pin, FEZ_Components.Button.ButtonState state){ if (state == FEZ_Components.Button.ButtonState.Pressed) { shutDown(); }}

Page 36: Rob Miles Giving Robots Life With the Micro Framework

• It would be useful for the robot to be able to send diagnostic information back to the host

• We can use a thread to do this, as the Micro Framework has full thread support

• This includes support for synchronisation

Threading

Page 37: Rob Miles Giving Robots Life With the Micro Framework

DemoControlling a Robot with Windows Phone

Page 38: Rob Miles Giving Robots Life With the Micro Framework

• This the architecture for our Windows Phone controlled Micro Framework robot

System Architecture

WindowsPhone

Robot ControlWeb Server

Fez MiniRobot

http Xbee

Page 39: Rob Miles Giving Robots Life With the Micro Framework

• The phone talks http to the robot web server

.NET Micro Framework Hosting

WindowsPhone

Robot ControlWeb Server

Fez MiniRobot

http Xbee

Page 40: Rob Miles Giving Robots Life With the Micro Framework

• Micro Framework devices can host websites and also implement Web Services

• This includes support for secure sockets

• You already know how to do this, since it is based on the .NET Libraries

Micro Framework Web Support

Page 41: Rob Miles Giving Robots Life With the Micro Framework

• The graphics display is based on WPF

• You use the StackPanel class to automatically layout content

Micro Framework Display Library

Page 42: Rob Miles Giving Robots Life With the Micro Framework

• The Robot Controller uses a serial port to talk to a wireless modem and send commands to the robot

.NET Micro Framework Interface

WindowsPhone

Robot ControlWeb Server

Fez MiniRobot

http Xbee

Page 43: Rob Miles Giving Robots Life With the Micro Framework

• You can create and manage serial data connections exactly as for the desktop versions of .NET

• You can bind events to data arrival

• You can also create emulated serial devices for your test harnesses

Serial Data Support

Page 44: Rob Miles Giving Robots Life With the Micro Framework

• The robot receives commands and acts on them• It could also return sensor data to the server

.NET Micro Framework Control

WindowsPhone

Robot ControlWeb Server

Fez MiniRobot

http Xbee

Page 45: Rob Miles Giving Robots Life With the Micro Framework

• This shows how we can use Micro Framework devices at a variety of levels in an installation:• Small, headless embedded devices• Rich user interface for controllers• Connected using standard protocols

A Distributed Sensor Network

Page 46: Rob Miles Giving Robots Life With the Micro Framework

• .NET Developers can now target embedded systems

• Where it was previously too expensive to think about an embedded solution, you can now begin to build one

• The tools are inexpensive• You don’t need special skills

Changing the Business Rules

Page 47: Rob Miles Giving Robots Life With the Micro Framework

• The .NET Framework is now shared source

• You can get obtain a porting kit and put the framework onto any hardware platform you like – for free

• This has huge potential for new platforms

.NET Micro Framework 4.0 Devices

Page 48: Rob Miles Giving Robots Life With the Micro Framework

• You can get started for free• Download Visual Studio 2008

Express• You can use other versions of Visual

Studio if you wish

• Download the Micro Framework • Then you can create projects and

the emulator

Getting Started

Page 49: Rob Miles Giving Robots Life With the Micro Framework

• .NET Micro Framework site: http://www.microsoft.com/netmf• .NET Micro Framework Team Blog: http://blogs.msdn.com/netmfteam/ • Blog with all kinds of stuff: http://www.robmiles.com• Books: Embedded Programming with the Microsoft® .NET Micro Framework

Donald Thompson & Rob Miles, Microsoft Press 2007Expert .NET Micro Framework,

Jens Kühner, Apress 2009

Resources

Page 50: Rob Miles Giving Robots Life With the Micro Framework

Q & A

Page 52: Rob Miles Giving Robots Life With the Micro Framework
Page 53: Rob Miles Giving Robots Life With the Micro Framework