Building a robot with the .Net Micro Framework

39
Building a robot with .Net Micro Framework Ducas Francis SC @ Readify

description

Slides from my DDD Sydney session.

Transcript of Building a robot with the .Net Micro Framework

Building a robot with .Net Micro Framework

Ducas FrancisSC @ Readify

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 Are We Building

• Let’s see…

Fez Panda II

Tamiya Dual Motor Gearbox

Tamiya Dual Motor Gearbox

Tamiya Track and Wheel Set

Tamiya Plate Set

Dual Motor Driver

Low Current Motors

Ultrasonic Range Finder

Accelerometer

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

Or You Could Just Buy a Kit…

• FEZ Mini Robot Kit $120 • RP5 Tank Chasis + Driver $120

What you need to know

• *Basic* electronics• How to use a soldering iron• How to cut a little code in C#

NetMF 101

Net MF 101 – What do I have?

• Multithreading• GC• Flash access

NetMF 101 – What don’t I have?

• Generics• A lot of RAM…

NetMF 101

NetMF 101 - IO

• Digital IO• Interrupts• Analog IO• UART• SPI• I2C• PWM

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…

Test Bots

• Distance Sensor• Accelerometer• Motor Driver

Discovery Bot

while (something within 30cm of front)avoid

go forward

Safe Discovery Bot

while (bot is tipping)avoid

while (something within 30cm of front)avoid

go forward

Where to buy…

EOFY2012

Where to learn more…

• tinyclr.com• netmf.com• letsmakerobots.com

• sparkfun.com• bildr.com

• mbed.org

With thanks to our sponsors

Please complete your feedback forms, and return

them to the registration desk for a chance to win a

Nokia Lumia