Changes between Version 16 and Version 17 of IOC_T04


Ignore:
Timestamp:
Feb 24, 2023, 7:04:25 AM (17 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IOC_T04

    v16 v17  
    44}}}
    55
    6 Le [htdocs:files répertoire] contient package eps32.tgz et le json du package.
    7 
     6{{{#!protected
     7- Le [htdocs:files répertoire] contient package eps32.tgz et le json du package.
     8- Vous pouvez tester le composant ESP32 en exécutant quelques exemples de tutoriaux (décrivez succinctement ce que vous avez fait dans le CR). Les exemples sont accessibles
     9}}}
    810
    911= Objectif de la séance
     
    1113
    1214Le but de la séance est d'écrire une application multitâches Arduino utilisant plusieurs périphériques.
    13 Vous allez écrire une application affichant par exemple la luminosité chaque seconde sur l'écran OLED, tout en faisant clignoter la LED avec un ON/OFF par le bouton poussoir et contrôler le buzzer en faisant dépendre sa fréquence de la lumière ou d'une action du bouton ou encore d'une valeur entrée au clavier du terminal. En conséquence, vous allez :
     15Vous allez écrire une application affichant par exemple la luminosité chaque seconde sur l'écran OLED, tout en faisant clignoter la LED avec un ON/OFF par le bouton poussoir et contrôler le buzzer en faisant dépendre sa fréquence de la lumière (s'il y a un buzzer sur votre maquette) ou d'une action du bouton ou encore d'une valeur entrée au clavier du terminal. En conséquence, vous allez :
    1416- Utiliser la LED présente sur le module.
    1517- Utiliser le port série qui relie le module et le PC.
     
    2830
    2931
    30 Si vous êtes sur votre ordinateur personnel, vous allez devoir installer l'IDE Arduino et installer les bibliothèques permettant d'utiliser l'ESP32.
    31 
    32 Pour Arduino, vous devez vous rendre à l'adresse `https://www.arduino.cc/en/Main/Software`
     32Si vous êtes sur votre ordinateur personnel, vous allez devoir installer l'IDE Arduino et installer les bibliothèques permettant d'utiliser l'ESP32. Vous devez vous rendre à l'adresse `https://www.arduino.cc/en/Main/Software`
    3333et suivre la procédure correspondant à votre OS (Linux, Windows ou MacOS).
    3434
     35Pour les machines du laboratoire, vous devez utiliser la version d'arduino qui se trouve dans `/opt/arduino-1.8.8/`.  Vous pouvez appeler arduino directement :
     36{{{#!bash
     37> /opt/arduino-1.8.8/arduino
     38}}}
     39Je vous conseille d'ajouter le chemin `/opt/arduino-1.8.8` dans la variable PATH dans le `.bashrc`.
     40{{{#!bash
     41Dans le .bashrc :
     42export PATH=/opt/arduino-1.8.8:$PATH
     43}}}
     44
     45
    3546**Installation des librairies ESP32**
    3647
    37 Par défaut, les modules ESP32 ne sont pas disponible dans l'IDE Arduino, il faut les ajouter, voici la procédure à suivre pour ajouter les gestionnaires de cartes à base d'ESP32 :
     48
     49Que vous soyez sur votre ordinateur personnel ou sur une des machines du réseau, les modules ESP32 ne sont pas disponibles par défaut dans l'IDE Arduino, il faut les ajouter, voici la procédure à suivre pour ajouter les gestionnaires de cartes à base d'ESP32 :
    3850
    3951* Lancer `Arduino`
     
    4557* Écrire dans la fenêtre de recherche : `esp32``
    4658* Cliquer sur `Installer`
    47 * Attendre l'installation (ça peut être long).
     59* Attendre l'installation (ça peut être long et cela prend de la place dans le répertoire $HOME/.arduino, vous risquez de dépasser votre quota et donc vous devrez peut-être faire du ménage)
    4860* Cliquer sur `Fermer`
    49 
    50 - Vous pouvez tester le composant ESP32 en exécutant quelques exemples de tutoriaux (décrivez succinctement ce que vous avez fait dans le CR)
    5161
    5262**Les documents utiles se trouvent**
     
    5666- [http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.ReferenceMaxi Langage Arduino]
    5767
    58 Pour les machine du laboratoire, vous devez utiliser la version d'arduino qui se trouve dans `/opt/arduino-1.8.8/`. Je vous conseille d'ajouter le chemin `/opt/arduino-1.8.8` dans la variable PATH dans le `.bashrc`.
    59 {{{#!bash
    60 Dans le .bashrc :
    61 export PATH=/opt/arduino-1.8.8:$PATH
    62 }}}
    63 Sinon, vous pouvez appeler arduino directement :
    64 {{{#!bash
    65 > /opt/arduino-1.8.8/arduino
    66 }}}
    6768
    6869
     
    7374Pour s'assurer que le module Arduino et la chaîne de compilation sont fonctionnels, vous pouvez reprendre l'exemple `blink``
    7475- Brancher le module Arduino avec le câble USB
    75 - lancer : `/opt/arduino-1.8.8/arduino &`
     76- lancer : `/opt/arduino-1.8.8/arduino &` (ou directement `arduino&` si vous avez changer le `$PATH`)
    7677- Sélectionner : `Tools -> Boards -> TTGO-Lora-OLED V1`
    77 - Sélectionner : `Tools -> Ports -> /dev/ttyUSB0 ou /dev/ttyUSB1`
     78- Sélectionner : `Tools -> Ports -> /dev/ttyUSB0 ou /dev/ttyUSB1` (ça change parfois à chaque branchement)
    7879- Charger le programme Blink : `File -> Exemples -> 0.1 Basics -> Blink`
    7980- Vous pouvez changer la fréquence en modifiant les délais
    80 - Cliquer sur l'icône en forme de V pour Compiler
    81 - Cliquer sur l'icône en forme de -> pour uploader
     81- Cliquer sur l'icône en forme de `✓` pour Compiler
     82- Cliquer sur l'icône en forme de `➞` pour uploader
    8283- En bas de la fenêtre un message vous indique la réussite de la compilation et de l'upload.
    8384- La led doit clignoter sur le module
     85- Vous pouvez changer la fréquence de clignotement dans la fonction `loop()` pour vous convaincre que c'est bien votre code qui s'exécute.
    8486
    8587
     
    9193== Tâches standards
    9294
    93 Il est possible de programmer des applications multi-tâches coopératives dans l'environnement Arduino sans pour autant dispose des services d'un OS. Le principe a été volontairement simplifié à l'extrême. Ici, toute l'application sera dans un seul fichier et nous n'allons pas utiliser la programmation objet pour ne pas complexifier.
     95Vous allez programmer des applications multi-tâches coopératives dans l'environnement Arduino sans pour autant dispose des services d'un OS. Le principe a été volontairement simplifié à l'extrême. Ici, toute l'application sera dans un seul fichier et nous n'allons pas utiliser la programmation objet pour ne pas complexifier.
    9496
    9597Chaque tâche est représentée par
    9698- une fonction `loop_Tache()` qui code son comportement qui sera appelée dans la fonction `loop()`.
    9799- une seconde fonction `setup_Tache()` qui initialise les ressources de la tâche (périphériques) et l'état interne.
    98 - une structure contenant l'état interne et le contexte d'exécution représenté par une variable globale sous forme d'une structure `Tache_t`. Cette structure est passée en argument de la tâche des fonctions `setup_Tache()` et `loop_Tache`.
    99 
    100 Les fonctions `loop_Tache` et `setup_Tache` peuvent avoir des variables locales mais leur état n'est pas conservé entre deux exécutions.
    101 Elles peuvent aussi avoir des variables static mais ces variables ont une valeur unique même si la tâche est en plusieurs exemplaires et que donc elle utilise la même fonction `loop_Tache`. Les variables static ne sont pas conseillées parce qu'elles ne peuvent être initialisées dans la fonction `setup_Tache`
     100- une structure contenant l'état interne et le contexte d'exécution représenté par une variable globale sous forme d'une structure `Tache_t`. Cette structure est passée en argument de la tâche des fonctions `setup_Tache()` et `loop_Tache()`.
     101
     102Les fonctions `loop_Tache()` et `setup_Tache()` peuvent avoir des variables locales mais leur état n'est pas conservé entre deux instances d'exécutions.
     103Elles peuvent aussi avoir des variables static mais ces variables ont une valeur unique même si la tâche est en plusieurs exemplaires et que donc elle utilise la même fonction `loop_Tache()`. Les variables static ne sont pas conseillées parce qu'elles ne peuvent être initialisées dans la fonction `setup_Tache()`. Expliquez pourquoi dans le CR pour vérifier que vous avez compris.
    102104
    103105La structure contexte ressemble à :