ESP8266, servo moteur et capteur magnetique

Bonjour à tous,

comme expliqué dans ma présentation, je souhaite réaliser deux petits projets pour la maison.

Quitte a découvrir l'arduino, autant que ça soit utile.

Mes deux projets sont les suivants, gestion de bandeau LED pour un éclairage d'escalier (ça je pense que c'est vraiment très facile) et le second, déclencher un servo moteur en fonction de l'état d'un capteur magnétique d'ouverture de porte.

Il serait probablement plus facile de démarrer par le projet LED sauf que mon escalier n'est pas encore prêt. Du coup je souhaite commencer par l'autre.

En termes de code, j'ai fait pas mal de chose à la FAC à l'époque (C++, SQL, PHP, HTML, ASP, CSS) mais ce sont des vieux souvenirs (on me souffle dans l’oreillette, "de très trés trés vieux souvenir").

On va donc faire comme si je partais de 0 (ce qui est proche de la vérité).

J'ai donc a ma disposition

1 Wemos D1 mini
1 Capteur de commutateur de Reed PS-3150
1 servo moteur SG90

J'aimerai bien pouvoir avancer étape par étape pour comprendre ce que je fais du genre

Comment brancher/alimenter le D1 mini
Comment brancher le PS-3150
Comment interagir avec et voir le changement d’état
Comment brancher le SG90
Comment interagir avec et le faire tourner

et enfin comment faire interagir le tout ensemble

Par avance je vous remercie pour votre aide et j'espère avoir été clair dans mes explications

Cordialement
Foucherfou

Bonjour, j'ai dû mal à voir ce que tu attends de nous?

  • Comment brancher/alimenter le D1 mini
    As tu essayé de branché en USB la wemos ou ton PC et télécharger un exemple fournis avec l'IDE Arduino.
    Si tu as installé l'IDE Arduino?

  • Comment brancher le PS-3150
    je ne connais pas ce capteur, donc je ne pourrais pas te répondre précisément, mais comme ton capteur semble avoir deux bornes non polarisées, je le brancherais en pull-up sur l'une des broches digital du wemos.
    Peut être qu'un spécialiste passera par là pour répondre en détails.

-Comment interagir avec et voir le changement d’état
Si on pars d'un branchement en pull-up, il faut déclarer cette broche en INPUT_PULLUP dans la fonction d'initialisation et faire un digitalRead dans la fonction "Loop".
Lorsque tu vois que cette valeur change d'état, tu fais quelque chose.

-Comment brancher le SG90
Il y a plein de schéma de branchement sur internet
en gros, le fil noir sur le GND, le fil rouge sur le 5V et l'orange sur une broche marqué GPIO, celle-ci gérant le PWM.

-Comment interagir avec et le faire tourner
Le plus simple est d'utiliser la librairie Servo, qui en plus donne des exemples.

Alors ce n'est pas si vieux :wink: 89-90 pour moi c'était fortran (sur de grosses machines - plus aucune idée du système) et pascal (en disquette 5'¼ sur des IBM XT?)

Bonne idée mais il faudrait décrire un peu plus en détail ce que tu veux obtenir, pas seulement « brancher »

Hello,

Je suis spécialiste de rien.
Mais je décréte que c'est OK.
Le détecteur, le PULLUP, tout quoi.

Bonjour foucherfou

Oui, c'est très bien ainsi, tu as tout ce qu'il te faut dans l'Environnement Arduino, plus spécifiquement, dans les exemples.

Ainsi pour lire ton capteur, il y a l'exemple:
image
Tu câbles ton capteur, d'un côté à GND (mode PULLUP) et l'autre sur la pin 2 de l'Arduino.
Quand tu mets l'aimant près du capteur, tu aura 0 dans le moniteur (à 9600) et 1 quand il est éloigné.

Dans le même ordre d'idée, pour ton servo, dans les exemples de la bibliothèque servo, tu as l'exemple Sweep,
Tu connectes ton servo à la pin 9.

Une fois que les 2 sketches fonctionnent séparément, si nécessaire, tu reviens pour que l'on puisse t'aider à mettre tout ça ensemble.

A+
Cordialement
jpbbricole

Donc un passage par ici devrait de remettre le pied à l'étrier
https://eskimon.fr/

Alors avant tout ... MERCI

vraiment merci bcp pour vos nombreux retours. J'ai de la matière pour avancer.

Je n'ai malheureusement pas trop eu le temps aujourd'hui de tripoter l'Arduino mais je ne bosse pas demain donc je vais regarder ca.

Pour aujourd'hui, je me suis contenter de jouer avec le bouton et la LED de la carte pour comprendre un peu le fonctionnement. Etapes validées

Je n'ai pas utilisé IDE Arduino mais ESPHOME, c'est un soucis ou les deux "se valent" au final ?

Demain je vais souder sur la carte des PIN pour pouvoir faire des connexions propres.

Je vous fais un petit retour de mes avancées demain.

A demain

Oui et non, cela dépendra de ce que tu veux faire.
Je ne connais pas les limites d'ESPHOME, mais même si les deux produits sont là pour générer des firmrware à téléversé sur l'ESP, l'IDE d'Arduino permet de complétement contrôler le microcontrôleur et dispose d'une bibliothèque de librairie très étendue, mais avec toujours la possibilité de gérer toi même la façon de manipuler tes composants.
ESPHome n'a pas ce niveau de liberté et même si il gère beaucoup de composant, j'ai l'impression que c'est moins étendu que l'IDE d'Arduino.
Même au niveau programmation, tu as quand même moins de possibilité de manipulation des données.
Par contre ESPHome dispose directement de la possibilité de faire des Dashboard, alors que l'IDE d'Arduino n'est pas fait pour ça, il faudra passer par un tier(même si Arduino propose Arduino cloud)

Donc c'est un peu une réponse de normand, ca dépend :slight_smile:

Bonjour A tous.

@terwal Effectivement, je suis aller faire un petit tour sur IDE et je préfère cette approche. Cela me parle plus, par rapport au souvenir de code en C++ qu'il me reste.

J'ai donc fait mes soudures et branchements.

J'ai réussi à faire fonctionner les éléments.

Allumage de la Onborad LED en fonction de l'état du capteur magnétique (et j'ai bien soit 1 soit 0 dans le moniteur)

Mise en route du servomoteur avec des déplacements espacés de 1 seconde. En revanche j'ai des gros doutes sur mon servomoteur, j'ai cherché a faire des mouvements à 0°, 90° et 180°, j'ai bien 3 séquences de mouvement mais clairement le moteur ne fait pas une rotation à 180 degrés. il doit atteindre 90 degrés max je dirais.

Prochaine étapes, déclencher un mouvement du moteur en fonction de l'état du capteur. et puis voir pourquoi le servomoteur ne bouge pas plus.

Vu ce que je souhaite en faire, c'est à dire enrouler un fil pour soulever un couvercle de poubelle lorsque la porte de l'armoire s'ouvre, je ne suis pas sur d'avoir le moteur adapté.

Auriez vous des référence de moteur avec une petite roue pour enrouler un fil ?

Par avance merci

Foucherfou

Là on ne peut vraiment t'aider si tu donne pas ton code :frowning:
La librairie que tu utilise ne géré pas la rotation par rapport au milieu avec tu +90, -90 ?

Ne serait-il pas plus simple de prendre une roue qui s'installe sur n'importe quel moteur et de choisir la force du moteur en fonction du poids qu'il doit actionner?
Un peu comme ça

Oui c'est vrai. Voici le code que j'ai utilisé

#include "Servo.h"

Servo servo; // création de l'objet "servo"

void setup() {
   servo.attach(10); // attache le servo au pin spécifié
}

void loop() {
   servo.write(0); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position

   servo.write(90); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position

   servo.write(180); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position
}

Et le moteur dont je dispose celui la

Bonjour monsieur foucherfou

Un truc qui pourrait bien marcher, un servo à 5 ou 7 tours, qui ferait office de treuil.
Recherches servo winch ou servo treuil.

Cordialement
jpbbricole

@jpbbricole

Effectivement cela semble mieux convenir a ce que je veux faire.

j'ai trouvé ça

Merci pour ton retour

Foucherfou

Bonjour foucherfou

Attention, ce que tu as trouvé, est un servo dit 360°, c'est à dire qu'il tourne plus ou moins vite dépendant du signal PWM, sans aucune notion de position.
Ce que je t'ai proposé, des servo treuil ou winch se positionnent sur 5 à 7 tours, dépendant du signal PWM. Ainsi ton signal PWM à X dira, porte ouverte et à Y porte fermée.

A+
Cordialement
jpbbricole

@jpbbricole

Ok, alors j'ai bien trouvé quelques modèle, mais au niveau du tarif c'est plus du tout le même histoire (prés de 50€)

Est ce que tu as un lien à me proposer? Sachant que je n'ai pas besoin d'arracher un arbre avec, le couvercle doit peser mois de 1kg je pense.

Cordialement
Mathieu

Bonjour foucherfou

Il y a celui-ci,
image
il ont une version 6 tours.
image

et plus généralement tout ceux qui ont une poulie sont des treuils.

Cordialement
jpbbricole

En effet c'est plus raisonnable.

J'étais tombé dessus peu de temps après avoir repondu. J'étais au boulot, je n'avais pas eu le temps de fouiller plus que ça...

La version à 50€ est étanche... Je n'ai pas besoin de ça.

Du coup je viens d'en commander un, le temps de le recevoir, je vais bidouiller l'autre pour réussir à lie le capteur magnétique et le moteur.

Merci pour ton aide

Foucherfou

Bonjour,

alors j'ai testé plusieurs code trouvé sur le net. Je n'arrive pas a faire bouger le moteur sur l'amplitude de 180°. je fais max 90°.

Pourtant quand le moteur est hors tension, manuellement, j'arrive bien a lui faire une course d'un peu plus de 180° avant d'arriver aux butées.

Auriez vous une idée ?

Foucherfou

Bonjour foucherfou

Oui, en ne travaillant pas en degrés mais en microsecondes, dans l'instruction myservo.write(pos), si pos est => 200, c'est pris comme des microsecondes.
Ainsi, en tâtonnant tu trouvera le minimum et le maximum afin d'avoir de 0 à 180°.

A+
Cordialement
jpbbricole

c'est à dire ?

Tu as essayé de faire -90 à 90, que ce passe t-il?
Que fait tu servo moteur au démarrage et lorsque tu demande la première position.
D'ailleurs quel position tu lui demande au démarrage.