/c-challenge-DeepDeck

a 2 hour mini hackaton challenge

Primary LanguageC

DeepDeck Ahuyama

To know more visit https://deepdeck.co and https://linktr.ee/deepdeck

DeepDeck is an open source 5x5 mechanical keyboard, using ESP32 microcontroller. This repo contains the firmware.

Here are the features:

DeepDeck features

βœ… - Implemented

🚧 - In process of improvement

πŸ“ - In the roadmap

πŸ’¬ - For feature releases/depending on the community votes

Software Features

  • βœ… Keys:
    • βœ… Single Key (any key as you regular keyboard)
    • βœ… Media key (like volume up/down, play, pause)
    • βœ… Macro ( like Ctr+c, Ctrl+alt+supr)
    • βœ… Mouse control (move x, y, scroll, etc)
    • πŸ“ String of characters, like passwords, or fast answers.
    • βœ… Layer change
    • πŸ“ Change RGB sequence/settings
    • πŸ’¬ Tap dancing (More info here and here)
    • πŸ’¬Mod - Tap (info here)
    • πŸ’¬ Leader Key (info here)
  • βœ… Knobs:
    • βœ… 5 gestures per knob (Clock-wise rotation, CCW rotation, single push, double push, long push)
  • πŸ“ APDS-9960 aka Gesture sensor (Like this or this)
    • πŸ“ Gesture sensor - 6 gestures: Swipe up, down, left right, approaching, getting away)
    • πŸ’¬ Color sensor
  • βœ… Layers
    • βœ… Based on memory estimations around the limit is 15
    • βœ… Each layers contains the info of
      • βœ… The name of the layer
      • βœ… 16 keys
      • βœ… Name of the 16 keys (5 characters per key)
      • βœ… 5 gesture for the 2 knobs
  • βœ… OLED screen
    • βœ… DeepDeck Splash screen
    • βœ… Shows layer name
    • βœ… Show names of the 16 keys
    • 🚧 Battery status
    • βœ… Bluetooth Status
    • πŸ“ WiFi Status
  • βœ…Embedded OLED menu (hold both knobs down to activate)
    • βœ… Go to Sleep
    • πŸ“ Change sleep settings
    • βœ… Change LED settings:
      • βœ… RGB Pattern
      • 🚧 RGB intensity
    • πŸ“Bluetooth settings
      • πŸ“ List of saved devices
      • πŸ“ Remove item from saved devices
      • πŸ“ Connect to specific device
    • πŸ“ WiFi Settings
      • πŸ“ Current SSID and IP
      • πŸ“ Forget network
      • πŸ“ Initialize web portal
    • πŸ“ Pomodoro timer
    • πŸ’¬ Pong Game
    • πŸ’¬ Simon Says Game
    • πŸ“ Plugins (this will contain connectivity, like API connections, etc)
  • 🚧 Web Portal (This is a self host web portal. You would connect to DeepDeck using its WiFi SSID DeepDeck and password xxx)
    • 🚧 Selection of WiFi credentials (SSID and password)
    • 🚧 Modification of Layers

Known problems and errors:

Trying to update the IDF to prior version 5.0 and above, the deepdeck have some unexpected behavior due the changes in declarations of many variables and the hard changes in some components, the bluetooth doesn't work normal and the LEDs routines became slow.

Actually, the project can be compiled but due the multiple-definitions of variables the declartion was changed to 'static' and that affect the performance in many tasks.

Remain pending to fix the keyboard routine, validate the sharing of some flags along different files and the general status of the queues flow between tasks (in many cases there's variables used in global and results in multiple-definitions.)

Many thanks to: