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!
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.
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: _pixelbuf, analogio, audiocore, audioio, audiomixer, audiomp3, bitbangio, board, busio, countio, digitalio, displayio, framebufferio, frequencyio, gamepad, i2cperipheral, math, microcontroller, neopixel_write, nvm, os, ps2io, pulseio, pwmio, random, rgbmatrix, rotaryio, rtc, sdcardio, sharpdisplay, storage, struct, supervisor, terminalio, time, touchio, ulab, usb_hid, usb_midi, vectorio
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.
Latest version: v3.10.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.).
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. Check INFO_UF2.TXT to verify that the bootloader version has been updated. Then you will need to reload CircuitPython.