Go Down

Topic: Arduino & ble TPMS (Capteur pression pneus) (Read 516 times) previous topic - next topic

savoriano

May 16, 2019, 09:54 pm Last Edit: May 17, 2019, 11:53 pm by savoriano
Bonjour,
J'ai dans la tête de fabriquer un"ordinateur de bord" pour mon scooter avec un Arduino mega + module bluetooth HM-10 + Module GPS + écran tactile 3.5.
La fonctionnalité de cet ordinateur qui me donne fil à retordre est le contrôle de la pression des pneus.
J'ai acheté des tpms ble pour les installer sur les pneus.
Mon problème est que je ne sais pas comme lire les donnes de ses capteurs étant donné qu'ils transmettent les donné seulement quand il y a un changement de pression ou de température.
Il faut que mon module bluetooth soit de façon permanent à l'écoute.
Il y a la commande "AT+DISI?" mais l'écoute ne dure très peu.
Comme puis-je faire? Quelqu'un à une idée?
Merci
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#1
May 16, 2019, 10:51 pm Last Edit: May 17, 2019, 10:14 am by al1fch
Bonsoir

Il est question du TPMS dans cette vidéo d'Andrés Spiess

ce sujet n'a pas encore été abordé sur ce forum

Que donne un moteur de recherche avec les mots cles "HM-10 TPMS"  ? des tentatives ? des  succès ? des impasses ?
Suivre ces pistes :

Remarque :  le HM-10 n'est pas un composant BLE universel, il se cantonne à 2 ou trois fonctionnalités (émulation série, beacon..) Le BLE du Raspberry PI 3 est utilisé ici pour capter et décoder les trames   TPMS (des utilitaires Bluetooth de Linux permettent le scan ininterrompu)

savoriano

Je l'ai tous lues ces posts. Le premier est très intéressant  mais il n'explique pas comme écouter ces capteur avec un arduino.  J'ai essayé avec un android et effectivement,comme dit ce post, je vois les transmissions des capteurs.
Je n'ai jamais travaillé avec le bluetooth donc pour moi ce monde est tout nouveau.
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

savoriano

#3
May 17, 2019, 12:25 am Last Edit: May 17, 2019, 12:29 am by savoriano
Donc le scan ininterrompu est obtenu via software?
La video parle des tpms hf 433mhz: peut être qu'ils sont plus faciles à utiliser!
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#4
May 17, 2019, 08:40 am Last Edit: May 17, 2019, 10:03 am by al1fch
scan ininterrompu : oui c'est le software (ou le firmware) et dans le cas du HM-10 le firmware est , par le jeu de commandes AT, limité à certaines fonctionnalités

le 433MHz est , pour une carte Arduino et un récepteur radio , sans doute plus facile à intercepter

En dehors de 'sentiers battus' le Bluetooth 'classique'demande un gros effort de compréhension
De mon point de vue le BLE est 'pire'.

PS : pourrais tu éditer le titre du message initial en ajoutant au moins TPMS ou pression des pneus.... ça facilitera les recherches ultérieures sur ce sujet particulier ?

al1fch

#5
May 17, 2019, 09:11 am Last Edit: May 17, 2019, 09:59 am by al1fch
sans garantie du résultat : un ESP32 possède une radio Bluetooth. 
Avec la librairie BLE et son exemple BLE_scan on va au delà des limites du HM-10.
Sous réserve que les infos utiles soient visibles par un scan, en augmentant la durée de la boucle de scan (scantime , ligne 11) on réduit la probabilité de perte de trame TPMS
Avec l'ESP32 les résultats du scan ne sont pas affichés à la fin de celui-ci (cas du HM-10) mais au fur et à mesure ce qui permet de traiter une trame TPMS dès sa réception.

Une carte à ESP32 pourrait remplacer l'ensemble Mega + HM-10 .... (sous réserve que l'écran tactile actuel ne réclame pas trop de GPIO pour une ESP32)

Remarque :  si avec un HM-10 il est  possible récuperer et exploiter des trames TPMS (sinon toutes les trames vu la faible durée d'écoute par AT+DISI?) une boucle relançant AT+DISI? est peut être un compromis acceptable.
J''obtiens une écoute de 5s environ par les commande AT+DISI? et AT+DISA?  , (cette dernière récupère plus d'infos et les restitue par un mix ASCII et hexadécimal)

savoriano

#6
May 17, 2019, 11:14 pm Last Edit: May 17, 2019, 11:22 pm by savoriano
Grace à al1fch j'avance:  :)

Pour le câblage: Bluetooth LE: Using CC-41A (HM-10 Clone):  

La commande "AT+DISI? a été ajouté à partir du firmware 536 donc si vous avez un CC-41A avec le firmware 3.03 il faut faire un upgrade du firmware: How to flash genuine HM-10 firmware on CC2541 (make genuine HM-10 from CC41):

Si vous voulez savoir tout sur HM-10: HM-10

Le simple code:
Code: [Select]
#include <SoftwareSerial.h>
 
SoftwareSerial BTSerial(4, 5);
unsigned long lTimer = 0;
void setup() {
   Serial.begin(9600);
   BTSerial.begin(9600);
   Serial.println("ok");
   BTSerial.write("AT");
   delay(500);
   BTSerial.write("AT+RENEW");
   delay(1000);
   Serial.println("1 ");
   //BTSerial.write("AT+NAME=Controller\r\n");
   BTSerial.write("AT+IMME1");
   delay(1000);
    lTimer = millis();
   BTSerial.write("AT+ROLE1");
}
 
void loop()
{
  
  char c;
  if (BTSerial.available())
  {
    //c = BTSerial.read();
    //Serial.println("r");
    Serial.write(BTSerial.read());
  }
  if (Serial.available())
  {
    //c = Serial.read();
    //Serial.print(c);
    //Serial.println("");
    BTSerial.write(Serial.read());
  }
  if (lTimer + 3000 < millis())
  {
    Serial.println("");
    BTSerial.write("AT+DISI?");
    lTimer = millis();
  }
}


résultat:

OK+DISISOK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-080
OK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-054
OK+DISISOK+DISCEOK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-076
OK+DISISOK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-071
OK+DISCEOK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-079
OK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-071
OK+DISISOK+DISCEOK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-085
OK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-071
OK+DISISOK+DISCEOK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-086
OK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-070
OK+DISCE
OK+DISISOK+DISC:00000000:00000000000000000000000000000000:0000000000:83EACA4003AA:-071
OK+DISC:00000000:00000000000000000000000000000000:0000000000:987BF3348E71:-086

83:EA:CA:40:03:aa est mon capteur TPMS
La chose intéressante est que on peux envoyer un AT+DISI? même si celui précédemment envoyé n'a pas fini (OK+DISCE).
Maintenant le problème est que je vois seulement des "0" comme donné!
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#7
May 17, 2019, 11:29 pm Last Edit: May 17, 2019, 11:50 pm by al1fch
OK

Pour être tranquille mieux vaut acheter des vrais HM-10 !!

Tous les bidules BLE n'envoient pas de données dans la première partie de la trame émise, d'où les 0; AT+DISI? ne peut pas en faire plus.

Essayer AT+DISA? qui renvoie plus de données (certaines en ASCII et les autres en hexadécimal d'ou un travail supplémentaire pour extraire les infos utiles).

savoriano

La même chose mais avec AT+DISA? au lieu de AT+DISI?:

Je n'arrive pas à faire un copié/collé car il y a des caractères étranges!
Photo:
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#9
May 17, 2019, 11:40 pm Last Edit: May 17, 2019, 11:49 pm by al1fch
caractère étranges car ce ne sont pas des 'caractères imprimables', le terminal de l'IDE Arduino ne peut montrer les valeurs

En réceptionnant les données avec un terminal sachant afficher l'hexadécimal on y voit plus clair

Firmware : en février 2019 la version 703  est sortie sur le site du fabricant du vrai HM-10




savoriano

#10
May 17, 2019, 11:41 pm Last Edit: May 17, 2019, 11:44 pm by savoriano
Si j'ai bien compris je dois prendre chaque byte et le transformer en HEX ?

Oui mais pour la version 703 le upgrade se fait différemment!!
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#11
May 17, 2019, 11:42 pm Last Edit: May 17, 2019, 11:48 pm by al1fch
oui, c'est ça
Voilà la structure de la réponse à AT+DISA? d'après la doc

savoriano

PS : pourrais tu éditer le titre du message initial en ajoutant au moins TPMS ou pression des pneus.... ça facilitera les recherches ultérieures sur ce sujet particulier ?

C'est mieux?
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

al1fch

#13
May 17, 2019, 11:59 pm Last Edit: May 18, 2019, 12:03 am by al1fch
Oui , ça permettra de retrouver plus vite le fil quand il sera question  de TPMS !
Quote
Oui mais pour la version 703 le upgrade se fait différemment!!
Ah ! les miens sont encore en version 701

savoriano

Oui mais ça peut être utile pour n'importe quel ble!
Maintenant je vais étudier comme il faut faire pour transformer un byte en HEX: ça aussi je ne l'ai jamais fait. :o
Pardonnez moi pour mon français, ce n'ai pas ma langue maternelle.

Go Up