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?
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Σχόλια 0
Συνδεθείτε για να κοινοποιήσετε σχόλιο