AND THE INTERNET OF THINGS

wittyexecutiveRéseaux et Communications

17 févr. 2014 (il y a 3 années et 4 mois)

178 vue(s)

THE JOY OF WIRES: AN INTRODUCTION
TO
NETDUINO
, .NET MICRO FRAMEWORK
AND THE INTERNET OF THINGS

Iain Angus

AGENDA


1. Introduction


.NET
MicroFramework


Internet of Things


Netduino


2. Getting started


Setup


Fritzing


Breadboards


3. Building Blocks


Digital Input / Output


Analog

Input /
Analog

Output

(Pulse Width Modulation)




4. Building Blocks


Digital
Input /
Output


Analog

Input /
Analog

Output (Pulse Width
Modulation)


5. Communicating
with Digital Sensors


I2C /
SPI


6. Internet
Enabled
Applications


ThingSpeak


EVERYTHING STARTS SOMEWHERE…

Why
Netduino




Visual Studio IDE


Step by step
debugging


Reuse existing skills


Low cost electronics


Fast prototyping

THE DEVICES CONTINUUM

Device Capabilities

Full

Limited

Large

Small

Device Category

Windows
Embedded
Compact

Windows
Embedded

.NET
MicroFramework

.NET
Framework

MCU Example:

ARM7 / Cortex
-
M3 / SH2

ARM9 / Cortex
-
A8

\
ARM11 / Cortex
-
A9 / Atom

Centrino

THE NETMF OPEN SOURCE PROJECT


Smallest .NET implementation


Targets small 32 bit processors (ARM 7
-
9, Cortex M(x), Analog
Devices
Blackfin
,
Renesas

SH2)


Currently used in consumer products, industrial automation,
energy management, health/eldercare, and lots of new
categories.


First Open Source release


Nov 2009


Apache 2.0


Community based model


Motivation


Avoid fragmentation


Develop a clear collaborative direction


Core Tech Team


Microsoft Development Team


netmf.codeplex.com


netmf.com



Feature

Required C# Compiler

.NET Micro Framework

Required Framework
Features

Generics

2.0

no

Generics

Nullables

2.0

no

Generics
,
Nullable
<>

Expression trees

3.0

no

Generics
, Expression<>

Anonymous types

3.0

no

Generics
,
StringBuilder

Dynamic lookup

4.0

no

Generics
,
CallSite
, Binder

Variance in generic types

4.0

no

Generics

FEATURES NOT AVAILABLE IN

.NET

MICROFRAMEWORK

THE NETMF VERSION 4.2

From Microsoft Resources:


VB.NET (a collaboration)


Cryptographic Primitives and Object
Model


Remote firmware update


IL Optimizations


Bug fixes


SNTP


From the community:


VB.NET (a collaboration)


New Platform builder


FTP


client (desktop compatible) and server
(NETMF only)


Regular Expressions


StringBuilder

Type


PWM and Analog/Digital Conversion


Bug fixes


Secure Hardware (SIM Card) drivers



Physical Object

+

Controller, Sensor, Actuator

+

Internet

=

Internet of Things

WHAT IS THE INTERNET OF THINGS?


Oxford Dictionary (noun):


“A
proposed development
of the Internet in which
everyday objects have
network connectivity,
allowing them to send and
receive
data”

INTERNET OF THINGS


Current Key Applications:


Smart grid and energy management: utility companies can optimize delivery of
energy to homes and businesses while customers can better manage energy usage.


Home and building automation: Smart homes and buildings have centralized control
over virtually any device or system in a home or office, from appliances to PEV’s
security systems.


Asset tracking: Enterprises, hospitals, factories and other large organizations can
accurately track the locations of high
-
value equipment, patients, vehicles, and so on.


Health and wellness: Doctors can remotely monitor patients’ health while people can
track the progress of fitness routines.



WHAT IS
NETDUINO
?


Open Source Hardware Platform


Atmel 32
-
bit microcontroller


Speed: 168MHz, Cortex
-
M4


Code Storage: 384 KB


RAM: 100+ KB


Runs .NET
MicroFramework


Family of products:


Netduino

1, 1 plus, 2, 2 plus, mini


Netduino

Go





NETDUINO

PROJECTS


Typically
consist of up to three types of
components:




Actuators


things that do stuff (act)


Sensors


things that measure (sense)


Microchips


specialised functions


Allowing you to do prototyping, robotics, automation,
automotive, sequencing

as well as a learning
aid






GETTING STARTED

DEVELOPMENT ENVIRONMENT


Netduino

2 or 2 plus


Visual Studio 2010/2012


.
NET Micro Framework SDK
v4.2 /
v4.3 (VS2012)


Netduino

SDK v4.2.2.0 (32
-
bit)
or


Netduino

SDK v4.2.2.0 (64
-
bit
) or


Netduino

SDK v4.3 (VS2012)


NETDUINO

PLUS 2
-

ON THE BOARD


LED


Button


SD card


Ethernet


Analog

Pins


Digital Pins

THE BREADBOARD

A breadboard lets you wire electronic components without any soldering


Its holes are connected

“under the hood” as

shown here

FRITZING

BUILDING BLOCKS

GENERAL PURPOSE INPUT
OUTPUT

(GPIO)


Digital input /
output
-

logical 0 or 1


InputPort

(Pin, Boolean,
ResistorMode
)


Read


OutputPort

(Pin,
Boolean, Boolean,
ResistorMode
)


Write


InterruptPort

(Pin, Boolean,
ResistorMode
,
InterruptMode
)



OnInterrupt

DEMO


PUSH
THE BUTTON

Components used:


Netduino

Push Button

220 ohm resistor x 2

LED

ANALOG

INPUT

Ports A0
-
A5
Netduino

Able to provide own reference voltage (
Aref
)

10 bit ADC, value between 0 and 1023 if
using
SecretLabs

implementation


12 bit ADC, value between 0 and 4095 if
using
Microsoft.SPOT

implementation



Two implementations of
AnalogInput

class:



SecretLabs

var sensorPort = new
AnalogInput
(Pins.
GPIO_PIN_A0
);

int rawValue
= sensorPort.
Read
(); // returns count


Microsoft.SPOT

var sensorPort = new
AnalogInput
(
AnalogChannels.ANALOG_PIN_A0
);

float volts
= sensorPort.
Read
(); // returns % max voltage

int rawValue = sensorPort.ReadRaw() // returns count



May need to translate reading into meaningful value, requires reading device datasheet…


ADXL335 ACCELEROMETER
ANALOG

SENSOR



Sensor
has a full sensing range of +/
-
3g


zero G approximately 1.65V with
Aref

3.3V



No
on
-
board regulation, provided power should be between 1.8 and
3.6VDC



330 mV/G



SecretLabs

implementation:


330 mV/G
×

(
1023

ADC units) / 3300 mV = 102.3 (ADC units)/G


Microsoft
SPOT implementation:


330 mV/G
×

(4095 ADC units) / 3300 mV = 409.5 (ADC units)/G


ANALOG OUTPUT (PULSE
WIDTH
MODULATION (PWM))


Digital I/O Ports 5&6, 9&10


Computers
can’t output
analog

voltages


Only digital voltages (0 volts or
3.3V)


But you can fake it
if
you average a
digital signal flipping between two
voltages.


Used
everywhere


Lamp dimmers, motor speed control,
power supplies, noise making


Three characteristics of PWM signals


Pulse width range (min/max)


Pulse period

(= 1/pulses per second)


Voltage levels

(
0
-
3.3V
, for instance)


DEMO


WORKING WITH
ANALOG

SIGNALS

Components used:


Netduino

HS
-
422 Servo


ARE ALL PINS EQUAL?

power and
i/o


input: 7.5
-

12.0 VDC or USB
powered


output: 5 VDC and 3.3 VDC
regulated


digital i/o are 3.3 V
--
but 5 V
tolerant

DIGITAL SENSOR

DIGITAL SENSORS

Inter
-
Integrated Circuit (I2C)



2 wire bus (SDA/SCL)



Devices are uniquely addressable



Relatively slow


Serial Peripheral Interface Bus (SPI)



4 wire bus
(
SCLK/MOSI/MISO/CS)



Fast





touch sensor

compass

fm

transmitter

temperature &
humidity sensor

And many
others..

HMC6352 DATASHEET (I2C COMPASS)

Command Byte ASCII
(hex)

Response 1 Byte
(binary)

Response

2 Byte
(binary)

Description

S

(53)

Sleep

W (57)

Wakeup

O

(4F)

S/R

Now

C (43)

Enter user

calibration
mode

E (45)

Exit user calibration
mode

L (4C)

Save Op Mode to
EEPROM

A (41)

MSB Data

LSB Data

Get data,

compensate,
calculate new heading

I2C slave address :0x42

(7 MSB with LSB 0 filled)


Heading mode:

0


3599 binary format
over two bytes

(Tenths of a degree)


e.g.

MSB: 0x0B LSB:
0x7F

0x0B7F
=
2943 decimal

Degrees: 294.3


Interface Commands / Responses

DEMO


I2C / SPI

Components used:


Netduino

Nokia 5110 LCD

DS1037 Breakout Board

HMC6352

CONNECTING TO THE INTERNET

CONNECTING TO THE INTERNET

Ethernet

(built
-
in or shield), plug it in anywhere

Wifi

(module), configured once per location

GSM/GPRS

(module), configured once, easy to use


Bluetooth

(module), via GSM/GPRS/
Wifi

of phone

ZigBee

(module), via
ZigBee

gateway

USB

(built
-
in), via desktop computer


IOT INFRASTRUCTURE SERVICES

Thingspeak
, an open source "Xively",
Twitter for devices

e.g.
https://thingspeak.com/channels/9


Xively (was Cosm, was Pachube
),
to
store and reuse sensor measurements

e.g.
https://
xively.com/feeds/116340




Twitter
, allows objects to talk to humans or
receive commands

e.g. @
twrbrdg_itself

(f.k.a. @towerbridge)


Yaler
, enables remote access to Internet
-
connected devices

e.g.
http://try.yaler.net/~arduino/led


ioBridge

http://www.iobridge.com

(https://realtime.io)





Platforms


Connectivity


Open Source


Commercial


Applications


Wearable


Lifestyle


Home


Building Blocks


Protocols


Telecoms


Hardware


THINGSPEAK


Open Source API


Real
-
time data collection


Data processing


Data visualizations


Location
-
awareness


Status context


Application
infrastructure


Twitter proxy


Apps


Plugins

DEMO ARCHITECTURE

Sensor

Actuator

HTTP://PUT

HTTP://GET

api.thingspeak.com

HTTP://
POST

HTTP
://GET

ALTERATIVE ARCHITECTURE

Sensor as Server

Actuator as Server

HTTP://GET

HTTP
://POST

api.thingspeak.com

DEMO


CONNECTING TO THE CLOUD

Components used:


Netduino

TMP36

Hitec

HS
-
422 Servo

USEFUL RESOURCES

Secret Labs LLC


http
://
netduino.com



Forums
http://
forums.netduino.com


Community Development Site for the .NET Micro Framework


http
://
www.netmf.com


API Reference for .NET Micro
Framework


http://
msdn.microsoft.com/en
-
us/library/bb417054.aspx



Adafruit


http://
learn.adafruit.com



Sparkfun


https://
www.sparkfun.com/tutorials


AGENT
SMARTWATCH

-

.NET ON YOUR WRIST

Kickstarter

Funded


over $1million



120MHz ARM Cortex
-
M4 processor


with secondary AVR co
-
processor


1.28" Memory Display (128 x 128)


with intelligent backlighting


Anti
-
glare glass lens


Bluetooth 4.0 BD/EDR + LE


3
-
axis accelerometer


Ambient light sensor


Vibration motor


Qi
wireless charging


Water resistant (ATMs: TBD)


AGENT OS
1.0 including
.NET Micro Framework
4.3


THANKS FOR LISTENING… AND QUESTIONS?