Skip to content

Instantly share code, notes, and snippets.

@stonehippo
Last active January 5, 2019 22:07
Show Gist options
  • Save stonehippo/8251415 to your computer and use it in GitHub Desktop.
Save stonehippo/8251415 to your computer and use it in GitHub Desktop.
Mapping Smartmaker Smartcore CPU pins to Arduino pins.

Pin Mapping the Smartmaker Smartcores to Arduino Pins

This note details the pin mappings for the Smartmaker Smartcore microcontrollers to Arduino standards pins.

Smartmaker Smartcore: A Brief Intro

The Smartmaker1 Smartcores are small-form-factor Arduino clones.

The special thing about Smartcores is their use of the Smartmaker Open System I/O Smartbus, which is basically a snap-together bus interface for components based on pairs of the Hirose DF9-31 connector. There are two flavors of the bus, Smartbus Basic with two connector (A+B) and Smartbus Full which add two additional connectors (A+B+C+D). Each connector has 31 pins, which are assigned different purposes. The Smartmaker Wiki has more details on the Smartbus configuration.

The A connector carries power, I2C, SPI and USB data. The B,C and D connectors are devoted to GPIO pins, 27 each. The GPIO connector pins are mapped to pins on the devices mounted on the Smartmaker boards, such as the AVR microcontrollers on the Smartcores.

All of the Smartcores I have access to use the Smartbus Basic: they have two connectors (A+B).

Smartcore Types

There are currently five flavors of Smartcore specified; I only have access to three of them at the moment:

  • Smartcore U; equivalent to an Arduino Uno, runs at ATMega328p microcontroller
  • Smartcore Z; Basically an Arduino Uno without a USB interface, programmed via ICSP interface
  • Smartcore L; equivalent to an Arduino Leonardo, runs an ATMega32u4

The Smartcore boards themselves aren't that useful without Smarthost or Smartbus boards, which provide interfaces to peripherals, power, and other physical computing platforms. For example, you can use the Smartbus board for Arduino shields to turn an Smartcore into an Arduino R3 layout-compatible system.

Pin Mappings

The Smartmaker documentation for the Smartcores describes the mapping of the AVR chips to the Smartbus A and B connectors. The standardized layout of the A connector makes it fairly easy to understand how the Smartbus A connector pins match up with the pins on the equivalent Arduinos. But the documentation doesn't currently mention how the GPIO pins in the B connector map, so I've captured that information below.

Smartcore U

Like the Arduino Uno, the Smartcore U has 14 digital I/O pins and 6 Analog pins. In addition, several pins on a standard Arduino have special functions, such as PWM channels or as past of dedicated SPI or I2C interfaces. As noted in the Smartbus description above, the A connector has dedicated pins for I2C and SPI; these are essentially additional lines in to the default pins, as the combined pins are on the ATmega controller itself.

For additional information SPI and Smartbus, see the following threads in the Let's Be Makers Smartmaker forums:

Arduino Digital Pin Smartcore B GPIO Pin Notes
0 B01 serial RX
1 B02 serial TX
2 B03 External interrupt
3 B04 External interrupt; PWM
4 B05
5 B06 PWM
6 B07 PWM
7 B08
8 B09
9 B10 PWM
10 B11 SPI SS; PWM
11 B12 SPI MOSI; PWM
12 B13 SPI MISO
13 B14 SPI SCK; Smartcore U LED attached to this pin
Arduino Analog Pin Smartcore B GPIO Pin Notes
A0 B15
A1 B16
A2 B17
A3 B18
A4 B19 TWI (I2C) SDA *[Needs verification; this appears to be available on the Smartbus A connector only]*
A5 B20 TWI (I2C) SCL *[Needs verification; this appears to be available on the Smartbus A connector only]*

Smartcore Z

I haven't yet hooked up a programmer to get my Smartcore Z doing anything, so I can't confirm the pin mappings with my little test sketch yet. But based on the fact that the Smartcore Z is essentially identical to the Smartcore U sans the USB interface, I believe that the mappings are the same as above. I will confirm this as soon as I get one programmed.

Smartcore L

The Smartcore L is based on the same ATmega32u4 microcontoller as the Arduino Leonardo and has 20 digital I/O pins, 12 of which can be used for analog I/O.

Arduino Digital Pin Smartcore B GPIO Pin Notes
0 B01 serial RX; External interrupt
1 B02 serial TX; External interrupt
2 B03 TWI (I2C) SDA *Needs verification; this appears to be available on the Smartbus A connector only*; External interrupt
3 B04 TWI (I2C) SCL *Needs verification; this appears to be available on the Smartbus A connector only*; External interrupt; PWM
4 B05 Can be used as an analog pin
5 B06 PWM
6 B07 PWM; Can be used as an analog pin
7 B08
8 B09 Can be used as an analog pin
9 B10 PWM; Can be used as an analog pin
10 B11 PWM; Can be used as an analog pin
11 B12 PWM
12 B13 Can be used as an analog pin
13 B14 PWM; Smartcore L LED attached to this pin
A0 B15 Can be used as a analog pin
A1 B16 Can be used as a analog pin
A2 B17 Can be used as a analog pin **WARNING: THIS PIN IS SHORTED WITH A3!!!**
A3 B18 Can be used as a analog pin **WARNING: THIS PIN IS SHORTED WITH A2!!!**
A4 B19 Can be used as a analog pin
A5 B20 Can be used as a analog pin

Unlike the ATmega328-based Arduinos, the ATmega32u4 systems don't really have dedicated analog I/O pins. Instead, several of the digital pins can be used as analog pins as desired. To keep with the original Arduino pin-out, the Arduino Leornardo labels the last 6 digital pins as analog pins A0-A6. However, several of the other digital pins can also be analog pins.

As with the Smartcore U, it seems likely that the I2C functions have not been mapped to GPIO pins as they would be on an Arduino Leornardo.

The A2-A3 Short

On January 7th, 2014, Smartmaker posted on their forums that the A2 and A3 pins on the Smartcore L are shorted. They're looking into how this happened and if there's a in-the-field fix for it (Update: it seems not). I have confirmed this issue on my Smartcore L, and the fact that these pins are shorted is noted below. Depending your needs, this may or may not be an issue in practice.

Arduino Analog Pin Smartcore B GPIO Pin Notes
A0 B15 Can be used as a digital pin
A1 B16 Can be used as a digital pin
A2 B17 Can be used as a digital pin **WARNING: THIS PIN IS SHORTED WITH A3!!!**
A3 B18 Can be used as a digital pin **WARNING: THIS PIN IS SHORTED WITH A2!!!**
A4 B19 Can be used as a digital pin
A5 B20 Can be used as a digital pin
A6 B05 Also digital pin 4
A7 B07 Also digital pin 6
A8 B09 Also digital pin 8
A9 B10 Also digital pin 9
A10 B11 Also digital pin 10
A11 B13 Also digital pin 12

A note about power

The Smartbus A connector can carry both 3.3V and 5V. However, it appears that the Smartcores do not power that pin. Therefore, Smartcores only provide 5V power. This means that if you attempt to connect a 3.3V device, such as a Smartmod Memory, directly to a Smartcore U, Z, or L while using USB power , the 3.3V device will not work.

To power a 3.3V Smartmod device as well as the Smartcore, use a Smarthost Power Plus. This board provides both 3.3V and 5V power on the Smartbus via the A connector. Note: be sure to only use one power source at a time. The Smartcore boards do not have the power source selection features available on standard Arduino. Using more than one power source can damage your boards!

Learning More

UPDATE: There's a new, independent forum for the Smartmaker products up at http://www.letsbemakers.com/forums/forum/smartduino-forum. It looks like many of the Kickstarter backer who are trying to make a go working with these boards after the issues with Smartmaker are putting their work there. And I suspect that it will be more detailed than the Smartmaker wiki within days.

UPDATE #2 Joe Stackhouse has posted some video tutorials for the Smartmaker boards on YouTube.

UPDATE #3 The Smartmaker-hosted forums are (as of January 7, 2014) starting to show show life and the documentation is improving.

As of this writing, the Smartmaker documentation is evolving and what there is of it doesn't always make a lot of sense at first reading. I am hoping to fill in some of the gaps for myself as I explore the system and I will share what I learn as much as I can. For now, the Smartmaker Wiki seems to have the most information, which isn't much, but at least you can get all of the pin data for the Hirose connector for the boards there.

In particular, you might find it useful to look at the pin mapping diagrams for each of the boards. For example, here are the pins for the Smartcore U.

Smartcore L Smartbus Basic connector pin diagram

Looking at the B connector (BUS_B_RCPT in the diagram), you can see that pins B01 through B20 are all used. It's also helpful to note all of the special pins broken out on the A connector.

Smartmaker has also provided a PDF of the Smartcore L pin mapping. You might find it useful if you need a graphical version of pinouts. And there's a beta of the Open System Reference Book that has pinouts for all of the modules in the system.

Armed with the information in the tables above and the diagrams, it should be possible to figure out what most of the pins are for on any Smartmaker board. Hopefully, they will get clearer info on which GPIO pins are hooked up to some of the peripheral devices on the boards soon.


1. I refuse to use the funky mixed case. Period.

2. I have not verified this yet. After my experience with the Smarthost LCD boards, I believe it is best to confirm all of the documentation via direct verification.

@jesusantoniocard
Copy link

Hi.
I have a smartCore L. How can i fix the problem with the pins A2 and A3 shorted?. can i use this board in normal projects or what is your suggestion about that?. i want to do something with this but i can't find information.
Thanks for your help.
Jesus

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment