The Joy of Wires

Download Report

Transcript The Joy of Wires

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
.NET
Framework
Windows Embedded
Windows Embedded Compact
.NET
MicroFramework
MCU Example:
ARM7 / Cortex-M3 / SH2
Small
ARM9 / Cortex-A8
\ARM11 / Cortex-A9 / Atom
Device Category
Centrino
Large
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
FEATURES NOT AVAILABLE IN .NET MICROFRAMEWORK
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
THE NETMF VERSION 4.2
From Microsoft Resources:
From the community:
VB.NET (a collaboration)
VB.NET (a collaboration)
Cryptographic Primitives and Object
Model
New Platform builder
FTP – client (desktop compatible) and server
(NETMF only)
Remote firmware update
Regular Expressions
IL Optimizations
StringBuilder Type
Bug fixes
SNTP
PWM and Analog/Digital Conversion
Bug fixes
Secure Hardware (SIM Card) drivers
WHAT IS THE INTERNET OF THINGS?
Physical Object
+
Controller, Sensor, Actuator
+
Internet
=
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
Two implementations of AnalogInput class:
Able to provide own reference voltage (Aref)
10 bit ADC, value between 0 and 1023 if
using SecretLabs implementation
SecretLabs
var sensorPort = new AnalogInput(Pins.GPIO_PIN_A0);
int rawValue = sensorPort.Read(); // returns count
12 bit ADC, value between 0 and 4095 if
using Microsoft.SPOT implementation
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
And many others..
Inter-Integrated Circuit (I2C)
• 2 wire bus (SDA/SCL)
touch sensor
• Devices are uniquely addressable
compass
• Relatively slow
Serial Peripheral Interface Bus (SPI)
• 4 wire bus (SCLK/MOSI/MISO/CS)
fm transmitter
• Fast
temperature &
humidity sensor
HMC6352 DATASHEET (I2C COMPASS)
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
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
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
Twitter, allows objects to talk to humans or
receive commands
e.g. @twrbrdg_itself (f.k.a. @towerbridge)
e.g. https://thingspeak.com/channels/9
Yaler, enables remote access to Internetconnected devices
Xively (was Cosm, was Pachube), to
store and reuse sensor measurements
e.g. https://xively.com/feeds/116340
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
HTTP://PUT
HTTP://POST
Sensor
api.thingspeak.com
HTTP://GET
HTTP://GET
Actuator
ALTERATIVE ARCHITECTURE
api.thingspeak.com
HTTP://GET
Sensor as Server
HTTP://POST
Actuator as Server
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?