Quand le robot appuie sur les boutons d’une télécommande à votre place

J'ai bientôt achevé mon projet domotique en mode "Professeur Foldingue", qui consiste à piloter la domotique par commandes vocales, comme dans star trek ("Computer, tea, earl grey, hot!) La chaine logicielle inclut :

  1. Un module de reconnaissance vocale qui envoie des ordres sur le réseau et récupère des états (Fonctionne avec un kinect et un pc windows).
  2. Un raspberry pi hébergeant un serveur recevant des ordres, exécutant des scripts et envoyant des retours d'état
  3. Un servomoteur actionné par le raspberry (le servo est actionné selon un script python dédié. Ce script peut recevoir deux ordres "ouverture" et "fermeture".)
La dernière étape est la fabrication d'un "stand", sur lequel sera posée la télécommande des volets électriques. Le servomoteur sera vissé ou collé sur ce stand et appuiera soit sur le bouton pour monter les volets, soit le bouton pour les descendre. Pour la conception, j'ai utilisé openSCAD, un logiciel de modélisation 3D en lignes de commandes, très puissant. platine-sarah-volets   Si vous voulez reproduire, voici le script fait à l'arrache totale, donc forcément très optimisable ;-).   [code=php] module telco() { cube([45.15,129,16]); }   module servoSG50(){ union(){ cube([longueurServoBoitier,largeurServo,hauteurServo]); translate([0,0,24]){cube([longueurServo,largeurServo,12]);} }   } epaisseur=2;   hauteurTelco=16; largeurTelco=45; longueurTelco=129; hauteurServo=36; longueurServo=30; longueurServoBoitier=22; largeurServo=12;   largeurPlatineServo=largeurServo*2;   largeurPlatineTelco=largeurTelco+2*epaisseur; longueurPlatineTelco=longueurTelco/3;   difference(){ union(){ cube([largeurPlatineTelco,longueurPlatineTelco,8]); translate([0,(longueurPlatineTelco-largeurPlatineServo)/2,epaisseur]){ difference(){ cube([epaisseur,largeurPlatineServo,longueurServo+hauteurTelco+epaisseur]); translate([0,(largeurPlatineServo-largeurServo)/2,hauteurTelco+(longueurServo-longueurServoBoitier)/2]){ cube([epaisseur,largeurServo,longueurServoBoitier]); } } } translate([-epaisseur,(longueurPlatineTelco-largeurPlatineServo)/2,0]){cube([epaisseur,epaisseur,longueurServo+hauteurTelco+epaisseur]);} translate([-epaisseur,(longueurPlatineTelco-largeurPlatineServo)/2+largeurPlatineServo-epaisseur,0]){cube([epaisseur,epaisseur,longueurServo+hauteurTelco+epaisseur]);}   } translate([epaisseur,-longueurPlatineTelco,epaisseur]){telco();} } [/code]  Mise à jour : Ce stand ne fonctionne pas en ABS parce que le plastique est trop flexible. Il faudra refaire un essai en PLA (plus rigide) ou bien revoir la structure, par exemple en augmentant l'épaisseur dans le fichier paramétrique.