Table des matières:

Ouvre-store automatique utilisant EV3 : 6 étapes
Ouvre-store automatique utilisant EV3 : 6 étapes

Vidéo: Ouvre-store automatique utilisant EV3 : 6 étapes

Vidéo: Ouvre-store automatique utilisant EV3 : 6 étapes
Vidéo: Tutoriel 20 - LEGO MINDSTORMS EV3 - EDU vs Maison comparaison logiciel - partie 1 2024, Juillet
Anonim
Ouvreur de store automatique utilisant EV3
Ouvreur de store automatique utilisant EV3
Ouvre-store automatique utilisant EV3
Ouvre-store automatique utilisant EV3

J'ai un ensemble de stores occultants dans ma chambre que j'oublie souvent d'ouvrir ou de fermer le matin ou le soir. Je veux automatiser l'ouverture et la fermeture, mais avec une dérogation quand pour quand je me change.

Étape 1: Idées ou solutions potentielles

Après avoir regardé sur divers sites tels que YouTube, Instructables et Thingiverse j'ai trouvé que la solution la plus courante était de motoriser la bobine qui enroulait et déroulait les stores à l'aide d'un moteur pas à pas ou d'un servo. J'ai trouvé 2 options principales avec divers avantages et inconvénients.

Idée 1: méthode de la bobine où le moteur et l'engrenage sont logés à l'intérieur de la bobine. Ceci a l'avantage d'être une méthode soignée et élégante, mais a les inconvénients qu'elle nécessite une modification importante du store, le cordon n'est plus utilisable, et l'ensemble serait très difficile d'accès pour la maintenance lors de sa mise en œuvre.

Idée 2: méthode du cordon où le moteur et l'engrenage sont logés sur le cordon. Cela a l'avantage d'être plus simple et l'assemblage pourrait être facilement accessible. Il présente cependant l'inconvénient d'être moche et encombrant, ainsi que le fait qu'il doit être fixé au seuil lors de sa mise en place.

Je préfère la méthode du cordon car c'est une solution beaucoup plus simple qui n'empêche pas l'utilisation manuelle du cordon, et le store ne nécessitera aucune modification majeure. Je prévois de le rendre aussi discret et compact que possible lorsque je réaliserai la version finale avec un ESP8266.

Étape 2: Réaliser l'assemblage

Faire l'Assemblée
Faire l'Assemblée
Faire l'Assemblée
Faire l'Assemblée

J'ai fait ce projet en utilisant mon Lego Mindstorms EV3 qui a des fonctionnalités dont j'ai besoin pour montrer que le projet pourrait fonctionner, et je connais le logiciel qui m'a beaucoup aidé. Étant donné que le store utilise une chaîne à billes pour entraîner la bobine, avec laquelle les engrenages Lego sont incompatibles, j'ai décidé que la meilleure solution était de concevoir un engrenage avec le bon espacement des billes à l'extérieur - avec le trou standard "en forme de croix" dans le centre, où j'imprimais ensuite le dessin en 3D. À ce stade, j'ai également créé un bouton d'étalonnage et attaché un capteur de lumière à ma fenêtre ainsi qu'un bouton pour agir en tant que dérogation.

Étape 3: Conception de l'équipement aveugle

Conception de l'équipement aveugle
Conception de l'équipement aveugle
Concevoir l'équipement aveugle
Concevoir l'équipement aveugle
Conception de l'équipement aveugle
Conception de l'équipement aveugle
Conception de l'équipement aveugle
Conception de l'équipement aveugle

J'ai démonté le store pour voir à quoi ressemblait la manivelle plus en détail. Lors du démontage j'ai trouvé un petit engrenage à 16 dents qui était maintenu en place par une bobine tendue, c'était la pièce que je cherchais. Après avoir conçu une réplique de l'équipement, j'ai ajouté les trous compatibles Lego requis, imprimé les 3 parties séparées et finalement les ai collées avec de la superglue. J'ai eu au départ des problèmes pour rendre la pièce compatible Lego, dans le sens où mon imprimante 3D n'avait pas la résolution de faire suffisamment le trou "x", cependant elle n'a eu aucun problème avec les trous circulaires de chaque côté. J'ai donc remplacé le "x" par un trou circulaire et il s'est bien imprimé. Ensuite, après une petite quantité de tests, j'ai pu voir qu'il pouvait supporter le couple et le poids du store. Je vais lier mes conceptions pour l'équipement ci-dessous ou vous pouvez le trouver sur Thingiverse à l'adresse:

Étape 4: coder les aveugles

Coder les aveugles
Coder les aveugles

Je voulais un code qui ouvrirait et fermerait automatiquement le store lorsqu'il atteignait un niveau de luminosité spécifique, mais qui avait également un bouton de dérogation pour que l'on puisse toujours ouvrir ou fermer le store quand on le voulait. J'ai lié mon GitHub avec la version finale du code ici:

Le code du projet m'a pris plusieurs jours, j'avais la logique de base du programme qui fonctionnait correctement avec le capteur de lumière, mais le bouton de dérogation momentanée ne fonctionnait pas correctement. Il modifiait l'état du store lorsqu'il était enfoncé, mais il manquait la fonction de «verrouillage» qui signifierait que le store resterait dans la position, ce qui signifie que le store le ferait immédiatement revenir à ce qu'il était avant. J'ai corrigé cela à l'aide d'un bloc "attendre jusqu'à", lié à une porte logique OU qui lit les valeurs du capteur de lumière et du capteur tactile, que j'expliquerai ci-dessous.

Le code commence par calibrer les moteurs et le store, en commençant par le store complètement ouvert et en l'abaissant jusqu'à ce qu'il atteigne le capteur tactile en bas, en comptant combien de quarts de tour il faut pour atteindre le bas, ce qui est enregistré sous le nom "RotationsNeeded" variable. Ensuite, il écrit "false" dans la variable "BlindOpen" qui est utilisée pour suivre la position du store. À ce stade, le code se divise en 4 boucles.

L'une de ces boucles est la boucle « Buttonstate » qui publie continuellement l'état du bouton dans une variable appelée « ButtonPressed ». Cela élimine le besoin de placer plusieurs blocs de boutons sur le script.

La deuxième boucle est le « Clair ou sombre » qui compare en permanence le niveau de lumière à l'extérieur de ma fenêtre, à une constante définie plus tôt dans le code. Si le résultat est inférieur à cette constante, la boucle écrira « false » dans la variable « ItIsLight », tandis que si elle est au-dessus de la valeur, elle écrira « true ».

La troisième boucle contient une liste numérique de 3 options qui indiquent essentiellement au store ce qu'il doit faire, 0=blind down, 1=blind up, 2=ne rien faire car le store est au bon endroit. La boucle commence par la lecture de la variable « BlindShould » qui spécifie la tâche correcte que l'aveugle doit effectuer, puis exécute cette tâche, modifie la variable « BlindOpen » en l'option correcte, puis devient inactive jusqu'à ce que la variable « BlindShould » soit modifiée où ça se répète. Il utilise la valeur "RotationsNeeded" ainsi qu'une puissance de +/- 100 % pour déplacer le store complètement ouvert ou fermé.

La quatrième et dernière boucle est la plus complexe, c'est la boucle « Décideur » qui gère toutes les données et décide quoi faire de chaque permutation. Pour ce faire, il utilise des « fourches sur la route » basées sur une logique où « le bouton est enfoncé », « Niveau de lumière », « Aveugle ouvert » sont les questions vraies ou fausses. Toutes les permutations ont une réponse codée en dur, qui est soit 0 = aveugle vers le bas, 1 = aveugle vers le haut ou 2 = ne rien faire - cette valeur est écrite dans la variable "BlindShould" qui est ensuite gérée par une boucle précédente. Certaines réponses attendront alors que la variable "ItIsLight" et/ou "ButtonPressed" change avant de terminer le script, ce n'est le cas que pour les permutations activées par le bouton car sinon il essaierait immédiatement de corriger sa position, ce qui signifierait que le store reviendrait à son état d'origine. Ce processus est ensuite bouclé pour créer un système automatique robuste et relativement simple, qui peut facilement être ajouté et débogué. Phew.

Étape 5: Touches finales

La touche finale
La touche finale

J'ai ensuite décidé de câbler une alimentation 9V à mon EV3 en utilisant des chevilles en bois et des vis comme "piles", cela rendait le produit peu dépendant des piles et m'empêchait d'avoir à changer les piles tous les deux jours.

Étape 6: Évaluation du projet

Je pense que le projet s'est bien déroulé dans l'ensemble, je me suis retrouvé avec un prototype fonctionnel pour l'assemblage des stores automatiques, que je peux prendre toutes les informations pertinentes que j'ai trouvées pendant le projet et les mettre en œuvre dans la version finale. J'ai réussi à coder l'appareil et, plus tard, je n'ai trouvé aucun problème majeur avec le code jusqu'à présent. J'aurais aimé rendre l'appareil plus attrayant visuellement, mais encore une fois, c'est une preuve de concept et je m'efforcerai de le rendre plus beau lorsque je réaliserai la version finale avec un ESP8266. Lorsque je referai le projet, je concevrai le moteur pour qu'il s'installe à l'intérieur du store, car ce serait plus facile à dissimuler. La plus grande leçon que j'ai apprise est de déboguer logiquement et de réfléchir, de documenter et de tester mon code avant de l'implémenter.

Conseillé: