08/01/2018 at 18:52 •
After some testing with the code I finished the project. Here's a video showing how it works (using the TJBot cardboard head as a model):
Some future improvements and lessons learned:
* Initially I wanted to control the two lens individually. Howerver, at the time I only had one servo. Since they are very lightweight, adding another servo on the other side wont increase that much the overall weight of the glass
* I was wanted to control the lights that are close to each lens, but I did not follow through. If anyone want to do that open the cases where you can replace the tiny round watch power battery and attach a cable to one of the GPIO's of the RPI Zero W. This should be an easy task but requires extra programminng to active the leds.
* I could create a better cable management and print 3D parts to accomodate the servo and the supporting ice screen stick instead of the hot glue. Maybe this will come in a next version of the prototype.
* There are alternatives for the hardware. For instance, I could replace the RPI Zero W with a tinyduino and two tinyshields: one to allow bluetooth communication with a mobile phone (which would capture the audio and do the STT) and one to connect the tinyarduino to the servo (the Proto Board TinyShield).
* Another option I had was use a voice assistant device such as the amazon echo or GoogleHome to receive the audio. However, this approach may have some issues when doctors use masks on their faces. I tested this scenarion with the USB microphone connected with the RPI Zero W and have no problem to understand the two commands (up and dow).
08/01/2018 at 18:37 •
Among all the options I had to recognize the user voice commands I choosed the Watson Speech to Text service. This choice was based on how simple is to use the service after creating an evaluation account. Also, they provice simple examples of API calls using NodeJS.
I was wondering how to keep a constant open connection with the service and receive events when specific keywords were spoken, i.e. UP or DOWN. Instead of programming everything from scratch I used the TJBOT lib, a NodeJS project that was used for the IBM's TJBot cardbord robot. This allow me to have a prototype with very few lines of code. Here's the link for it:
08/01/2018 at 18:33 •
I stared to search with type of hardware I should use in this project. My natural choice was an arduino (maybe a tyniduino) since I need something lightweight that can be fixed on the glass rim.
However, since I was going to use audio I needed a microphone and sound processing features to record and audio file and send it to a STT engine. Therefore I choosed and Raspberry Pi Zero W, which can connect to the servo using the GPIO and also allow a small USB microphone.
To power up the RPI Zero W I try some battery packs and other approaches, but all of them insert some extra weight in the glass that make it cumbersome and fatige factors when wering the glass for some time.
My solution was simple: use the RPI Zero W fixed in the rim of the glass and connect the micro USB power cable to a powerbanl that should be stored inside a pocket of the user's pants. This way the weight of the power source is not on the user face.
08/01/2018 at 18:25 •
After the initial ideia I was the following thought:
Its such a 90's looking project!
Moving on, I searched for similar project and did find any! Indeed, the available comercial solutions for sugeons and others did not have voice automated lens. I found fancy models with many lens and lights, but all of the are manual.
After I while I talked with my dentist and she confirmed to me that there are no voice activated glasses to control the lens and lights.
08/01/2018 at 18:20 •
I had the ideia for this project when I give on of these magnifying glasses to my stepsister, which is a veterinarian:
I know these are used by watchmakers and are not medical graded products. Nevertheless, I wonder how I could modified to make it easier to move up and down the lens. After studying the mechanism (which is very nice use of plastic) I decided to automate the movement of the lens with voice commands.