I welcome you to my first blog as part of Experimenting with Gesture Sensors competition. Thank Element14 and Maxim Integrated for selecting me as a sponsored challenger and sending me MAX25405 Evaluation Kit for free. In this blog post I will describe my plans as part of competition. Before I will speak about my plans, I want to briefly describe MAX25405 gesture sensor, what is it used for and how it works. My Kit is currently somewhere between USA and Europe but for summarizing plans as part of competition it is not needed. According to UPS tracking it should arrive at Tuesday but because I am out of home, I will not see it by Friday.
Currently I am student at FIT CTU in Prague. Most of my free time in last years I spend with electronics and contributing to element14 community. My interest is mainly in digital electronics. I like all microcontrollers ranging from 8-bit AVRs to most complex high-performance ARM Cortex SoCs. I like using them for interfacing with sensor and connecting to cloud. In last months I joined some competitions on Element14. I won Experimenting with Current Sense Amplifiers and currently I join Experimenting with Thermistors and currently also compete in Summer of Sensor Design Challenge.
MAX25405 Gesture Sensor
MAX25405 is optical gesture sensor developed by company Maxim Integrated which is now as part of company Analog Devices. It is used for detecting gestures like swiping hand from left to right in the front of the sensor. It is used for adding user interface to the application. This user interface works without need to touch any device and do not require precise positioning of user finger or hand. Main application is in automotive which is typical market requiring touch-free user interface because user should focus on driving and not a searching buttons of entertainment panel. For this reason, MAX25405 is automotive grade. MAX25405 is AEC-Q100 Qualified.
MAX25405 gesture sensor is implemented using proximity sensor. Proximity sensor is used for detecting nearby object like user hand. One proximity sensor is enough for detecting presence of object, but it does not suffice for more advanced detections like advanced gesture detection. For this reason, MAX25405 has not only 1 proximity sensor, but it has array of 60 optical proximity sensors organized as a grid of 6x10 sensors. You can simply realize that for example detecting gesture from a left to right works in a way that sensor sense change in left segment of proximity sensor array sooner than it detect similar change at right segment of array. For detecting gesture, it is important to process data from proximity sensors somehow. Some sensors have internal engine but MAX25405 does not. Instead MAX25405 gives you all data over I2C digital bus to your processor and then you can process them according to your needs. You can for example deploy simple timing algorithm for detecting left to right gesture as mentioned above, but you can also deploy more sophisticated algorithms. You can also change algorithm even in runtime which is impossible with sensors with integrated hardwired processor for processing gestures internally.
MAX25405 Gesture Sensor Evaluation Kit
As part of competition, we will use sensor as part of evaluation kit referred as MAX25405EVKIT. The kit consists of three boards:
- Sensor board featuring Maxim Integrated MAX25405 sensor and additional required components.
- Microcontroller board featuring Maxim Integrated MAX32620 Low-power ARM Cortex-M4 microcontroller.
- Shield board which is used for interfacing between sensor and microcontroller board.
Microcontroller bundled as part of Kit is preprogramed with firmware which should implement algorithm for detecting gestures and UART interface for providing information about detected gestures. Maxim for this EVKIT (like almost any other Maxim’s EVKIT) provides PC program which communicates with the microcontroller and can visualize results and data from sensor. This is big difference in comparison with Maxim’s previous sponsored contest Experimenting with Current Sense Amplifiers. In previous competition Kit we received click board and not the EVKIT, so we were unable to use GUI software provided by Maxim. Now this would be easier.
And now let’s go to my plans as part of competition.
Very soon after I receive kit, I want to learn basic usage of MAX25405 Evaluation Kit and then I want to summarize my findings and write some tutorials. Before I joined this competition, I was analysing MAX25405 and Evaluation Kit documentation and related documents. After a time spend with documentation, I think I understood most main concepts of MAX25405 gesture sensor and its evaluation kit, but I still must learn many details and specially see sensor performance, accuracy and so on. I think structure of MAX25405 evaluation kit is quite a complex. It consists of multiple PCBs, it is powered by multiple voltage levels, it utilizes advanced firmware as part of bundled microcontroller and additional advanced programming API is also download at Maxim website. All this makes this evaluation kit advanced toy which definitely is not the easiest hardware which we have seen on Element14 community this year. For this reason, I think tutorials will be helpful. Maybe they help other challenger or maybe just they help someone else who will want to work with this gesture sensor later.
Gesture controlled games
After I learn sensor and all its parts, then I will develop my main project(s) as part of this competition: Gesture controller games. I plan to develop multiple classic games like Pacman or Tetris with different technologies deployed. All of them will have something in common – they will be controller by gestures instead of classic keyboard control. I think I will have lot of fun when developing these games.
I plan to develop two or three these games and develop them differently. I want to try developing one game with psychical display and second as a computer or web application utilizing new HTTP 5 APIs for working with hardware devices. MAX25405 Evaluation Kit allows working with gesture sensor at multiple levels of complexity. I want to try work with device at multiple level of complexity and develop every game differently.
MAX25405 Evaluation Kit “Modes of Operation”
As I briefly mentioned at the end of previous section MAX25405 Evaluation Kit allows us to work at different levels of abstraction and complexity. Text in this section comes from my findings from documentation which I gained when researching before I decided to join competition. I also mentioned them in discussion at contest main page. Note I did not experimentally test all what I describe here because I did not receive evaluation kit yet. Maybe I later realize that some mode of operation which I mention here is for some technical reason (which I did not realized at the time of writing this text) impossible to implement.
First mode of operation is best suitable for this competition, I think. It utilizes all parts of Kit and do not require comprehensive programming. According to some documentation MAX32620 microcontroller as part of microcontroller board is preprogramed firmware which runs quite an advanced algorithm for processing data from sensor and detecting gestures based on these data. After it detect gesture, it will write about it on the serial port. You can connect almost any device you want to this serial port and simply read information about gestures from this port. Biggest issue is voltage level and possibly we will need to use level-shifter.
Second mode of operation involve programming of MAX32620 microcontroller. Maxim provides library written in C which implements algorithm for processing data from the sensor. You can write your app using this library and deploy your code directly to the microcontroller connected to the sensor. Benefit of this solution is that you need one device less because you can use MAX32620 for your own application and detecting gestures at the same time. Disadvantage of this approach is that you need to learn writing firmwares for MAX32620. I have some experiences with similar Maxim microcontroller MAX32625 (differing in only last digit 5). I used this microcontroller in previous competition as part of one project: MAX40080 Blog #11: USB Type-C Power Delivery monitoring. So, for me it should be easy to develop firmware for this microcontroller and I will try this approach as part of one game project.
Third possible mode of operation is similar to second one but replaces MAX32620 board with your own microcontroller or single board computer or other I2C capable device. Working with sensor in this way will require spend more time with porting its library but generally allows you achieve results faster because you most probably will spend less time with programming MCU which you are familiar with. I most probably will not go this way, because it is similar to previous one and I can develop firmware for MAX32620 MCU, so this is not issue for me.
Fourth approach is like second and third in the terms of hardware connection but significantly differ at software side. In all previous approaches gesture detection library from Maxim was used. This library reads data from sensor and estimates gestures based on data. But you of course can deploy your own algorithm for detecting gestures. Algorithm for detecting gestures is most complex part of this system. In fact, sensor interface is very easy. It has only few configuration registers and most of the I2C register address space is used for providing analog measurements from 60 proximity sensors. Based on these data you can write your own algorithm allowing you to for example detect different gestures than Maxim’s algorithm do. I do not plan to go so deep. I do not think I am able to develop better algorithm than Maxim did but depending on level of free time maybe I will try to work with sensor at this low-level process data somehow.
Last, fifth mode of operation, can be applied to third and fourth approach. Technically you do not need to use shield provided as part of evaluation kit, but you can power and connect directly to the sensor without this shield. This is most complicated way because you need to solve lot of challenges on both software and hardware side, but it is of course possible to work with sensor in this way.
As you can see there are multiple options how to use Evaluation Kit as part of this contest. They range from very simple to very advanced requiring advanced connection, powering and firmware development. As part of contest, I plan to implement my games using several options described above.
Thank you for reading this article. In this blog post I introduced hero of this contest - MAX25405 gesture sensor. Later I described my plans and some (currently theory) about possibilities and approaches of using MAX25405 evaluation kit. In the next blog post I will show MAX25405 evaluation kit after I receive it. I like to hear any feedback about my plans as part of this competition so feel free to comment below.