Détecteur de baby foot

Je suis en train de faire un détecteur de partie de baby foot pour faire des statistiques sur l'activité des joueurs au travail.

J'ai commencé par poser mes questions sur la partie anglophone du forum, pour ceux que ça intéresse de lire.

C'est mon premier projet arduino/raspberry/whatever et je suis en train d'absorber beaucoup d'information d'un coup. Je suis un peu perdu.

Descriptif du projet

Construire un détecteur de partie de babyfoot en utilisant un capteur de vibrations (quand la table bouge parce que les joueurs jouent) ou un capteur sonore (jouer au babyfoot ça fait beaucoup de bruit). Les sorties du capteur choisi sont envoyées en WiFi vers mon serveur, où elles seront accumulées afin de pouvoir plus tard faire une analyse statistique sur les données (e.g. à quel moment de la semaine ou de la journée - après le déjeuner - la table est le plus utilisée). En bonus, si je pouvais transférer les relevés du capteur toutes les 5 minutes, je peux faire une petite interface web qui informe en live (avec une latence max de 5 minutes) si la table est déjà prise ou pas : on doit parfois attendre qu'une partie se termine avant de pouvoir jouer, les bureaux sont grands et on peut éviter un déplacement. Je travaille sur ce projet principalement parce que je trouve ça très amusant et parce que j'ai envie de m'y connaître un peu mieux en électronique et systèmes embarqués.

Contraintes

  • Je veux avoir à changer la batterie le moins souvent possible. Idéalement une fois par mois ou une fois toutes les deux semaines.
  • Je n'ai pas le droit d'endommager la table de babyfoot car c'est celle du travail.

Où j'en suis aujourd'hui

  • Je vais utiliser un ESP8266 (module WiFi) qui va être en "deep sleep" la plupart du temps. Il est crucial pour ce projet de minimiser la consommation énergétique du système lorsque l'ESP est en "deep sleep", pour que la batterie tienne le plus longtemps possible, et donc respecter la contrainte (1). Un ESP-12X de base (sans dev board) consomme extrêmement peu lorsqu'il est en "deep sleep" (quelques micro ampères). Lorsque l'ESP est allumé et que je lis le capteur, j'imagine qu'il va consommer autour de 40-80 mA (pas de transfert WiFi). Lors d'un transfert WiFi, la consommation peut monter aux alentours de 280mA (worst case scenario).
  • Je suis parti sur un capteur LM393 (amazon). Il mesure l'intensité sonore. Il est réglable. Je peux essayer de l'utiliser pour écouter les bruits de balles de babyfoot (ce bruit est assez fort et distinct). La table de babyfoot se trouve dans un endroit où il peut y avoir un peu de passage de temps en temps donc il faut que j'évite les faux positives. Initialement je voulais utiliser un capteur Piezo mais mes recherches m'ont fait arriver à la conclusion que c'était une mauvais idée : les gens qui utilisent ce genre de capteurs avec des microcontrolleurs disent qu'il sort des valeurs aléatoires.
  • Je dois avoir un module RTC pour connaître l'heure exacte de mes mesures (que je dois aussi envoyer au serveur, d'ailleurs) et pour réveiller mon module toutes les X secondes. J'en ai trouvé un cool sur amazon

Mes questions

  • Est-ce que vous me conseillez de partir sur un ESP-12X de base ou sur un dev board style nodeCMU ou SparkFun Thing ? Dans le premier cas je dois gérer un peu tout moi même en achetant d'autre composants mais j'ai un meilleur contrôle sur la consommation énergétique de mon circuit. Dans le deuxième cas c'est plus simple car plein de trucs sont déjà gérés pour moi mais je risque de me retrouver avec une dev board qui consomme plein d'énergie en deep sleep et m'empêche de respecter ma contrainte (1).
  • Mon LM393 a (semble-t-il) besoin d'un courant entre 4 et 6 V. Comment est-ce que je fais pour alimenter tout mon truc si mon ESP a besoin de 3.3V et que mon LM393 a besoin d'un courant plus élevé ? Je suis un peu perdu par rapport à l'alimentation.
  • Je voulais utiliser un chargeur externe style chargeur de téléphone mais apparemment ils se coupent si la consommation de courant est trop faible (c'est une feature). Du coup je suis parti pour utiliser des piles Li-Ion mais là aussi j'aimerais avoir votre avis parce que je ne suis pas sûr du tout.
  • Comment utiliser le RTC pour réveiller mon ESP ?

Je n'ai pour l'instant rien acheté parce que je ne suis absolument pas sûr de ce que je fais. J'ai besoin de comprendre comment tout ça va aller ensemble avant de me lancer.

Bonsoir

Question 1 :
-dans un premier temps le mieux est de partir d'une carte complète , bien conçue, de préférence avec un régulateur 'low drop' 500mA ayant un faible courant 'de repos'. Wemos D1 Mini , ou Feather (le régulateur des NodeMCU diverses n'est pas idéal pour l'autonomie.)

Ce n'est pas parfait parce que hors phase de programmation la puce d'interface UART/USB , inutile, consomme un peu .
Par contre ça permet de développer le code sur une base saine.

La gestion de la charge de l'accu Lion peut être facilement faite en empilant un shield spécifique sur la Wemos D1 Mini

la carte Feather ESP8266 d'Adafruit intègre la gestion de l'accu

-dans un second temps , quand tout est validé tu peux passer sur un montage perso avec un module ESP12, ESP07...pour optimiser l'autonomie

Question 4 :Réveiller l'ESP8266 par une RTC externe ?
Il y a sans doute de l'espoir et cablant la sortie INT du DS3231 à l'ESP8266

mergejoin:
Construire un détecteur de partie de babyfoot en utilisant un capteur de vibrations (quand la table bouge parce que les joueurs jouent) ou un capteur sonore (jouer au babyfoot ça fait beaucoup de bruit).

Bonsoir
c'est uoi exactement comme "babyfoot" ?
un modele un peu serieux ou un gadget ?

un idée , coller un disque piezo en fond de cages

Bonjour à vous deux et merci pour votre contribution ! :slight_smile:

al1fch:
-dans un premier temps le mieux est de partir d'une carte complète , bien conçue, de préférence avec un régulateur 'low drop' 500mA ayant un faible courant 'de repos'. Wemos D1 Mini , ou Feather (le régulateur des NodeMCU diverses n'est pas idéal pour l'autonomie.)

Est-ce que tu parles bien de cette carte (amazon) ? Initialement, je comptais prendre celle-ci (amazon) qui est beaucoup moins chère. C'est bien celle que tu appelles "Wemos D1 Mini" ?

al1fch:
Ce n'est pas parfait parce que hors phase de programmation la puce d'interface UART/USB , inutile, consomme un peu .

Oui c'est bien ce que j'ai vu. Ça peut facilement sucer du 8mA en deep sleep et ça rend le deep sleep complètement inutile.

al1fch:
La gestion de la charge de l'accu Lion peut être facilement faite en empilant un shield spécifique sur la Wemos D1 Mini

Ça a l'air pas mal ça !

Artouste:
c'est uoi exactement comme "babyfoot" ?
un modele un peu serieux ou un gadget ?

C'est un vrai babyfoot Bonzini en bois qui doit coûter 2000€ !

Artouste:
un idée , coller un disque piezo en fond de cages

J'y ai déjà pensé et il n'y a pas beaucoup d'espaces dans les cages. Je vois difficilement comment y mettre l'ESP avec la batterie etc. Alternative : mettre uniquement le capteur piezo dans la cage et faire sortir le cable, relié à l'ESP. Problèmes : les joueurs risquent de niquer le cable et c'est pas très discret.

Fabricant WEMOS
Modèle D1 MINi
page web avec schéma téléchargeable
boutique officielle Wemos chez Aliexpress

Tes liens Amazon ne semblent pas fonctionnels
Il me semble que le premier renvoie vers une excellente carte Feather Huzzah ESP8266 d'Adafruit (un poil trop chère pour moi !)

Pourquoi ne pas mettre un accéléromètre collé sous la table du baby ?

Lorsque je faisais des essais pendant mes pauses au boulot avec mes accéléro sur mon arduino, je me suis aperçu que j'avais plus de sensibilité que les capteur posé pour détecter les vibrations dans les bâtiments provoquées par le passage du tramway....

Il suffirait de déterminer les seuils de sensibilité et la fréquence des variations pour savoir si c'est un partie ou simplement une personne qui passe.

Bonne idée l'accéléromètre, tu peux faire un test en posant un téléphone portable mini d'un accéléromètre sur le baby-foot avec une application comme "Physics Tool Box Suite" qui affiche en courbe les accélérations X Y Z

al1fch:
Fabricant WEMOS
Modèle D1 MINi
page web avec schéma téléchargeable
boutique officielle Wemos chez Aliexpress

Tes liens Amazon ne semblent pas fonctionnels
Il me semble que le premier renvoie vers une excellente carte Feather Huzzah ESP8266 d'Adafruit (un poil trop chère pour moi !)

Super, merci pour les liens :slight_smile: C'est pas si facile que ça de savoir où acheter quand on commence !

Désolé pour les liens Amazon, je me suis chié. Le Feather est stylé mais c'est vrai que c'est un peu cher...

Je vais donc partir sur un Wemos D1 Mini avec un shield pour la batterie.

J'ai du mal à comprendre si ce shield a aussi une prise USB ou si je dois acheter un autre shield en plus pour pouvoir le programmer. Vous en pensez quoi ?

jfs:
Pourquoi ne pas mettre un accéléromètre collé sous la table du baby ?

Lorsque je faisais des essais pendant mes pauses au boulot avec mes accéléro sur mon arduino, je me suis aperçu que j'avais plus de sensibilité que les capteur posé pour détecter les vibrations dans les bâtiments provoquées par le passage du tramway....

Il suffirait de déterminer les seuils de sensibilité et la fréquence des variations pour savoir si c'est un partie ou simplement une personne qui passe.

J'avais écarté la piste de l'accéléromètre parce que je pensais que ça ne serait pas assez précis pour capter des petites vibrations. Mais effectivement, c'est la première chose à laquelle j'avais pensé. Est-ce que tu en as un bon à conseiller que je peux plug sur le Wemos ?

Christian_R:
Bonne idée l'accéléromètre, tu peux faire un test en posant un téléphone portable mini d'un accéléromètre sur le baby-foot avec une application comme "Physics Tool Box Suite" qui affiche en courbe les accélérations X Y Z

Génial ! Je viens de tester sur mon téléphone et ça capte super bien même des petites vibrations bien moins fortes que celles produites par des joueurs de babyfoot ! :slight_smile: Je pars sur l'accéléromètre !

J'ai du mal à comprendre si ce shield a aussi une prise USB ou si je dois acheter un autre shield en plus pour pouvoir le programmer. Vous en pensez quoi ?

prise micro USB n bas à droite sur la photo. IL ne manque que le câble USB !!
embase JST pour l'accu (attention à la polarité j j'ai eu à permuter les fils de plusieurs connecteurs JST!!)
PS: les envois de la boutique Wemos partent en général de Si ngapour. J'ai constaté un délai de 10 jours pour la livraison.

mergejoin:
J'ai du mal à comprendre si ce shield a aussi une prise USB ou si je dois acheter un autre shield en plus pour pouvoir le programmer. Vous en pensez quoi ?

Question con. Il y a déjà une prise USB sur le Wemos de base. La prise USB sur le Battery Shield est pour recharger la batterie. Si j'ai bien compris !

C'est ça !! le connecteur µUSB du shield ne sert qu'à recharger l'accu, celui du D 1 mini à alimenter, programmer et communiquer.
Sur les site Wemos (pas la boutique) on a accès aux schémas de la plupart des cartes et shields.

al1fch:
C'est ça !! le connecteur µUSB du shield ne sert qu'à recharger l'accu, celui du D 1 mini à alimenter, programmer et communiquer.
Sur les site Wemos (pas la boutique) on a accès aux schémas de la plupart des cartes et shields.

Très clair :slight_smile: Oui je trouvais pas la doc sur la boutique. Merci !

Donc pour résumer :

  • Wemos D1 Mini pour l'ESP, prise usb pour pouvoir le programmer inclue
  • Battery shield pour pouvoir alimenter le Wemos, régulateur de tension inclu
  • Accéléromètre du style de celui-ci (boutique AliExpress). Il prend du 3-5V donc si j'ai une pile 3.7V lithium c'est bon ?

Quelques points à éclaircir encore :

  • Qu'est-ce que je prends comme batterie ? Ces piles ont une énorme capacité, ce qui est assez cool. Est-ce que je peux utiliser ça ? Est-ce que le shield est capable de recharger ça ? Quel type de connecteur j'utilise pour relier ces piles au Battery Shield ?
  • Je ne suis pas très bien sûr des cablages que je dois faire. Je dois relier quelle PIN à quelle PIN ? Comment j'alimente l'accéléromètre ?

Je vais commencer par commander tout ça et je répondrai à toutes ces questions en attendant la livraison (d'ici 10j).

J'ai trouvé une vidéo hyper claire pour si je veux passer sur un ESP-01 après le prototype avec le Weemos.

Bonsoir

batterie LiOn format 18650 capacité 9900mAh ?????
La technologie aurait fait récemment des progrès impressionnants ?
Il ya beaucoup d'exagération dans les capacités annoncées
en parcourant l'annonce on lit plus bas
capacité 3000 - 3500 mAh ,cest déjà plus raisonnable (mais moins vendeur)

Pour se connecter à la carte il faut çà (en inversant au besoin les 2 fils dans le connecteur JST pour s'adapter à la polarité de l'embase du shield )

La batterie étant insérée dans un support pour format 18650

Autre solution : acheter un batterie LiOn dotée d'un connecteur JST PH2

Pour ce qui est de connecter un RTC au module il y a de bonnes info par Ici, mais de ce contexte l'idée est de tout réveiller/couper de manière cyclique et non juste l'envoi..
J'espère ne pas être trop hs..

al1fch:
batterie LiOn format 18650 capacité 9900mAh ?????
La technologie aurait fait récemment des progrès impressionnants ?
Il ya beaucoup d'exagération dans les capacités annoncées
en parcourant l'annonce on lit plus bas
capacité 3000 - 3500 mAh ,cest déjà plus raisonnable (mais moins vendeur)

Haha ouais j'ai vu entre temps ! Grosse arnaque, je me demande comment le vendeur a pu avoir 4 étoiles sur Amazon avec ce produit alors que +30% des gens ont mis une étoile... J'ai acheté celles-ci, avec le chargeur qui va bien :slight_smile:

al1fch:
Pour se connecter à la carte il faut çà (en inversant au besoin les 2 fils dans le connecteur JST pour s'adapter à la polarité de l'embase du shield )

Parfait ! Il faut que j'en achète un.

al1fch:
La batterie étant insérée dans un support pour format 18650

Entre temps j'étais arrivé à cette conclusion aussi et j'en ai commandé deux comme ça sur AliExpress :slight_smile:

caps1g3f:
Pour ce qui est de connecter un RTC au module il y a de bonnes info par Ici, mais de ce contexte l'idée est de tout réveiller/couper de manière cyclique et non juste l'envoi..
J'espère ne pas être trop hs..

Merci pour le lien ! Dans le contexte, je vais stocker toutes les 5 secondes pendant 1 seconde et envoyer les data sur mon serveur toutes les 5 minutes (pour économiser de la batterie et être en deep sleep le reste du temps). Bien sur là je donne des durées qui seront pas forcément les durées que je vais utiliser en production, il va falloir que je fasse des tests ! Donc j'ai besoin de savoir l'heure qu'il est quand je prends mes mesures, pour pouvoir faire mes stats après. C'est pour ça que j'ai pris un RTC :slight_smile: D'ailleurs j'ai pris celui-ci. J'espère qu'il fera le taff.

mergejoin:
Haha ouais j'ai vu entre temps ! Grosse arnaque, je me demande comment le vendeur a pu avoir 4 étoiles sur Amazon avec ce produit alors que +30% des gens ont mis une étoile... J'ai acheté celles-ci, avec le chargeur qui va bien :slight_smile:

Parfait ! Il faut que j'en achète un.

Entre temps j'étais arrivé à cette conclusion aussi et j'en ai commandé deux comme ça sur AliExpress :slight_smile:

Merci pour le lien ! Dans le contexte, je vais stocker toutes les 5 secondes pendant 1 seconde et envoyer les data sur mon serveur toutes les 5 minutes (pour économiser de la batterie et être en deep sleep le reste du temps). Bien sur là je donne des durées qui seront pas forcément les durées que je vais utiliser en production, il va falloir que je fasse des tests ! Donc j'ai besoin de savoir l'heure qu'il est quand je prends mes mesures, pour pouvoir faire mes stats après. C'est pour ça que j'ai pris un RTC :slight_smile: D'ailleurs j'ai pris celui-ci. J'espère qu'il fera le taff.

Bonjour
Tu pense "coller" où sur le baby toute la tripaille ?
perso , si je devais faire je pense que je partirais sur un ensemble complet facilement "amovible"
genre "fixation par velcroc" sous le baby

Artouste:
Bonjour
Tu pense "coller" où sur le baby toute la tripaille ?
perso , si je devais faire je pense que je partirais sur un ensemble complet facilement "amovible"
genre "fixation par velcroc" sous le baby

Salut :smiley: Bonne question ! Je compte le mettre sous le baby effectivement. C'est en fait le seul endroit où je peux vraiment le mettre d'après mes observations.

Je n'ai pas réglé la question de la fixation et tu fais bien d'en parler. Je n'ai, encore une fois, pas le droit d'endommager la table de babyfoot. Comment marcherait une fixation par velcroc exactement ?

mergejoin:
Salut :smiley: Bonne question ! Je compte le mettre sous le baby effectivement. C'est en fait le seul endroit où je peux vraiment le mettre d'après mes observations.

Je n'ai pas réglé la question de la fixation et tu fais bien d'en parler. Je n'ai, encore une fois, pas le droit d'endommager la table de babyfoot. Comment marcherait une fixation par velcroc exactement ?

tu ne connais pas le velcro ?
tu achete de la bande velcro autocollante
tu fixe un des cotés sous la face externe du baby et l'autre sur ton ensemble amovible (batterie+esp+accéléro)

illustration rapide

Il est possible de connaitre l'heure sans RTC si on a une connexion internet. Voici une fonction qui donne l'heure (trouvée sur internet pas de mon cru)

// Prendre l'heure dans un header de site internet
String getTime() {
  WiFiClient client;
  while (!!!client.connect("google.com", 80)) {
    Serial.println("connection failed, retrying...");
  }
  client.print("HEAD / HTTP/1.1\r\n\r\n");
  while (!!!client.available()) {
    yield();
  }
  while (client.available()) {
    if (client.read() == '\n') {
      if (client.read() == 'D') {
        if (client.read() == 'a') {
          if (client.read() == 't') {
            if (client.read() == 'e') {
              if (client.read() == ':') {
                client.read();
                String theDate = client.readStringUntil('\r');
                client.stop();
                return theDate;
              }
            }
          }
        }
      }
    }
  }
}

Elle renvoie un string qui contient la date et l'heure.
Du coup tu peux éviter d'utiliser la RTC pour réveiller l'arduino. Autant faire une gestion poussée du mode sommeil. Un très bon tuto ici : Gammon Forum : Electronics : Microprocessors : Power saving techniques for microprocessors
Tu peux enchaîner des temps de sommeil profond de 8 secondes en les comptant : au bout de 75 ça fait une attente de 10 minutes