5-Programmes

Documentation par programme
...

Chaque programme comporte sa propre documentation pour aider à comprendre le code.
https://realpython.com/documenting-python-code/
“Code is more often read than written.” Guido van Rossum

Minimum = une ligne immédiatement après la classe ou fonction

Long =

  • une ligne avec le résumé
  • une ligne blanche
  • un texte de plusieurs lignes
  • décrire
    • Args:
    • Returns:
    • Raises:

Conventions pour les noms
...

Processeurs
...

soit X le code d'identification d'un processeur

  • T est le centre de tri des paquets
  • S est la lecture des organes de commande (parfois S et C sont ensemble sur un processeur)
  • C est le calcul : conversions organes de commande -> commandes de vol -> position de gouverne -> impulsion de commande
  • R est la liaison 'radio' avec le module d'émission et le récepteur. Éventuellement ces fonctions sont combinables avec le processeur 'C'
  • U est le dialogue utilisateur
    Pour chaque processeur il y a un programme 'main.py' qui démarre automatiquement à la mise sous tension . Pour le processeur 'X' il s'appelle "X_main.py" pendant la programmation car les programmes de tous les processeurs sont dans un seul folder.
    Lorsqu'il est copié vers son processeur il faut changer le nom en 'main.py' ou plutôt créer un programme main.py qui ne comporte que la ligne "import X_Main" qui provoquera le démarrage automatique.

Configuration de développement
...

En cours de développement , j'utilise le boitier de l'émetteur V5a pour lire les positions des manches et switches, avec un pico enfiché sur le pcb (origine V7). Le laptop est connecté par ftdi (connecteur pizerow de ce pcb vers porte USB du laptop)
Tout le reste est exécuté et mis au point dans le laptop.
La motivation est simple: le laptop dispose de Python3 et d'un debug complet (que ce soit avec Thonny , Wingware ou un autre outil de développement) ; par contre micropython ne fournit pas le debug.
Ceci est possible en ajustant le programme du centre de tri: toutes les fonctions en test sont envoyées vers 'U'.
Lorsque les programmes d'un processeur sont au point, ce processeur est installé dans l'émetteur.

Transmission des paquets et centre de tri
...

config.py
...

La configuration et des fonctions pour ce qui diffère entre Cpython et micropython, c'est ce qui permet de développer sur le laptop

module etx
...

Ce module comporte les transferts de donnée entre un processeur et le centre de tri:

  • une communication UART, qui est toujours sur le mêmes pins
  • programmes de transfert blocking ( la lecture attend l'arrivée d'un message)
  • conversions structures python <-> paquets
    Ce module est indépendant du hardware, dans le but de faciliter la mise au point sur le laptop. Il permet d'utiler un processeur Linux.

module ctx
...

  • propre au centre de tri (microprocesseur uniquement)
  • comporte les programmes des PIO qui fournissent les UART
  • les fonctions lecture/écriture non-blocking nécessaires pour le centre de tri: classes Txser et Rxser .
    Chaque objet est créé pour une PIN, en utilisant un PIO( 8 PIO = 4 transmissions rx/tx) avec la possibilité de créer des objets complémentaires avec les UART hardware.

T_main.py (centre de tri)
...

Dans le programme du centre de tri, il y a 4 processeurs connectés, ce qui fait 4 objets rx et 4 objets tx, avec la possibilité d'extension à 6 objets.
Le centre de tri utilise les deux 'core' du Pico et ses PIO
core1
Les fonctions de lecture et écriture sont 'non-blocking' , elles sont utilisées répétitivement pour chaque objet ,pour lire et écrire les lignes de communication simultanément.
Le code fonction du message détermine la destination du paquet :

  • parfois le paquet est traité dans le centre de tri
  • normalement il est destiné à un autre processeur et est mis à la fin de la liste des paquets en attente (une liste par processeur)
    -la destination par défaut est le processeur 'U'(très utile pour le debug)

fonctions pour le processeur S
...

Ces fonctions sont dans un processeur séparé ou bien dans le processeur 'centre de tri' . Ceci dépend de la construction de l'émetteur

S_txv5
...

L'émetteur txv5 utilise des circuits SPI pour les lectures analogiques et digitales.
Le programme S_txv5 lit ces entrées sans les convertir et les transfère vers 'C'
Le programme txv5a converti ces données brutes en variables python, selon le câblage de l'émetteur de réserve 'a' (boitier abs)

programmes à copier vers le pico 'T'
...

config , ctx, etx, S_txv5
T_main à renommer main
les drivers : st7565, mcp3208, mcp23Sxx
la lecture spi : S_txv5

validation de la communication
...

Laptop : utiliser dans Wingware test_etx_2T.py, qui envoie un message par seconde
Pico: utiliser Thonny pour le programme test_etx_2R.py, qui reçoit et imprime les messages
La communication passe avec les fils

  • noir à gauche (GND)
  • non connecté pour éviter d'alimenter ainsi le pico
  • vert inutile pour ce test : signal Rx du pizerow/laptop avec le signal Tx du Pico
  • blanc= le signal Tx du pizerow/laptop avec le signal Rx du Pico
    Le connecteur pizerow est donc , de gauche à droite
    La validation est faite entre le laptop et un pico avec un câble FTFI, à 9600 bauds car en développement le pico est accédé par Thonny , qui est lent.

validation top-down de la circulation des messages
...

réalisé 9/12/2023 dans les deux sens

processeur de calcul 'C'
...

Le processeur C est un processeur de calcul pur, relié uniquement au centre de tri. Si la puissance du pico est insuffisante, il y a des remplacements possibles .

C_txv5a/b
...

Effectue la conversion des entrées brutes en variables python

C_main
...

C_main est le programme principal du processeur.
Hiérarchie des classes:

  • Model_Base comporte toutes les traitements de l'émetteur pour ses fonctions dans 'C'
  • une classe (flight_rs dans mon cas) comporte les standards d'un pilote
  • finalement une classe Model comporte le programme d'un modèle.
    Une autre façon de décrire un programme 'main' est de décrire les messages entrants et sortants : voir 4.1-Organisation-Calcul
    - lecture des données ADC-DIO
    - envoi d'un message de 'commandes menu'
    - réception d'un message avec la mise à jour d'un paramètre
    - à l'initialisation ,demander les fichiers du modèle et des paramètres

U_main
...

En mode 'vol' le processeur reçoit les 'commandes menu' et envoie les modifications.
En mode 'sol' les demandes proviennent du browser . Il demande les données à 'C'