# MicroPython for SAMD21

## Overview

Warning: 

https://www.youtube.com/watch?v=o0VmNffBRnU

![](https://cdn-learn.adafruit.com/assets/assets/000/036/629/medium800/micropython_IMG_5556.jpg?1476600648)

[MicroPython](http://www.micropython.org/) is a fantastic environment for controlling hardware with the [Python programming language](http://www.python.org/). &nbsp;Beginners can benefit from MicroPython's simple syntax and interactive REPL, while advanced users can explore mixing Python code with low-level hardware access. &nbsp;There are a few boards which support MicroPython today, such as the powerful [pyboard](https://www.adafruit.com/product/2390)&nbsp;or the WiFi-capable [ESP8266](https://www.adafruit.com/products/2821). &nbsp;Now there's a new set of boards which can support MicroPython, Adafruit's Feather M0 and Arduino Zero boards which use the SAMD21 microprocessor!

[Adafruit's SAMD21 MicroPython port](https://github.com/adafruit/circuitpython)&nbsp;(now called CircuitPython) is a brand new port of MicroPython to the Atmel SAMD21 microprocessor. &nbsp;This processor is a 32-bit ARM Cortex-M0+ chip which means it's quite a bit more powerful than typical Arduino boards like the Uno or Leonardo. &nbsp;There's more RAM&nbsp;(32kb), flash memory (256kb), and processing power (48mhz) which enable these SAMD21&nbsp;boards to run MicroPython. &nbsp;MicroPython on the SAMD21 has many of the same features as other boards, like an interactive USB serial REPL, USB mass storage for manipulating files, and all of the core MicroPython language support.

Be aware the SAMD21 MicroPython port is still in development! &nbsp;It is currently in an early 'preview' or beta state&nbsp;for advanced users to kick the tires and explore MicroPython on Feather M0 and similar boards. &nbsp;Not all MicroPython modules are implemented yet, and there very likely will be bugs and other issues. &nbsp;Check out the [quick start guide page](../../../../micropython-for-samd21/quick-start-guide) to see what modules are currently supported by the port.

If you do run into bugs or issues with the port be sure to [raise them on the GitHub repository](https://github.com/adafruit/circuitpython) (please search first to see if the issue is already known!). &nbsp;Pull requests and changes are appreciated too, but be sure to read the [contributing](https://github.com/adafruit/circuitpython/blob/master/CONTRIBUTING.md) and [code of conduct](https://github.com/adafruit/circuitpython/blob/master/CODE_OF_CONDUCT.md) first.

To follow this guide you will need an Atmel SAMD21-based board like one of the following:

- **[Adafruit Feather M0 Basic Proto](https://www.adafruit.com/product/2772)**
- **[Arduino Zero](https://www.adafruit.com/products/2843)** (or the discontinued [Arduino M0 Pro](https://www.adafruit.com/products/2417))
- **[Adafruit Feather M0 Adalogger](https://www.adafruit.com/products/2796)**
- **[Adafruit Feather M0 Bluefruit LE](https://www.adafruit.com/products/2995)** (note the Bluetooth radio isn't yet supported by MicroPython)
- **[Adafruit Feather M0 WiFi](https://www.adafruit.com/products/3010)** (note the WiFi radio isn't yet supported by MicroPython)
- **[Adafruit Feather M0 RFM69HCW Packet Radio](https://www.adafruit.com/products/3176)** (note the radio isn't yet supported by MicroPython)
- **[Adafruit Feather M0 RFM95 LoRa Radio](https://www.adafruit.com/products/3178)** (note the radio isn't yet supported by MicroPython)

If you aren't sure what to try, the [Feather M0 Basic Proto](https://www.adafruit.com/products/2772) is a great starting option.

You will also want to be familiar with MicroPython by reading the following guides (and [other MicroPython guides in the learning system](../../../../category/micropython)):

- [MicroPython Basics: What is MicroPython?](../../../../micropython-basics-what-is-micropython)
- [MicroPython Basics: Blink a LED](../../../../micropython-basics-blink-a-led)
- [MicroPython Basics: Load Files and Run Code](../../../../micropython-basics-load-files-and-run-code)
- [MicroPython Basics: Loading Modules](../../../../micropython-basics-loading-modules)

- [Next Page](https://learn.adafruit.com/micropython-for-samd21/load-firmware.md)

## Related Guides

- [Adafruit Feather M0 Adalogger](https://learn.adafruit.com/adafruit-feather-m0-adalogger.md)
- [Adafruit Feather M0 Bluefruit LE](https://learn.adafruit.com/adafruit-feather-m0-bluefruit-le.md)
- [Adding a WiFi Co-Processor to CircuitPython](https://learn.adafruit.com/adding-a-wifi-co-processor-to-circuitpython-esp8266-esp32.md)
- [Talking Musical NeoPixel Clock with Infrared, BLE and Touch Controls](https://learn.adafruit.com/talking-musical-neo-pixel-clock-with-infrared-ble-and-touch-controls.md)
- [Animated LED Sand](https://learn.adafruit.com/animated-led-sand.md)
- [CRICKIT Flippy Robot](https://learn.adafruit.com/crickit-flippy-robot.md)
- [CRICKIT WobblyBot](https://learn.adafruit.com/crickit-wobblybot.md)
- [Using LoraWAN and The Things Network with Feather](https://learn.adafruit.com/the-things-network-for-feather.md)
- [Build a Bluetooth App using Swift 5](https://learn.adafruit.com/build-a-bluetooth-app-using-swift-5.md)
- [Mystery Box: Remote Chess Board Puzzle Lock](https://learn.adafruit.com/mystery-box-remote-chess-board-puzzle-lock.md)
- [Using LoraWAN and The Things Network with CircuitPython](https://learn.adafruit.com/using-lorawan-and-the-things-network-with-circuitpython.md)
- [Bluetooth Remote Control for the Lego Droid Developer Kit](https://learn.adafruit.com/bluetooth-remote-for-lego-droid.md)
- [Wireless NeoPixel Controller](https://learn.adafruit.com/neotrellis-neopixel-controller.md)
- [Introducing Adafruit Feather](https://learn.adafruit.com/adafruit-feather.md)
- [Guardian Shield+ Zelda Breath of the Wild](https://learn.adafruit.com/guardian-shield-zelda-breath-of-the-wild.md)
- [Debugging the SAMD21 with GDB](https://learn.adafruit.com/debugging-the-samd21-with-gdb.md)
- [Wireless UNTZtrument Using BLE MIDI ](https://learn.adafruit.com/wireless-untztrument-using-ble-midi.md)
