The Shield Base adds Arduino shield pin compatibility to your Netduino Go. Just plug it in and access InputPorts, OutputPorts, AnalogInputs, PWMs, and more using standard C# or Visual Basic code.
This is what the folks at Secret Labs have to say about the Netduino Go Shield Base:
Based on the projects that tens of thousands of community member have been building, we made a few tweaks when creating a shield-style adapter for Netduino Go.
Arduino "Rev. C" headers
Arduino is working on a new ARM-based board called Arduino Due. Its MCU's pins are not 5V tolerant, and its I2C pins are not in the same place as the AVR-based Arduino Uno.
So late last year, Arduino released a new "Rev C" line of AVR-based Arduinos. They included new SDA/SCL pins (redundant from A4/A5) and an IOREF pin (which feeds either 3.3V or 5V...whatever voltage the IO of the shield should run at).
A few shields have started popping up which use these new extended headers. So when we designed the Shield Base, we included these new longer headers too.
Existing shields will continue to work as expected. New "IOREF-aware" shields should see the 3.3V power supply on the IOREF pin and adjust their output accordingly. For digital pins this doesn't matter for Netduino. For analog signals, this should mean 3.3V analog voltages. The Shield Base appears to be the very first 3.3V board using the new pinout, so shield makers can start adapting their shields even before Arduino Due hits the market for the Arduino crowd sometime this year.
Together with a few other enhancements (below) these should take Arduino Shield compatibility to an even higher level.
Digital I/O and pullups/pulldowns
Some robotics projects have needed external pulldowns on digital I/O pins to keep motors from spinning during startup. With Netduino's SAM7X, all pins are in a pull-up state at boot.
With Shield Base, all of the digital I/Os now have their pullups disabled at powerup. Even better, all digital I/Os now have a *pulldown* option as well. This gives more flexibility to projects, and keeps things in a predictable state during boot.
Also of note...each pin on the Shield Base can drive 25mA (maximum of about ~125mA for all IOs combined). So if you have an Arduino shield which needed more current to work properly, this enhancement may foot the bill.
MOSFET control of 3.3V/5V headers
We wanted to make sure that the shield base could boot and request power from the Netduino Go! mainboard before powering up shields. And we wanted to provide a method to power down and repower shields that became unresponsive.
Well there's a really nice dual-MOSFET on the 3.3V and 5V power headers. If you open up pin PB2 ((Cpu.Pin)18) as an OutputPort, you can turn the pins on/off at any time. This also allows your battery-operated projects to conserve some power as your code sees fit.
Limited time: NETMF and 512KB flash MCU
For the Shield Base, we wanted to use the new STM32F2 Cortex-M3 (120MHz) MCU. This will allow us to process a tremendous amount of data with CRCs for seamless virtualized IO.
We wanted to make it possible to build go!bus modules that ran NETMF. And wanted to develop the packet protocol for go!bus using a rapid development platform...so NETMF fit the bill for that perfectly as well. So we thought we should implement the initial Shield Base firmware in NETMF and give early adopters a free upgrade to a 512KB flash chip to say "thank you" for coming along on the journey.
This means that you can effectively use your Shield Base as a 120MHz Netduino. Just plug in 3.3V power from an existing Netduino into the 3.3V power header on the Shield Base. Then connect a USB-TTL serial cable to pins D0/D1 on the shield base. Create project and deploy. That's it.
We'll be switching the Shield Base MCU to the standard 128KB flash chip this summer, so the NETMF-on-Shield-Base option will be a limited time sort of thing. Hopefully a nice bonus...and its legacy will enable go!modules to be built with NETMF and on-board logic.
MiniJTAG
With traditional Netduinos, we placed the redundant 6-pin "ICSP" header on the right side of the board. This was originally included with Arduino to offer a way to reflash chips directly.
With Netduino Go and the Shield Base, we wanted to give users a low-cost hardware debugging and flashing option for native code. So instead of the 6-pin "ICSP" header we've included the industry-standard MiniJTAG (technically "Cortex Debug Port") header holes. Along with $40 of JTAG debug hardware, you can deploy and debug native code (or for the moment a debug version of the NETMF itself) on this $25 board.
Reset pin
With the Shield Base, it doesn't make much sense to hook up the /RESET pin header to the MCU. But it does make sense to have it reset the mainboard! We're not taking advantage of this yet, but the /RESET pin is now a hardware-enabled interrupt pin instead of an actual RESET pin.
Once we update the firmware to support it, pressing a RESET button on a shield will actually reset the Netduino Go! mainboard. I already saw a sample by Stefan where he hooked up an InterruptPort to pin PB11 ((Cpu.Pin)27) and used NETMF's PowerState class to reboot the board using managed code...pretty nifty.
6 PWM channels
Arduino Uno has 6 PWM channels. Netduino and Netduino Plus have 4 PWM channels (albeit all really nice 16-bit PWM channels).
With Netduino Go, we gave the Shield Base all 6 of those channels. Running on independent timers. With 16-bit to 32-bit PWM. If you picked up a motor shield which had a lonely channel missing out on PWM love, this should be a very happy enhancement.
12-bit ADC
Along with updating PWM, the new microchip allowed us to increase the ADC accuracy from a healthy 10-bit ADC to an awesome 12-bits. On-chip ADCs are generally only really strong at 8-bit to 10-bit resolution, but with some TLC you can take advantage of this 4 time increase in resolution. On all six analog pins.
3 Serial Ports
Not yet part of the Shield Base driver for Netduino Go, but we endowed the Shield Base with three serial ports (one more than Netduino and Netduino Plus). The new serial port is on pins D7/D8 and we muxed it with the RTS/CTS of COM2. So you can use the second serial port with hardware handshaking...or you can get a third serial port.
If you're using the current Shield Base hardware (with its temporarily-upgraded 512KB flash MCU), you can use all three serial ports today. Simultaneously.
We'll be updating the Shield Base firmware and mainboard drivers in the next month or so to enable 3x Serial Port access from the mainboard. Once we get the all-clear from the community on the current featureset of the Shield Base (used as go!module), we will move things over to the fast go!bus channel (instead of the shared UART we're using now) and enable the virtualized SerialPort functionality.
Huge 100uF caps on 3.3V/5V power rails
We wanted to help ensure that circuitry plugged into the shield base would have its own clean power...both so that it could have cleaner ADC readings and so that other modules plugged into the bus would have fluctuations to their power minimized.
So we went all-in...and put two large 100uF tantalum smoothing capacitors on the power rails. One on 3.3V, one on 5V. You'll see them to the left of the power header, dressed in black.
Summary
A Netduino Go combined with a Shield Base will effectively create an "uber-Netduino".
As you use these boards, we welcome your feedback. A lot of community feedback was incorporated directly in these new designs...and we look forward to continuing to integrate your feedback in the future.
Chris