Hello everyone.
I welcome you to my last summary blog. Today I want to conclude Experimenting with Gesture Sensors contest, summarize what I have done and summarize what I have learnt.
Blog posts
As part of contest, I published 15 blog posts (+ this one). Only 2 blogs were required but it was fun for me and enjoyed writing all the blogs. In every blog post I try to publish some of my findings about MAX25405 Gesture Sensor and status of my experiments. Following list contains links to all blog post which I have published as part of contest.
- Blog #1: Introduction to my Maxim Integrated/ADI MAX25405 Gesture Sensor Experiments
- Blog #2: Unboxing and Powering MAX25405 Evaluation Kit
- Blog #3: Experimenting with MAX25405 EVKIT GUI Program
- Blog #4: Building stand for MAX25405 EVKIT
- Blog #5: Experimenting with MAX25405EVKIT UART API
- Blog #6: Connecting to MAX25405EVKIT using Web Browser and TypeScript
- Blog #7: Debugging Maxim’s Firmware Framework Crash
- Blog #8: 12V Accident
- Blog #9: Gesture Controlled Tetris
- Blog #10: C Library for Low-Level MAX25405 Control
- Blog #11: Undocumented features of MAX25405
- Blog #12: Time-driven swipe gesture detection library
- Blog #13: Improved Time-driven Swipe Gesture Detection Library
- Blog #14: Gesture Controlled Pacman
- Blog #15: Experimenting with Two MAX25405 Kits
As you can see, it is lot of content! In PDF all these blog posts occupy 97 pages of size A4. Blogs consists of 150 662 characters including spaces. Blogs contain 111 images and 7 videos.
In my blogs I described not only performance of MAX25405 Gesture Sensor but also several aspects of development with this sensor, issues which I faced, debugging techniques, other used technologies like modern JavaScript APIs which I used as part of project, my own library and gesture detection algorithm and finally, I of course posted showcase of my final implemented projects.
Interactions with Other Challengers
As part of competition, I also helped other members. MAX25405 is simple sensor allowing very complex usage and some other challengers run very soon to the issues. I tried to help them as much as possible. Even before competition started I helped in discussion of contest description page help and understand operation of the sensor, its properties, topology of the evaluation kit, possible methods of using this kit and few other. It was quite a hard because at this time I had not any prior experiences with MAX25405, and documentation was the only source of information which I used for helping other members.
After competition started some issues with this complex system soon arrived and some members start asking on the forum. The longest thread is Establishing serial communication over UART instead of USB in MAX25405 EVKIT. In this thread I helped with compiling Maxim Firmware framework, making firmware flashable to the microcontroller using bootloader and then with debugging crash of this firmware after issuing problematic command. Thread is very long and as of today (2022-01-03) It contains 89 replies (many of them is written by me). Based on debugging initiated when helping in this forum thread I later wrote whole blog (Blog #7: Debugging Maxim’s Firmware Framework Crash) about it.
I also helped members in private messages. Members asked me about recovering stock MCU firmware after they overwrote their firmwares and also about some parts in Maxim code which was hard to understand. The same I later answered on the forum.
Experiments and Projects
As part of competition, I originally planned to make 3 projects testing MAX25405EVKIT in three possible setups.
The first setup was using simple UART API which offers evaluation kit. Then I want to go lower and use library provided by maxim for detecting gesture and later I want to develop last game with my own gesture detection algorithm. But later I (and other challengers) realized that Maxim gesture detection algorithm implementation is incomplete and do not contain full code needed for detecting gesture, so I had to give up second project and instead directly go to implementing my own algorithm for third project.
At the end my Gesture Controlled Tetris is the game which is implemented using most simple approach with UART API and Pacman is game relying only on my own code and utilizing my own libraries which I created as part of competition and also utilize my own gesture detection algorithm.
As part of competition, I did not limit myself to project only, but rather I did several other experiments. Some of them I described in my blogs.
When designing projects, I decided to prefer using components from Maxim Integrated (now ADI) because Maxim sponsored this competition. I did not limit myself to devices provided in the kit but rather I also used other interesting chips from Maxim Integrated. I used following Maxim chips and boards in my projects (and experiments):
- MAX25405: Gesture Sensor. All my blogs are about this part.
- MAX32620: Microcontroller which come with the gesture sensor evaluation kit. This microcontroller I used in my Tetris project.
- MAX78000: In my second project (Pacman) I used this more powerful and newer Maxim microcontroller on MAX78000FTHR board.
- MAX16935: MAX16935 is my favourite DC/DC Step-Down voltage regulator. I use it on my own PCB which I designed as part of previous competition.
Gesture Controlled Tetris
My first project was implementation of Tetris game controlled by gestures. I implemented this game as an online game. It runs directly in web browser, and you can play it directly from https://gesture-tetris.fun/ domain which I bought for it. This game utilizes very modern JavaScript API for interfacing with serial ports from web browser. Internally game connects to the UART interface of the MAX25405 Gesture Sensor evaluation kit and use it for getting information about gestures. It works with the evaluation kit without any reprogramming and flashing needed.
Gesture Controlled Pacman
My second game is more advanced and took me much more time to implement. It is controlled by my own firmware. I also developed my own gesture detection algorithm for this project. Instead of using web browser API in this project I used physical embedded TFT LCD display and build a stand which converts this project to full featured (but simple) gaming console.
Experiments
Except project I did several experiments. In my blogs I described following experiments:
- At the beginning I was experimenting with the UART API and tried modern JavaScript API for interfacing with it. In blog Blog #5: Experimenting with MAX25405EVKIT UART API I described my first experiments with UART API and in blog Blog #6: Connecting to MAX25405EVKIT using Web Browser and TypeScript I shown JavaScript API for accessing HW from web browser. Experiences gained by these experiments I reused when implementing my first project described above.
- Later I did several experiments to discover hidden features of MAX25405 Gesture Sensor which are not mentioned in datasheet. Outcome from this experiments I described in Blog #11: Undocumented features of MAX25405.
- Finally, I tried connecting two MAX25405 Evaluation Kits together and test option to synchronize two kits for preventing infra-red LED interference. This experiment I described in Blog #15: Experimenting with Two MAX25405 Kits.
Closing
At the end I am very satisfied with MAX25405 Gesture Sensor. I learnt a lot of new things including some signal processing techniques, implemented my own two gesture detection algorithms, tried interface with hardware from web browser, debugged very interesting issue with crashing firmware, faced critical situation when I burned my kit, reworked burned kit a later was able to test advanced modes of the sensor, changing its properties and testing it in dual-sensor operation mode. For me it was very funny time. It cost me lot of free time in recent more than two months but generally I am satisfied.
Making gesture-controlled game was fantastic idea because in games I was able to see how some properties of the gesture detection algorithm affect quality of the overall user experience. Games often requires quick action and even functional detection algorithm can very quickly get under the stress. Then all his caveats and disadvantages get very quickly disclosed. Evaluating gesture sensor with game provide much more accurate overview about the sensor in comparison with other general-purpose use cases for the sensor. MAX25405 withstand all my experiments and I was able to successfully implement and play both games. It is good sensor. With only 60 pixels it can do very big things. Much more than I expected when I was applying for this competition.
At the end I would thank Element14 staff for organising this contest and sending me this excellent advanced gesture evaluation kit for free. I would also like to thank Maxim Integrated (now ADI) for sponsoring this contest and finally, I would thank all readers of my blogs and especially members who commented and gave me very valuable feedback on my blogs. If you are interested in any part, you still can ask in the comments below or in the comments section of any other blogs. Thank you for reading and have a nice day.
Next blog: Blog #17: Received Experimenting with Gesture Sensors Reward