Projet Robot pour Anniversaire

Bonjour à tous.

Pour le prochaine anniversaire de mon fils, je prépare un robo à assembler le jour J.

Les parties à assembler (bras, jambe) correspondent à quelque interrupteur.

Après avoir fait quelques recherches, j'espère pouvoir réalise un montage qui fera :

  • Jouer des sons (par exemple quand on connecte un bras, une jambe...)
  • allumer des bandeaux led (qui devrait être dans les yeux)
  • et à la fin, quand tous les éléments seront assemblé, ouvrir une trappe.
  • le robo serait alimenter par 2 batteries 18650 en parallèle (Je ne cherche pas forcément l'efficacité optimal, mais surtout que ca fonctionne assez simplement).

Je dispose :

Je viens de faire le schéma suivant, mais n'ayant pas de grande connaissance en électronique (plutôt en programmation), j'aimerai avoir votre avis éclairé sur le montage.

D'avance, merci pour votre relecture et d'éventuelles remarques constructives.

Bonjour dragonuino

Je ne suis pas le plus "éclairé" pour ce qui est du schéma, mail il me semble correct.
Une petite remarque concernant BUTTON U5 à 8, ils sont connectés au + 3.3v donc en mode PULLDOWN. Je ne sais pas si ces GPIO de l'ESP ont l'option PULLDOWN, mais si ce n'est pas le cas, il faudra en mettre, 10K. va pas mal.
Ou plus simple et plus "conventionnel", travailler en PULLUP, mettre les boutons au GND, il est quasiment certain que tes GPIO on cette option. Pour ce qui est du programme un bouton pressé donne un LOW.
L'avantage du PULLUP est qu'il n'y a que le GND qui parcourt les divers boutons et autres contacts.

Cordialement
jpbbricole

Merci, je vais me documenter un peu plus sur la différence entre les deux modes et probablement suivre ton conseil.

Je referai un schéma, d'ailleurs je me suis aperçu que j'ai également oublié 4 led bleue à ajouter.

Bonsoir,

J'avance sur ce projet en prenant mon temps, mais j'avance :slight_smile:

Je viens de tester le bandeau led en utilisant FastLed, et c'est relativement facile à utiliser.

En revanche, je m'interroge sur un point. En effet, le bandeau led sera les yeux du robo intégré dans la tête. L'idée est de connecter la tête à un moment et d'y réagir pour déclencher une réaction. (par exemple un son "merci de m'avoir redonné la vue").

Ma question est : Est-il possible de détecter si le bandeau led est branché sur l'esp32 ? Cela m'éviterai de rajouter un fil entre la tête et le buste, qui ne serait pas évident au niveau du connecteur.

J'ai tenté de passer la pin en mode "INPUT" et de faire un digitalRead, mais sans succès visiblement.

void setup() {
  pinMode(LED_PIN, INPUT);   // Configurer la broche en tant qu'entrée
  Serial.begin(115200);      // Initialiser la communication série pour les messages de débogage
}

void loop() {
  static unsigned long lastshow = 0;
  
  // Lire l'état de la broche de détection du bandeau LED
  int ledStatus = digitalRead(LED_PIN);

  if ((millis() - lastshow) > 2000) {
    Serial.print("ledStatus : ");
    Serial.println(ledStatus);
    lastshow = millis();
  }

  delay(100);  // Attendre un court laps de temps avant de vérifier à nouveau l'état de la broche
}

Quelqu'un a-t-il une idée ? ou je suis obligé de rajouté un fil ?

Si tu fais un read, cela va lire la tension de ta broche et t'indiquer si cette tension est supérieur à la tension de référence pour la valeur vrai.
Comme sur ton bandeau LED, le bandeau fait exactement la même lecture pour savoir si tu demande l'allumage des LED, ton raisonnement ce mord la queue.

Une question : c'est quand l'anniversaire ?

Tu pourrais essayer de monter une résistance entre 2 et 5kΩ entre la ligne de donnée et GND coté bandeau de LED.
Pour faire le test de présence, il faut mettre l'entrée de l'Arduino en INPUT_PULLUP.
Si le bandeau est absent, tu devrais lire un HIGH.
Si le bandeau est présent, tu devrais lire un LOW.

Dans longtemps (en mai 2024)... j'ai encore le temps :wink:

Ca permet d'avancer tranquillement sans trop de pression.

Merci, j'essaie ce soir :slight_smile:

J'ai testé le principe sur une breadboard et ca fonctionne. Un grand merci, ca me facilite la vie.

Bonjour,

Le projet avance globalement, mon "robo" commence à prendre forme.

J'ai cependant un nouveau soucis que je n'avais pas anticipé.

Le moteur sg90 fonctionne parfaitement quand j'alimente l'esp32 directement en usb.
Mais il semble qu'il y ait un soucis quand j'alimente avec la batterie :

  • on entend le servo moteur qui se déclenche
  • mais sans vraiment faire de mouvement
  • et l'esp semble redémarrer (une led rouge dessus clignotte)

En cherchant un peu sur internet, à un problème similaire, on a proposer d'utiliser un condensateur à découplage avec ce lien (Capacitors - SparkFun Learn).

Mais ca ne me parle pas bien.

J'ai un peu du mal à identifier quel condensateur il faudrait que j'ajoute, ni à quel endroit du schéma. En parallèle du 5v et du GND ?

Ils évoquent aussi qu'il pourrait y avoir plusieurs condensateur ? ça serait un électrolytique, et 1 céramique ?

Merci pour d'avance pour vos précieux conseils.

J'ai demandé à mon amis ChatGPT.

Voici ci-dessous sa réponse.

Etes-vous d'accord avec ses réponses ? Est-ce cohérent ?

Le problème que vous rencontrez, où l'ESP32 se réinitialise lorsque vous alimentez le système par la batterie, peut être dû à des perturbations dans l'alimentation. Lorsque vous alimentez votre ESP32 à partir d'une batterie, la tension peut être moins stable que lorsque vous l'alimentez via USB, ce qui peut entraîner des problèmes de reset ou des redémarrages inattendus.

Pour stabiliser l'alimentation de l'ESP32, vous pouvez envisager d'utiliser des condensateurs pour lisser la tension. Voici comment vous pouvez le faire :

  1. Condensateur d'entrée (batterie) : Placez un condensateur électrolytique de faible valeur, par exemple 10 µF à 100 µF, entre le pôle positif et négatif de la batterie, près du module TP4056. Cela aidera à lisser la tension d'entrée de la batterie.
  2. Condensateur de sortie (MT3608) : Placez un condensateur électrolytique de faible valeur, par exemple 10 µF à 100 µF, entre la sortie du MT3608 (5V) et la masse (GND). Cela aidera à stabiliser la tension de sortie du booster.
  3. Condensateur de découplage (ESP32) : Placez un condensateur céramique de 10 µF à 100 µF entre la broche 5V (ou VIN) et la masse (GND) de l'ESP32. Cela aide à fournir une source d'énergie stable pour l'ESP32.
  4. Condensateur de débogage (facultatif) : Vous pouvez également envisager d'ajouter un condensateur céramique de faible valeur (1 µF à 10 µF) près de l'alimentation de votre servo SG90 pour aider à gérer les pointes de courant lorsqu'il est en activité.

Assurez-vous de respecter les polarités correctes des condensateurs électrolytiques. Ces condensateurs aideront à atténuer les fluctuations de tension et à réduire les perturbations électromagnétiques qui pourraient affecter le fonctionnement de l'ESP32 et du servo. Cela devrait améliorer la stabilité de votre montage alimenté par batterie.

comment calcule ton les valeurs des condensateurs ? Si je met un condensateur plus fort au niveau de la batterie par exemple 400µF quel sera la conséquence ? Même chose pour la sortie du MT3608 ?

ChatGPT

Le choix des valeurs des condensateurs dépend en grande partie des caractéristiques de votre système et des besoins de stabilisation de l'alimentation. Voici quelques considérations générales :

  1. Condensateur d'entrée (batterie) : Un condensateur électrolytique de 10 µF à 100 µF est généralement suffisant pour stabiliser la tension d'entrée provenant de la batterie. Un condensateur de 400 µF ne causera pas de problème en soi, mais il peut être surdimensionné pour cette application, ce qui signifie qu'il stockera plus d'énergie que nécessaire. Cela peut prolonger le temps de charge de la batterie, mais cela ne devrait pas poser de problème majeur. Assurez-vous simplement que le condensateur est de tension nominale suffisante pour votre application.
  2. Condensateur de sortie (MT3608) : Un condensateur électrolytique de 10 µF à 100 µF est également généralement approprié pour stabiliser la tension de sortie du MT3608. Un condensateur plus important peut aider davantage à atténuer les fluctuations de tension, mais il faut s'assurer qu'il convient à la tension de sortie du booster.

L'ajout de condensateurs plus importants n'est généralement pas un problème, mais cela augmente la taille physique et le coût du composant. Le principal avantage est une meilleure filtration des fluctuations de tension. Cependant, il est essentiel de s'assurer que les condensateurs sont de la tension nominale appropriée pour éviter les défaillances.

Pour déterminer la valeur optimale des condensateurs, vous pouvez également expérimenter avec différentes valeurs pour voir celle qui offre la meilleure stabilité pour votre système, en surveillant les performances et en vérifiant que l'ESP32 ne se réinitialise plus.

Il est important de noter que le calcul exact des valeurs des condensateurs dépendra également de la charge totale de votre système, des courants de pointe, des caractéristiques des batteries, etc. Dans de nombreux cas, des valeurs de 10 µF à 100 µF sont un bon point de départ, mais des ajustements peuvent être nécessaires en fonction des spécificités de votre conception.

Combien consomme ton montage?
Il est possible que si tu consommes trop l'alimentation ne puisse pas suivre et s'écroule.

Il ne faut pas mettre des condensateurs de valeur trop élevée car cela peut aussi rendre l'alimentation instable. Une alimentation à découpage est un système asservi et l'amortissement de la sortie peut perturber son fonctionnement.
La note d'application du MT3608 recommande 22µF céramique de bonne qualité sur la sortie de l'alimentation. Il n'y a pas besoin d'une capacité énorme le découpage se fait à 1,2MHz.

Et la batterie combien peut-elle délivrer?
Le MT3608 élève la tension donc le courant consommé sur l'entrée est plus important que celui consommé par la charge. Si tu élèves la tension de 4V à 5V ce qui fait +25% en tension, le courant tiré sur la batterie sera 25% plus élevé. Ceci sans prendre en compte le rendement du convertisseur.

Merci.

Je vais essayer de me dépatouiller avec tout ça.

Je n'ai aucune idée de la consommation. J'y vais un peu au filing.

Pour le batterie ce sont des Li-ion 18650 (deux en parallèle), mais sûrement pas de grande qualité.

Je vais essayer de bricoler un montage pour mesurer l'intensité au niveau de la batterie.

Mais je n'ai rien pour mesurer au niveau de la prise usb de l'esp.

Et les soudures du montage sont déjà fait.

J'ai cependant un doute.

J'ai rapidement regarder sur internet. Es-tu sur de l'unité pour le condensateur céramique ? J'ai plutôt trouver des pico ou nano farat.

Merci pour les explications.

Oui, je suis sûr de l'unité. Mais il doit déjà y en avoir un dans la sortie de ton module.
Il faudrait en premier connaitre la consommation parce qu'avec les LED WS2812, un servo, un ampli et une carte SD. Il doit y avoir des moments où la consommation doit quand même être un peu élevée, si le servo bouge et que les LEDs s'allument un peu fort on doit largement dépasser 1A.

C'est ce que je me suis dit dans la nuit en effet.

Avec mes tests de condensateur à disposition (mais aucun de 22µF céramique) ça n'est pas satisfaisant.

En effet un condensateur permet au sg90 de d'activer, mais pas à l'esp de se réinitialiser.

Pour la consommation, j'ai fait quelque mesure au multimètre :

  • le sg90 fait des pointes à 80mA.
  • l'esp32 faisait des pointes à 200mA avec le wifi pour l'ota. (mesure au niveau de la batterie)
  • en le désactivant il fait du 100 mA.

Je m'arrange pour que les composants ne consomme pas en même temps. La pour le test il n'y a que le servo moteur d'actif. Le lm386 est connecté, mais pas utilisé par le programme.

Je me demandais :

  • S'il n'y avait pas moyen de mettre un gros condensateur pour le sg90, avec des diodes pour éviter de perturber le boost.

  • ou alors de connecter directement le sg90 sur la batterie ou de mettre un autre boost dédié au sg90 en parallèle. (l'usage est très occasionnel, c'est pour débloquer une trappe)

  • ou alors de séparer les deux batteries pour en dédié une au servo, mais j'avais déjà assemblé cette partie :cry:

L'autonomie n'est pas le plus important.

J'ai essayé rapidement ce matin avec des pinces croco le montage en direct sur la batterie. Ça semble fonctionner..

Ce n'est peut être pas l'idéal mais au moins ça permet d'activer le moteur. Ouf..

Bonjour,

C'est encore moi, le projet a plutôt bonne forme. Il est quasiment opérationnel.
Le carton est globalement finie, reste un peu de peinture.

En revanche pour l'électronique, j'ai 2 soucis actuels :

  • un léger soucis pas si grave, mais bon si on peut faire quelque chose pour améliorer.
    Quand j'utilise le wifi, par exemple pour mettre à jour en ota le robo, ou tout autre chose, j'ai des bruits parasites qui sortent par le haut parleur. Connaissez-vous un moyen simple de les éviter ?

  • plus ennuyeux, ca concerne la carte SD. Ca ne fonctionne pour le moment pas correctement. C'est à dire qu'elle semble être reconnu, mais je n'arrive pas à lire ou écrire des messages.
    J'utilise cette exemple : https://github.com/espressif/arduino-esp32/blob/master/libraries/SD/examples/SD_Test/SD_Test.ino

Pour ce point, je reviendrai un peu plus tard, je n'ai pas l'esp32 avec moi pour donner une trace des erreurs.

Je suis preneur de toute idée. :slight_smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.