The Joy of Wires: an introduction to Netduino, .NET
Download
Report
Transcript The Joy of Wires: an introduction to Netduino, .NET
THE JOY OF WIRES: AN INTRODUCTION
TO NETDUINO, .NET MICRO FRAMEWORK
AND THE INTERNET OF THINGS
Iain Angus
AGENDA
Introduction
• .NET MicroFramework
• Internet of Things
• Netduino
Getting started
Setup, Fritzing, Breadboards
Building Blocks
Digital Input / Output
Analog Input / Analog Output (Pulse Width Modulation)
Displaying Data
HD44780, Bar Graph
Communicating with Digital Sensors
I2C / SPI
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
Remote firmware update
FTP – client (desktop compatible) and server (NETMF
only)
IL Optimizations
Bug fixes
SNTP
Regular Expressions
StringBuilder Type
PWM and Analog/Digital Conversion
Bug fixes
Secure Hardware (SIM Card) drivers
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”
Or…
Computers, sensors and
actuators connected through
Internet protocols that measure
or manipulate physical
properties
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?
Made Secret Labs LLC
Open Source Hardware Platform
.NET MicroFramework
Family of products:
Netduino 1, 1 plus, 2, 2 plus, mini
Netduino Go
NETDUINO PROJECTS
Netduino projects 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
• Netduino SDK v4.2.2.0 (32-bit) or
Netduino SDK v4.2.2.0 (64-bit)
NETDUINO PLUS 2 - ON THE BOARD
LED
Button
SD card
Ethernet
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
ADXL335 Accelerometer
LED
220 ohm resistor
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
DISPLAYING DATA
DISPLAYING DATA
LED
Colour Display
LCD Display
LED Bar Graph
Seven Segment Display
LED Matrix
DEMO – HD44780
Components used:
Netduino
HD44780
Potentiometer
SERIAL IN - PARALLEL OUT SHIFT REGISTERS
Shift register is controlled with three pins. They are usually
called DATA, LATCH and CLOCK
Each time CLOCK goes high two things happen:
• Current value in register shifted left by one, last bit is
dropped out
• 1st bit set to current value of DATA
To write a byte to shift register this has to happen eight times
in a loop
To update output pins you must pull LATCH high, data transfer
happens on transition from low to high. This is also called rising
edge
In the animation to the below, we can see how the fourbit binary number 1001 is shifted to the Q outputs of the
register.
DEMO – NEVER ENOUGH PINS… 74HC595 SHIFT
REGISTER
Components used:
Netduino
Electret microphone
74HC595 shift
register
LED bar
220 ohm resistor
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)
fm transmitter
• 4 wire bus (SCLK/MOSI/MISO/CS)
• Fast
temperature &
humidity sensor
HMC6352 DATASHEET
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)
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?