Avancement

_images/logo.JPG
Auteur

J.Soranzo et Gilles

Societe

VoRoBoTics 2

Entity

VoLAB 2

Dépôts Bitbucket

Source de la doc, code ARDUINO, serveur et la doc en html 1

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 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 !

_images/onaUnProblem.svg

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
    - -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  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é !