Systèmes numériques, électronique et communications

Étiquette : Arduino

CIEL, mon BTS ! À vélo avec Arduino…

À la rentrée de septembre 2023, le BTS SN (Systèmes Numériques) va laisser la place au BTS CIEL (Cybersécurité, Informatique et réseaux, ELectronique). Ce BTS aussi se décline en deux options l’option ER (Electronique et Réseaux) et l’option IR (Informatique et Réseaux).

Ce nouveau BTS remet la fabrication électronique à l’honneur. Dans ce contexte, je vous présente ici une activité à réaliser avec des étudiants de BTS CIEL 1ere année, en tout début d’année scolaire.

Il s’agit de câbler et de tester un « shield » Arduino « fait maison » réalisant la fonction compteur de vélo. J’ai appelé ça Véloduino !

Un compteur de vélo

Le schéma de la carte est donné ci-après.

Schéma structurel du compteur de vélo
Schéma structurel du compteur de vélo Véloduino

C’est assez minimaliste : la carte comprend l’emplacement pour l’Arduino, un afficheur LCD de 2 lignes de 16 caractères, deux boutons-poussoirs et un petit bornier à vis. Ce bornier à vis permet de connecter un interrupteur type ILS de vélo. On rencontre aussi quelques petits composants : résistances, condensateurs, diode.

À chaque tour de roue, l’aimant présent sur un rayon de la roue passe devant le capteur ILS, et ferme l‘interrupteur à lames souples. Le signal récupéré passe alors de 1 à 0.

Capteur ILS de vélo pour compteur de vélo

ILS et aimant de compteur de vélo

Pour déterminer la distance parcourue, l’Arduino doit incrémenter la distance affichée de la longueur d’un tour de roue.

La mesure de la durée entre deux impulsions successives permet de déterminer la vitesse.

Le circuit imprimé

Le schéma a été saisi et le circuit routé sous KiCAD. Le circuit a été sous-traité en externe.

Circuit imprimé du compteur de vélo
Circuit imprimé Véloduino – vue de dessus et vue de dessous

Câblage de la carte

Les étudiants de BTS CIEL doivent donc câbler le circuit à partir des documents techniques fournis.

Carte du compteur de vélo cablée
Circuit imprimé câblé

Cette séance de câblage est aussi l’occasion d’une « leçon de choses ». Qu’est ce qu’un composant traversant ? Un composant CMS ? À quoi ressemble une résistance ? Un condensateur ? Est que la LED à un sens ? (Réponse : oui, il y a une anode et une cathode).

Test unitaire du circuit

Une fois que le circuit est câblé, les étudiants doivent valider le fonctionnement du circuit.

Dans un premier temps, on valide le matériel avec un logiciel de test qui permet de s’assurer que le circuit a bien été cablé, que les composants sont bien reliés entre eux.

Voici comment se présente l’écran de l’afficheur LCD avec l’Arduino équipé du logiciel de test. Quand on appuie sur un des bouton-poussoir, la valeur affichée passe de 1 à 0. Remarque : la photo a été faite avec le prototype réalisé au lycée.

Programme de test du compteur de vélo
Test unitaire de la carte avec le programme de test

A l’issue de cette phase, on sait que la carte est fonctionnelle : toutes les entrées sont reconnues, toutes les sorties fonctionnent : la LED s’allume, l’afficheur affiche correctement.

Test intégré de la carte

Une fois ces étapes validées, on peut maintenant tester le produit avec son programme définitif et vérifier qu’il mesure correctement la vitesse du vélo et la distance parcourue.

Voici le diagramme d ‘état correspondant au logiciel interne du compteur de vélo.

Diagramme d'état du programme du compteur de vélo
Diagramme d’état du compteur de vélo

Le programme de test et le programme du compteur sont disponibles sur Github.

Lien vers les programmes

Une procédure de test est donnée : les étudiants doivent suivre cette procédure et remplir un PV de test correspondant.

Cette séance de test est l’occasion d’un premier contact avec les appareils de mesure : un générateur basse fréquence permet de générer des impulsions calibrées correspondant à une vitesse donnée. On observe le signal de test du compteur à l’oscilloscope.

Et voila, une fois ces opérations effectuées, il n’y a plus qu’à installer ce compteur sur votre vélo et aller faire un petit tour.

Et qui on est, hein ?

Palmes académiques

C’est le mois de juin ! Qui dit juin dit été, qui dit été dit vacances, qui dit vacances dit mer, qui dit mer dit plongée , qui dit plongée dit palmes ! C’est de palmes de plongée que nous allons parler aujourd’hui ! Cette année, le projet de nos BTS SN 2eme année était un banc de mesure de palmes de plongée. Avec mes collègues et nos étudiants, nous avons travaillé sur un projet pluridisciplinaire avec les BTS CPI du lycée Cabanis. L’entreprise partenaire est Lomacor Composites, une PME dynamique de notre région. Ils fabriquent et vendent, entre autres, des palmes de plongée sous la marque JFE-made to perform.

Il s’agit de palmes pour l’apnéiste ou le chasseur sous-marin. Attention, ce ne sont pas des palmes comme celles que vous pouvez trouver chez D*c*thl*n. Ici, c’est du travail d’artisan, voire d’artiste, du haut de gamme en fibre de carbone. Et made in France !

En vrai professionnel, Lomacor souhaite caractériser finement les palmes qu’ils produisent. Ils testent systématiquement la raideur de leur palmes et plus précisément le profil de raideur de leurs palmes. Nous avons travaillé sur la réalisation d’un prototype permettant de réaliser simplement cette mesure.

Roberto, mio palmo ! Ce mois-ci, plongeons dans le grand bleu !

La raideur des palmes

C’est un paramètre important la raideur des palmes ! Si vous êtes débutant, il vous faut des palmes souples, sinon vous allez avoir des crampes. Si vous avez un peu de bouteille (bien qu’apnéiste, ahah !), vous préférerez des palmes rigides. Elles vous propulseront plus rapidement avec vos muscles d’acier vers des profondeurs abyssales. Chez JFE, vous précisez à la commande ce paramètre et c’est indiqué sur vos palmes avec des petites barres. Les fabricants de palmes emploient le terme de dureté mais en le terme scientifique approprié est plutôt raideur.

Palmes et barre de dureté
Barre de « dureté » des palmes JFE

Principe de la mesure

Pour mesurer la raideur d’une palme, on va placer la voile de la palme entre deux rouleaux et appliquer avec un troisième rouleau une déformation, une flèche comme disent les mécaniciens. On mesure ensuite la force de réaction de la palme. Si la palme est souple, cette force est faible, si elle est raide, elle est importante.

Banc de mesure palme pricipe vu de profil
Principe de la mesure – vue de profil
Principe de la mesure – vue « 3D »

Pour obtenir le profil de raideur de la palme, on effectue cette mesure sur toute la longueur de la palme en la déplaçant. Compte tenu de la géométrie de la palme, la palme est normalement plus souple au bout, qu’au début (proche du pied).

Le banc réalisé

L’organisation de notre banc de mesure est la suivante :

Organisation du banc de mesure

Un PC avec une application Windows communique avec un boîtier électronique qui commande une partie opérative.

La partie opérative

Banc de mesure palme
La partie opérative du banc de mesure

C’est les mécanos de CPI qui ont bossé sur ce prototype. Remarquez les deux moteurs pas à pas. L’un permet de déplacer la palme horizontalement, l’autre d’appliquer une flèche (de haut en bas). Ce sont des vis sans fin de pas 1 mm qui permettent de transformer les mouvements de rotation en mouvements de translation.

Le capteur de force est intégré dans la pièce verticale, que nous appelons (entre nous) « la guillotine » ! C’est une jauge de contrainte de valeur 20 kg.

Banc de mesure – détail capteur de force

Le boîtier de commande

Boîtier de commande

Le boîtier de commande est équipé d’un écran LCD 4 lignes, de 5 boutons-poussoirs permettant de naviguer dans les différents menus. Sous le capot, un Arduino Méga ! Mais nous avons aussi développé une version PSoC. L’IHM utilise une MAE. J’ai déjà parlé de cette méthode sur ce site.

L’application PC

Banc de mesure de palme - application PC
L’application PC

Le programme a été développé sous Visual Studio C#. Ça aussi, j’en ai déjà parlé ici.

L’application permet d’ouvrir le port COM, de spécifier une longueur de mesure (correspondant à la palme mesurée), une flèche à l’angle et une flèche à la pointe. La flèche évolue linéairement le long de la mesure. Un bouton permet d’envoyer les données et de lancer les mesures, et on obtient ensuite les relevés sous forme de courbe. On peut ensuite sauver les données sous forme de fichier csv ou d’un PV de mesure au format rtf.

Et ça marche ?

Ce projet a été mené au bout ! Nos étudiants ont présenté leurs travaux au jury d’examen et les démos ont été convaincantes. Quelques améliorations sont encore possibles, aussi bien mécaniques qu’électroniques, mais ce prototype a bien montré la faisabilité de cette machine !

Et qui on est, hein ?

Gravé dans le marbre

Gravé dans le marbre, ça signifie écrit pour longtemps, intangible… Dans nos projets, il est parfois nécessaire de sauvegarder une donnée de manière non volatile. Pour cela, on mémorise la donnée en EEPROM. J’ai récemment mis en œuvre cette opération avec Arduino et avec PSoC. Je vous raconte ça ici…

Arduino et EEPROM

Avec Arduino, le projet était un compteur de vélo. J’avais besoin de sauvegarder en EEPROM la variable p, le périmètre de la roue en cm. Pour une roue de vélo normale cette grandeur est <255. En effet une roue de vélo de 700 ( diamètre 700 mm) correspond à un périmètre de π.D soit 220 cm environ. Le périmètre de la roue correspond à la distance parcourue avec 1 tour de roue. C’est un paramètre important ici à modifier en fonction de la taille des roue du vélo.

Nous allons utiliser la bibliothèque EEPROM (documentation ici), pour cela, dans le programme Arduino, il est nécessaire d’écrire dans l’en-tête du programme :

#include <EEPROM.h>

La taille de la mémoire EEPROM de l’Arduino UNO est de 1024 octets. Les adresses disponibles sont donc comprises entre 0 et 1023. Les données stockées sont sur un octet et donc comprises entre 0 et 255. Pour lire la donnée p stockée à l’adresse 0 , on utilisera l’instruction suivante :

p = EEPROM.read(0); // lecture perimetre de la roue à l'@0

Pour écrire la donnée p à l’adresse 0, on peut utiliser l’instruction suivante :

EEPROM.write(0,p);

Mais attention, la durée de vie de l’EEPROM de l’Arduino est limitée à 100.000 cycles ! C’est pas mal, mais ce n’est pas infini. C’est pourquoi j’ai préféré utiliser l’instruction suivante :

EEPROM.update(0,p);

L’instruction update n’écrit la donnée que si celle-ci est différente de la donnée présente. On économise ainsi la durée de vie de la mémoire en évitant les écritures inutiles.

Bon maintenant, si vous vous amusez à changer ce paramètre une fois par jour, 100.000 écritures, ça va marcher pendant 274 ans ! C’est pas mal !

Ecrire et lire dans l’EEPROM avec Arduino : pas si difficile finalement…

PSoC et EEPROM

Je n’avais jamais utilisé l’EEPROM sur un projet PSoC. Nous en avons besoin cette année sur un projet mené avec nos étudiants. J’ai donc fait un petit programme sur le kit PSoC-050 pour valider l’écriture et la lecture en EEPROM sur PSoC 5. Le PSoC de ce kit possède 2 ko (2048 octets) de mémoire EEPROM. Le design implémenté est le suivant :

Design PSoC

Juste le minimum : 1 EEPROM (c’est ça qu’on teste), 1 afficheur LCD pour la visu, 2 boutons-poussoirs (pull-uppés en interne), 1 led.

Informations et tuto sur kit PSoC-050 disponibles sur ce site ici.

Le programme est le suivant :

Programme en C

Au démarrage, le programme va lire la case mémoire EEPROM d’adresse 0000 avec l’instruction EEPROM_1_ReadByte(adresse). Celle ci s’affiche pendant 4 s. Ensuite l’utilisateur peut incrémenter la valeur lue par appui sur BP1 (cette valeur repasse à 0 dès que la valeur est >255). Un appui sur BP2 permet de sauver dans la case mémoire d’adresse 0000 cette nouvelle valeur en utilisant l’instruction EEPROM_1_WriteByte(donnée,adresse). La led s’allume furtivement lors de l’écriture EEPROM.

Si on débranche puis on rebranche le kit on peut vérifier que la donnée a bien été écrite.

Démonstration programme. Affichage des deux ecrans

Sur PSoC, l’EEPROM est donnée pour 1 million de cycles d’écriture et 20 ans de rétention d’info !

Nos projets méritent bien ça, non ?

Et qui on est, hein ?

Thermoduino, un thermomètre Arduino

C’est un TP de BTS SN (Systèmes numériques) 1° année. C’est le premier TP avec l’Arduino. Il s’agit de réaliser un thermomètre avec Arduino. Pour cela, nous allons modéliser un capteur de température réalisé avec une thermistance CTN puis calculer et afficher la température mesurée ! Le cahier des charges est le suivant :

Réaliser un thermomètre Arduino avec affichage de la température sur la liaison série.

Plage de température : -20°C à 50°C

Précision < +/- 1°C

La thermistance

Pour réaliser notre capteur, nous avons utilisé une thermistance. Nous avions au lycée un petit stock de thermistance 4,7 kΩ. La loi de variation de la résistance RTH (la résistance de la thermistance) en fonction de la température est donnée ci-après :

RTH = R0 e B(1/T -1/T0)

avec R0 = 4700 Ω et B = 3980 K-1 et T0 = 298,15 K

C’est assez facile à tracer avec un tableur. Voilà ce que ca donne entre -20°C et 50°C avec un point tout les 5°. J’utilise LibreOffice : efficace, gratuit et libre !

Caractéristique thermistance R en fonction de T°C
Caractéristique R(T) de la thermistance 4.7 k

C’est une CTN (résistance à coefficient de température négatif) cela signifie que lorsque la température augmente, la résistance diminue. Remarquez qu’à la température ambiante (25°C), la résistance a une valeur de 4700 Ω.

Le capteur

L’Arduino sait mesurer des tensions, pas des résistances. Il est donc nécessaire de transformer la variation de résistance en variation de tension. Pour cela, on réalise un pont diviseur en y associant une résistance de 4,7 kΩ conformément au schéma suivant.

Capteur de température diviseur de tension thermistance résistance
Capteur de température à thermistance

Calculons Vt, la tension fournie par le diviseur de tension :

Vt = Vcc. RTH / (RTH+R1)

Lorsque la température est basse, la résistance est haute, la tension est élevée (proche de 5V). Lorsque la température est haute, la résistance est faible, la tension est basse (proche de 0V). À la température de 25°C, la thermistance a une résistance de 4,7 kΩ et la tension est à Vcc/2.

Avec le tableur, nous pouvons maintenant tracer la courbe Vt(T°C), c’est-à-dire la tension fournie par le capteur en fonction de la température.

Caractéristique Vt(T) du capteur de température à thermistance
Caractéristique Vt(T°C) du capteur à thermistance

Entre -20 et 50°C, la tension Vt varie entre 4,5V et 1,2V.

Maintenant, ne perdons pas de vue notre objectif, ce qui nous intéresse, c’est de connaitre la température à partir de la mesure de Vt. En fonction de la tension mesurée, quelle température dois-je afficher ? C’est donc la courbe inverse qui nous intéresse soit T°C(Vt) :

Caractéristique T(Vt) du capteur à tehrmistance
Caractéristique T(Vt) du capteur à thermistance

Si la tension mesurée est égale à 2,5V, c’est que la température est à 25°C. Si par exemple, la tension mesurée est à 3,5V, la température est alors de l’ordre de 7°C.

Modélisation

La question est la suivante : à partir de la mesure de la tension, comment mon Arduino va déterminer la température. Comment l’Arduino peut-il reconstituer la courbe Vt(T°C) ? Il nous faut modéliser cette courbe.

Modèle linéaire

Demandons à notre tableur de calculer une courbe de tendance qui approxime la caractéristique T(Vt). Sur LibreOffice : clic droit sur la courbe puis « Insérer une courbe de tendance ».

Caractéristique du capteur et modélisation par courbe de tendance linéaire
T(Vt) et courbe de tendance linéaire

L’équation fournie par le tableur est (avec arrondi) :

T(°C) = -20,1 Vt + 75,69

C’est l’équation d’une droite.

Facile maintenant pour l’Arduino de calculer la température avec cette formule magique. Mais la courbe linéaire ne « colle » pas parfaitement avec la courbe réelle. En analysant les résultats donnés par le tableur, on constate une erreur de température comprise entre -4°C et +2 °C. On ne respecte pas notre cahier des charges puisque nous voulions une erreur inférieure à 1°C !

Modèle du second degré

On demande maintenant à notre tableur de calculer une courbe de tendance polynomiale de degré 2.

Caractéristique du capteur et modélisation par courbe de tendance polynomiale de degré 2.
T(Vt) et courbe de tendance de degré 2

L’équation fournie par le tableur est :

T(°C) = -0,82.Vt2-15,22.Vt+69,4

C’est mieux mais l’équation ne colle pas encore parfaitement à la courbe. On constate une erreur comprise entre -2.6°C et + 2°C. On ne respecte toujours pas le cahier des charges ! Il faut trouver autre chose !

Modèle du troisième degré

On demande maintenant à notre tableur de calculer une courbe de tendance de degré 3.

Caractéristique du capteur et modélisation courbe de tendance de degré 3
T°C(Vt) et courbe de tendance de degré 3

T°C = -1,634.Vt3 + 13,66.Vt2 – 54.93.Vt +102,43

Le modèle colle maintenant parfaitement à la courbe.

On constate maintenant une erreur comprise entre -0,6°C et +0,5°C. Notre cahier des charges est respecté. Notre Arduino pourra maintenant calculer précisément la température en fonction de Vt.

Le programme

Le programme est réalisé à partir de l’exemple AnalogReadSerial. Voici un exemple d’implémentation avec le rendu sur le terminal :

Code arduino thermomètre  et visualisation mesure température
Code Arduino et visualisation sur terminal Arduino

Le TP complet

Comment on le fait alors notre thermomètre ? Le TP complet est disponible si dessous. Enjoy !

Fabriquer un thermomètre avec un Arduino et deux composants de fond de tiroir ? Précis au degré près ? Facile !

Et qui on est, hein ?

Une IHM avec une MAE !

IHM ? MAE ? Késaco ?

Nous allons voir ici comment mettre en œuvre une interface homme-machine (IHM) à l’aide d’une machine à états (MAE). La solution est implémentée dans un Arduino Uno.

Dans nos projets et mini-projets de BTS SN, nous avons souvent besoin de mettre en œuvre des interfaces homme-machine simples. Bien souvent, on utilise un petit écran LCD avec deux lignes et quelques boutons-poussoirs.

Pour bien gérer les différents menus et la navigation entre ceux-ci, rien de mieux qu’une machine à états ! C’est une méthode rigoureuse et efficace.

Ici nous allons le mettre en œuvre sur une carte Arduino, mais la méthode est transposable à n’importe quelle autre plateforme ou microcontrôleur.

Un minuteur Arduino

Au cours de ce TP, nous allons réaliser un minuteur en utilisant un Arduino et un shield LCD-RGB Adafruit. Cette carte comprend un afficheur 2 lignes de 16 caractères et 6 boutons poussoirs (←;↓;↑;→;Sélection; et un bouton Reset).

Minuteur Arduino

Dans ce TP, nous allons implémenter les menus d’affichage de ce minuteur. Ces menus s’enchainent selon le diagramme d’état suivant.

Le codage se fait en utilisant une structure switch – case. Le switch se fait sur la variable d’état.

Le document complet est ici :

En bonus, les étudiants peuvent coder le minuteur complet, mais c’est un peu plus long. Et ça fonctionne !

C'est fini
C’est fini !

Et qui on est, hein ?

Aux origines d’Arduino…

Carte Arduino

Cet été, je suis rentré de Corse en passant par l’Italie. Nous avons choisi de passer par le Val d’Aoste et le tunnel du Mont-Blanc. La route passait par Ivrea (Ivrée en français). Je me suis dit que c’était l’occasion d’un pèlerinage arduinesque… Oui, la fameuse carte Arduino a ses origines dans le coin. C’est une longue histoire…

Ivrea

Ivrea est une petite ville dans le nord de l’Italie. C’est dans le Piémont, pas bien loin de Turin (Torino). La ville d’Ivrea marque l’entrée de la vallée d’Aoste. Ivrea est connu pour être le berceau de la société Olivetti.

Olivetti, ca ne dit pas grand chose aux jeunes d’aujourd’hui, mais pour les boomers comme moi, Olivetti, c’était d’abord des machines à écrire.

Machine à écrire Olivetti

C’est sur une machine comme celle-ci que j’ai tapé avec deux doigts mon rapport de projet en Terminale F3 ! C’était en 1984. (Ohlala, presque 40 ans !).

Deux ans après, je voyais pour la première fois un IBM-PC, c’était un Olivetti !

Une petite carte

En l’an 2001, s’est ouvert à Ivrea une école nommée IDII : Interaction Design Institut Ivrea. Si j’ai bien compris, il s’agissait d’une école financée par Olivetti et Telecom Italia qui dispensait une formation à bac+2 orientée design et technologie.

https://en.wikipedia.org/wiki/Interaction_Design_Institute_Ivrea

C’est dans cette école qu’intervenait Massimo Banzi, un prof d’élec un peu fou génial (comme tous les profs d’élec, non ?). Massimo a eu l’idée de développer pour ces étudiants une petite carte électronique facile à programmer et à mettre en œuvre. Aidé par quelques collègues, le projet open-source s’est rapidement développé et à un moment donné, il a fallu donner un nom à ce projet…

C’est qui cet Arduino ?

Autour de l’an 1000, Arduin, un nobliau d’Ivrée (Arduino d’Ivrea en italien) a très brièvement régné sur l’Italie.

https://fr.wikipedia.org/wiki/Arduin_d%27Ivr%C3%A9e

À Ivrea, c’est la vedette locale, un peu comme Napoléon à Ajaccio. Et donc, la rue principale d’Ivrea s’appelle la Via Arduino, et dans cette rue, il y a le bar Arduino.

Comme Massimo et ses amis allaient boire des bières au bar Arduino, ils ont appelé leur projet Arduino.

Un pèlerinage arduinesque

C’est avec ces informations que je me suis rendu à Ivrea, à la recherche du bar Arduino.

La via Arduino est assez facile à trouver. C’est une longue rue piétonne qui traverse la vieille ville.

Via Arduino à Ivrea

Et finalement, j’ai bien trouvé le bar Arduino. C’est à vrai dire une cafétéria qui ressemble à une librairie. Aucune mention de la carte Arduino.

Pas de chance, c’était fermé. De toute manière à 10h du matin, c’était trop tôt pour la bière.

Un peu plus bas, nous avons dégusté un très bon expresso. Ristretto !

Et qui on est, hein ?

Electronique embarquée Arduino, mbed, PSoC

Retrouvez ici des TP sur de l’électronique embarquée Arduino, PSoC, Mbed etc…

PSoC

Avec mes collègues du BTS Systèmes électroniques du lycée Cabanis, nous nous sommes lancés il y a quelques années avec nos étudiants, sur un projet PSoC(1). Le document présenté ici est un document de débutant à l’usage des débutants : PSoC pour les nuls en quelque sorte. Il peut y avoir des erreurs ou des imprécisions, merci de me le signaler en utilisant les commentaires de ce site. J’ai laissé ce document ici, mais nous n’utilisons plus PSoC1. Nous utilisons PSoC5. Voir ci-après.

PSoC 5

Le PSoC 1 évoqué ci-dessus commence à vieillir. Place à PSoC 5LP ! Voici un TP incluant des tutos (de moins en moins guidés), permettant de prendre en main le kit de développement PSOC5 CY8C-KIT050 et le logiciel PSoC Creator. Ce document s’adresse à des débutants (étudiants de BTS SN en milieu de première année).

Arduino

J’ai commencé à entendre parler d’Arduino en 2010. J’ai essayé, j’ai « bidouillé » avec, et j’ai trouvé cela très bien : c’est simple, c’est pas cher et on peut développer très vite des choses avec des étudiants de BTS Systèmes électroniques. Une petite présentation de Arduino.

Créer une classe pour Arduino

Un TP assez simple pour créer et utiliser une classe pour Arduino (une « librairie » comme disent abusivement mes étudiants). Au niveau matériel, on peut difficilement faire plus minimaliste : une carte Arduino et basta. On utilise la led de l’Arduino ! C’est librement adapté d’un document Arduino « Library Tutorial ».

Serveur Web embarqué mbed

Un TP pour mettre en œuvre un serveur web embarqué autour d’un circuit mbed. Ce serveur permet d’allumer des leds ou de lire une entrée analogique. Ce TP permet aussi d’aborder en « live »  html et javascript.

© 2024 Louis Reynier

Theme by Anders NorenUp ↑

Bannière de Consentement aux Cookies par Real Cookie Banner