Skip to main content

A Python interface to AutomationShield's AeroShield Arduino shield

Project description

python-aeroshield

python-aeroshield is a Python package that implements a Python interface to Automationshield's Aeroshield. Automationshield creates cheap and accessible tools for control engineering education in the form of Arduino shields, of which the Aeroshield is one.

This project was built to allow TU Delft students learning control engineering to use Python in their assignments, since that is what they are thought in the curriculum. This package provides a flexible controller class that lets users conveniently implement a controller and run it on the Arduino hardware.

Installation

python-aeroshield requires Python >= 3.10 and can be installed with the following command:

$ pip install python-aeroshield

Usage

Below is a very simple example to get started. Read more in the documentation.

Use the AeroShield class to interface directly with the Arduino.

from aeroshield import AeroShield


with AeroShield() as aero_shield:
    for _ in range(100):
        aero_shield.write(flag=aero_shield.RUN, motor=50)
        out = aero_shield.read()
        print(f"Potentiomneter [%]: {out[0]}, Angle [°]: {out[1]}")

Use the AeroController class to conveniently implement a controller.

from aeroshield import AeroShield, AeroController


class MyController(AeroController):
    def controller(self, t: float, dt: float, ref: float, pot: float, angle: float) -> float:
        """Set the motor value to the provided reference."""
        return ref

# create controller instance
my_controller = MyController(AeroShield())
# run the controller on the Arduino.
hist = my_controller.run(freq=200, cycles=1000, ref=45)

Plot the experiment data using the plotting.Plotter class

from aeroshield.plotting import Plotter


fig, ax = Plotter.plot(hist)
fig.show()

Below is an example of a figure plotting the result of a PID controller with a constant reference at 45°.

Plot of PID controller output

Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

License

python-aeroshield was created by Bert Van den Abbeele. It is licensed under the terms of the MIT license.

Credits

python-aeroshield was created with cookiecutter and the py-pkgs-cookiecutter template.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_aeroshield-0.3.2.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

python_aeroshield-0.3.2-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file python_aeroshield-0.3.2.tar.gz.

File metadata

  • Download URL: python_aeroshield-0.3.2.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.13 Linux/5.4.109+

File hashes

Hashes for python_aeroshield-0.3.2.tar.gz
Algorithm Hash digest
SHA256 7b3f4442e23ba71e0d1a68bbe8beafedadc147dfbcd7d31b005d736cbfbb25a6
MD5 2281c1e91e539c7b9303770073e3076f
BLAKE2b-256 3c624f38aebd1b8a88f749223cc03df1c3e9d12b0f937333d04a6d647b9f1b5f

See more details on using hashes here.

File details

Details for the file python_aeroshield-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for python_aeroshield-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d68260f6b0c6ddce8195ffc08b4f6f16f8c1423df3c5e08a8fe3a8c0e45e9636
MD5 0bc73d37c89d45235e6bbee7b076912d
BLAKE2b-256 ad4ed10c9f2fe8cc5c815c7ceab48ee663710696cffcc9148e5bc7f1a2f27c46

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page