SparkFun MicroMod Input and Display Carrier Board Hookup Guide

Pages
Contributors: Alex the Giant, Ell C
Favorited Favorite 3

Introduction

Introducing the SparkFun MicroMod Input and Display Carrier Board! This nifty little board works with all SparkFun MicroMod processors so you can create your own display with one of a multitude of processors.

The carrier board includes 6 APA102 Addressable LEDs, 6 Input Buttons, Onboard Voltage Regulation, 2.4" TFT Display Screen, IO Connector, and a Buzzer. In addition, there's a microSD card slot to store and read data.

Let's dive in and see what we can do!

SparkFun MicroMod Input and Display Carrier Board

SparkFun MicroMod Input and Display Carrier Board

DEV-16985
$59.95
4

Required Materials

Like all of our MicroMod Carrier Boards, there is no processor included but instead you can plug in a processor board of your choice to the MicroMod M.2 connector on the carrier. Below are a few options to choose for your processor:

SparkFun MicroMod ESP32 Processor

SparkFun MicroMod ESP32 Processor

WRL-16781
$16.95
1
SparkFun MicroMod Artemis Processor

SparkFun MicroMod Artemis Processor

DEV-16401
$14.95
SparkFun MicroMod SAMD51 Processor

SparkFun MicroMod SAMD51 Processor

DEV-16791
$18.95
1

You'll also need a USB-C cable to connect the Carrier to your computer and if you want to add some Qwiic breakouts to your MicroMod project you'll want at least one Qwiic cable to connect it all together. Below are some options for both of those cables:

SparkFun Qwiic Cable Kit

SparkFun Qwiic Cable Kit

KIT-15081
$8.95
20
Reversible USB A to C Cable - 2m

Reversible USB A to C Cable - 2m

CAB-15424
$8.95
1
USB 3.1 Cable A to C - 3 Foot

USB 3.1 Cable A to C - 3 Foot

CAB-14743
$5.50
4

Along with a processor and the pertinent cables and accessories, if you want to take full advantage of the features of the Input and Display Carrier Board, you will need a microSD card:

microSD Card - 16GB (Class 10)

COM-15051

Suggested Reading

The SparkFun MicroMod ecosystem is a unique way to allow users to customize their project to their needs. Do you want to send your data via a wireless signal (eg. Bluetooth or WiFi)? There's a MicroMod processor for that. Looking to instead maximize efficiency and processing power? You guessed it, there's a MicroMod processor for that. If you are not familiar with the MicroMod system, take a look here:

MicroMod Logo
MicroMod Ecosystem

We also recommend taking a look through the following tutorials if you are not familiar with the concepts covered in them:

Getting Started with MicroMod

Dive into the world of MicroMod - a compact interface to connect a microcontroller to various peripherals via the M.2 Connector!

Designing with MicroMod

This tutorial will walk you through the specs of the MicroMod processor and carrier board as well as the basics of incorporating the MicroMod form factor into your own PCB designs!

MicroMod ESP32 Processor Board Hookup Guide

A short hookup guide to get started with the SparkFun MicroMod ESP32 Processor Board.

Hardware Overview

In this section we'll cover the various hardware and sensors included on the MicroMod Input & Display Carrier Board.

Common Components

Most SparkFun MicroMod Carriers will have some common components and all MicroMod Carriers will have the keyed M.2 MicroMod Connector to plug your processor into. The photo and list below outline some of the components you can expect on most SparkFun MicroMod Carriers.

  • M.2 MicroMod Connector - This special keyed M.2 connector lets you install your MicroMod Processor of choice on your Input & Display Carrier Board.
  • USB-C Connector - Connect to your computer to program your Processor and also can provide power to your MicroMod system.
  • 3.3V Regulator - Provides a regulated 3.3V and sources up to 1A.
  • Qwiic Connector - The standard Qwiic connector so you can add other Qwiic devices to your MicroMod system.
  • Boot/Reset Buttons - Push buttons to enter Boot Mode on Processor boards and to Reset your MicroMod circuit. More information needed - LAC
  • microSD Slot - Insert a microSD card for reading and writing data.

Annotated Photo of common hardware

Power

The Input and Display Carrier Board takes an input voltage range from 2.7V - 6V via the USB-C connector. We've incorporated a power regulation circuit that caps the voltage for power sensitive circuits and the Qwiic connector.

Input & Display Carrier Board Specific Components

ATTiny84

We've populated this carrier board with Atmel's ATtiny84 with 8kB of programmable flash. This little guy is preprogrammed to communicate with the processor over I2C to read button presses.

ATTiny is highlighted

TFT Display

4DLCD's 24320240-IPS is a color active matrix LCD module incorporating amorphous silicon TFT (Thin Film Transistor). The module display area measures 2.4" and contains 240 x 320 pixels.

Note: IPS displays have higher display quality, better colors, and much better viewing angles than their non-IPS counterparts.

4DLCD screen

LEDs

The Input and Display Carrier Board has 6 Addressable APA102 LEDs.

APA102 LEDs

Input Buttons

Button button, who's got the button? We do! We have two input buttons (A and B), and a 5 way switch that allows you to navigate a UI or play an onboard game.

A Button, B button, and 5 way button

JTAG Debugging

We've populated the JTAG footprint for more advanced users who need breakpoint level debugging. We recommend checking out our JTAG section for the compatible JTAG programmer and debugger.

JTAG debugging pins

Jumpers

Jumpers are highlighted

I2C Jumper

If you are daisy-chaining multiple Qwiic devices, you will want to cut this jumper; if multiple sensors are connected to the bus with the pull-up resistors enabled, the parallel equivalent resistance could create too strong of a pull-up for the bus to operate correctly. As a general rule of thumb, disable all but one pair of pull-up resistors if multiple devices are connected to the bus. To disable the pull up resistors, use an X-acto knife to cut the joint between the two jumper pads highlighted below.

PWR Jumper

Cutting this jumper will disable the "Power" LED on the front of the board.

3V3CTRL Jumper

Many of the MicroMod carrier boards have an RTC backup battery on board and as part of the standardized voltage regulation circuit we include a 3V3 jumper that, when closed, allows you to control the 3V3 control regulator. This shuts down everything on the 3V3 rail but the battery keeps the processor awake. The Input and Display Carrier Board does not have a backup battery, so this jumper should remain open.

BYP Jumper

If you really, really, REALLY need more power, closing this jumper will bypass the 2A fuse. Close at your own risk!

Measure Jumper

Want to measure the juice running through your circuits? Cut the trace between these PTH pads in order to measure the current with a Digital MultiMeter.

PinOuts

Note: You may not recognize the COPI/CIPO labels for SPI pins. SparkFun is working to move away from using MISO/MOSI to describe signals between the controller and the peripheral. Check out this page for more on our reasoning behind this change.
AUDIO UART GPIO/BUS I2C SDIO SPI Dedicated
Function Bottom
Pin
   Top   
Pin
Function
(Not Connected) 75 GND
3.3V 74 73 G5 / BUS5
RTC_3V_BATT 72 71 G6 / BUS6
SPI_CS1# SDIO_DATA3 (I/O) 70 69 G7 / BUS7
SDIO_DATA2 (I/O) 68 67 G8
SDIO_DATA1 (I/O) 66 65 G9 ADC_D- CAM_HSYNC
SPI_CIPO1 SDIO_DATA0 (I/O) 64 63 G10 ADC_D+ CAM_VSYNC
SPI COPI1 SDIO_CMD (I/O) 62 61 SPI_CIPO (I)
SPI SCK1 SDIO_SCK (O) 60 59 SPI_COPI (O) LED_DAT
AUD_MCLK (O) 58 57 SPI_SCK (O) LED_CLK
CAM_MCLK PCM_OUT I2S_OUT AUD_OUT 56 55 SPI_CS#
CAM_PCLK PCM_IN I2S_IN AUD_IN 54 53 I2C_SCL1 (I/O)
PDM_DATA PCM_SYNC I2S_WS AUD_LRCLK 52 51 I2C_SDA1 (I/O)
PDM_CLK PCM_CLK I2S_SCK AUD_BCLK 50 49 BATT_VIN / 3 (I - ADC) (0 to 3.3V)
G4 / BUS4 48 47 PWM1
G3 / BUS3 46 45 GND
G2 / BUS2 44 43 CAN_TX
G1 / BUS1 42 41 CAN_RX
G0 / BUS0 40 39 GND
A1 38 37 USBHOST_D-
GND 36 35 USBHOST_D+
A0 34 33 GND
PWM0 32 31 Module Key
Module Key 30 29 Module Key
Module Key 28 27 Module Key
Module Key 26 25 Module Key
Module Key 24 23 SWDIO
UART_TX2 (O) 22 21 SWDCK
UART_RX2 (I) 20 19 UART_RX1 (I)
CAM_TRIG D1 18 17 UART_TX1 (0)
I2C_INT# 16 15 UART_CTS1 (I)
I2C_SCL (I/0) 14 13 UART_RTS1 (O)
I2C_SDA (I/0) 12 11 BOOT (I - Open Drain)
D0 10 9 USB_VIN
SWO G11 8 7 GND
RESET# (I - Open Drain) 6 5 USB_D-
3.3V_EN 4 3 USB_D+
3.3V 2 1 GND
Notes Primary Function Bottom Pin    Top    Pin Primary Function Notes
61 SPI_CIPO
59 SPI_COPI
57 SPI_SCK
55 SPI_CS# microSD Chipselect#
47 PWM1 Buzzer
Display Reset# G2/BUS2 44 43 CAN-TX
APA102 Data G1 / BUS1 42 41 CAN_RX
APA102 Clock G0 / BUS0 40 39 GND
A1 38
A0 34
Display Backlight# PWM0 32
23 SWDIO
21 SWDCK
19 UART_RX1
Display D/C D1/CAM_TRIG 18 17 UART_TX1
I2C_Interrupt 16
I2C_SCL 14
I2C_SDA 12 11 BOOT
Display Chipselect# D0 10 9 USB_VIN
7 GND
RESET 6 5 USB_D-
3.3V_EN 4 3 USB_D+
3.3V 2 1 GND
Signal Group Signal I/O Description Voltage
Power 3.3V I 3.3V Source 3.3V
GND Return current path 0V
USB_VIN I USB VIN compliant to USB 2.0 specification. Connect to pins on processor board that require 5V for USB functionality 4.8-5.2V
RTC_3V_BATT I 3V provided by external coin cell or mini battery. Max draw=100μA. Connect to pins maintaining an RTC during power loss. Can be left NC. 3V
3.3V_EN O Controls the carrier board's main voltage regulator. Voltage above 1V will enable 3.3V power path. 3.3V
BATT_VIN/3 I Carrier board raw voltage over 3. 1/3 resistor divider is implemented on carrier board. Amplify the analog signal as needed for full 0-3.3V range 3.3V
Reset Reset I Input to processor. Open drain with pullup on processor board. Pulling low resets processor. 3.3V
Boot I Input to processor. Open drain with pullup on processor board. Pulling low puts processor into special boot mode. Can be left NC. 3.3V
USB USB_D± I/O USB Data ±. Differential serial data interface compliant to USB 2.0 specification. If UART is required for programming, USB± must be routed to a USB-to-serial conversion IC on the processor board.
USB Host USBHOST_D± I/O For processors that support USB Host Mode. USB Data±. Differential serial data interface compliant to USB 2.0 specification. Can be left NC.
CAN CAN_RX I CAN Bus receive data. 3.3V
CAN_TX O CAN Bus transmit data. 3.3V
UART UART_RX1 I UART receive data. 3.3V
UART_TX1 O UART transmit data. 3.3V
UART_RTS1 O UART ready to send. 3.3V
UART_CTS1 I UART clear to send. 3.3V
UART_RX2 I 2nd UART receive data. 3.3V
UART_TX2 O 2nd UART transmit data. 3.3V
I2C I2C_SCL I/O I2C clock. Open drain with pullup on carrier board. 3.3V
I2C_SDA I/O I2C data. Open drain with pullup on carrier board 3.3V
I2C_INT# I Interrupt notification from carrier board to processor. Open drain with pullup on carrier board. Active LOW 3.3V
I2C_SCL1 I/O 2nd I2C clock. Open drain with pullup on carrier board. 3.3V
I2C_SDA1 I/O 2nd I2C data. Open drain with pullup on carrier board. 3.3V
SPI SPI_COPI O SPI Controller Output/Peripheral Input. 3.3V
SPI_CIPO I SPI Controller Input/Peripheral Output. 3.3V
SPI_SCK O SPI Clock. 3.3V
SPI_CS# O SPI Chip Select. Active LOW. Can be routed to GPIO if hardware CS is unused. 3.3V
SPI/SDIO SPI_SCK1/SDIO_CLK O 2nd SPI Clock. Secondary use is SDIO Clock. 3.3V
SPI_COPI1/SDIO_CMD I/O 2nd SPI Controller Output/Peripheral Input. Secondary use is SDIO command interface. 3.3V
SPI_CIPO1/SDIO_DATA0 I/O 2nd SPI Peripheral Input/Controller Output. Secondary use is SDIO data exchange bit 0. 3.3V
SDIO_DATA1 I/O SDIO data exchange bit 1. 3.3V
SDIO_DATA2 I/O SDIO data exchange bit 2. 3.3V
SPI_CS1/SDIO_DATA3 I/O 2nd SPI Chip Select. Secondary use is SDIO data exchange bit 3. 3.3V
Audio AUD_MCLK O Audio master clock. 3.3V
AUD_OUT/PCM_OUT/I2S_OUT/CAM_MCLK O Audio data output. PCM synchronous data output. I2S serial data out. Camera master clock. 3.3V
AUD_IN/PCM_IN/I2S_IN/CAM_PCLK I Audio data input. PCM syncrhonous data input. I2S serial data in. Camera periphperal clock. 3.3V
AUD_LRCLK/PCM_SYNC/I2S_WS/PDM_DATA I/O Audio left/right clock. PCM syncrhonous data SYNC. I2S word select. PDM data. 3.3V
AUD_BCLK/PCM_CLK/I2S_CLK/PDM_CLK O Audio bit clock. PCM clock. I2S continuous serial clock. PDM clock. 3.3V
SWD SWDIO I/O Serial Wire Debug I/O. Connect if processor board supports SWD. Can be left NC. 3.3V
SWDCK I Serial Wire Debug clock. Connect if processor board supports SWD. Can be left NC. 3.3V
ADC A0 I Analog to digital converter 0. Amplify the analog signal as needed to enable full 0-3.3V range. 3.3V
A1 I Analog to digital converter 1. Amplify the analog signal as needed to enable full 0-3.3V range. 3.3V
PWM PWM0 O Pulse width modulated output 0. 3.3V
PWM1 O Pulse width modulated output 1. 3.3V
Digital D0 I/O General digital input/output pin. 3.3V
D1/CAM_TRIG I/O General digital input/output pin. Camera trigger. 3.3V
General/Bus G0/BUS0 I/O General purpose pins. Any unused processor pins should be assigned to Gx with ADC + PWM capable pins given priority (0, 1, 2, etc.) positions. The intent is to guarantee PWM, ADC and Digital Pin functionality on respective ADC/PWM/Digital pins. Gx pins do not guarantee ADC/PWM function. Alternative use is pins can support a fast read/write 8-bit or 4-bit wide bus. 3.3V
G1/BUS1 I/O 3.3V
G2/BUS2 I/O 3.3V
G3/BUS3 I/O 3.3V
G4/BUS4 I/O 3.3V
G5/BUS5 I/O 3.3V
G6/BUS6 I/O 3.3V
G7/BUS7 I/O 3.3V
G8 I/O General purpose pin 3.3V
G9/ADC_D-/CAM_HSYNC I/O Differential ADC input if available. Camera horizontal sync. 3.3V
G10/ADC_D+/CAM_VSYNC I/O Differential ADC input if available. Camera vertical sync. 3.3V
G11/SWO I/O General purpose pin. Serial Wire Output 3.3V

Board Dimensions

The Input and Display Carrier Board measures 3.25 inches by 2.25 inches.

MicroMod Input and Display Carrier Board Dimensions

Hardware Hookup

To get started with the Input and Display Carrier Board, you'll need a processor board. Here we are using the MicroMod ESP32 Processor Board.

Align the top key of the MicroMod ESP32 Processor Board to the screw terminal of the Input and Display Carrier Board and angle the board into the socket. Insert the board at an angle into the M.2 connector.

Note: There is no way to insert the processor backward since the key prevents it from mating with the M.2 connector and as an extra safeguard to prevent inserting a processor that matches the key, the mounting screw is offset so you will not be able to secure an improperly connected processor board.

MicroMod Processor Board inserted into the carrier board

The Processor Board will stick up at an angle, as seen here:

[[MicroMod Processor Board inserted into the carrier board](https://cdn.sparkfun.com/assets/learn_tutorials/1/2/3/0/16985_MicroMod_InputDisplay_CB_PBAngle.jpg)

Once the board is in the socket, gently hold the MicroMod Processor Board down and tighten the screw with a Phillip's head.

screwing in the machine screw

Once the board is secure, your assembled MicroMod system should look similar to the image below!

Top down image of Input and Display Carrier Board with ESP32 Processor board inserted correctly

Connecting Everything Up

With your processor inserted and secured it's time to connect your carrier board to your computer using the USB-C connector on the Carrier. Depending on which carrier you choose and which drivers you already have installed, you may need to install drivers.

Note: Make sure that for whatever processor board you choose, you have the correct board definitions installed.

For this particular tutorial, we are using the MicroMod ESP32 Processor Board. Board definitions for this processor board can be found in the Software Setup and Programming section of the MicroMod ESP32 Processor Board Hookup Guide.

If you are using a different processor board, go to our MicroMod Processor Boards landing page, find your processor board, and head on over to that tutorial for help installing your board definition.

Software Setup and Programming

Note: This example assumes you are using the latest version of the Arduino IDE on your desktop. If this is your first time using Arduino, please review our tutorial on installing the Arduino IDE. If you have not previously installed an Arduino library, please check out our installation guide.

To get started, you're going to want to get familiar with our HyperDisplay libraries. HyperDisplay is an abstracted library for pretty much any 2D graphics display and has a focus on extensibility. Since the interface is standardized you can write display applications just once and make them work on many different displays with a few small changes. If you want to go more in depth check out this HyperDisplay tutorial.

Everything You Should Know About HyperDisplay

February 20, 2019

This is a tutorial to go in-depth about the SparkFun HyperDisplay Arduino Library.

To use HyperDisplay with this carrier board, you will need to have all three of the following libraries installed in your Arduino IDE. You can head on over to the individual GitHub pages to download or simply click the appropriate link for each of the libraries listed below:

Library Name Arduino Library Manager Search Term GitHub Link Download Link
HyperDisplay SparkFun HyperDisplay HyperDisplay GitHub HyperDisplay Download
HyperDisplay ILI9341 SparkFun HyperDisplay ILI9341 Arduino Library SparkFun HyperDisplay ILI9341 Arduino Library GitHub SparkFun HyperDisplay ILI9341 Arduino Library Download
HyperDisplay 4DLCD-320240 Arduino Library SparkFun_HyperDisplay_4DLCD-320240_ArduinoLibrary HyperDisplay 4DLCD-320240 Arduino Library GitHub HyperDisplay 4DLCD-320240 Arduino Library Download

Check out this tutorial on how to install an Arduino library if you are unfamiliar.

Each of the libraries above contain some examples, however the ones that will actually make your Input and Display Carrier Board light up are contained in the 'HyperDisplay 4DLCD-320240 Arduino Library' -- in case you are wondering, that name comes from the name of the display module that is used on the board. Once your libraries have been installed move on to the next section and try out a few of the examples.

Example Code

The HyperDisplay library for the Input and Display Carrier Board is named after the LCD module that it uses - the 4DLCD-320240. If you've properly installed the required libraries, you'll notice a number of examples in File->Examples->SparkFun HyperDisplay 4DLCD-320240. If you haven't already, make sure you've got the following three libraries installed:

All of the following examples are explained in depth in the Everything You Should Know About HyperDisplay Tutorial. We'll show you a quick overview of each example here, but if you want more information on how these examples and their code work, head on over to the HyperDisplay Tutorial.

Everything You Should Know About HyperDisplay

February 20, 2019

This is a tutorial to go in-depth about the SparkFun HyperDisplay Arduino Library.

Example 1: Display Test

Example one verifies that your display is working, and gives you some basic code to draw lines and shapes. To start, go to File->Examples->SparkFun HyperDisplay 4DLCD-320240 and load Example1_DisplayTest. In windows, it will look like this:

File Pulldown showing installed library with Example 1 selected
Having a hard time seeing? Click the image for a closer look.


Make sure you have the correct board selected, as well as the correct COM port. Your processor board of choice will dictate which board definition you need to load.

gif showing example 1
Having a hard time seeing? Click the image for a closer look.


Example 2: HyperDisplay Basics

This code walks you through the simplest uses of HyperDisplay so that you can start to write your own code. To start, go to File->Examples->SparkFun HyperDisplay 4DLCD-320240 and load Example2_HyperDisplayBasics.

File Pulldown showing installed library with Example 2 selected
Having a hard time seeing? Click the image for a closer look.


As with Example 1, please make sure you have the correct board selected, as well as the correct COM port. Go ahead and upload your code, and you should see something like the following (note that the gif is sped up):

gif showing example 2
Having a hard time seeing? Click the image for a closer look.


Example 3: Advanced HyperDisplay

Example 3 goes over Color Cycles and the drawing functions currently available in the HyperDisplay drawing functions. For a more in-depth look at the functions available in this example, refer to the Advanced Drawing Functions section of the Everything You Should Know About HyperDisplay tutorial.

To start, go to File->Examples->SparkFun HyperDisplay 4DLCD-320240 and load Example3_AdvancedHyperDisplay.

File Pulldown showing installed library with Example 3 selected
Having a hard time seeing? Click the image for a closer look.


As above, please make sure you have the correct board selected, as well as the correct COM port. Go ahead and upload your code. You should see something like the following (note that the gif is sped up):

gif showing example 3
Having a hard time seeing? Click the image for a closer look.


Example 4: Buffering HyperDisplay

This last example shows you the basics of how to use the buffering abilities of HyperDisplay. You can get more in-depth discussion of this by referring to the Buffering section of the Everything You Should Know About HyperDisplay tutorial.

To start, go to File->Examples->SparkFun HyperDisplay 4DLCD-320240 and load Example4_BufferingHyperDisplay.

File Pulldown showing installed library with Example 4 selected
Having a hard time seeing? Click the image for a closer look.


As above, please make sure you have the correct board selected, as well as the correct COM port. Go ahead and upload your code. You should see something along the lines of the following (note that the gif is sped up):

gif showing example 4
Having a hard time seeing? Click the image for a closer look.


Troubleshooting

Resources and Going Further

For more information about the MicroMod Input and Display Carrier, check out the following links:

For more information about the SparkFun MicroMod Ecosystem, take a look at the links below:

Looking for some project inspiration using your Input and Display Carrier Board? The tutorials below can help you get started!

Designing with MicroMod

This tutorial will walk you through the specs of the MicroMod processor and carrier board as well as the basics of incorporating the MicroMod form factor into your own PCB designs!

MicroMod nRF52840 Processor Hookup Guide

Get started with the MicroMod nRF52840 Processor following this guide.

MicroMod GNSS Function Board - NEO-M9N Hookup Guide

The u-blox NEO-M9N is a powerful GPS unit that now comes populated on a MicroMod Function Board! In this tutorial, we will quickly get you set up using it with the MicroMod ecosystem and Arduino so that you can start reading the output.