Un interrupteur gestuel? Non mais!
Le but de cette réalisation est de contrôler des appareils connectés en utilisant des gestes. Le tout dans un interrupteur encastrable.
Cela me permettra de regrouper plusieurs interrupteurs en un seul!
Principe de fonctionnement
Un ESP32 sera la carte centrale pour communiquer avec mon système domotique en wifi.
Un petit module (PAJ7620U2) compatible ESP32 récupère mon geste, et en fonction de celui-ci va envoyer une information à un appareil, une lampe, un ou plusieurs volets roulants.
Les gestes pris en compte:
- Balayage du bas vers le haut
 - Balayage du haut vers le bas
 - Balayage de gauche à droite
 - Balayage de droite à gauche
 - Mouvement circulaire de sens horaire autour du capteur
 - Mouvement circulaire de sens anti-horaire autour du capteur
 - On s’approche du capteur
 - On s’éloigne du capteur
 - Mouvement “de vague” (agitez la main de gauche à droite devant le capteur comme pour lui dire “au-revoir”)
 
Matériel utilisé
La programmation du contrôleur sera basé sur ma bibliothèque eeBud server manager. Vous pouvez la télécharger sur la page dédiée.
- Alimentation 5V 700mA
 - ESP32 mini
 - Module Gestuel PAJ7620
 - Impression 3D sur mesure (télécharger fichier STL)
 
Schéma du montage
															Le programme que j'ai téléversé dans l'ESP
				
					#include 
#include 
eeBudServerManager Serveur("eeBud - Contrôleur gestuel");
int Bouton_Veille;
int Info_Gestuel;
String URL_Gestuel;
DFRobot_PAJ7620U2 paj;
void setup() {
  Serveur.Init(); 
  Serveur.AddParamText("URL Gestuel", "");
  Info_Gestuel = Serveur.IndexAddInfo("Geste", "", "50");  
  URL_Gestuel = Serveur.GetParamText("URL Gestuel");
  while(paj.begin() != 0){    
    delay(500);
  }
  paj.setGestureHighRate(true);
 
}
void loop() {
  Serveur.IndexGetEvent();
  DFRobot_PAJ7620U2::eGesture_t Geste = paj.getGesture();
  if (Geste != paj.eGestureNone) {
    String S_Geste = paj.gestureDescription(Geste);
    
    if (URL_Gestuel != "") {
      String Temp = URL_Gestuel;
      Temp.replace("#VALUE#", String(S_Geste));
      Serveur.HTTPPost(Temp);
      delay(500);
    }
    Serveur.IndexSetInfo(Info_Gestuel, S_Geste);    
    
  }
  
}   
				
			
Quelques corrections après quelques temps d'utilisation.
- Mon contrôleur étant placé dans un lieu de passage, celui-ci capte de nombreux gestes indésirables.
 
J’ai donc ajouté des “sous-menus gestuels”.
Explications: Un premier geste (par exemple balayage vers la gauche) dit à l’ESP que je vais réaliser une action sur mes lumières. Temporisation qui va durer quelques secondes. Si pendant ces secondes un autre geste est confirmé vers la gauche, il envoie la consigne de changer l’état de la lampe de mon salon.
- J’ai ajouté une led RGB qui change de couleur pour chaque “sous-menus gestuel”. (Lampes en jaune, volets en bleu…)
 
															



