7. Protocole Bluetooth et tests
Ce document decrit les commandes echangees entre l'application mobile et le firmware, puis propose une methode de test progressive.
1. Principe du protocole
Le protocole est volontairement minimal. L'application envoie des caracteres ASCII via Bluetooth Classic. Le module HC-05 les transmet au port serie de l'ATmega.
Le firmware lit ensuite ces caracteres avec Serial.read() et Serial.parseInt().
2. Commandes disponibles
| Commande | Sens | Exemple |
|---|---|---|
U |
Monter tant que la commande est repetee | appui maintenu sur MONTER |
D |
Descendre tant que la commande est repetee | appui maintenu sur DESCENDRE |
S |
Stop moteur | relachement du bouton |
S1 a S10 |
Sauvegarder la position actuelle | creation d'un profil |
P1 a P10 |
Revenir a une position sauvegardee | appui sur un profil |
3. Pourquoi les commandes sont courtes
Une commande courte est plus facile a traiter sur microcontroleur :
- peu de texte a recevoir ;
- peu de parsing ;
- moins de latence ;
- comportement facile a verifier avec un terminal serie ;
- code firmware plus simple a expliquer.
Le systeme n'a pas besoin d'envoyer un objet JSON complet pour dire "monter". Un caractere suffit.
4. Test 1 : application seule
Objectif : verifier que l'application demarre.
Etapes :
- Installer les dependances avec
npm install. - Brancher le telephone Android.
- Lancer
npm run android. - Verifier que l'ecran affiche la liste des appareils appaires ou le bouton de rafraichissement.
Si l'application ne demarre pas, regarder d'abord Metro, Gradle et les permissions Android.
5. Test 2 : Bluetooth sans moteur
Objectif : verifier que l'application se connecte au HC-05.
Etapes :
- Appairer le HC-05 dans les parametres Android.
- Ouvrir l'application.
- Appuyer sur
Rafraichir les appareils. - Selectionner le module HC-05.
- Verifier que l'application affiche l'etat connecte.
Si le HC-05 n'apparait pas, l'appairage Android est probablement absent ou les permissions Bluetooth ne sont pas acceptees.
6. Test 3 : reception serie
Objectif : verifier que le firmware recoit les caracteres.
Avant de brancher le moteur, il est possible d'ajouter temporairement des traces serie dans le firmware, ou de tester avec un terminal Bluetooth.
Commandes a envoyer :
U
D
S
S1
P1
Le but est de verifier que chaque commande arrive complete et dans le bon ordre.
7. Test 4 : moteur sans profil
Objectif : verifier le sens et l'arret moteur.
Etapes :
- Placer la banquette dans une zone sure.
- Appuyer brievement sur
MONTER. - Relacher et verifier l'arret.
- Appuyer brievement sur
DESCENDRE. - Relacher et verifier l'arret.
- Couper l'application pendant un mouvement pour verifier que le watchdog arrete le moteur.
Si le mouvement est inverse, corriger le cablage ou les fonctions moveUp() / moveDown().
8. Test 5 : sauvegarde et rappel de profil
Objectif : verifier le lien entre profil mobile et position embarquee.
Etapes :
- Placer la banquette a une position connue.
- Creer un profil dans l'application.
- Deplacer la banquette ailleurs.
- Appuyer sur le profil.
- Verifier que la banquette revient vers la position sauvegardee.
Si la banquette s'arrete trop tot ou trop tard, verifier :
- la valeur du potentiometre ;
- la tolerance
TOLERANCE; - le sens de comparaison dans le mode profil ;
- la stabilite mecanique.
9. Diagnostic rapide
| Symptome | Cause probable | Verification |
|---|---|---|
| Le HC-05 n'apparait pas | pas appaire ou permission refusee | parametres Android + permissions |
| Connexion impossible | mauvais module ou HC-05 occupe | redemarrer module et app |
| Les boutons ne font rien | commande non envoyee ou firmware non flashe | logs React Native + Arduino IDE |
| Le moteur ne s'arrete pas | commande S non recue ou cablage pont en H |
tester watchdog et stopMotor() |
| Le profil ne revient pas | EEPROM ou potentiometre | lire analogRead(PIN_POT) |
| Mouvement inverse | sens moteur inverse | cablage ou fonctions moteur |
10. Ameliorations possibles du protocole
Le protocole actuel suffit au projet, mais il peut evoluer :
- ajouter un accuse de reception, par exemple
OK:S1; - ajouter un retour de position, par exemple
POS:512; - ajouter une commande de calibration ;
- ajouter une verification de limites min/max ;
- envoyer l'etat du firmware a l'application.
Ces evolutions doivent rester progressives. Avant d'ajouter un protocole plus riche, il faut conserver un comportement moteur fiable avec les commandes simples.