NetMF
• Open Source Platform for small embedded applications
• Runs on devices with a 32-bit processor and as little as 64K RAM
• Provides the efficiency of creating and maintaining devices in managed code
Why NetMF?
• Use Visual Studio as the IDE• Program in C#• Same code runs on any NetMF device with minimal changes
• Full debugging capabilities– Emulator– Breakpoints– Stepping– Variables– Stack Traces
• Includes many bus drivers• Managed Code with Garbage Collection
What about Arduino?
• Open Source Platform for electronics prototyping• Uses the Arduino programming language (C++
based) and Arduino IDE.• Benefits– Inexpensive– Cross-Platform Software– Nice IDE– Open Source and Extensible Software (C++ or AVR-C)– Open Source and Extensible Hardware (ATMEGA8/168)
NetMF Hardware - Netduino
• Pro – Atmel ARM7 48MHz 128KB Flash 60KB RAM
• Go – STMicro Cortex-M4 168MHz 384KB Flash 100KB RAM
NetMF Harware - GHI• FEZ Spider – EMX ARM7 72MHz
3000KB Flash 12000KB RAM
• Fez Hydra – OSHW ARM9 240MHz 3000KB Flash 12000KB RAM
• FEZ Cerberus/Cerbuino/Cerb40 – OSHW Cortex-M4 168MHz 300KB Flash 112KB RAM
• FEZ Panda II - USBizi-100 ARM7 72MHz 148KB Flash 62KB RAM
Arduino Compatible vs Gadgeteer
• Compatible with Arduino shields
• Pins over Sockets• Easy to prototype with
breadboards and breakout boards
• More flexible for electronics projects
• Sockets over Pins• Modules are pre-built• Not all boards have all
socket types• Usually have more
powerful processors
What you Need
• Mainboard• Motors• Gearboxes• Wheels• Housing/Plates• Batteries• Motor Driver
• Distance Sensor
• Accelerometer
• FEZ Panda II $50• SolarRobotics RM3 2x $4• Tamiya Double Gearbox (70168) $15• Tamiya Track and Wheel Set (70100) $15• Tamiya Universal Plate Set (70157) $10• 4xAAA + 1x9V $10• 1A Dual TB6612FNG H Bridge (ROB-09457)
$10• MaxBotix LV-EZ0 Ultrarosnic Range Finder
(SEN-08502) $35• Triple Axis Accelerometer ADXL345 (SEN-…)
$30Total: ~$150
What you need to know
• *Basic* electronics• How to use a soldering iron• How to cut a little code in C#
NetMF 101 – Digital IO
• Pin can either be set to HIGH (true) or LOW (false)
• OutputPort.Write(bool)• bool InputPort.Read()
• Demo - LED
NetMF 101 - Interrupts
• Act when the signal changes from LOW to HIGH and vice-versa
• NativeEventHandler InterruptPort.OnInterrupt
• Demo - Bumper
NETMF 101 – Analog IO
• Read a voltage – not just HIGH/LOW• Not part of core NetMF• byte AnalogIn.Read()• AnalogOut.Set(int value)• AnalogOut.Set(byte[] data, int offset, int
count, int dataRate)
• Demo – Ultrasonic Distance Finder
NETMF 101 – UART Serial Ports
• Use 2 Pins to Communicate between 2 Devices– TXD– RXD
• Wire to the opposite on each device– RXD => TXD– TXD => RXD
• new SerialPort(“COM1”, …)• SerialPort.Read(byte[], …)• SerialPort.Write(byte[], …)
• Demo - XBee
NetMF 101 – I2C
• Use 2 Pins to communicate between master and multiple slave devices.– SCL– SDA
• Provides a bus and ability to define configuration and communicate using transactions
• Demo - Accelerometer
NetMF 101 - PWM
• Pulse Width Modulation• Emulates a wave with given frequency and
duty cycle• Motors should be given higher frequencies• PWM.Set(int freqHz, int dutyCycle)
• Demo - Piezo
Building Tank Bot..
• Build the gearbox• Attach the gearbox to the frame and wheels• Attach the main board to the frame• Attach battery holders to the frame• Solder pins to the prototyping board, distance sensor, motor
driver and accelerometer• Solder wires to the motors• Attach the distance sensor to the frame• Wire the motor driver, distance sensor and accelerometer to
the prototyping board• Write some code…
Safe Discovery Bot
while (bot is tipping)avoid
while (something within 30cm of front)avoid
go forward
Where to learn more…
• tinyclr.com• netmf.com• letsmakerobots.com
• sparkfun.com• bildr.com
• mbed.org