Giter Club home page Giter Club logo

fabi's Introduction

Welcome to FABI

The FABI (Flexible Assistive Button Interface) allows control of a computer’s mouse cursor or keyboard by just using momentary switches. This can be helpful for people who want to create user interactions with the press of a button - and it allows people who can't use standard computer input devices to play games, surf the internet, communicate and much more.

A FABI box with attached 3d-printed switch

How?

The FABI Interface can be actuated via dedicated buttons, momentary switches or self-made electrical contacts. Additionally, a sip-puff sensor can be used to create user input. FABI consists of a hardware module (a low-cost microcontroller which behaves as a computer mouse and/or keyboard) and a config manager software for configuration of the desired functions. The FABI system can be attached to computers, tablets or smart phones via USB. Additionally, a bluetooth-module is available for devices that do not have a USB port (some Android or iOS phones).

Folder structure of this repository

Essential information can be found in the following folders

  • Case Designs: different 3d-printable / lasercut designs for enclosures
  • Documentation: all user and construction manuals
  • FabiGUI_C#: the (outdated) graphical user interface (for Windows)
  • FabiWare: the microcontroller firmware
  • hardware: the KiCad design files and models for schematics and PCB layout
  • Settings: demo configurations which can be loaded into the FABI device via the GUI

The source of the current web based config manager can be found in another repository: source of web based config manager

Configuration Manager and User manual

The FABI system does not ony offer fixed mappings of buttons to functions - it allows storing multiple configuration settings and changing them "on-the-fly". For configuration the web-based config manager should be used. You can find information how to configure the individual button functions and system options in the user manual:

Building the hardware

There are various options for building FABI-compatible switch interfaces: you can order parts and build our construction kit, or make a completely self-driven version. The most affordable version consists of just a microcontroller and attached momentary switches (material cost: a few bucks ...). The construction kit offers a PCB, LC-Display, Neopixel color led for indication of active configuration and optional modules (pressure sensor for sip/puff use, Bluetooth module for wireless access to phones/tablets etc.) Following documentation is available for these different approaches:

Building and Installing the Firmware

The FABI system consists of a firmware part which runs on the Arduino Pro Micro microcontroller. The firmware can be updated / uploaded directly from the Configuration Manager. Alternatively, you can build and upload the fimware using a recent version of the Arduino IDE. Besides the Arduino framework, the following libraries are used und must be installed before the firmware can be compiled:

Please follow the installation instructions in the respective github repositories.

Bluetooth AddOn

FABI supports the connection of an optional Bluetooth Module. The easiest way to use this module is to build the construction kit, because the PCB offers a dedicated 10-pin connector which fits the module. Pairing process and firmware update for the BT-module will be described in the user manual soon!

FABI PCB version, equipped with Bluetooth Module

Example setups and applications

An opened FABI box, where you can see the Teensy microcontroller board and the 6 jackplugs A wooden piece with 6 buttons, arranged between, left and right of your hands. Enabling faster working with shortcuts on each button A FABI box, where 3 different external buttons are connected

More examples are available in the wiki.

Links and Credits

Most of the work for FABI has been accomplished at the UAS Technikum Wien in course of the R&D-projects ToRaDes (MA23 project 18-04) and WBT (MA23 project 26-02), which have been supported by the City of Vienna, see: ToRaDes Project Information, Webpage WBT project.

Have a look at the AsTeRICS Foundation homepage and our other Open Source AT projects:

  • AsTeRICS: AsTeRICS framework homepage, AsTeRICS framework GitHub: The AsTeRICS framework provides a much higher flexibility for building assistive solutions. The FLipMouse is also AsTeRICS compatible, so it is possible to use the raw input data for a different assistive solution.

  • FLipMouse: The FLipMouse controller: an open source alternative input device for controlling computers and mobile devices with minimal muscle movement.

  • FLipPad: The FLipPad controller: a flexible touchpad for controlling computers and mobile devices with minimal muscle movement.

  • AsTeRICS Grid: Asterics Grid AAC Web-App: an open source, cross plattform communicator / talker for Augmented and Alternative Communication (AAC).

Support us

Please support the development of FABI by donating to the AsTeRICS Foundation:

   

fabi's People

Contributors

benjaminaigner avatar chrisveigl avatar deinhofer avatar fussthalerandreas avatar gloesslp avatar klues avatar ma0027 avatar sabicalija avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fabi's Issues

No possibility for writing a "\"

It is not possible for writing a backslash (e.g. inside of the commandline) because the KW command does not print it and with KP there is no possible KEY for the "ß" button on a german Keyboard. Without this it is only possible to navigate your disc within the commandline via copy pasting the path that you want to use.

Button Action: Changing between Tabs deletes previous value

When opening the action of a button to (re)configure it, the currently set value is deleted as soon as you change the tab (e.g. from Mouse to Keyboard) and back again:

grafik

This is annoying as sometimes you only want to check other options.

Problem when changing slots with long-press and double-press combined

I have configured 3 Slots:
In the first two slots i change to the next slot by double pressing a button.
In the last slot i change to the next slot by a long-press of a button.

First Problem:

As soon as i want to change from the last slot to the first by a long-press, the firmware seems to get two "slot change" - AT commands and skips the first slot.

Second Problem:

When i change the slot by a double-press, the action of the next slot on the corresponding button gets activated.
For example: I have configured slot 3 for left and right mouse clicks with two buttons. I am currenctly at slot 2 and want to change to slot 3 by a double press. As soon as i do that, the mouse click of the third slot gets activated too.

To reproduce this issue i attached a file with the settings i tested with:
FABI-config-2021-12-15.zip

New Button Action: Action according to analogue input value

It would be great if you could map the sensor value (e.g. of a pressure sensor) to an analogue action.
e.g.
move the mouse cursor in x-direction by the amount of the pressure change.

This could be useful for all commands requiring a decimal number as parameter. In this case you could provide the name of the input pin, e.g.:

AT MX +A0

or even with a simple signal processing

AT MX +2*A0

CManual changes

Clarify resistor colors in manual or change constructions kits.

Mouse movement: AT MX assigned to a button has different behaviour than FLipMouse

Reproduce:

  1. Assign mouse movement with step size 1 to a button on both FLipMouse and FABI
  2. Press the button

Result:
On FLipMouse mouse begins to move immediately, on FABI I have to wait and press the button for about 1 second until mouse begins to move. If the value for mouse movement is higher (e.g. 5 or 10), the time to wait is shorter.

ProMicro RX/TX LEDs

When using the Bluetooth Addon, its LED is not clearly visible compared to the Arduino Pro Micro's RX/TX LEDs.

Should we switch off these LEDs?

pinMode(LED_BUILTIN_RX,INPUT);
pinMode(LED_BUILTIN_TX,INPUT);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.