1
- Adafruit CircuitPython
2
- ======================
1
+ CircuitPython
2
+ =============
3
3
4
- .. image :: https://github. com/adafruit/circuitpython/blob/master/logo /CircuitPython_Repo_header_logo.png
4
+ .. image :: https://s3.amazonaws. com/adafruit-circuit-python /CircuitPython_Repo_header_logo.png
5
5
6
6
|Build Status | |Doc Status | |License | |Discord |
7
7
8
- `Status <#status >`__ \| `Supported Boards <#supported-boards >`__
9
- \| `Download <#download >`__ \|
10
- `Documentation <#documentation >`__ \|
11
- `Contributing <#contributing >`__ \| `Differences from
12
- Micropython <#differences-from-micropython> `__ \| `Project
13
- Structure <#project-structure> `__
8
+ `circuitpython.org <https:/circuitpython.org >`__ \| `Get CircuitPython <#get-circuitpython >`__ \|
9
+ `Documentation <#documentation >`__ \| `Contributing <#contributing >`__ \|
10
+ `Branding <#branding >`__ \| `Differences from Micropython <#differences-from-micropython >`__ \|
11
+ `Project Structure <#project-structure >`__
14
12
15
- **CircuitPython ** is an *education friendly * open source derivative of
16
- `MicroPython <https://micropython.org >`_. CircuitPython supports use
17
- on educational development boards designed and sold by
18
- `Adafruit <https://adafruit.com >`_. Adafruit CircuitPython features
19
- unified Python core APIs and a growing list of Adafruit libraries and
20
- drivers of that work with it.
13
+ **CircuitPython ** is a *beginner friendly *, open source version of Python for tiny, inexpensive
14
+ computers called microcontrollers. Microcontrollers are the brains of many electronics including a
15
+ wide variety of development boards used to build hobby projects and prototypes. CircuitPython in
16
+ electronics is one of the best ways to learn to code because it connects code to reality. Simply
17
+ install CircuitPython on a supported board via drag and drop and then edit a ``code.py `` file on
18
+ the CIRCUITPY drive. The code will automatically reload. No software installs are needed besides a
19
+ text editor (we recommend `Mu <https://codewith.mu/ >`_ for beginners.)
21
20
22
- Status
23
- ------
21
+ CircuitPython features unified Python core APIs and a growing list of 150+ device libraries and
22
+ drivers that work with it. These libraries also work on single board computers with regular
23
+ Python via the `Adafruit Blinka Library <https://github.com/adafruit/Adafruit_Blinka >`_.
24
24
25
- This project is stable. Most APIs should be stable going forward. Those
26
- that change will change on major version numbers such as 2.0.0 and
27
- 3.0.0.
25
+ CircuitPython is based on `MicroPython <https://micropython.org >`_. See
26
+ `below <#differences-from-micropython >`_ for differences. CircuitPython development is sponsored by
27
+ `Adafruit <https://adafruit.com >`_ and is available on their educational development boards. Please
28
+ support both MicroPython and Adafruit.
28
29
29
- Supported Boards
30
- ----------------
30
+ Get CircuitPython
31
+ ------------------
31
32
32
- Designed for CircuitPython
33
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
34
-
35
- **M0 Boards **
36
-
37
- - `Adafruit CircuitPlayground Express <https://www.adafruit.com/product/3333 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-circuit-playground-express/circuitpython-quickstart >`__)
38
- - `Adafruit Feather M0 Express <https://www.adafruit.com/product/3403 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-circuitpython/kattni-circuitpython >`__)
39
- - `Adafruit Gemma M0 <https://www.adafruit.com/product/3501 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-gemma-m0/circuitpython >`__)
40
- - `Adafruit Hallowing M0 Express <https://www.adafruit.com/product/3900 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-hallowing/circuitpython >`__)
41
- - `Adafruit ItsyBitsy M0 Express <https://www.adafruit.com/product/3727 >`_ (`CircuitPython Guide <https://learn.adafruit.com/introducing-itsy-bitsy-m0/circuitpython >`__)
42
- - `Adafruit Metro M0 Express <https://www.adafruit.com/product/3505 >`_ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m0-express-designed-for-circuitpython/circuitpython >`__)
43
- - `Adafruit Trinket M0 <https://www.adafruit.com/product/3500 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino/circuitpython >`__)
44
-
45
- **M4 Boards **
46
-
47
- - `Adafruit Feather M4 Express <https://www.adafruit.com/product/3857 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-feather-m4-express-atsamd51/circuitpython >`__)
48
- - `Adafruit ItsyBitsy M4 Express <https://www.adafruit.com/product/3800 >`__ (`CircuitPython Guide <https://learn.adafruit.com/introducing-adafruit-itsybitsy-m4/circuitpython >`__)
49
- - `Adafruit Metro M4 Express <https://www.adafruit.com/product/3382 >`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m4-express-featuring-atsamd51/circuitpython >`__)
50
-
51
- Other
52
- ~~~~~
53
-
54
- - `Adafruit Feather HUZZAH <https://www.adafruit.com/products/2821 >`__
55
- - `Adafruit Feather M0
56
- Basic <https://www.adafruit.com/products/2772> `__
57
- - `Adafruit Feather M0 Bluefruit
58
- LE <https://www.adafruit.com/products/2995> `__ (uses M0 Basic
59
- binaries)
60
- - `Adafruit Feather M0
61
- Adalogger <https://www.adafruit.com/product/2796> `__ (MicroSD card
62
- supported using the `Adafruit CircuitPython SD
63
- library <https://github.com/adafruit/Adafruit_CircuitPython_SD> `__)
64
- - `Arduino Zero <https://www.arduino.cc/en/Main/ArduinoBoardZero >`__
65
- - `Arduino MKR Zero <https://store.arduino.cc/arduino-mkrzero >`__ (MicroSD card
66
- supported using the `Adafruit CircuitPython SD
67
- library <https://github.com/adafruit/Adafruit_CircuitPython_SD> `__)
68
-
69
- "Third-party" or "non-Adafruit" boards
70
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71
-
72
- - `Electronic Cats Meow Meow <https://electroniccats.com/gomeow/ >`__
73
- - `Electronic Cats CatWAN USB Stick <https://electroniccats.com/producto/catwan_usb_stick/ >`__
74
-
75
- Download
76
- --------
77
-
78
- Official binaries are available through the `latest GitHub
79
- releases <https://github.com/adafruit/circuitpython/releases> `__.
80
- Continuous (one per commit) builds are available
81
- `here <https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin >`__
82
- and includes experimental hardware support.
33
+ Official binaries for all supported boards are available through
34
+ `circuitpython.org/downloads <https://circuitpython.org/downloads >`_. The site includes stable, unstable and
35
+ continuous builds. Full release notes and assets are available through
36
+ `GitHub releases <https://github.com/adafruit/circuitpython/releases >`_ as well.
83
37
84
38
Documentation
85
39
-------------
86
40
87
41
Guides and videos are available through the `Adafruit Learning
88
42
System <https://learn.adafruit.com/> `__ under the `CircuitPython
89
- category <https://learn.adafruit.com/category/circuitpython> `__ and
90
- `MicroPython
91
- category <https://learn.adafruit.com/category/micropython> `__. An API
43
+ category <https://learn.adafruit.com/category/circuitpython> `__. An API
92
44
reference is also available on `Read the Docs
93
45
<http://circuitpython.readthedocs.io/en/latest/?> `__. A collection of awesome
94
46
resources can be found at `Awesome CircuitPython <https://github.com/adafruit/awesome-circuitpython >`__.
@@ -113,22 +65,43 @@ are welcome to submit pull requests and they will be promptly reviewed
113
65
by project admins. Please join the
114
66
`Discord <https://discord.gg/nBQh6qu >`__ too.
115
67
68
+ Branding
69
+ ------------
70
+
71
+ While we are happy to see CircuitPython forked and modified, we'd appreciate it if forked releases
72
+ not use the name "CircuitPython" or the Blinka logo. "CircuitPython" means something special to
73
+ us and those who learn about it. As a result, we'd like to make sure products referring to it meet a
74
+ common set of requirements.
75
+
76
+ If you'd like to use the term "CircuitPython" and Blinka for your product here is what we ask:
77
+
78
+ * Your product is supported by the primary
79
+ `"adafruit/circuitpython" <https://github.com/adafruit/circuitpython >`_ repo. This way we can
80
+ update any custom code as we update the CircuitPython internals.
81
+ * Your product is listed on `circuitpython.org <https:/circuitpython.org >`__ (source
82
+ `here <https://github.com/adafruit/circuitpython-org/ >`_). This is to ensure that a user of your
83
+ product can always download the latest version of CircuitPython from the standard place.
84
+ * Your product has a user accessible USB plug which appears as a CIRCUITPY drive when plugged in.
85
+
86
+ If you choose not to meet these requirements, then we ask you call your version of CircuitPython
87
+ something else (for example, SuperDuperPython) and not use the Blinka logo. You can say it is
88
+ "CircuitPython-compatible" if most CircuitPython drivers will work with it.
89
+
116
90
--------------
117
91
118
92
Differences from `MicroPython <https://github.com/micropython/micropython >`__
119
93
-----------------------------------------------------------------------------
120
94
121
95
CircuitPython:
122
96
123
- - includes a ports for MicroChip SAMD21 (Commonly known as M0 in Adafruit
97
+ - includes ports for MicroChip SAMD21 (Commonly known as M0 in Adafruit
124
98
product names) and SAMD51 (M4).
125
- - supports only SAMD21, SAMD51, and ESP8266 ports. An nRF port is under
126
- development.
99
+ - supports only SAMD21, SAMD51, and nRF52840 ports.
127
100
- tracks MicroPython's releases (not master).
128
- - Longints (arbitrary-length integers ) are enabled for most M0
129
- Express boards (those boards with SPI flash chips external
130
- to the microcontroller), and for all M4 builds.
131
- Longints are disabled on other boards due to lack of flash space .
101
+ - floats (aka decimals ) are enabled for all builds.
102
+ - error messages are translated into 10+ languages.
103
+ - does not support concurrency within Python (including interrupts and threading). Some concurrency
104
+ is achieved with native modules for tasks that require it such as audio file playback .
132
105
133
106
Behavior
134
107
~~~~~~~~
@@ -153,12 +126,23 @@ Behavior
153
126
causes nasty crashes by making it available through mass storage
154
127
after the crash. A reset (the button) is needed after its fixed to
155
128
get back into normal mode.
129
+ - RGB status LED indicating CircuitPython state, and errors through a sequence of colored flashes.
130
+ - Re-runs ``code.py `` or other main file after file system writes over USB mass storage. (Disable with
131
+ ``samd.disable_autoreload() ``)
132
+ - Entering the REPL after the main code is finished requires a key press which enters the REPL and
133
+ disables autoreload.
134
+ - Main is one of these: ``code.txt ``, **``code.py`` **, ``main.py ``,
135
+ ``main.txt ``
136
+ - Boot is one of these: ``settings.txt ``, ``settings.py ``, **``boot.py`` **,
137
+ ``boot.txt ``
156
138
157
139
API
158
140
~~~
159
141
160
- - Unified hardware APIs: `audioio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/audioio/__init__.html>`_, `analogio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/analogio/__init__.html>`_, `bleio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/bleio/__init__.html>`_, `busio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/busio/__init__.html>`_, `digitalio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/digitalio/__init__.html>`_, `pulseio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/pulseio/__init__.html>`_, `touchio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/touchio/__init__.html>`_, `microcontroller <https://circuitpython.readthedocs.io/en/latest/shared-bindings/microcontroller/__init__.html>`_, `board <https://circuitpython.readthedocs.io/en/latest/shared-bindings/board/__init__.html>`_, `bitbangio <https://circuitpython.readthedocs.io/en/latest/shared-bindings/bitbangio/__init__.html>`_
161
- - No ``machine `` API on Atmel SAMD21 port.
142
+ - Unified hardware APIs. Documented
143
+ `on ReadTheDocs <https://circuitpython.readthedocs.io/en/latest/shared-bindings/index.html >`_.
144
+ - API docs are rST within the C files in ``shared-bindings ``.
145
+ - No ``machine `` API.
162
146
163
147
Modules
164
148
~~~~~~~
@@ -178,18 +162,6 @@ Modules
178
162
- tick count is available as
179
163
`time.monotonic() <https://circuitpython.readthedocs.io/en/latest/shared-bindings/time/__init__.html#time.monotonic >`__
180
164
181
- atmel-samd21 features
182
- ~~~~~~~~~~~~~~~~~~~~~
183
-
184
- - RGB status LED
185
- - Auto-reload after file write over mass storage. (Disable with
186
- ``samd.disable_autoreload() ``)
187
- - Wait state after boot and main run, before REPL.
188
- - Main is one of these: ``code.txt ``, ``code.py ``, ``main.py ``,
189
- ``main.txt ``
190
- - Boot is one of these: ``settings.txt ``, ``settings.py ``, ``boot.py ``,
191
- ``boot.txt ``
192
-
193
165
--------------
194
166
195
167
Project Structure
@@ -231,46 +203,20 @@ Ports
231
203
Ports include the code unique to a microcontroller line and also
232
204
variations based on the board.
233
205
234
- - ``atmel-samd `` Support for SAMD21 based boards such as `Arduino
235
- Zero <https://www.arduino.cc/en/Main/ArduinoBoardZero> `__, `Adafruit
236
- Feather M0 Basic <https://www.adafruit.com/products/2772> `__, and
237
- `Adafruit Feather M0 Bluefruit
238
- LE <https://www.adafruit.com/products/2995> `__.
239
- - ``bare-arm `` A bare minimum version of MicroPython for ARM MCUs.
240
- - ``cc3200 `` Support for boards based
241
- `CC3200 <http://www.ti.com/product/CC3200 >`__ from TI such as the
242
- `WiPy 1.0 <https://www.pycom.io/solutions/py-boards/wipy1/ >`__.
243
- - ``esp8266 `` Support for boards based on ESP8266 WiFi modules such as
244
- the `Adafruit Feather
245
- HUZZAH <https://www.adafruit.com/products/2821> `__.
246
- - ``minimal `` A minimal MicroPython port. Start with this if you want
247
- to port MicroPython to another microcontroller.
248
- - ``pic16bit `` Support for 16-bit PIC microcontrollers.
249
- - ``qemu-arm `` Support for ARM emulation through
250
- `QEMU <https://qemu.org >`__.
251
- - ``stmhal `` Support for boards based on STM32 microcontrollers
252
- including the MicroPython flagship
253
- `PyBoard <https://store.micropython.org/store/#/products/PYBv1_1 >`__.
254
- - ``teensy `` Support for the Teensy line of boards such as the `Teensy
255
- 3.1 <https://www.pjrc.com/teensy/teensy31.html> `__.
256
- - ``unix `` Support for UNIX.
257
- - ``windows `` Support for
258
- `Windows <https://www.microsoft.com/en-us/windows/ >`__.
259
- - ``zephyr `` Support for `Zephyr <https://www.zephyrproject.org/ >`__, a
260
- real-time operating system by the Linux Foundation.
261
-
262
- CircuitPython only maintains the ``atmel-samd `` and ``esp8266 `` ports.
263
- The rest are here to maintain compatibility with the
264
- `MicroPython <https://github.com/micropython/micropython >`__ parent
265
- project.
266
-
267
- `⬆ back to top <#adafruit-circuitpython >`__
206
+ - ``atmel-samd `` Support for SAMD21 and SAMD51 based boards.
207
+ - ``nrf `` Support for the nRF52840 based boards.
208
+ - ``unix `` Support for UNIX. Only used for automated testing.
209
+
210
+ The remaining port directories not listed above are in the repo to maintain compatibility with the
211
+ `MicroPython <https://github.com/micropython/micropython >`__ parent project.
212
+
213
+ `back to top <#circuitpython >`__
268
214
269
215
.. |Build Status | image :: https://travis-ci.com/adafruit/circuitpython.svg?branch=master
270
216
:target: https://travis-ci.org/adafruit/circuitpython
271
217
.. |Doc Status | image :: https://readthedocs.org/projects/circuitpython/badge/?version=latest
272
218
:target: http://circuitpython.readthedocs.io/
273
219
.. |Discord | image :: https://img.shields.io/discord/327254708534116352.svg
274
220
:target: https://adafru.it/discord
275
- .. |License | image :: https://github.com/adafruit/circuitpython/blob/master/logo/license -MIT-brightgreen.svg
276
- :target: https://opensource.org /licenses/MIT
221
+ .. |License | image :: https://img.shields.io/badge/License -MIT-brightgreen.svg
222
+ :target: https://choosealicense.com /licenses/mit/
0 commit comments