HalloWing M4 Express
by Adafruit
This is Hallowing..this is Hallowing… Hallowing! Hallowing! Following up on 2018’s most-successful-skull-shaped development board, we UPPED our -skull-shaped development board game, and re-spinned (re-spun?) the HalloWing M0 into the HalloWing M4 with MORE of everything that makes this the spoooookiest dev board.
Are you the kind of person who doesn’t like taking down the skeletons and spiders until after January? Well, we’ve got the development board for you. This is electronics at its most spooky! The Adafruit HalloWing M4 is a skull-shaped ATSAM521 board with a ton of extras built in to make for an adorable wearable, badge, development kit, or the engine for your next cosplay or prop.
On the front is a cute 1.54” sized 240x240 full color IPS TFT. Compared to the HalloWing M0’s 1.44” 128x128, this has 4x as many pixels and is IPS for great color and brightness. Our default example code has our new fully-customizable spooky eye demo running but you can use it for anything you like to display in glorious color.
There’s also 4 fang-teeth below the display, these are analog/capacitive touch inputs with big alligator-clip holes.
On the reverse is a smorgasbord of electronic goodies:
- ATSAMD51J19 @ 120MHz with 3.3V logic/power - 512KB of FLASH + 192KB of RAM, can run Arduino or CircuitPython super fast
- 8 MB of SPI Flash for storing images, sounds, animations, whatever!
- 3-axis accelerometer (motion sensor)
- Light sensor, reverse-mount so that it points out the front
- Mono Class-D speaker driver for 4-8 ohm speakers, up to 1 Watt, connected to a 12-bit DAC on the SAMD51
- Four side-light NeoPixel LEDs for cool underlighting effects
- LiPoly battery port with built in recharging capability
- USB port for battery charging, programming and debugging
- Two female header strips with Feather-compatible pinout so you can plug any FeatherWings in
- JST ports for Neopixels, sensor input, and I2C (you can fit I2C Grove connectors in here)
- 3.3V regulator with 500mA peak current output
- Reset button
- On-Off switch
OK so technically it’s more like a really tricked-out Feather M4 Express than a *Wing* but we simply could not resist the HalloWing pun.
You can use the Hallowing similarly Feather M4 Express, it’s got the same chip although the pins have been rearranged. We’ve got both Arduino and CircuitPython build support for it so you can pick your favorite development language! The extra 8 MB of SPI Flash is great for sound effects projects where you want to play up to 3 minutes of WAV files.
On each side of the Hallowing are JST-PH plugs for connecting external devices. The 3-pin JSTs connect to analog pins on the SAMD51, so you can use them for analog inputs. We label one for NeoPixel and one for Sensors since we think most people will have one of each. The 4-pin JST connector connects to the I2C port and you can fit Grove connectors in it for additional hardware support.
Does not come with a Lipoly battery! We recommend our 350mAh or 500mAh batteries but any 3.7/4.2V Adafruit Lipoly will do the trick.
Comes fully assembled and ready to be your spooky skull friend. We install the UF2 bootloader on it so updating code and converting it to CircuitPython is easy.
Tutorial
Purchase
Contribute
Have some info to add for this board? Edit the source for this page here.
CircuitPython 9.2.0
This is the latest stable release of CircuitPython that will work with the HalloWing M4 Express.
Use this release if you are new to CircuitPython.
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 , floppyio , fontio , fourwire , framebufferio , frequencyio , getpass , gifio , i2cdisplaybus , i2ctarget , io , json , keypad , keypad.KeyMatrix , keypad.Keys , keypad.ShiftRegisterKeys , locale , math , microcontroller , msgpack , neopixel_write , nvm , onewireio , os , os.getenv , paralleldisplaybus , ps2io , pulseio , pwmio , rainbowio , random , re , rgbmatrix , rotaryio , rtc , samd , sdcardio , select , sharpdisplay , storage , struct , supervisor , sys , terminalio , time , touchio , traceback , ulab , usb_cdc , usb_hid , usb_midi , vectorio , warnings , watchdog , zlib ,
Features: Display Speaker Feather-Compatible Battery Charging Solder-Free Alligator Clip
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.