firmatazero 
The simplest Python interface for controlling pins on Arduino by using Firmata protocol.
This project aims to bring GPIO Zero's excellent Python interface from Raspberry Pi's to Arduinos, while making only minor adjustments that make sense in due to different hardware. This means that in some cases existing gpiozero code can work on Arduino by simply changing imports and pin numbers.
Firmatazero automatically detects Arduino's port and on default expects Arduino Uno, and is thread safe.
Blink example:
from firmatazero import LED
from time import sleep
led = LED(13) # 13 == LED_BUILTIN
while True:
led.on()
sleep(1)
led.off()
sleep(1)
Servo example:
from firmatazero import Servo
from time import sleep
servo = Servo(9)
while True:
servo.min()
sleep(1)
servo.mid()
sleep(1)
servo.max()
sleep(1)
Needless to say, this project is heavily inspired by GPIO Zero. This means that the project structure and docstrings are very related, even if the underlying code is different.
This project is build with pyFirmata2 and pySerial libraries.
Currently has very limited amount of devices. Used in botafar.com for making shareable, realtime global remote controls possible for robotics projects.
Installation
Python side:
pip install firmatazero --upgrade
Arduino side: on Arduino IDE select File > Examples > Firmata > StandardFirmata.
Then select your board and port from Tools > Board and Tools > Port. Then press Upload.
Supported devices
You can use GPIO Zero's docs, if you take changes intpo account:
LED
Same as GPIO Zero's LED, except:
pinparameter has a default value of 13, the buildin LEDblink()function andactive_highparameter not implementedpin_factorydoes not have an effect
Servo
Same as GPIO Zero's Servo, except:
pinparameter has a default value of 9, the pin used in Knob and Sweep examplesmin_pulse_widthandmax_pulse_widthhave default values from Arduino Servo.h library, this means that most hobby servos move 180 degrees out of the boxdetach()function not implemented, soServo.value = Noneis not allowedpin_factorydoes not have an effect
New functions
- detect_port() detects and returns the first Arduino port it finds, or raises RuntimeError
- set_port(port) allows skipping port autodetection, for example:
set_port("COM1") - set_board(board) allows setting another pyFirmata2 board or settings compared to the default one, for example:
set_board(pyFirmata2.ArduinoMega("COM4")) - get_board get pyFirmata2 board shared with all devices, to run some custom code with
Contributing
Contributions are very welcome. Anything that makes this project to support more GPIO Zero's Devices are very welcome.
Metadata
Release files for firmatazero 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| firmatazero-0.0.2.tar.gz | 88.3 kB | Without provenance | Details for firmatazero-0.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| firmatazero-0.0.2-py3-none-any.whl | Python 3 | none | any | Details for firmatazero-0.0.2-py3-none-any.whl |
Total release size: 96.0 kB
Release files / firmatazero-0.0.2.tar.gz
| Download URL | firmatazero-0.0.2.tar.gz |
|---|---|
| Size | 88.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
319a66a4442a0c46d68526722c2aa120bdcf9601edc43c800c882c897efd479c
|
|
BLAKE2b-256 checksum How to use checksums |
fe27c33573c53e195562186c8ea3e3cdef213d12426adb7ec283d21c4b60cbec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.28.1
|
Release files / firmatazero-0.0.2-py3-none-any.whl
| Download URL | firmatazero-0.0.2-py3-none-any.whl |
|---|---|
| Size | 7.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ffebefddacc9a71c761e88f66b65161a9036c85e1fbd08c87dfc9f085e086a00
|
|
BLAKE2b-256 checksum How to use checksums |
89a043ff2109075e86a7f4d2a51501e871e881993a80b479e8bc55b8218f7193
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.28.1
|
Security for firmatazero 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.