Mohit Ahuja's Fabacademy 2021
Final Project Tracking
This page will be used to track the progress of my final project idea. i.e. CADA
Before I share my progress, here is a bunch of projects that have been done regarding this idea in the DIY and Commercial space:
Now that we have gotten that out of our way, I will describe my progress here in detail:
So what does CADA do?
The purpose of CADA is to partially replace the conventional keyboard and mouse interface that is used in CAD softwares and instead use a series of hand gestures and hotkeys to act as a quick way of navigating and manipulating objects in 2d and 3d space.
Here are a list of features that I would like CADA to have:
- Wireless
- Battery powered
- Long range
- Easy to put on and take off
- Should not cause sweating or discomfort
- Easy to store
- Ability to reprogram gestures easily.
Based on this information, I imagine that I would require the following sensors to achieve this:
- Accelerometer/Gyroscope
- Some kind of flex sensor
- Some kind of digital inputs
- Some kind of tap or vibration sensors
I would also like to have the following output devices:
- A status LED that tells basic info such as connectivity, battery level etc.
- A port for connecting an OLED display that can show more detailed messages.
And of course, since CADA needs to be wireless, I need it to have a Wireless communication device, for which I have decided to go with RF, since it gives long range along with low data loss, and it is easy to network multiple.
Apart from these, there might be other essential components such as a battery charging circuit, a boost converter, voltage regulators.
I would also like to add some extra features such as a multimeter attachment that converts my device into a portable multimeter, which was one of my final project ideas too, so I will probably take some inspiration from that.
List of achievable: Here I would like to list some of the things that I expect my device to do:
- Move the mouse based on information from accelerators in my hand.
- Clicking/Scrolling with the help of capacitive touch pads.
- Combining different touchpads to create different keypresses.
- A port for attaching multiple different modules to it.
The project is designed to consist of three transceivers , two at the hands and one at the USB receiver that plugs into the computer and relays the data to it.
On the design side of things, I am inspired by Neil's approach of making nodes instead of monolithic devices. So my device will have multiple nodes that connect to each other. Essentially each finger would be an independent node that sends data over serial to a central hub board. This makes the code for the central hub much less complicated and distributes the tasks between different modules.
Input Sensors
I wanted to test the output of the capacitive touch sensor and for sensing I am actually using a library known as the ADCTouch Library, which converts any analog pin into a Capacitive Sensing Pin using the internal pullup resistors of the MCU. This has been successfully tested with Arduino UNO and Nano, but this would be the first account of using this sensor on an Attiny45. And as you will see in the demo videos below, it works pretty reliably.
Here is the video of the trial of the sensor with the Arduino UNO.
Here is a similar sensor and code for the attiny45:
This is a weird effect I noticed while working on Interfaces Week, where I was sending a simple 0, 1 and -1 integer values over the serial monitor and my mouse started to go crazy, almost as if the attiny45 was emulating a USB mouse.
Now I know that the Digispark Modules are already documented to behave like USB HID devices and there is infact a dedicated library to do that called the the DigiKeyboard.h. But in this code I wasn't using that library so I'm not sure what's going on. I will investigate this further later.
Output Device
In Output Week, I created an OLED LCD Driver and did a few sample programs with it. I will be using this to display information about the module's connectivity status, maybe even it's power level, who knows.
Networking and Communications
I'm working on a network of three modules, two wearables and one connected to the computer that can be used to control the mouse and keyboard.