390 likes | 578 Views
The Joy of Wires: an introduction to Netduino , .NET Micro Framework and the Internet of Things. Iain Angus. agenda. 4. Building Blocks Digital Input / Output Analog Input / Analog Output (Pulse Width Modulation) 5. Communicating with Digital Sensors I2C / SPI
E N D
The Joy of Wires: an introduction to Netduino, .NET Micro Framework and the Internet of Things Iain Angus
agenda • 4. Building Blocks • Digital Input / Output • AnalogInput / Analog Output (Pulse Width Modulation) • 5. Communicating with Digital Sensors • I2C / SPI • 6. Internet Enabled Applications • ThingSpeak • 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)
Everything starts somewhere… • Why Netduino… • Visual Studio IDE • Step by step debugging • Reuse existing skills • Low cost electronics • Fast prototyping
The Devices Continuum Full .NET Framework Device Capabilities Windows Embedded Windows Embedded Compact .NET MicroFramework Limited MCU Example: ARM7 / Cortex-M3 / SH2 ARM9 / Cortex-A8 \ARM11 / Cortex-A9 / Atom Centrino Large Small Device Category
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
The NETMF Version 4.2 From Microsoft Resources: 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 • VB.NET (a collaboration) • Cryptographic Primitives and Object Model • Remote firmware update • IL Optimizations • Bug fixes • SNTP
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” Physical Object + Controller, Sensor, Actuator + Internet = Internet of Things
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, sequencingas well as a learning aid
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 NetduinoSDK 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
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 Two implementations of AnalogInputclass: 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 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 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 • SecretLabsimplementation: • 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 sensors And many others.. 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
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
Demo – i2c / SPI Components used: Netduino Nokia 5110 LCD DS1037 Breakout Board HMC6352
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 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) 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 measurementse.g. https://xively.com/feeds/116340
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://GET api.thingspeak.com HTTP://GET HTTP://POST Sensor Actuator
Alterative Architecture api.thingspeak.com HTTP://GET HTTP://POST Sensor as Server 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