The TinyCircuits TinyDuino is an Arduino compatible board in an ultra compact package. Imagine the possibilities of having the full power of an Arduino Uno in a size less than a quarter!
Overview
The TinyDuino Platform is a miniature open-source electronics platform based on the easy-to-use hardware and software Arduino platform. The platform is comprised of a TinyDuino processor board and multiple TinyShields which add special functions, like sensors, communications and display options. By stacking the boards (with the tan 32-pin connectors), you create a TinyDuino Stack for your particular project without soldering. The TinyDuino Processor Board is basically the Arduino Uno board shrunk down to the size of a quarter. It uses the same Atmel Atmega328P microcontroller as used on the Uno, and supports all of the same shield signals - 14 digital input/output pins (of which 6 can be used as PWM outputs) and 6 analog inputs, which can be accessed by several different Breakout TinyShields (also called Proto Boards). The one functional difference between the TinyDuino Processor Board and the Arduino Uno is that the TinyDuino uses an 8MHz ceramic resonator instead of the 16MHz that the Uno uses. There is a great reason for this - this allows the TinyDuino processor board to run down to 2.7 Volts, which enables it to run directly off of batteries (such as Li-ion and coin cells).
Modular
Each module in the TinyDuino family has been optimized to include only the core circuits for it’s specific function to keep the size, and price as low as possible. The main TinyDuino processor board includes the core processor circuitry, however the USB has been offloaded to a TinyShield. So for example, if you don’t need USB on your project, you’d only need one USB TinyShield that you’d use to program your boards.
TinyShields
Just like on the standard Arduino platform, where you can add expansion shields to add more features, the TinyDuino allows expansion by using TinyShields. Whether you want to add communication capabilities (like Bluetooth, WiFi, USB), sensor readings, drive a display, or run motors for your swarm of tiny robots – there is a shield for that. The TinyShield interface uses a low cost, very miniature connector that supports all of the signals (and a few spare) that are supported on the standard Arduino Shield connectors. And being so compact, the board to board stackup height is only 3mm, meaning even adding a few TinyShields will still allow for an extremely compact final product.
To see what TinyShields can be used with each other at the same time with, see the TinyShield Compatibility Matrix
Easy to Prototype with
Being so small, you’d think you need to be an expert with a soldering iron to use these things, right? Not at all! We designed these boards to be extremely easy to be used by hobbyists to embed into your projects. There are multiple prototyping TinyShields available that you can use to interface to your project, including several that use the same 0.1" spacing as used on the standard Arduino platform for shields. If you’re familiar with connecting up to an Arduino today, you’ll have no problem using using a TinyDuino.
Open Source
TinyCircuits proudly supports open source hardware and have released all the design files for the TinyDuino on our website. If you have a great idea for a TinyShield or similar Tiny project, you are free to design your own board derived from our design files.
Getting Started
You can find all the information about configuring your TinyDuino, using the Arduino IDE to program it, and some example programs and projects. It all begins with the Getting Started with the TinyDuino tutorial.
Once you become a TinyDuino master, you can head over to the Learn section of our website to see more projects and tutorials using the TinyDuino family of TinyShields. The family's growing every day with the addition of the TinyScreen+ and TinyZero processor boards to compete with the TinyDuino.
Technical Details
Input and Output
Each of the 14 digital pins can be used as either an input or output. Pins have the same functions as on the Arduino Uno, however, the nomenclature is slightly different to help make it easy to use. Digital pins on the TinyDuino are labelled with an IO prefix, so IO3 on the TinyDuino is equivalent to pin 3 on the standard Arduino Uno. A number of the pins have alternate functions which are shown below:
Pins IO0 and IO1: These are also the hardware UART serial receive (RX) and transmit (TX) signals. Pin IO0 is RX and pin IO1 is TX. These are used by several of the TinyShields, namely the USB TinyShield which uses these to program the TinyDuino processor.
Pins IO2 and IO3: These pins can be used as External Interrupts 2 and 3. See the Arduino function attachInterrupt() for details.
Pins IO3, IO5, IO6, IO9, SS (IO10), MOSI (IO11): These pins can provide an 8-bit PWM. See the Arduino function analogWrite() for details.
Pins SS (IO10), MOSI (IO11), MISO (IO12), SCK (IO13): These pins support SPI communication. See the Arduino SPI Library for details.
Pin SCK (IO13): This pin is connected to the LED on the TinyDuino processor board.
Pins A0, A1, A2, A3, A4, A5: These are analog inputs connected 10-bit Analog-to-Digital Converter (ADC) of the microcontroller. See the Arduino function analogRead().
Pins A4 (SDA) and A5 (SCL): These pins can be used for I2C (also called TWI) communication. See the Arduino Wire Library for details.
Pin AREF: This pin can be connected to an external voltage reference for the analog inputs. See the Arduino function analogReference() for details.
Pin RESET: This pin is connected to the reset signal of the microcontroller, bring this signal LOW to reset the processor.
Pins RSV0, RSV1, RSV2: These pins are unique to the TinyDuino platform and are not currently used, and are reserved for future use.
Power
Power on the TinyDuino platform is handled a bit differently than on the standard Arduino since battery power is allowed. The TinyDuino processor board includes power switching circuitry to allow it to switch off the VBatt connection when running off of external power. Several power pins that are included on the standard Arduino system are included on the TinyDuino expansion connector but not connected.
GND: This is the Ground connection for the TinyDuino system
VIN: VIN is the main system voltage for the standard Arduino system and can range from 7-12 Volts. This pin in not currently used by the TinyDuino platform and is reserved for future uses.
5V: 5V is supplied to the TinyDuino system by either the USB TinyShield or an external 5V source wired into a Proto TinyShield on the 5V pin.
3V3: 3V3 is a legacy signal from the standard Arduino system, and is not used by the TinyDuino. It is currently not connected to any power supply and cannot be used to supply power to external sensors (use VCC instead)
VBATT: VBATT is the battery voltage for the TinyDuino system, or alternatively, some external voltage between 2.7V and 5.5V. If a coin cell battery is attached to the TinyDuino processor board, this is directly connected to VBATT. The same is true if a Li-Ion battery is attached to the TinyDuino processor board
VCC: VCC is the main power supply for the microcontroller and all of the TinyShields. If you are connecting any external sensors or boards, you should use VCC as your power supply.
VCC Power Switching
The main TinyDuino processor board includes power switching circuitry to control what is connected to VCC. This can be connected to either VBATT or 5V depending on what voltages are present in the system. If 5V is present (such as the USB TinyShield is plugged in), VCC will be connected to 5V. If 5V is not present but a battery is connected to VBATT, then VBATT will be connected to VCC. If both 5V and VBATT are present, 5V will be used, and VBATT will be completely disconnected (except for the case where a Li-Ion battery charger TinySheid is connected, in which case the 5V will be used to recharge the battery).
TinyShield Power
All TinyShields are designed to operate over the entire TinyDuino voltage range (2.7V - 5.5V) unless specifically mentioned in the technical details for that TinyShield. Where needed, TinyShields have local power supplies and level converters to safely allow the entire voltage range).
TinyShield Compatibility
Since the TinyShields use pins from the TinyDuino, in some cases there will be conflicts when two TinyShields that use the same pins are in the same TinyDuino stack. This matrix below shows which TinyShields can be used with others at the same time. You can download the full pin listing and compatibility matrix as an excel spreadsheet here.
Green: The two TinyShields can be used together on the same stack without issue
Yellow: See the numbered note below for the special conditions
Red: The two boards cannot be used together.
**: Discontinued board
Note 1: Two Bluetooth LE Modules can be used, however one must have the hardware resistors changed to use pins 0 and 1 for the UART
Note 2: Motor 1 cannot be used with a Bluetooth LE Rev 2 board, unless the hardware resistors are changed to use pins 0 and 1 for the UART
Note 3: Motor 1 and Motor 4 channels cannot be used with the WiFi or Nordic BLE TinyShields
Note 4: Only Motor 1 channel can be used at the same time as the 16 and Circle Edge LED TinyShield
Note 5: Multiple Edge LED boards can be plugged together, however they will all show the exact same pattern
Note 6: 9 Axis I2C address must be changed using the address resistors
Note 7: Two TinyShields can be used at the same time if the address resistors are changed on one of the boards
Note 8: The Bluetooth LE TinyShield must have the hardware resistors changed to use pins 0 and 1 for the UART
Note 9: Only Motor 3 & 4 channels can be used with the Audio TinyShield is used
Note 10: Nordic BLE board requires the interrupt resistor to be switched to R3 position
Note 11: Motor 1 and Motor 3 channels cannot be used with the SI4432 433 MHz TinyShield
Note 12: TinyScreen I2C address must be changed using the address resistor
Note 13: Servo driver reset line(R6) must be cut for full compatibility
Note 14: Nordic BLE and servo driver share IO9 for reset, software workaround is easy, and you can see an example in this tutorial, or see note 13