Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.
Photo

Building custom go!bus modules for Netduino Go


  • Please log in to reply
102 replies to this topic

#1 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 02:29 AM

In the last week, we've received a lot of inquiries from community members wanting to build modules for Netduino Go. When Arduino launched a few years ago, it enabled a new ecosystem of shield manufacturers and kit makers. Similarly, Netduino Go enables a new ecosystem of individuals and companies, creating plug-and-play modules and kits using go!bus virtualized IO. We originally planned to wait until late spring or early summer to release a comprehensive development kit for module builders...but I know that some of you are really eager to start thinking through your designs. And as this is an open source community, I really want to include interested parties in the conversation. So let's start the conversation now, here in this thread. If you'd like to share details on modules you want to create, this is a great place to help avoid duplication of efforts as well. I'm sure there will be some modules created by multiple parties...but there are so many things that can be created that being open with plans here may help everyone. To ensure a high-quality on-time release for Netduino Go, we utilized custom profiles on the STM8S-based modules (with code created and contributed by CW2). We formalized the pin, power, voltage tolerance, reflashing, module enumeration, and initial error-correction specifications. We formalized the "basic module" spec used on the button/led/relay modules. And we're using the Shield Base to finalize the virtual I/O profiles before we take the word "draft" off of the go!bus protocol spec. We also made sure that there are low-cost chips, free compilers, full open-source capabilities, full "no brick" reflashing without bootloaders, and super-affordable debuggers available to module builders. Over the next month or two, finalizing the virtual I/O profiles will include tasks such as adding time sync (to enable InterruptPorts to report accurate timestamps in their events) and propogating IO exceptions from the virtualized IO on modules. The infrastructure is there for a really solid, long-lasting bus protocol. Today we can start sharing details on the electrical spec, the basic modules, the reflashing specs, microcontroller specs, etc. We can talk about how to hook up STM8S chips, and we can share some other chips (both SMD and through-hole) which are already designed into the electrical go!bus spec. Where would you like to start the conversation? There's lots to cover. This should be a lot of fun, and the new ecosystem will enable a lot more people to get into open source electronics...and will enable a lot of new projects. Chris

#2 Arron Chapman

Arron Chapman

    Advanced Member

  • Members
  • PipPipPip
  • 289 posts
  • LocationOregon, USA

Posted 16 April 2012 - 04:21 AM

Where would you like to start the conversation? There's lots to cover. This should be a lot of fun, and the new ecosystem will enable a lot more people to get into open source electronics...and will enable a lot of new projects.


If we can lets start at the beginning :).
  • The Go!Bus has 10 pins, what are they, and what are they for?
  • The Schematic for the Go! [pdf] says there is SPI and UART on the Go!Bus what is the UART for it I already have SPI?
  • I keep hearing about SWIM for flashing the modules, what is it and what does it mean that I can flash my modules?
  • How much power can I consume on my modules, what if I need more?
  • You've said the STM8S and STM32F are good uC to use on the modules, but how do I know which one to choose?
  • What about mounting holes, is there a standard?
  • Are there any design requirements?
  • How about electrical requirements?

When you talk EE use small words, I'm just a Software Developer :)
My Blog/Site and Everything Else

If my post helped you please consider pressing the "Like This" button in the bottom right-hand corner.

 

Oh my. So many things, so little money!!

 


#3 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 04:39 AM

Hi Arron,

If we can lets start at the beginning :).

That's quite the list :) Let me see if I can answer all the questions here... We'll also want to pull them together and put them on the Wiki for easy reference.

  • The Go!Bus has 10 pins, what are they, and what are they for?
  • The Schematic for the Go! [pdf] says there is SPI and UART on the Go!Bus what is the UART for it I already have SPI?

Here's the breakdown:
  • 3V3
  • 5V
  • GPIO+/IRQ
  • UART_RX (from module's perspective)
  • UART_TX (from module's perspective)
  • SPI_SS
  • SPI_MOSI
  • SPI_MISO
  • SPI_SCK
  • GND
3V3, 5V, and GND are power for your module.

The UART pins are solely used for reflashing modules, and for exclusive-channel support for Gadgeteer "U" modules. We're also using these on the shield base during the beta, in case there are bugs we need to fix (which ensures that they're not NETMF SPI-related).

  • I keep hearing about SWIM for flashing the modules, what is it and what does it mean that I can flash my modules?

STM8S microcontrollers are programmed via SWIM, which is basically a single-pin flash-and-debug protocol. You'll be able to reflash your modules via go!bus, or via a SWIM breakout connected to a socket breakout.

  • How much power can I consume on my modules, what if I need more?

A module can use up to 60mA of power at boot, and we'll provide a mechanism to request more power.

  • You've said the STM8S and STM32F are good uC to use on the modules, but how do I know which one to choose?

For now, choose STM8S. The first standard virtual I/O firmware will be for STM8S. STM32F is next.

Once both firmware options are available, you'll want to pick the micro which has the right pin features (# of IOs, # of SPI buses, # of analog channels, voltage tolerance, etc.) and speed for your application. STM32F offers faster go!bus communication and faster virtualization. STM8S is less expensive. Together they provide a range of $0.30+ chips...so you can use the one that's right for your module.

  • What about mounting holes, is there a standard?

Yes. Holes should be 3.0mm (tight fit) or 3.2mm (loose fit) in diameter. They need to be set on a 5mm grid (i.e. a multiple of 5mm between centerpoint of holes).

  • Are there any design requirements?

The sockets can be on the front or the back of modules. If near the edge, they need to be notch-facing-out.

No soldermask color requirements, silkscreen requirements, etc. We wanted to have a very simple spec, from an electrical/design perspective...to give module builders lots of freedom.

Module drivers will need to be provided in C#/VB source code form. Compiled drivers and installers that put them into the "add reference..." box are preferred...we can help with that. We want to make sure that modules, whether open source or not, will not have any artificial/proprietary limitations keeping them from working with any go!bus-compliant mainboard.

Speaking of which...if you follow the go!bus spec, you'll be able to put the go!bus (G) logo on your modules to show that they're interoperable with go!bus-compliant mainboards. And we'll have a module directory so you can advertise that interoperability.

  • How about electrical requirements?

go!bus mainboards are guaranteed to be 5V tolerant, so you can run your MCU at either 3.3V or 5V. If you run an STM8S at 5V, you'll need to level shift the 3.3V signals coming from the mainboard into the input pins on the module. For most applications, running STM8S at 3.3V will work beautifully.

Is that a good start?

Chris

#4 JonnyBoats

JonnyBoats

    Advanced Member

  • Members
  • PipPipPip
  • 155 posts
  • LocationPhillips, ME

Posted 16 April 2012 - 04:41 AM

I would like to start by building two modules: 1) A slide potentiometer first to get my feet wet. Circuit should be the same as the existing potentiometer module with a slider instead of a rotary control. 2) A rotary encoder module. Of course I have plans for more, but one needs to crawl before one walks or runs ;-) And I should add that both of these will be open source hardware and software.

#5 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:02 AM

Hi Jonny,

1) A slide potentiometer first to get my feet wet. Circuit should be the same as the existing potentiometer module with a slider instead of a rotary control.

Oh, that one is pretty easy. Exactly as you mentioned...you can use the current potentiometer schematic and firmware, and we'll automatically update it alongside the rotary potentiometer.

2) A rotary encoder module.

For a rotary encoder, STM8S should work well. Would you count the steps on the module? How would you expose these (via virtual IO)?

And I should add that both of these will be open source hardware and software.

Awesome. Thank you :)

Chris

#6 ItsDan

ItsDan

    Advanced Member

  • Members
  • PipPipPip
  • 101 posts

Posted 16 April 2012 - 05:04 AM

Posted Image

Does the above reflect the pinout correctly?
Follow the adventures of the Box of Crappy Surplus

Total BOCS Traveled Distance: 9708 miles | States Visited: 5
Track the Box

#7 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:07 AM

Posted Image

Does the above reflect the pinout correctly?

Yessir, that's perfect from the module's perspective.

Chris

#8 Pete Brown

Pete Brown

    Advanced Member

  • Members
  • PipPipPip
  • 138 posts
  • LocationAnne Arundel County, MD

Posted 16 April 2012 - 05:22 AM

To be completely open, here are the modules I have in various stages of planning and development. Some of these may be go!bus only, many/most will also work with .NET Gadgeteer and classic devices. Please note that I'm not making any promises here, and no specific order implied by this list:
  • Updated MIDI Module (my current one works with the GO in compatibility mode only)
  • Also working on the Big MIDI Brain. Not sure yet if this will replace the MIDI module or be something separate.
  • Mondo Servo controller module (lots-o-servos)
  • Very large button matrix, which would also work for things like synthesizer keyboards, computer keyboards, and controllers like the Monome
  • Atari Joystick/Paddle/Trakball module (almost done)
  • MOS SID module
  • 4 Axis Motor Interface / CNC Controller capable of running small CNC/3d printers, but not limited just to very the low amp NEMA 15 motors like most similar offerings.
  • Various synthesizer components for a specialized type of modular synthesizer
  • Rotary encoder module with LED rings
  • MIDI to CV
Slightly less likely, but still potential ones for me:

  • 8 way slide potentiometer module (someone beat me to this in Gadgeteer land)
  • Rotary encoder module with RGB LED rings (price of this may be too much for the market, as RGB SMD LEDs are crazy expensive. TBD)
  • Commodore drive and/or cartridge interface for augmenting the C64 with NETMF. Just trust me here :)
You can see that my interests tend to be ... specialized. However, if you happen to have any of these on their way to production or in development, reply so we can collaborate.

I mentally add to the list regularly, but the above are the ones I've actually written down and/or started designing.

Pete
Pete Brown - http://10rem.net (NETMF, C++, Windows, C64, and general geekery) Twitter: @pete_brown
I work for Microsoft. Opinions expressed here are my own and do not necessarily reflect those of my employer,our partners or customers.

#9 JonnyBoats

JonnyBoats

    Advanced Member

  • Members
  • PipPipPip
  • 155 posts
  • LocationPhillips, ME

Posted 16 April 2012 - 05:23 AM

Where can one find the bill of materials for the existing Secret Labs go modules? In particular I would like to know the manufacturer, part number and sourcing information for the socket. Thanks.

#10 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:34 AM

Hi Jonny,

Where can one find the bill of materials for the existing Secret Labs go modules? In particular I would like to know the manufacturer, part number and sourcing information for the socket.

Here's the SMD socket for go!bus:
FCI 20021521-00010T1LF
http://search.digike...21521-00010T1LF

And here's the through-hole version:
FCI 20021511-00010T1LF
http://www.mouser.co...kTNcJ8wnslDRg==

Would it help if we bought a few thousand of each and bundled them in 10-packs for $9.95?

Chris

P.S. All of the PNs are in the .BRD design files.

#11 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:36 AM

To be completely open, here are the modules I have in various stages of planning and development.
...
You can see that my interests tend to be ... specialized.

That's a pretty awesome list :)

Chris

#12 Pete Brown

Pete Brown

    Advanced Member

  • Members
  • PipPipPip
  • 138 posts
  • LocationAnne Arundel County, MD

Posted 16 April 2012 - 05:38 AM

Where can one find the bill of materials for the existing Secret Labs go modules? In particular I would like to know the manufacturer, part number and sourcing information for the socket.

Thanks.


Most of the main suppliers will only sell by the reel of 800 or so. Mouser has them in their catalog, but they haven't been in stock for a bit. Chris has the part number

You can also contact Samtec and order a sample (of 10 or so) for evaluation. They're really good about that. Samtec part is SHF-105-01-L-D-SM, but you have to use their builder thingy to specify the part. Normally they're about $2.00 each. The samtec ones are especially nice for hand-soldering, though, as they have an undercut to give you room to get in there with an iron. To compensate when using the less expensive part, I've made the pads on the socket part in Eagle a bit larger.

Finally, these are the same sockets that are used for .NET Gadgeteer, so you may find them at Gadgeteer suppliers too. One community member is selling them for $0.50 each until May 1. Email Valentin at scout119 @ gmail dot com

Pete
Pete Brown - http://10rem.net (NETMF, C++, Windows, C64, and general geekery) Twitter: @pete_brown
I work for Microsoft. Opinions expressed here are my own and do not necessarily reflect those of my employer,our partners or customers.

#13 JonnyBoats

JonnyBoats

    Advanced Member

  • Members
  • PipPipPip
  • 155 posts
  • LocationPhillips, ME

Posted 16 April 2012 - 05:40 AM


Would it help if we bought a few thousand of each and bundled them in 10-packs for $9.95?

Chris

P.S. All of the PNs are in the .BRD design files.


What would be even better would be a couple of sockets and pre flashed STM8S bundled together for $4.95

#14 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:47 AM

What would be even better would be a couple of sockets and pre flashed STM8S bundled together for $4.95

In our production process, we've been flashing 1000s of STM8S-based modules. After they're already built...no need to pre-flash.

We could put together a pack--but pre-flashing the MCUs (before they're mounted) might be pretty expensive to do in small quantities.

We'll make it really easy for you to program your modules (in just a few seconds each, plus the time it takes to plug them in). This also has the side-effect of making sure that all of your socket-to-pad connections are good and lets you create a simple test app for your modules to make sure they were assembled properly.

As part of this conversation, we should put together a workflow of best practices for building modules.

Chris

#15 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 05:48 AM

Hi Pete,

Most of the main suppliers will only sell by the reel of 800 or so. Mouser has them in their catalog, but they haven't been in stock for a bit. Chris has the part number

You can also pick up the SMD ones from DigiKey for about $1 each, in 10-unit quantity.
http://search.digike...21521-00010T1LF

Chris

#16 JonnyBoats

JonnyBoats

    Advanced Member

  • Members
  • PipPipPip
  • 155 posts
  • LocationPhillips, ME

Posted 16 April 2012 - 05:54 AM


As part of this conversation, we should put together a workflow of best practices for building modules.

Chris


Absolutely! That would be great. Lets also have a workflow for prototyping modules.

#17 Chris Walker

Chris Walker

    Secret Labs Staff

  • Moderators
  • 7767 posts
  • LocationNew York, NY

Posted 16 April 2012 - 06:17 AM

In full disclosure, here are our short-term plans for modules...

In production now:
  • Piezo Buzzer
Going into production soon:
  • Ethernet
  • MMC/SD Card
Short-term module plans:
  • Photoresistor (light sensor)
  • Temperature Sensor
  • Accelerometer/Compass/Gyro
  • Motor/Servo
  • XBee
Longer-term modules (conceptual):
  • RS232
  • Distance Sensor
  • Motion Detector
  • GPS
  • IO Expansion Modules
  • RFID
  • Thumb Joystick
  • WiFi
Chris

Edited by Chris Walker, 09 September 2012 - 11:52 PM.
Updated "longer-term modules (conceptual)"


#18 Mattster

Mattster

    Advanced Member

  • Members
  • PipPipPip
  • 46 posts
  • Locationusually South Florida

Posted 16 April 2012 - 06:47 PM


Would it help if we bought a few thousand of each and bundled them in 10-packs for $9.95?

Chris


I would buy a ten-pack for $9.95. Mouser only sells the thru-holes in quantity 990 at $.55.

This would be for populating the JTAG

#19 mcinnes01

mcinnes01

    Advanced Member

  • Members
  • PipPipPip
  • 325 posts
  • LocationManchester UK

Posted 16 April 2012 - 07:53 PM

Hi,

I am looking in to a 1-Wire bus module, although I have a feeling someone else is already working on this?

Chris in terms of your temperature sensor, is this going to be an air temperature module or a module you can attach certain probes to.

Phidgets do a ton of modules here is their temperature probe one, but you should check out their other modules there are some really good ideas!

Also interfacing with atlas scientific stuff would be really cool, perhaps a module that can integrate the atlas stuff in to Go bus?

I'd also really like to see a breadboard module that allows you to prototype modules accessing all the features of the STM8 or STM32, but with this part of the circuit already done to safe time. Just an idea but it could also standardise the STM circuit on modules.

Last thing, are there any plans or possibilities for usb peripheral support and also are the new boards capable of processing video i.e. from a usb web cam?

Perhaps with an STM324F module for the usb web cam interface which processes the video and contains the driver for the usb, then the processed video is then sent back to the main Go module which can be streamed via the future Ethernet module? (Sorry excited rambling now...)


Andy

#20 Pete Brown

Pete Brown

    Advanced Member

  • Members
  • PipPipPip
  • 138 posts
  • LocationAnne Arundel County, MD

Posted 16 April 2012 - 07:57 PM

I just put up a post that has the links Chris provided, as well as some others. It also includes what I've found to be an effective approach for soldering these sockets.

http://10rem.net/blo...-to-solder-them

Hopefully that helps someone.

Pete
  • czi likes this
Pete Brown - http://10rem.net (NETMF, C++, Windows, C64, and general geekery) Twitter: @pete_brown
I work for Microsoft. Opinions expressed here are my own and do not necessarily reflect those of my employer,our partners or customers.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.