++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Avancement ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. include:: volabid.rst :Création: 04/2023 .. _refMicrotacheAvancement: ==================================================================================================== 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** - doc : complé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. :ref:`sélection auto port com<refSelPortAuto>` 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`` **OK** - arduino ``\_02-realisation\bras2023arduinocodes`` - serveur ``\_02-realisation\brasrobot2023serveur`` **OK** - 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 ! .. image:: images/onaUnProblem.svg :width: 300 px 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/06 : on 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/06 : Question 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/06 : on 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é ! ==================================================================================================== Weblinks ==================================================================================================== .. target-notes::