MatrixPortal M4

by Adafruit

Image of Board

Folks love our wide selection of RGB matrices and accessories, for making custom colorful LED displays… and our RGB Matrix Shields and FeatherWings can be quickly soldered together to make the wiring much easier. But what if we made it even easier than that? Like, no solder, no wiring, just instant plug-and-play? Dream no more - with the Adafruit Matrix Portal add-on for RGB Matrices, there’s never been an easier way to create powerful Internet-connected LED displays.

Plug directly into the back of any HUB-75 compatible display (all the ones we stock will work) from 16x32 up to 64x64! Use the included screws to attach the power cable to the power plugs with a common screwdriver, then power it with any USB C power supply. (For larger projects, power the matrices with a separate 5V power adapter)

Then code up your project in CircuitPython or Arduino, our Protomatter matrix library works great on the SAMD51 chipset, knowing that you’ve got the wiring and level shifting all handled.

Features

  • ATSAMD51J19 Cortex M4 processor, 512 KB flash, 192 K of SRAM, with full Arduino or CircuitPython support
  • ESP32 WiFi co-processor with TLS support and SPI interface to the M4, with full Arduino or CircuitPython support
  • USB-C connector for data and power connectivity
  • I2C STEMMA QT connector for plug-n-play use of any of our STEMMA QT devices or sensors can also be used with any Grove I2C devices using this adapter cable)
  • JST 3-pin connector that also has analog input/output, say for adding audio playback to projects
  • LIS3DH accelerometer for digital sand projects or detecting taps/orientation.
  • GPIO breakouts including 4 analog outputs with PWM and SPI support for adding other hardware.
  • Address E line jumper for use with 64x64 matrices (check your matrix to see which pin is used for address E!
  • Two user interface buttons + one reset button
  • Indicator NeoPixel and red LED
  • Green power indicator LEDs for both 3 V and 5 V power
  • 2x10 socket connector fits snugly into 2x8 HUB75 ports without worrying about ‘off by one’ errors.

The Matrix Portal uses an ATMEL (Microchip) ATSAMD51J19, and an Espressif ESP32 Wi-Fi coprocessor with TLS/SSL support built-in. The M4 and ESP32 are a great couple - and each bring their own strengths to this board. The SAMD51 M4 has native USB so it can show up like a disk drive, act as a MIDI or HID keyboard/mouse, and of course bootload and debug over a serial port. It also has DACs, ADC, PWM, and tons of GPIO, so it can handle the high speed updating of the RGB matrix.

Meanwhile, the ESP32 has secure WiFi capabilities, and plenty of Flash and RAM to buffer sockets. By letting the ESP32 focus on the complex TLS/SSL computation and socket buffering, it frees up the SAMD51 to act as the user interface. You get a great programming experience thanks to the native USB with files available for drag-n-drop, and you don’t have to spend a ton of processor time and memory to do SSL encryption/decryption and certificate management. It’s the best of both worlds!

Comes with one fully-programmed and assembled MatrixPortal, preprogrammed with a rainbow digital sand demo for 32x64 LED matrices.

Purchase:

Contribute

Have some info to add for this board? Edit the source for this page here.

CircuitPython 9.0.4

This is the latest stable release of CircuitPython that will work with the MatrixPortal M4.

Use this release if you are new to CircuitPython.

Release Notes for 9.0.4

Built-in modules available: _asyncio, _bleio, _pixelmap, adafruit_bus_device, adafruit_pixelbuf, alarm, analogio, array, atexit, audiobusio, audiocore, audioio, audiomixer, audiomp3, binascii, bitbangio, bitmaptools, board, builtins, builtins.pow3, busdisplay, busio, busio.SPI, busio.UART, codeop, collections, countio, digitalio, displayio, epaperdisplay, errno, fontio, fourwire, framebufferio, frequencyio, getpass, gifio, i2cdisplaybus, i2ctarget, io, jpegio, json, keypad, keypad.KeyMatrix, keypad.Keys, keypad.ShiftRegisterKeys, locale, math, microcontroller, msgpack, neopixel_write, nvm, onewireio, os, os.getenv, ps2io, pulseio, pwmio, rainbowio, random, re, rgbmatrix, rotaryio, rtc, samd, sdcardio, select, storage, struct, supervisor, synthio, sys, terminalio, time, touchio, traceback, usb_cdc, usb_hid, usb_midi, vectorio, warnings, watchdog, zlib

Included frozen(?) modules: adafruit_connection_manager, adafruit_esp32spi, adafruit_portalbase, adafruit_requests, neopixel

CircuitPython 9.1.0-beta.1

This is the latest development release of CircuitPython that will work with the MatrixPortal M4.

Alpha development releases are early releases. They are unfinished, are likely to have bugs, and the features they provide may change. Beta releases may have some bugs and unfinished features, but should be suitable for many uses. A Release Candidate (rc) release is considered done and will become the next stable release, assuming no further issues are found.

Please try alpha, beta, and rc releases if you are able. Your testing is invaluable: it helps us uncover and find issues quickly.

Release Notes for 9.1.0-beta.1

Built-in modules available: _asyncio, _bleio, _pixelmap, adafruit_bus_device, adafruit_pixelbuf, alarm, analogio, array, atexit, audiobusio, audiocore, audioio, audiomixer, audiomp3, binascii, bitbangio, bitmaptools, board, builtins, builtins.pow3, busdisplay, busio, busio.SPI, busio.UART, codeop, collections, countio, digitalio, displayio, epaperdisplay, errno, fontio, fourwire, framebufferio, frequencyio, getpass, gifio, i2cdisplaybus, i2ctarget, io, jpegio, json, keypad, keypad.KeyMatrix, keypad.Keys, keypad.ShiftRegisterKeys, locale, math, microcontroller, msgpack, neopixel_write, nvm, onewireio, os, os.getenv, ps2io, pulseio, pwmio, rainbowio, random, re, rgbmatrix, rotaryio, rtc, samd, sdcardio, select, storage, struct, supervisor, synthio, sys, terminalio, time, touchio, traceback, usb_cdc, usb_hid, usb_midi, vectorio, warnings, watchdog, zlib

Included frozen(?) modules: adafruit_connection_manager, adafruit_esp32spi, adafruit_portalbase, adafruit_requests, neopixel

Absolute Newest

Every time we commit new code to CircuitPython we automatically build binaries for each board and language. The binaries are stored on Amazon S3, organized by board, and then by language. These releases are even newer than the development release listed above. Try them if you want the absolute latest and are feeling daring or want to see if a problem has been fixed.

Previous Versions of CircuitPython

All previous releases of CircuitPython are available for download from Amazon S3 through the button below. For very old releases, look in the OLD/ folder for each board. Release notes for each release are available at GitHub button below.

Older releases are useful for testing if you something appears to be broken in a newer release but used to work, or if you have older code that depends on features only available in an older release. Otherwise we recommend using the latest stable release.

Update UF2 Bootloader

Latest version: v3.15.0

The bootloader allows you to load CircuitPython, MakeCode, and Arduino programs. The bootloader is not CircuitPython. You can check the current version of your bootloader by looking in the INFO_UF2.TXT file when the BOOT drive is visible (FEATHERBOOT, CPLAYBOOT, etc.).

It is not necessary to update your bootloader if it is working fine. Read the release notes on GitHub to see what has been changed. In general, we recommend you not update the bootloader unless you know there is a problem with it or a support person has asked you to try updating it.

To update, first save the contents of CIRCUITPY, just in case. Then double-click the reset button to show the BOOT drive. Drag the update-bootloader .uf2 file to the BOOT drive. Wait a few tens of seconds for the bootloader to update; the BOOT drive will reappear. After you update, check INFO_UF2.TXT to verify that the bootloader version has been updated. Then you will need to reload CircuitPython.

DOWNLOAD UPDATER UF2