The NeoTrellis M4 is an all-in-one USB + NeoPixel + Elastomer + Audio board. It’s powered by the SAMD51, a Cortex M4 core running at 120 MHz. This chip has a speedy core with CircuitPython support, hardware DSP/floating point, dual DACs and all the goodies you expect from normal chips like I2C, ADC, DMA, etc. It has a roomy 512KB of flash and 192KB of SRAM so it’s great for CircuitPython, includes a full 8MB flash chip so tons of space for files and audio clips.
The native USB port can turn it into a MIDI USB device if you like - currently that’s only supported in Arduino. Tether it to a computer or tablet, if you like. Or use it in standalone mode, as long as its powered from a USB power plug, it’ll run whatever firmware is burned into it.
OK so you’ve got this big brain, but now you need inputs and outputs! There’s a 4x8 grid of elastomer button pads with a NeoPixel nestled in the center of each one. You can read any/all button presses simultaneously thanks to the fully diode’d matrix, and also set each button color to any of 24-bit colors. The elastomer buttons are translucent so they glow beautifully when lit.
Time to make some noise! Adafruit picked the SAMD51 mostly because it has dual DACs - that’s two 12-bit, 500KSPS ‘true analog’ outputs connected them to left and right on a standard headphone jack. Since the DAC pins are also ADC pins you could also use the left/right for audio line level input if you so choose. You’re not going to get audiophile-quality outputs from two 12-bit DACs but you can certainly play audio clips and make beeps and bloops.
To add more interactivity, a precision triple-axis accelerometer from Analog Devices, the ADXL343, is included as well, and provides sensor information on tilt, motion, or tapping. Great for adding another dimension of data input in addition to the button pads.
Finally, a 4 pin JST hacking port is available for extra add-ons. It’s STEMMA and Grove compatible, and provides GND, 3.3V power, and two pins that can be used for I2C, ADC, or a UART. So connect some other sensor, or read stereo audio in, or maybe hack together a MIDI port. Whatever you like!
- ATSAMD51 32-bit Cortex M4 core running at 120 MHz (32-bit, 3.3V logic and power)
- Hardware DSP and floating point support
- 512 KB flash, 192 KB RAM
- Native USB that can act as a true USB MIDI device if you like.
- 8 MB SPI FLASH chip for storing files and CircuitPython code storage.
- 4x8 elastomer pads with fully diode’d matrix - no ghosting!
- 4x8 NeoPixels for each pad, glows through the elastomer buttons
- TRRS Headphone jack with stereo DAC outputs on Left/Right, can also be stereo ADC inputs.
- Built in MAX4466 electret mic amplifier for mobile phone headsets. ‘Raw’ DC level reading also available on a separate ADC
- 4-JST hacking port with 3.3V power, ground, and two GPIO that can be I2C/ADC/UART
- Analog Devices ADXL343 triple-axis accelerometer
- Really fun to press buttons and have sounds come out!
Have some info to add for this board? Edit the source for this page here.
This is the latest stable release of CircuitPython that will work with the NeoTrellis M4.
Start here if you are new to CircuitPython.
Built-in modules available: _bleio, adafruit_bus_device, adafruit_pixelbuf, aesio, alarm, analogio, atexit, audiocore, audioio, audiomixer, audiomp3, binascii, bitbangio, bitmaptools, board, busio, countio, digitalio, displayio, errno, floppyio, fontio, framebufferio, frequencyio, getpass, gifio, i2cperipheral, json, keypad, math, microcontroller, msgpack, neopixel_write, nvm, onewireio, os, paralleldisplay, ps2io, pulseio, pwmio, rainbowio, random, re, rgbmatrix, rotaryio, rtc, sdcardio, sharpdisplay, storage, struct, supervisor, synthio, terminalio, time, touchio, traceback, ulab, usb_cdc, usb_hid, usb_midi, vectorio, watchdog, zlib
This is the latest unstable release of CircuitPython that will work with the NeoTrellis M4.
Unstable builds have the latest features but are more likely to have critical bugs.
Built-in modules available: _asyncio, _bleio, adafruit_bus_device, adafruit_pixelbuf, aesio, alarm, analogio, array, atexit, audiocore, audioio, audiomixer, audiomp3, binascii, bitbangio, bitmaptools, board, builtins, busio, collections, countio, digitalio, displayio, dotenv, errno, floppyio, fontio, framebufferio, frequencyio, getpass, i2ctarget, json, keypad, math, microcontroller, msgpack, neopixel_write, nvm, onewireio, os, paralleldisplay, ps2io, pulseio, pwmio, rainbowio, random, re, rgbmatrix, rotaryio, rtc, sdcardio, select, sharpdisplay, storage, struct, supervisor, synthio, sys, terminalio, time, touchio, traceback, ulab, usb_cdc, usb_hid, usb_midi, vectorio, watchdog, zlib
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. Try them if you want the absolute latest and are feeling daring or want to see if a problem has been fixed.
All previous releases are listed on GitHub, with release notes, and are available for download from Amazon S3. They are handy for testing, but otherwise we recommend using the latest stable release. Some older GitHub release pages include the same binaries for downloading. But we have discontinued including binaries as assets on newer release pages because of the large number of files for each release.
Update UF2 Bootloader
Latest version: v3.14.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.