Skip to main content

ft-Explore allows to control motors and to check inputs by GUI and user-provided Python code

Project description

ft-Explore

ft-Explore allows to control motors and to check inputs by GUI and user-provided Python code.

ft-Explore GUI

ft-Explore was implemented to interface with hardware of technical models for educational purposes. It is open-source and contains interface modules for widely available hardware (RaspberryPi with Adafruit Motor HAT).


Features

  • Graphical user interface for controlling four motors/lights and showing the state of eight digital inputs
  • Platform independent, tested on Windows and Linux (Debian and Raspbian)
  • No dependencies except hardware drivers when operating locally
  • Controlling motors/lights and getting the state of the inputs can be done by user-provided Python scripts
  • The user-provided Python scripts can be executed and interrupted in the GUI. Script output and exceptions are shown there
  • Manual control via GUI and script-based control is possible simultaneously
  • GUI and hardware can be distributed to multiple machines, e.g. hardware on a headless RaspberryPi can be controlled via GUI on a Windows notebook

Installation

ft-Explore can be installed easily. See the sections below depending on your platform.

Windows

  • Download msi installer file (can be found "dist_msi" folder in the repository)
  • Install using the msi installer
  • Afterwards the application can be started via shortcut "ft-Explore" in start menu

Alternatively, you can download the source code and run it after installing Python (e.g. via https://www.anaconda.com/distribution/). See the Linux section below for required Python packages.

Linux

  • Make sure that you use Python version 3.5 or newer
  • Install Python libraries as needed:

in case the application shall not just be used locally and shall use the network

$ pip install cffi pynng

in case you are running on a RaspberryPi and want to access the GPIOs as inputs

$ pip install RPi.GPIO

in case you are running on a RaspberryPi with an Adafruit Motor HAT

$ pip install adafruit_motorkit

in case you want to be able to watch for keyboard events

$ pip install keyboard
  • Install ft-Explore:
$ pip install ftexplore
  • Run ft-Explore

run and show help page

$ python -m ftexplore --help

Clone (for developers only)

  • Clone this repo to your local machine using https://www.towalink.de/gitea/HNET/ftexplore.git

Usage

  • Demo usage

Show GUI and use no real hardware for demo purposes (the default):

$ python -m ftexplore

This is equivalent to

$ python -m ftexplore --loglevel info --hardware demo

In this mode, there is just emulated hardware. When you control the motors, depending on the direction of the motors the inputs are set.

  • Show GUI and use the locally available default hardware (Adafruit Motor HAT and eight RaspberryPi GPIOs as inputs)
$ python -m ftexplore --hardware default

Use this mode if you're working locally on a RaspberryPi with an Adafruit Motor HAT shield.0

  • Distributed operation with local GUI and remote hardware

Listening side with the hardware (adapt port as needed)

$ python -m ftexplore --hardware default --listen 2201

Client side with the GUI (adapt IP address and port as needed)

$ python -m ftexplore --hardware 192.168.1.1:2201
  • Show help page for details on command line arguments
$ python -m ftexplore --help

Documentation

Writing Usercode

See the separate documentation for writing usercode in the doc directory:

Documentation on writing user code

Source Code Organization

  • src/ftexplore/eventprocessor

This folder contains code for event processing and event distribution to the applications submodules. The application works by broadcasting events between the different application modules.

  • src/ftexplore/gui

This folder contains the code for the graphical user interface. That interface is based on Tk.

  • src/ftexplore/hardware

This folder contains modules to communicate with different types of hardware. A special hardware is "remote" hardware that resides on another machine and is accessed via network. Adapt the demo hardware to quickly implement support for your special hardware.

  • src/ftexplore/listener

This folder contains the module that provides access to the local hardware via the network. One or more clients can be connected.

  • src/ftexplore/usercode

This folder contains the code controlling the execution of user-provided code.


License

License

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

ftexplore-2.5.0.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ftexplore-2.5.0-py3-none-any.whl (51.0 kB view details)

Uploaded Python 3

File details

Details for the file ftexplore-2.5.0.tar.gz.

File metadata

  • Download URL: ftexplore-2.5.0.tar.gz
  • Upload date:
  • Size: 43.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.8

File hashes

Hashes for ftexplore-2.5.0.tar.gz
Algorithm Hash digest
SHA256 f19de938919dc8562e98b0d29a571a931646bcf3ae6d968769871030ff37fe6c
MD5 89bc0d273fc1a2ea6b8594ef2358f124
BLAKE2b-256 6f562ac7d6c34961ab9f10212427326ce11c40372c963b5b1188cfc28863eeb4

See more details on using hashes here.

File details

Details for the file ftexplore-2.5.0-py3-none-any.whl.

File metadata

  • Download URL: ftexplore-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 51.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.8

File hashes

Hashes for ftexplore-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bbbdafc32f5be426381d60cecc957529f94cd95769c47630f85eb33b60b974c8
MD5 26abfc3ec7c2c5b343e6312f40996aa7
BLAKE2b-256 2062b680fb4581960ee730a5f802c74767f85ef25d3ec164fd1b04ab56c80a52

See more details on using hashes here.

Supported by

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