This note details the pin mappings for the Smartmaker Smartcore microcontrollers to Arduino standards pins.
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).
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.
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.
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:
- http://www.letsbemakers.com/forums/topic/smartbus-spi/
- http://www.letsbemakers.com/forums/topic/smarthost-memory/
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]* |
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.
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.
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 |
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!
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.
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.
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