Avancement¶
- Auteur
J.Soranzo et Gilles
- Societe
- Entity
- Dépôts Bitbucket
- Création
04/2023
micro taches¶
Hardware : câbler l’alim puissance vers ARDUINO OK
Documentation
mul appinventor
ajouter les liens vers les dépôts OK
doc : créer un chapitre “serveur javascript” et un chapitre “serveur Python” OK
mettre le chapitre serveur javascript en pour mémoire OK
- doccompléter le manuel utilisateur
Relever les valeurs caractéristiques des servo à compléter OK
ajouter LED ALARM appInventor OK
hyperdocumenter le bt2560 et tout ce qui va autour OK
revoir la doc de l’install OK
voir pour intégrer vidéo
Améliorer la présentation de l’IHM avec un peu de css (option) abandonné
Retouche mécaniques OK
récup du design original (Sur thigiverse à partir du Wiki vorobotics) OK
fichier scad à importer dans Fusion360 (dans le mien) OK
reprise de la base avec moteur pap abandon
adaptation éventuellement à de servo plus costaud abandon
Reprise de mon design abandon
impression des pièces abandon
retouches de la base pour moteur pas à pas abandon
Dans la fonction checkportcom optimiser l’algo cf. sélection auto port com
Envisager une déco / reco au niveau serveur + Arduino abandon
void softReset(){
asm volatile (" jmp 0");
}
- dégager la carte ADAFRUIT (suite pb du 8/7/23) standby
branche Arduino
- reprendre l’architecture autour du BT OK
redessiner branche Gilles OK
intégrer à la doc OK
- tester le dialogue entre l’appli dans le navigateur et l’ARDUINO (le vrai pas simulé) de commande du brasRobot OK
en serial incompatibilité ÉCHEC
en bt OK
terminer la rédaction du manuel utilisateur OK
Côté serveur : Limiter l’envoi des trames si aucun delta n’est supérieur à exemple 2° (à peaufiner) pas forcément nécessaire d’après essais du 23/03 OK
Plaque à LED status robot abandon
Pour mémoire¶
Position init web : envisager une fonction dédiée plus calme… OK
Essayer de passer le BT en 115200 OK
adapter Attention vitesse serveur versus vitesse BT OK
Param bras gilles : OK
Refactoring du code : harmoniser l’utilisation de SERIAL_DEBUG (défini dans le .ino) OK
Traiter le bug rangement au niveau plateforme (delta entre position de rangement et position inital = 0) OK
To do : expertise gpio temps de cycle (20ms*6 delays dans moveMotorWeb) abandon
Revérifier le fonctionnement en mode appInventor suite passage mySerial to Serial1 OK
Corriger rotationPoignet en mode appInventor OK
- limiter les valeurs négatives OK
analyser OK
Intégrer et tester en mode BT OK
cablage OK
test OK
Bouton rangement et initialisation dans l’interface WEB OK
Passer les code (ARDUINO et SEVEUR) avec #define debug OK
- écrire le serveur express.js ABANDONNER !
écrire les routes
- tester la présence du simulateur ARDUINO
écrire la fonction checkcom OK
ajouter un test liste vide
ajouter la liste de tous les Arduino possibles
écrire la fonction de conversion des commandes ws web vers serial non simulé
tester la route /checkConnexion OK
- expérimenter les websocket en node.js et express.js OK
npm i ws et http OK
ajouter dans l’IHM la commande de rotation de la main OK
ajouter dans l’IHM la commande de serrage OK
écrire le simulateur Arduino, basé sur le système DCC++ OK
expérimenter serial depuis node.js OK
- séparer les dépôt doc et code OK
créer dépot doc : brasrobot2023docsources OK
créer dépôt Arduino : bras2023arduinocodes OK
créer dépôt serveur : brasrobot2023docsources OK
- créer les dossiers locaux correspondant dans
0021_brasRobot_webGUI\projet
OK doc
\_01-docs\brasrobot2023docsources
OKarduino
\_02-realisation\bras2023arduinocodes
serveur
\_02-realisation\brasrobot2023serveur
OK
- créer les dossiers locaux correspondant dans
faire les push OK
- écrire le serveur en Python OK
créer un dépôt git dédié OK
Tester python -m http.server 9000 OK
écrire un serveur minimum en python avec Flask (retrouvé -plateformRpi_IOT/PART_IV) OK
enrichir le serveur avec les pages “Gilles” (interface du bras) OK
- ajouter websocket en python OK
affichage de la trame wobsocket sur le serveur OK
lister les ports série OK
tenter d’ouvrir les ports OK
filtrer la liste pour ne garder que les ports successibles d’être ouverts OK
filtrer la liste pour ne garder que les ports successibles de matcher (Arduino + CH340) OK
- Essayer d’établir la communication avec l’arduino du bras OK
dans route
/checkConnexion
, améliorer la réponse pas trouvée OK
ouvrir le port com concerné avant d’appeler la page interfaceBrasRobot.html pour ne pas changer le code de son bouton connect OK
passer Arduino en mode WEB (déjà fait) dans checkRobotConnexion OK
transmettre la trame ws des moteurs du serveur vers le port com OK
- lors des essais d’un autre machine ws impossible, voir config flask-socket ou carrément flask-socketio OK
carrément pas ! Voir le code du bouton connect : localhost codé en dur OK
Adapter le code ARDUINO à un fonctionnement APP_INVENTOR ET WEB
Écrire la version modifiée APP_INVENTOR OK
Tester la version APP_INVENTOR OK
- Développer la commutation APP_INVENTOR vers WEB OK
écrire (envoi d’un caractère @ depuis le serveur) OK
tester en serial OK
- intégrer le code WEB au code Gilles OK
adapter le code de départ pour un fonctionnement avec la carte ADAFRUIT OK
faire les relevés min, max, offset… pour notre bras OK
- mettre au point le code ARDUINO de déplacement du bras
passer serial debug à 115200 OK
essayer à 230400 OK
- terminer le §Travaux en mode liaison série cf chapitre concerné
vérifier la bonne réception des trame entre server et firmware OK
initialiser correctement les tableaux angle_offset, angle_max, angle_min[] aborted class
vérifier le scope de toutes ces variables fichier fonctionsRobotWeb.cpp OK
mettre au point fonctionsRobotWeb.cpp OK
- led passage en mode WEB/appInventor OK
Dans un premier temps LED BUILTIN allumée = mode web OK
- ajouter @ au debut de chaque trame WEB OK
modifier interfaceWeb.html OK
adapter code Arduino, decodeTrameWeb OK
envisager une classe joint correspondant à chaque moteur avec comme attribut (min, max, offset, cur, dest, step) OK
mettre les constantes du robot dans fichier de configuration séparé configRobot.h OK
Journal¶
Trame init : nouvelle <T 90 90 180 180 0 10>
25/05/24:
Mise en ligne du fichier apk
18/05/24:
doc mul utilisation du serveur
04/05/24:
Câblage alim Arduino avec Diode
Doc MUL
27/04/24:
Essais servos un à un avec une 2560 dédiés
Remontage OK
Balancement mode WEB et APP inventor OK
20/04/24:
Réparation de la plateforme : impression bagueSupérieurFiletée qui a cassée sur Flashforge du Bricolab
remplissage à 50% avec recouvrement remplissage et périmètres 30%
BagueInférieurPartieHaute : reprise pour augmenter son épaisseur de 4mm et de mettre des insères
filetés MUTEX : export depuis Fusion step en erreur
Donc reprise dans Fusion360 directement et export en stl
ARTILLERY du BRICOLAB zéro en Z impossible à faire
Vis M3x20
Création d'une application de teste des sevo commande <A i> i angle utilise la lib servo.h
06/04/24:
Init : réinitialisation de l'interface web versus Arduino. Impact html fonction initBrasFunction
Mis au point fonction rangementWeb !
Casse de la plateforme ! => remettre en état la platefrome
23/03/24:
#debug dans le code ARDUINO mais pas dans le serveur console.log trame commenté simplement
16/03/24:
Sujet BT:
Modif du serveur Tempo 2 secondes ré-ouvrir le port série trouvé.
Essai mode appInventor en BT : seul la **rotation poignet** pause PB !
09/03/24:
On s'attaque au BT (voir chapitre Arduino code )
On a réussi à communiquer dans les 2 sens... avec le code bt2560.ino
02/03/24:
Map motor 3 et 4
Obligé d'interveir mécaniquement sur les servo des joint 3 et 4 pour les mettre en conformité avec
l'ihm mouvement de 0 à 180° versus 0 90 180...
Conséquence : modif valeur init dans l'ihm (retour au valeur "d'avant") sauf pour la pince et
la rotation pince. Et modif valeur init M3 etM4 dans l'ARDUINO
Autre conséquence sur la position de rangement de la plateforme nous ayant obligé à faire un
180° à la plateforme. Opération laborieuse sans les bons outils...
Nettoyage ARDUINO
24/02/24:
Toujours map web vs physique
Rotation poignet à l'envers
Il nous reste à mettre au point coude et poignet (motor3 et 4 )
On a un problème Huston !
17/02/24:
Mise au point des mouvements des joints par rapport au dessin de l'interface WEB
plateforme ok
rotation poignet inversée KO
serrage pince : obliger de petites retouches dans .html
inversion sens moteur par rapport au mouvement de l'interface web
Dans .html ligne 74 max 85° + trait noir au milieu de la pince
Epaule : constat sens inverse par rapport à notre prévision par rapport à l'interface WEB
Ceci pour rester cohérent du sens de rotation de la plateforme
Par rapport à l'opérateur le bras regarde vers la droite
Le secteur noir de la roue plateforme regarde dans le même sens que le robot
On est resté bloqué sur le sens de rotation des moteurs. Notamment rotation pince la formule est fausse Elle fonctionne dans le cas où
10/02/2024:
à la mise sous tension, le serveur envoi la trame ``@90,90,180,180,90,17``, nous on s'attend à
avoir la trame init
Ajout traitement intelligent de @ dans decodeTrameWeb
Ajout contrôle du nombre de virgules et checksum dans la trame dans decodeTrameWeb
Ajout d'un commande <t 90 80 90 85 0 10 00> (00 checksum) <t 90 80 90 85 0 10 355>
20/01/2024:
Gros bullshit : Il faut un serial1 pour le SERVEUR et un arduino serial pour le debug
La phrase tag est sur SERIAL1 et pas sur SERIAL1
Modif du code Arduino pour différencier de manière strict les 2
Ajout LED ALARM en 38, 40 Réception commande appInventor incorrecte avec sabordage (finalement
pas implémenté)
Ajout dans html du @ devant toutes les trames. Mise au point en cours
<T 90 80 90 85 0 10>
13/01/2024:
<T 90 80 90 85 0 10>
<T 110 80 90 85 0 10>
Pour le moteur Plateforme angle demandé : 110 angle retenu 70
Correction BUG2 et commit
Commande R
Trame de rangement : <T 90 60 0 0 0 10>
Tentative infructueuse de connexion mode Web. Visiblement le @ n'est pas envoyé à la carte.
- vérifier qu'on allume bien une LED au passage en mode WEB : LED BUILTIN **OK**
- vérifier qu'on envoie bine le @ oui quand on vérifie les ports dans le serveur sauf qu'on fait un close => reset arduino
- ré-ouvrir le port et envoyer @
Correction localhost au niveau serveur
Toujours au niveau serveur : ajout dans la liste des cartes reconnues : Arduino MEGA 2560
06/01/24:
Création de la fonction void initInstancesBras();
Création nouvelle commande de debug Init position physique + instances
Correction du BUG3 : la valeur dans parametres_robot.h #define POS_INIT_PINCE PINCE_INIT
16/12:
Validation moveMotorsWeb()
retouches d'affichage pour mise au point
Mise au point :
Première rotation physique en mode WEB mais manuel (interface de debug)
BUG1 : à première init on part dans un mode chelou
BUG2 : sens plateforme ne fonctionne que de 0 à 90° cad 110° est identique à 70° on arrive pas à aller au delà de 90°
BUG3 : la pince bouge au premier mouvement de plateforme (cause probable: position init différente entre la version web et la version de base)
09/12:
Petite retouche affichage de debug de decodeTrameWeb()
mise au point de decodeTrame, grosses difficultés avec la position de départ et le sens...
RAF1 : dans moveMotorsWeb() afficher quels moteurs bougent.
RAF2 : faire une grosse validation de decodeTrame avec plein de cas
02/12:
Mise au point stepNum.
Mise au point void moveMotorsWeb() : bug appel avec copie stepNum
25/11:
mise en conformité parametres_robot.h option Gilles.
Passage de la fonction int decodeTrameWeb( String angleStr ) en classes.
Ajout commande <T 90 0 30 15 5 6>
Mise au point : joint[0].getNom renvoi une chaine vide: pb joint[0] = plateforme
Il faudrait que joints soit un tableau de pointeur vers les variables joint
11/11:
Nouveau § pour consigner les valeurs du bras 2 (malette) dans brasManipulateurOriginal.rst
Passage à la classe Join : évaluation de l'impact
Mise en place + valeurs initiales dans setup()
04/11:
Pas de USB UART dispo, on tente avec le BT
Pb : identifier le port com au niveau du PC
Ajout commande <F> I2C scan : found @x40 (vrai avec ou sans l'alimentation de puissance)
BT: Bras2023_HC05 pass 1234
2560 clone émet sur RX1 (broche RX1 et TX1 croisée)
Pour cette carte là en particulier câbler BT RX sur RX3
Mais normalement on est bien **CROISE**
Prise de valeur avec la commande <M> sur le petit et sur le gros bras
21/10:
Peu de production explications Faress...
essais ARDUINO2560 en directe sans serveur web
Introduction mode debug via * sur liaison server/app inventor
SerialCommand fonctionnel et premières commande implantées
14/10:
branchement du bras version Arduino uno pour essais communication avant modif.
lancement serveur
lancement navigateur
lancement mooniteur série arduino => reset carte ARDUINO => modde AppInventor
cf brasManipulateurOriginal.rst §Travaux en mode liaison série/Mise au point
pb:
si on lance le moniteur série après le serveur on est en mode appInventor côté ARDUINO et en
mode WEB côté serveur ! On ne fait aucun correction car c'est un mode debug...
Contournement : relancer le serveur
ESSAIS 155200 com serveur, 230400 pas sur à refaire
Essais amélioration algo connexion raté à refaire sur branche dédiée.
Résultat obtenu:
======================================================================
Lancement serveur
======================================================================
Première liste
Essaie port : COM8
Essaie port : COM9
Essaie port : COM10
Essaie port : COM11
Essaie port : COM14
Essaie port : COM21
Essaie port : COM26
Essaie port : COM29
Essaie port : COM30
Filtrage
******************************************************************
Ports valides filtrés :
COM9 =====> Lien série sur Bluetooth standard (COM9)
COM10 =====> USB Serial Port (COM10)
COM26 =====> Lien série sur Bluetooth standard (COM26)
COM29 =====> Lien série sur Bluetooth standard (COM29)
******************************************************************
Recherche phrase TAG
teste port : COM9
Erreur lors de la liaison avec le port série : Write timeout
teste port : COM10
Liaison bras robot trouvé COM10
* Serving Flask app 'server'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:8300
* Running on http://192.168.1.54:8300
Press CTRL+C to quit
30/09:
Reprise...
Recherche source 3D du bras **OK**
Tentative de dialogue avec ARDUINO: sélection automatique du port COm depuis le serveur... fait
Transfert des trames serveur to ARDUINO **OK**
TODO : Mises au point côté ARDUINO cf microtache, passer sur une 2560 (pour dégager le soft sérial)
ATTENTION: // stepNum = decodeTrameWeb(msg); : commenté dans le firmware
02/09:
Toujours sur la liste des ports séries avancée remarquable
Push : arduino, serveur + docSrc et html
12/08
Gilles explication Bitbucket
Affichage des info en provenance du navigateur **OK**
Liste des ports serie en python **OK**
ouverture des ports un à un avec capture de l'erreur
cf. microtâches Dev server
05/08
to Gilles : .venv + doc
ws connect : on bloque sur erreur 400: wss pas mieux http et https côté navigateur not allowed
ws connect, disconnect fonctionnel
RAF : route /echo ws + gestion, connection port série + aff data ws + forward data from ws to serial
08/07
Rappel : 3 dépôts git pour le projet
Relevés des min, max... et inclu dans la doc
Réparation du servo défectueux, mise en évidence d'une faiblesse sur articulation 2
intégration Flask dans server.py
RAF : procédure de connexion websocket + gestion serial
01/07:
serveur web python
Rappel : sur la branche master/dossier pourLaDocEnAttendant on ne touche que la doc
Creation d'un dépôt pythonServeur et docProjet (séparation des dépôts)
Premier test serveur python : python -m http.server 9000
Intégration de l'interface IHM
ATTENTION Travailler dans .venv .venv\Scripts\activate
Lancer le serveur : python server.py
make.bat ajouté au gitignore à cause du lien relatif vers webdoc
- 24/06on découpe void moveMotorAngleWeb( String angleStr ) en decode et en move.
on crée un fonction d’adaption servo to PWM ça compile ! Pas encore testé. Todo : initialiser les tableaux des constantes. Gilles retrouve un soft de test Arduino main. Pendant que je crée une version avec serialCommand.h (en standby)
Todo : terminer la fonction void moveMotorAngleWeb( String angleStr )
- 17/06Question est-ce que le code Arduino est fonctionnel (la commutation oui, le reste non)
On se focalise sur la mise au point du code ARDUINO en fermant les yeux sur les dysfonctionnements éventuels du serveur. Transmission des trame vers Arduino ok
- 10/06on laisse tomber le bt pour le moment. on travail en rs.
On a toujours un rep pour la doc et un rep pour le dev qui pointent tous les 2 vers le même dépôt. Un sur la branche master pour la docEnAttendant et un pour le dev du code Arduino.
03/06/2023¶
Balancement du bras avec nouveau code ARDUINO mode APP_INVENTOR avec BT + téléphone : ok
Ajout de Arduino dans la détection serveur + tentative d’ajout du BT HC-05 et c’est là que tout s’est gâté !