Git Product home page Git Product logo

flipmouse-esp32's Introduction

FLipMouse goes ESP32

This repository contains the ongoing progress on the firmware for the FLipMouse version 3. It will be API-compatible with FLipMouse v2, but with major improvements on speed (instead of one CortexM0 we will have a dual-core Tensilica and an additional CortexM0 for USB).

If you want to have a look at the FLipMouse v2, follow this link to the main repository.

The BLE-HID stuff is based on the other repository, where we use the ESP32 as BLE module replacement.

Online demo version of Web GUI: https://asterics.github.io/FLipMouse-esp32/

Following 3 steps are necessary to completely update/flash the firmware and the necessary support files/devices:

Building the ESP32 firmware

Please follow the step-by-step instructions of Espressif's ESP-IDF manual to setup the build infrastructure: Setup Toolchain

Note: Due to frequent breaking changes within the esp-idf and all build tools, we recommend to use a specific version of the tools:

  • release v4.1 (on 04.02.2020)
  • master branch (on 04.02.2020)

To get this version, use the following commands:

git clone -b release/v4.1 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh
. ./export.sh

Now change your directory into the root directory of this repository.

Create the sdkconfig:

  • Execute make menuconfig in this directory
  • Change: Serial flasher config -> Flash size to 4MB
  • Change: Partition table -> Partition table to Custom partition table CSV
  • Change: Component config -> Bluetooth to enabled

Optional (for runtime statistics):

  • Change: Component config->FreeRTOS->Enable FreeRTOS trace facility to enabled

Optional (extensive stack/heap debugging):

  • Change Component config->Heap memory debugging->Heap corruption detection to whatever you need

After a successful setup, you should be able to build the FLipMouse/FABI firmware by executing 'make flash monitor'.

Building the LPC11U14 firmware (USB bridging chip)

The dedicated USB chip firmware is located in this repository: usb_bridge. Please clone this repository, and import it into the MCUXpresso IDE.

You can download the IDE here: MCUXpresso IDE

After a successful build, you need to flash the firmware to the LPC11U14 chip. We recommend using a development board by Embedded Artists, because it is very useful for initial testing & debugging. It is possible to split this board into two pieces, one LPC11U14 target and a JTAG programmer, which we use on a fully assembled FLipMouse. Please refer to the corresponding documents of this board how to connect the JTAG header to our FLipMouse (will be announced as soon as the PCB is final).

LPCXpresso development board:

LPCXpresso 11U14

Uploading the WebGUI

The FLipMouse with ESP32 contains a web interface for customizing the parameters. The web page itself is located in the FAT partition as the config data.


TBA: I think it is very easy to use mkfats by copying the component into ESP-IDF and simply call make mkfatfs to build the tool and make flashfatfs to upload the image.

BUT we have a 8.3 naming convention here...

Currently proposed workflow:


Please clone/download the mkfats tool, and copy the folder ESP32_mkfatfs/components/mkfatfs into your ESP-IDF's components path.

Execute make mkfatfs in this repository to build the mkfatfs tool.

If you want to update the webpage on the FLipMouse/FABI device, execute:

make makefatfs flashfatfs

WARNING:** All your slot configuration and IR commands will be deleted by this operation.

WARNING: THIS IS EARLY WORK IN PROGRESS

Acknowledgements

Supporters, MA23, people using this device and many more for input.

ESP-IDF developers for HOG testcode

mkfatfs project

thanks to Luca Dentella for the esp32lights demo, see http://www.lucadentella.it/en/2018/01/08/esp32lights/

thanks to Jeroen Domburg and Cornelis for the captive portal DNS code, see: https://github.com/cornelis-61/esp32_Captdns

thanks to Thomas Barth for esp32 Websocket demo code, see https://github.com/ThomasBarth/WebSockets-on-the-ESP32/

thanks to Lucas Bruder for the Neopixel library for ESP32, see https://github.com/Lucas-Bruder/ESP32_LED_STRIP/

flipmouse-esp32's People

Contributors

benjaminaigner avatar dependabot[bot] avatar klues avatar sabicalija avatar

Stargazers

 avatar  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

flipmouse-esp32's Issues

Add IR command support to Web GUI

The configuration GUI currently does not support recording or playing back infrared commands.
A new tab IR configuration should be added with the possibility to:

  • record new IR commands
  • play back recorded commands
  • delete commands

Accessibility issues for web configuration

The current web configuration already has several accessibility features (accesskeys, live-regions, hidden headers, ...) and was tested with ChromeVox screen reader in Google Chrome. See the current version at:
https://asterics.github.io/FLipMouse-esp32/index.htm

However these issues still could be improved:

  1. add accessible tooltips for technical terms like "Deadzone", maybe like these https://www.barrierefreies-webdesign.de/knowhow/tooltip/tooltip-mit-aria.html
  2. Many inputs on the configuration page directly change the configuration of the FlipMouse (sensitivity, sip/puff levels, slot selection, ...) and do not have any "submit" button. While this may be comfortable for some users it is maybe also suboptimal for users of screen readers. Maybe there should be a test and a save button like in the old C# configuration GUI? However the comfortable "live" editing of the configuration would be lost.

Create adapted copy of the Web Configuration GUI for FABI

Introduction

This github project is both for the new version of the FlipMouse and for the new Version of FABI:

  1. FlipMouse = Lip mouse, see http://www.asterics-academy.net/tools/flip
  2. FABI = Button interface, see http://www.asterics-academy.net/tools/fabi

Both use nearly the same Firmware, the same communication protocol (see AT API), and therefore it makes sense to also use (nearly) the same Web Configuration API.

Goal

The goal of this isssue is to split the current source folder of the Web GUI in two folders:

  1. webgui/flipmouse/ --> containing the current contents of the spiffs_content folder
  2. webgui/fabi/ --> containing a copy of the current contents of the spiffs_content folder, but adapted to the FABI.

Adaptions for the FABI Web GUI

Compared to the current Web GUI for the FlipMouse (see it at https://asterics.github.io/FLipMouse-esp32/ ) the following adaptions are needed for the FABI Web GUI:

  1. General appearance, see Screenshot 1
    1.1 Header is "FABI Configuration"
    1.2 Tab "Basic Setup" should be removed
    1.3 Tab "Sip and Puff" should only be visible if Live-data is provided by the FABI device (see method "parseLiveValues()" here)
    1.4. By default only the Tabs "Slot Configuration" and "Action Configuration" should be visible
  2. Changes in Tab "Action Configuration", see Screenshot 2
    2.1 FlipMouse Mode is not needed for FABI -> should be removed
    2.2 In "Actions to define" FABI has more possible buttons
    2.3 Sip/puff actions in "Actions to define" should only be shown if "Sip and Puff" tab is also shown
  3. Design
    3.1 Maybe it would be nice if the FABI page has a different color theme (e.g. green instead of Blue) in order to make it possible to easily distinguish between them.

info on hardware

Would love to help out (/build this) - to point me in the right direction do you have a quick BoM that you can provide?

Add "Acceleration" and "Maxiumum Speed" to Basic configuration tab

The tab "Basic configuration" currently does not have the possibility to set the "acceleration" (AT AC, [0-100]) or the "maximum speed" (AT MS, [0-100]).

There should be two additional sliders in the Tab "Basic configuration". However it possibly makes sense to hide them by default and only show them by link (like "x/y" separation now), because most of the users will not need to change these values.

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.