TUTOS.EU

Piloter un servo moteur avec un ESP 8266

Dans cette vidéo les frères poulain vont piloter un servo moteur, cad qu'on peut lui dire de combien de degrés il doit tourner.
https://youtu.be/cvuMRMCzv5I?t=230

Ils expliquent que pour cela le firmware Tasmota sur l'ESP8266 des modules Sonoff n'est pas aussi bien que ESPEasy.
ESPEasy prendrait en charge plus facilement plein périphériques comme des capteurs hydrométriques, de pression de l'air etc

Ca c'est l'ESP 8266 qui va être utilisé. Ce n'est pas le même que dans les autres épisodes

On trouve l'ESP 8266 à 10€ sur Amazon :
https://www.amazon.fr/AZDelivery-D1-Mini-d%C3%A9veloppement-compatible/dp/B01N9RXGHY

J'ai cru comprendre que c'est un Wemos D1 ‘compatible’.

Télécharger ESPEasy que l'on trouve sur github sur https://github.com/letscontrolit/ESPEasy
Descendre et aller sur les releases

Cliquer sur la dernière version

La télécharger

Décompresser le zip

On va maintenant pouvoir injecter ESPEasy

Alors sur la vidéo pour flasher l'ESP 8266 ils ont utilisé NodeMCU PyFlasher que l'on peut télécharger ici :
https://github.com/marcelstoer/nodemcu-pyflasher/releases/tag/v2.2

Ils s'en sont servi dans leur second tuto :
https://youtu.be/3aLcRPbp1As?t=300

Ils ont pris se firmware, cad l'ESP8266 1M. Après il faut passer le module en mode boot, cad appuyer sur le bouton du module et l'insérer dans le lecteur usb

Cocher Dual Output, yes et wipes all data

Notez que lorsque l'on télécharge ESPEasy mega, il est livré avec ESP Easy Flasher. J'ai testé et il fait très bien l'affaire.

Avec ESP Easy Flasher je crois que le même firmware c'est celui-ci (à vérifier)

Une fois flashé, il faut se connecter sur le module en wifi pour l'appairer.

Il n'est pas nécessaire de trouver son adresse ip, le module s'expose comme une borne wifi à laquelle on se connecte.

Un mot de passe sera demandé. C'est configesp

De là une page s'affiche et on entre nos paramètres wifi.

Le module redémarre et se connecte sur notre réseau wifi.

 

Au cas où, pour trouver son adresse ip si vous ne la trouvez pas sur la box avec ceci :

  • Scanner IP sur PC : https://www.advanced-ip-scanner.com/fr/
  • Scanner IP sur iOS : https://lfp.yt/o
  • Scanner IP sur Android : https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=fr

 

Maintenant on veut piloter un servo moteur à 12€ nommé Diymore 2PCS MG996R Metal Gear sur Amazon :

https://www.amazon.fr/Diymore-Digital-H%C3%A9licopt%C3%A8re-Voiture-commandes/dp/B07KD6NVPM

 

On va pouvoir définir la position de l'axe au degré près et ça c'est cool.

Le servo moteur et ses fils

Ca c'est le branchement des alims sur la borne nommée 5V et G

Ca c'est le câble pour transmettre les ordres, à mettre borne D7

Alors le port matériel D7 par exemple n'a pas le même nom dans le logiciel où c'est un port dit gpio.

Le port D7 sur l'ESP a le port gpio 13.

 

On va envoyer une commande du type

http://ip_de_votre_module/control?cmd=Servo,1,13,90

 

La commande c'est servo pour dire qu'on pilote un servo moteur.

1 c'est le numéro, 13 c'est le port gpio et 90 c'est l'ordre, cad tourner de 90 degrés.

Une vue de la connexion sur l'ESP. Ce dernier est alimenté directement en 5V via le port usb. Il n'est donc pas en 3,3V

On va maintenant déclarer l'ESP dans Domoticz en tant qu'interrupteur.
Pour cela on va dans Configuration puis Matériel

Créer un capteur virtuel

Déclarer un interrupteur, le nommer

Aller sous Interrupteurs

Le modifier

Entrer ces ordres et sauvegarder

Cliquer maintenant sur la lampe pour l'allumer

Remodifier l'interrupteur pour le transformer en dimmer

Mettre le type sur Dimmer et sauvegarder

Pour que le Dimmer fonctionne correctement, déclarer un script. Pour cela aller sous Configuration Plus d'Options et Evénements

Créer un nouveau script Lua

Tout supprimer

Coller ce script

-- Merci @MikeF : https://www.domoticz.com/forum/viewtopic.php?t=21454
-- Script Domoticz -> ESPEasy servo dimmer

commandArray = {}
DomDevice = 'Plafonnier Bureau'; -- Votre peripherique à controler
IP = '10.0.0.91'; -- L'adresse IP de l'ESP8266
PIN = "13"; -- Le pin GPIO du servo

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end

if devicechanged[DomDevice] then
   if(devicechanged[DomDevice]=='Off') then
		print ("OFF dim = "..uservariables['dimmer']);
		CalcValue = 0;
   	else if(devicechanged[DomDevice]=='On') then
   		DomValue = uservariables['dimmer'];
        print ("ON dim = "..uservariables['dimmer']);
        CalcValue = DomValue;
    else
    	print("Other");
        DomValue = otherdevices_svalues[DomDevice];
        CalcValue = math.floor(30 + DomValue * 1.50); -- La fonction de calcul dimmer vers servo
        commandArray['Variable:dimmer'] = tostring(CalcValue);
        print ("dim Level = "..uservariables['dimmer']);
   	end
   	end
   	runcommand = "curl 'http://" .. IP .. "/control?cmd=Servo,2,"  ..PIN.. "," .. CalcValue .. "'"; -- Commande de servo
   	dodo = "curl 'http://" .. IP .. "/control?cmd=Servo,2,"  ..PIN.. ",9999'"; -- Desactiver lesServo
   	os.execute(runcommand);
   	sleep(2) -- Attente entre commande et desactivation
   	os.execute(dodo);
	print("PWM value= "..CalcValue);
end
return commandArray
Lien vers le fichier : cliquez ici

Mettre ces infos

Dans le cas de leur dimmer, ils ont dû mettre un ratio de 1,8

Nommer le script et sauvegarder

Modifier l'interrupteur

Virer ces 2 lignes qui ne sont maintenant plus nécessaire. C'est le script qui gère