Outils pour utilisateurs

Outils du site


choixlangageetplateforme

Se baser sur:

  1. ce que les étudiants connaissent (au moins un peu) déjà.
  2. ce que les étudiants peuvent utiliser par eux même et chez eux
  3. des choses réutilisables en entreprise

Pour utilisation arduino et raspberry en milieu industriel, voir: https://www.industrialshields.com/?gclid=CjwKCAiAg8OBBhA8EiwAlKw3kpWuYSmc776wUvBJwfby8GhTSZIGBZ6L3-76TCbFTYiySTxZN7xztBoCiZAQAvD_BwE

Arduino

Tout un écosystème:

  • matériel
  • logiciel
  • communauté

cartes UNO et NANO à 2 ou 3 euros

Utilisable par les étudiants chez eux Outils de développpement minimalistes, simples à installer et à utiliser

Beaucoup de ressources disponibles:

  • documentation
  • exemples logiciels et matériels
  • cartes d'extensions achetables

langage C++ simplifié: Programme de haut niveau utilisant des librairies HAL simples à utiliser (la plupart utilisant l'approche objet)

Pas de débuggueur: ce n'est pas vraiment un problème si utilisé pour faire des programmes de haut niveau simples

Architecture matérielle modulaire: Approche lego pour assembler un calculateur (du attiny 8 broches à un gros STM nucléo) et des périphériques

Possibilité d'accés à bas niveau aux ressources du microcontroleur pour illustrer le matériel dans un second temps.

Python

Utilisé partout et pour de bonne raison: de l'automatisme jusqu'à l'apprentissage profond en passant par les statistiques, les IHM, le développement WEB….

Outils de développement

  • simple comme Notepad
  • léger comme idle3
  • complet comme pyCharm
  • en ligne comme Jupyter

Apprentissage de l'algorithmie

  • Oblige à structurer le code en l'indentant
  • Masque (quasi complètement) les problèmes liés à la gestion des données (exemple type Entier), types listes, dictionnaires, tuples etc..
  • Passage de paramètres E/S beaucoup plus simple qu'en C, plusieurs valeurs de retour possible (évite la gymnastique pour passer de schéma bloc aux prototype de fonctions)
  • Le code est suffisamment lisible pour sauter l'étape algo papier
  • Pas d'accès direct en mémoire et de pointeurs (évite les fuites etc)
  • Langage interprété, les étudiants peuvent essayer le code ligne par ligne avant de l'inclure dans leur programme, cela remplace le debuggueur
  • Très bon pour s'initier à l'approche objet, syntaxe bien moins lourde que le C++ pour créer des classes

Domaines d'application

  • calcul symbolique avec Sympy (en remplacement de matlab)
  • calcul numérique avec numpy (en remplacement de matlab)
  • affichage et interface homme/machine: QT, matplotlib, OpenGL
  • réseau
  • simulation
  • … tout!

Plateformes matérielles

Peut être utilisé sur:

  • PC windows, linux ou mac
  • PC sur carte type raspberry Pi
  • microcontroleurs évolués (STM Nucléo ou Raspberry Pico (4$) par exemple )
  • navigateur web + smartphone portable par exemple avec Jupyter

L'apprentissage de l'algorithmie sur PC puis le passage à de l'embarqué sans changer de langage serait bien plus lisse qu'actuellement (C++ puis C au S2)

Les fausses limitations

  • Pas utilisé dans l'industrie: de plus en plus faux car python permet de déployer rapidement des preuves de concept, qui finalement sont souvent suffisemment performante
  • Pas assez performant: oui il y a un surcout en puissance de calcul et mémoire mais les performances des matériels augmentent (on ne developpe plus que très peu en assembleur d'ailleurs!)
  • Pas utilisable en embarqué: faux, il y a de plus en plus de cartes qui le supportent

Concernant les performances

  • Utilisation de librairies optimisées avec des bindings vers pythons: par exemple numpy et openCV. Python utilisé pour le haut niveau par l'étudiant
  • traduction du code python vers C++ avec l'outils Cython: ajout du typage statique et génération automatique des bindings

Tests unitaires

Actuellement:

  • tests unitaires des composants créés en VHDL à l'ancienne (sans testbench et avec contrôle visuel des chronogrammes produits)
  • sensibilisation en seconde année option automatisme en ethernet industriel pour du code C/C++

Profiling

Outils de mesure de consommation des ressources (mémoire, temps CPU etc..)

Il faudrait sensibiliser les étudiants à ces concepts (et leur parler un minimum de complexité algorithmique)

Outils de gestion de versions

Actuellement découverte en seconde année de l'outils GIT en bus de communication/ethernet industriel

Utilisation souhaitable dès la première année:

  • utilisation en local pour que l'étudiant voit ce qu'il fait par rapport aux fichiers fournis et à chaque exercice
  • utilisation simplifiée avec une seule branche et un seul utilisateur par projet

Initialisation d'un suivi:

cd ~/dossieràsuivre
git init
git add *.c*  *.pro
git commit -m'initial version'

Création d'une version:

cd ~/dossieràsuivre
git commit -a -m'exercice 2 fait et validé'

Visualisation des versions

gitk 

Ainsi en seconde année, une utilisation plus poussée serait possible

Outils de documentation de code

Obliger les étudiants à faire de la doc (certains IDE aident en le faisant automatiquement)

Utiliser un outils comme Doxygen

Documentation sur l'outils de documentation Doxygen

Utilisation de Doxygen pour ce projet

Dans le dossier des fichiers source, taper pour générer le fichier de configuration de la doc:

doxygen -g  

Editer le fichier de configuration Doxyfile

gedit Doxyfile &

Régler:

FILE_PATTERNS          =  *.cpp *.h *.ino
EXTRACT_ALL=YES
EXTENSION_MAPPING      = ino=C++

Pour compiler la doc et l'ouvrir dans un browser

doxygen Doxyfile && chromium-browser html/index.html
choixlangageetplateforme.txt · Dernière modification : 2021/10/28 19:18 de bvandepo