Let me take you on a tour of your Circuit Playground Express (we'll shorten that to CPX). Each CPX is assembled here at Adafruit and comes chock-full of good design to make it a joy to use.
Micro B USB connector
This is at the top of the board. We went with the tried and true micro-B USB connector for power and/or USB communication (bootloader, serial, HID, etc). Use with any computer with a standard data/sync cable.
JST Battery Input
This is at the bottom of the board. You can take your CPX anywhere and power it from an external battery. This pin can take up 6V DC input, and has reverse-polarity, over-current and thermal protections. The circuitry inside will use either the battery input power or USB power, safely switching from one to the other. If both are connected, it will use whichever has the higher voltage. Works great with a Lithium Polymer battery or our 3xAAA battery packs with a JST connector on the end. There is no built in battery charging (so that you can use Alkaline or Lithium batteries safely)
To make it super-easy to connect to the microcontroller, we have 14 connection pads. You can solder to them, use alligator/croc clips, sew with conductive thread, even use small metal screws!
Of the 14 pads, you get a wide range of power pins, I2C, UART, Analog In, Digital In/Out, PWM, and Analog Out.
Some of them can even sense the touch of your finger!
See the next pinouts page for more details!
The brains of the operation here is the ATSAMD21G18 a Cortex M0 microcontroller. This chip is much more powerful than the original Circuit Playground. It sits in the top center, and is what you use to run MakeCode, CircuitPython or Arduino!
New in Circuit Playground Express, we have added a new storage chip, called SPI Flash. This is a very, very small disk drive, only 2 MB large. You can use this in Arduino or CircuitPython to store files. In CircuitPython this is where all your code lives, and what you see when you use the CIRCUITPY drive on your computer
Green ON LED
To the left of the USB connector. This LED lets you know that the CPX is powered on. If it's lit, power is good! If it's dim, flickering or off, there's a power problem and you will have problems. You can't disable this light, but you can cover it with electrical tape if you want to make it black.
Red #13 LED
To the right of the USB connector. This LED does double duty. Its connected with a series resistor to the digital #13 GPIO pin. It pulses nicely when the CPX is in bootloader mode, and its also handy for when you want an indicator LED. Many first projects blink this LED to prove that programming worked.
10 x Color NeoPixel LED
The ten LEDs surrounding the outer edge of the boards are all full color, RGB LEDs, each one can be set to any color in the rainbow. Great for beautiful lighting effects! The NeoPixels will also help you know when the bootloader is running (they will turn green) or if it failed to initialize USB when connected to a computer (they will turn red).
We have upgraded the buzzer from the original Circuit Playground to be a mini speaker with a metal disc, it's not going to compete with your HiFi stereo, but it can play simple songs and tones
The speaker is the squarish gray chunk on the bottom left of the board. There is a small class D amplifier connected to the speaker that can be enabled or disabled. Note: it won't sound good if too loud, so some experimentation may be necessary
The amplifier is connected to the true analog output A0 pin -- this pin is also available on one of the connection pads in the lower right. You can tell it's the analog output pin because of the squiggly symbol.
If you do not want the internal speaker to make noise, you can turn it off using the shutdown control on pin #11
The Circuit Playground Express has a large number of sensor inputs that let you add all sorts of interactivity to your project.
There is an analog light sensor, part number ALS-PT19, in the top left part of the board. This can be used to detect ambient light, with similar spectral response to the human eye.
This sensor is connect to analog pin A8. With Arduino, it will read between 0 and 1023 with higher values corresponding to higher light levels. A reading of about 300 is common for most indoor light levels. In CircuitPython, the returned range is scaled differently and is 0 to 65535.
With some clever code, you can use this as a color sensor or even a pulse sensor!
There is an NTC thermistor (Murata NCP15XH103F03RC) that we use for temperature sensing. While it isn't an all-in-one temperature sensor, with linear output, it's easy to calculate the temperature based on the analog voltage on analog pin #A9. There's a 10K resistor connected to it as a pull down.
Microphone Audio Sensor
A MEMS microphone can be used to detect audio levels and even perform basic FFT functions. Instead of an analog microphone, that requires an external op-amp and level management, we've decided to go with a PDM microphone. This is a digital mic, and is a lot smaller and less expensive! You will have to use the MakeCode/CircuitPython/Arduino support libraries to read the audio volume, you cannot read it like an analog voltage.
We can sense motion with an accelerometer. This sensor detects acceleration which means it can be used to detect when its being moved around, as well as gravitational pull in order to detect orientation.
The LIS3DH 3-axis XYZ accelerometer is in the dead center of the board and you can use it to detect tilt, gravity, motion, as well as 'tap' and 'double tap' strikes on the board. The LIS3DH is connected to an internal I2C pinset (not the same as the ones on the pads) and has an optional interrupt output on digital pin #36
The chip in the CPX has a built in ability to perform capacitive touch readings. This is a great way to sense human touch without additional components. Even animals will work if its directly touching their skin!
On the Express you get seven capacitive touch pads. All pads but A0 can do it. (A0 is used for the audio output pad so cannot do captouch). Since we use the chip's built-in hardware support, you will use the provided MakeCode/Arduino/CircuitPython library code to perform the readings
There are two large A and B buttons, connected to digital #4 (Left) and #5 (Right) each. These are unconnected when not pressed, and connected to 3.3V when pressed, so they read HIGH. Set the pins #4 and #5 to use an internal pull-down resistor when reading these pins so they will read LOW when not pressed.
This small button in the center of the board is for Resetting the board. You can use this button to restart or reset the CPX.
If using Arduino or CircuitPython, press this button once to reset, double-click to enter the bootloader manually.
If using MakeCode, press this button twice to reset, once to enter the bootloader manually.
There is a single slide switch near the center bottom of the Circuit Playground Express. It is connected to digital #7. The switch is unconnected when slid to the left and connected to ground when slid to the right. Set pin #7 to use an internal pull-up resistor so that the switch will read HIGH when slid to the left and LOW when slid to the right.
This is not an on-off switch, but you can use code to have this switch control how you want your project to behave
Note that you need to use an internal pull-up for the slide switch, but an internal pull-down for the pushbuttons.
New in Circuit Playground Express, we've added IR receive and transmit. This means you can communicate with TVs & other household devices to control them. You can also send commands to the CPX with a remote control. And, finally, you can send simple messages between multiple Circuit Playgrounds!
By bouncing IR light off of items and reading the reflected light, you can also do very simple proximity sensing!
There's two elements for infrared. The Transmitter is on the left and is a big clear LED, this is connected via a transistor to pin #29
On the right is the darker receiver LED, which also has a decoder chip. This chip will receive the 38KHz signals and demodulate them for you. The demodulated output is available on pin #39
There's also a secret capability, you can read the 'raw' analog value from the receiver LED diode to do basic IR proximity sensing. The direct analog value is available from pin A10