Why custom devices? Enables research in the wild Steve Hodges, Lyndsay Williams, Emma Berry, Shahram Izadi, James Srinivasan, Alex Butler, Gavin Smyth, Narinder Kapur and Ken Wood, “SenseCam: a Retrospective Memory Aid”. In Dourish and A. Friday (Eds.), UbiComp 2006, pp Y. Rogers, S. Price, G. Fitzpatrick, R. Fleck, E. Harris, H. Smith, C. Randell, H. Muller, C. O'Malley, D. Stanton, M. Thompson, and M. Weal Ambient wood: designing new forms of digital augmentation for learning outdoors. In Proceedings of the 2004 Conference on Interaction design and children: building a community (IDC '04). William Gaver, Mark Blythe, Andy Boucher, Nadine Jarvis, John Bowers, and Peter Wright The prayer companion: openness and specificity, materiality and spirituality. In Proceedings CHI '10. pp
Different to prototyping, in the traditional sense Custom research devices are not necessarily a prototype for a future product. Need to be fully functional, and self-contained
Ideal Properties flexibility over device form factor as well as the hardware and software; accessibility to new users and extensibility of the platform; versatility to scale up to sophisticated standalone devices and robust systems.
Broadening the Audience.NET Gadgeteer has also proven of interest to: – Educators Secondary (age 18 down to 14 or perhaps lower) Tertiary (from teaching to research) – Hobbyists Growing community of “makers” Getting back to DIY computing
The.NET Gadgeteer Hardware At the heart of every Gadgeteer project is a mainboard. A mainboard is made up of a programmable processor, and a number of sockets that Gadgeteer modules can plug into.
GHI Electronics Spider Mainboard Hydra Mainboard Joystick Button+LED SD card 3.5” touchscreen Camera Ethernet Multicolor LED Potentiometer WiFi Bluetooth Accelerometer Xbee radio Motor controller Micro SD card Music player Seeed Studio Cellular Radio GPS Plant moisture sensor Accelerometer Gyroscope Compass Barometer OLED display Pulse oximeter High-voltage relays Current sensor Galvanic skin response Sytech Designs Nano Mainboard 4.3” touchscreen Camera Button+LED Power supply Ethernet SD card Accelerometer Xbee radio Serial 2 USB DF Robot Smart motor controller Ultrasonic ranger Line following sensor Infrared distance sensor Colour sensor
One type of cable
A Closer Look at a Mainboard Power LEDDebug LED Reset Button
Mainboard Socket Numbers
Mainboard Socket Types (Letters)
If a module is connected to the wrong socket type it won’t work (but it won’t damage anything, either) Red modules supply power to the mainboard. Only one red module should ever be connected to the mainboard at any time.
Socket Type Example: Socket A
GPIOA general-purpose digital input/output pin, operating at 3.3 Volts. [UN]Modules must not connect to this pin if using this socket type. Mainboards can support multiple socket types on one socket, as long as individual pin functionalities overlap in a compatible manner. A pin from one socket type can overlap with a [UN] pin of another. !Interrupt-capable and software pull-up capable GPIO (the pull-up is switchable and in the range of 10,000 to 100,000 ohms). *Socket type * should not appear on a mainboard, only on DaisyLink modules. The [MS] pins on this socket type can optionally support reflashing the firmware on the module. TYPELETTER PIN 1 PIN 2 PIN 3 PIN 4 PIN 5 PIN 6 PIN 7 PIN 8 PIN 9 PIN 10 3 GPIO X+3.3V+5VGPIO!GPIO [UN] GND 7 GPIO Y+3.3V+5VGPIO!GPIO GND Analog In A+3.3V+5VAIN (G!)AIN (G)AINGPIO[UN] GND CAN C+3.3V+5VGPIO!TD (G)RD (G)GPIO[UN] GND USB Device D+3.3V+5VGPIO!D-D+GPIO [UN] GND Ethernet E+3.3V+5V[UN] LED1 (OPT) LED2 (OPT) TX D-TX D+RX D-RX D+GND SD Card F+3.3V+5VGPIO!DAT0DAT1CMDDAT2DAT3CLKGND USB Host H+3.3V+5VGPIO!D-D+[UN] GND I2C I+3.3V+5VGPIO![UN] GPIO[UN]SDASCLGND UART+Handshaking K+3.3V+5VGPIO!TX (G)RX (G)RTSCTS[UN] GND Analog Out O+3.3V+5VGPIO!GPIOAOUT[UN] GND PWM P+3.3V+5VGPIO![UN] GPIOPWM (G) PWMGND SPI S+3.3V+5VGPIO!GPIO CSMOSIMISOSCKGND Touch T+3.3V+5V[UN]YUXLYDXR[UN] GND UART U+3.3V+5VGPIO!TX (G)RX (G)GPIO[UN] GND LCD 1 R+3.3V+5VLCD R0LCD R1LCD R2LCD R3LCD R4LCD VSYNCLCD HSYNCGND LCD 2 G+3.3V+5VLCD G0LCD G1LCD G2LCD G3LCD G4LCD G5BACKLIGHTGND LCD 3 B+3.3V+5VLCD B0LCD B1LCD B2LCD B3LCD B4LCD ENLCD CLKGND Manufacturer Specific Z+3.3V+5V[MS] GND DaisyLink Downstream* *+3.3V+5VGPIO!GPIO [MS] GND Socket Type Definition (Version 16)
Module Socket Labels “X or Y”
Match socket type letters when connecting modules to the mainboard
Software Based on the.NET Micro Framework (NETMF) – Subset of.NET with some extra libraries to support managed access to hardware WPF – C#, VB coming soon. – Remote debugging In addition: – Gadgeteer Core Libraries (e.g Webserver) – Visual Studio Graphical Designer – Framework for mainboard and module drivers
.NET Micro Framework Mainboard, Sockets, Pins Module, Interfaces Program Modules Main- board Timer Color Pictures Storage Program End User Hardware Manufacturers GadgeteerCore NETMF Note: Italics denotes abstract class SOURCE
High level API with inline docs Event driven rather than while(true) Next level of abstraction easily accessed
Creating additional modules Provided templates make it easy … … including building installers
Module & Mainboard Builder’s Guides
Support for Custom Form Factors
Example Research Project: PreHeat
ASTRA: Atmospheric Science Through Robotic
A simple example..
Index of hardware from any manufacturer Example projects Forums
Project documentationOpen source for SW + HWCore and Builder MSIs
Credits Thanks to the following MS groups: Microsoft Research Connections are supporting us in reaching end users particularly in education. The MSR Advanced Prototyping team built the Designer experience. The Garage provided validation and testing of the internal prototype version of Gadgeteer. And to the following individuals (in alphabetical order): Michael Ashby, Tambie Angel, Tom Bartindale, Dominik Bial, Tom Blank, Carole Boelitz, Natalya Butterworth, Bruce Cleary, Mike Dodaro, Nick Duffield, Tobias Fischer, John Helmes, Carlos Garcia Jurado Suarez, Darren Gehring, Rachel Howard, Steven Johnston, Stacey Kuznetsov, Bob Lockhart, ThuVan Pham, Aprameya Rao, David Rizzi, John Sarik, Scarlet Schwiderski-Grosche, Craig Shrimpton, Jim St. George, Stewart Tansley, Pablo Tapia, Stuart Taylor, Curtis von Veh, Darren West, and Christian Winkler.
Conclusion.Net Gadgeteer is a rapid prototyping platform – Open hardware/software – Extensible Rich programming environment – Visual Studio, C# – Remote debugging… Support for CAD and rapid physical enclosure design.
SOMETHING SIMPLE: A BASIC DIGITAL CAMERA WITH.NET GADGETEER
Shutter button Displays picture on screen Stores picture in SD Card