430 likes | 611 Views
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
E N D
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 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” • 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, sequencingas well as a learning aid
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 NetduinoSDK 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
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 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 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 • In the animation to the below, we can see how the four-bit binary number 1001 is shifted to the Q outputs of the register. • 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
Demo – NEVER enough pins… 74HC595 shift register Components used: Netduino Electret microphone 74HC595 shift register LED bar 220 ohm resistor
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 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
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