Odomètre (roue de mesure) bluetooth

Bonjour,

Ceci est un petit projet assez basique du point de vue électronique et code, réalisé à 90% à base de recyclage.

Il existe déjà pas mal d'odomètres BT commercialisés à l'intention des cyclistes mais bizarrement ça ne semble pas exister pour les roues de mesure couramment utilisées dans le BTP. C'est dommage puisque ce secteur d'activité est en train de migrer à marche forcée vers le numérique et que l'on devrait être en mesure d'acquérir directement des données dans des applis sur smartphone ou tablette, que ce soit pour faire des devis ou suivre un chantier. Comme je n'ai pas l'âme d'un créateur de start-up, n'hésitez pas à piquer l'idée...

La partie mécanique de mon prototype est construite à partir d'un mécanisme récupéré sur une machine à pain. La roue et le manche sont récupérés sur un vieux caddie comme ceux qu'utilisent les grand-mères pour faire le marché.

Je n'ai pas fait d'appli pour l'acquisition des données, je me contente d'utiliser une appli existante pour android (Serial bluetooth). Il existe probablement l'équivalent pour Apple. Ce serait sympa de pouvoir enregistrer les données avec des commentaires sur une appli dédiée mais je ne l'ai pas encore fait.

Pour la partie électronique, j'utilise un contacteur (récupéré sur une imprimante), une puce Attiny85 et un module HC05. La seule astuce du montage consiste à transformer le contacteur en double contacteur : en marche avant, le contacteur fonctionne normalement et permet de compter les tours de roue (photo 1) mais en marche arrière, il se trouve en butée et effectue une rotation sur un axe. C'est alors le bloc du contacteur qui fait office d'interrupteur pour remettre à zéro le décompte (photo 2). Je n'ai pas eu besoin de mettre en place de ressort pour faire revenir le contacteur en position normale car la pression exercée par le câble est suffisante.

Comme je n'ai pas réussi à utiliser des interruptions avec l'Attiny85, je me suis contenté d'un code sans doute peu élégant mais fonctionnel :

/*
  Pour Attiny85
  Le contacteur est relié d'une part à la broche 3 et d'autre part à la masse
  L'interrupteur RAZ est relié d'une part à la broche 4 et d'autre part à la masse
  Les broches 1 et 2 sont respectivement reliées au Tx et au Rx du module HC05

  Remarque : suite à une erreur de manipulation, le code original a été perdu. Ce code reconstitué n'a pas été testé et a peut-être besoin de corrections.
*/


#include <SoftwareSerial.h>

SoftwareSerial mySerial(1, 2); // RX, TX

int compteur = 0;
boolean increment = true;
boolean reset = true;
int longueur = 0;

void setup() {
  mySerial.begin(9600);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
}

void loop() {

  while (digitalRead(4) == HIGH) {
    if (digitalRead(3) == LOW && increment) {
      compteur++;
      longueur = compteur * 0.11; // pour une roue de 14 cm de diamètre et 4 incréments par tour
      mySerial.print(compteur);
      mySerial.println(" m");
      increment = false;
    }
    if (digitalRead(3) == HIGH && !increment) {
      increment = true;
    }
    if (!reset) {
      reset = true;
    }
  }
  if (reset) {
    reset = !reset;
    compteur = 0;
    mySerial.println("Remise à zéro");
  }
}

Remarque : il faut au préalable configurer le module HC05