Anand Vaidyanathan
Published © GPL3+

My Smart Racket Recommender

This project recommends a suitable racket to budding tennis players based on their playing style, physique and fitness levels.

IntermediateWork in progressOver 1 day224
My Smart Racket Recommender

Things used in this project

Hardware components

NXP Hexiwear

Software apps and online services

Evothings Studio
Evothings Studio
ARM mbed OS 5

Hand tools and fabrication machines

Arm Mbed mbed


Read more


Vibration Analyzer Evothings App

The Evothings App helps with the decision-making process after the Racket Vibration data has been acquired.
Img 0580


Racket Decision Making App

Evothings App used in conjunction with the Vibration Analyzer to select a racket.
<!DOCTYPE html>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, user-scalable=no,
    shrink-to-fit=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0">
 <style>@import 'ui/css/evothings-app.css';</style>
 // Redirect console.log to Evothings Workbench.
 if (window.hyper && window.hyper.log) { console.log = hyper.log }
 function displayResults() {
   var vibs = document.getElementById("Vibrations");
   var heal = document.getElementById("Health");
   var rack = document.getElementById("Racket");
   var reco = document.getElementById("Recommendation");
   var recoTxt = '<p>';
   if ('LT10' === vibs.value) {
     recoTxt += '<br/>Very few vibrations were detected!';
     if ('Poor' === heal.value || 'Fair' === heal.value) {
         recoTxt += '<br/>Try dampeners to reduce vibrations even more';
     if ('Heavy' === rack.value) {
         recoTxt += '<br/>Try a lighter racket with similar attributes for comparison';
     } else if ('Light' === rack.value) {
         recoTxt += '<br/>Try a heavier racket with similar attributes for comparison';
     } else {
         recoTxt += '<br/>You might have found your ideal racket!';
   } else if ('LT60' === vibs.value) {
     recoTxt += '<br/>Significant vibrations were detected. Try others before making a decision.';
     if ('Poor' === heal.value || 'Fair' === heal.value) {
         recoTxt += '<br/>This may not be the one for you.';
     if ('Right' === rack.value) {
         recoTxt += '<br/>Try a different brand with similar attributes.';
   } else {
     recoTxt += '<br/>The vibrations are too much to be healthy. Try others.';
   recoTxt += '</p>';

   reco.innerHTML = recoTxt;
 <script src="cordova.js"></script>
 <script src="libs/evothings/evothings.js"></script>
 <script src="libs/evothings/ui/ui.js"></script>
 <!-- TODO: Add libraries that you need -->
 <script src="libs/smoothie/smoothie.js"></script>
 <script src="libs/mqttws/mqttws.js"></script>
<body ontouchstart=""><!-- ontouchstart="" enables low-delay CSS transitions. -->
<button class="back" onclick="history.back()">
<img src="ui/images/arrow-left.svg">
<h1 class="green">Vibration Analyzer</h1>
 <div class="AppBox">
 <select id="Vibrations">
 <option value="LT10">&lt; 10</option>
 <option value="LT60">&lt; 60</option>
 <option value="GT60">&gt; 60</option>
 Playing arm health: 
 <select id="Health">
 <option value="Good">Good</option>
 <option value="Fair">Fair</option>
 <option value="Poor">Poor</option>
 Racket Feels: 
 <select id="Racket">
 <option value="Heavy">Heavy</option>
 <option value="Light">Light</option>
 <option value="Right">Just Right</option>
 <button class="green" onclick="displayResults();">Recommendations</button>
 <p>Status: <span id="Recommendation"> </span></p>


This is an ARM mbed project that analyzes the vibrations traveling from the racket into the arm of the player and gives its verdict on suitability.


Anand Vaidyanathan

Anand Vaidyanathan

3 projects • 2 followers
Developer interested in IoT, Streaming Data, Automotive technology