===== TD Bus de communication : Initiation à l'Arduino =====
cours bus de com {{https://bvdp.inetdoc.net/files/iut/cours_bus_terrain_livret_portrait.pdf}}
=== Objectifs ===
* Prise en main de l'environnement Arduino
* Prise en main du système d'exploitation Linux (Debian)
* Syntaxe Arduino
* Utilisation de la maquette Arduino
* Utilisation haut niveau d'une communication série asynchrone
==== Carte Arduino pour le TD/TP ====
Arduino est une plateforme de développement open-source qui se compose d'une carte microcontrôleur et d'un environnement de développement associé. La carte Arduino UNO se compose de :
* un microcontrôleur 8-bit Atmega328p cadencé à 16Mhz (exécutant une instruction par cycle d'horloge) https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
* un convertisseur USB/UART TTL
* une régulation de tension 5v
* un connecteur au pas de 2.54mm au standard Arduino
Le schéma de cette carte est visible sur: http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
Pour plus d'informations, vous reporter à http://arduino.cc/
Dans le TP, vous privilégierez la consultation de la documentation installée localement sur les machines, accessible depuis le menu Aide->Référence, car elle sera à jour vis à vis de la version des logiciels installés.
Il existe des cartes compatibles Arduino que vous pouvez acheter pour 4 euros par exemple sur: http://www.ebay.com/itm/NEW-UNO-R3-ATmega328P-CH340-Mini-USB-Board-Compatible-Arduino-/311155383820?pt=LH_DefaultDomain_0&hash=item48724e5e0c
Drivers pour Windows pour ces cartes: https://sparks.gogo.co.nz/ch340.html
Il existe aussi des kits tels que: https://www.dx.com/fr/p/funduino-uno-r3-lcd-1602-keypad-shield-v2-0-lcd1602-expansion-board-building-blocks-deep-blue-315276?tc=EUR&gclid=CJ_Hvd645b4CFaXHtAod-1MA4A#.VMRAaTVrpwH
Il est également possible d'utiliser un outils en ligne pour développer sur arduino sans rien installer sur votre machine: https://codebender.cc/
=====Prise en main de l'Arduino=====
==== Branchement de la carte Arduino ====
**Les cartes Arduino distribuées en TP sont numérotées, ils vous appartient donc d'en prendre soin tout au long du module de communication.**
La carte Arduino se branche au PC via un des ports USB disponibles en façade. Le connecteur côté Arduino est de type USB-A mâle et le connecteur côté PC est de type USB-B femelle. Avant de passer à la suite, connectez la carte au PC à l'aide du câble fourni.
Pour chaque TP, la carte sera dotée d'un shield d'extension pour faciliter l’accès au périphérique étudié.
**La carte Arduino n'étant pas protégée, il est préférable de vérifier que la table de TP est libre de tout objet métallique afin d'éviter les court-circuits !**
==== Prise de main de l'outil Arduino IDE ====
Le système d'exploitation utilisé lors des TP de bus de communication est Debian (basé Linux). Sous Linux le lancement des utilitaires peut se faire de deux manières:
* Utilisation d'un raccourci sur le bureau
* Lancement au travers de la ligne de commande
Pour lancer l'application Arduino au travers de la ligne de commande, suivez la suite d'instructions suivante :
- Taper ALT+F2 puis saisir xterm et touche entrée
- Dans le terminal, taper le nom de l'application (arduino) suffixé par & (en cas de demande de mise à jour, cliquer sur non)
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_launch.png}}
- Attendre le chargement de l'application, une fois l'application chargée, vous devriez avoir la vue suivante
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_launched.png}}
==== Configuration de l'IDE ====
Après avoir branché la carte, dans l'onglet "Outils", accédez au menu "Port Série" et cliquez sur la valeur /dev/ttyACM0 ou /dev/ttyUSB0. Accédez aussi au menu "Type de Carte" et vérifiez que la valeur sélectionnée est "Arduino Uno".
==== Votre premier sketch ====
Maintenant que l'editeur est lancé, nous pouvons entrer dans la fenêtre le programme suivant
int led = A2; //si le shield RS232 est présent
//int led = 13; //si le shield RS232 n'est pas présent, pour utiliser la led de la carte UNO
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
==== Compilation du sketch ====
Copier coller le contenu dans votre fichier et cliquez sur le bouton "Vérifier" pour le compiler.
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_blink_verify.png}}
Les erreurs de compilation apparaissent en rouge (et en anglais) dans la fenêtre de compilation en bas de l'IDE.
==== Chargement sur la platine Arduino ====
Une fois que la compilation ne génère plus d'erreurs, chargez le fichier sur la carte Arduino (préalablement connectée sur le port USB) en cliquant sur le bouton "Téléverser"
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_blink_load.png}}
A partir de ce point, si votre code est correct, la led numérotée 13 sur la carte arduino (ou RTS de la carte d'extension RS232) doit clignoter.
==== Précautions à prendre avec la plateforme et l'IDE ====
Sauvegarder vos fichiers dans le dossier /home/IUT/"login"/Arduino/
* Sauvegarder vos programmes sous des noms différents pour chaque exercice
* Lors de la sauvegarde, une fenêtre apparaît pour demander quels noms donner au programme. Si vous ne faites pas attention, cette fenêtre peut passer en arrière plan et l'IDE Arduino ne répondra plus à aucune sollicitation tant que vous n'aurez pas ré-ouvert cette fenêtre.
* Pensez à sauvegarder votre code fréquement à l'aide la combinaisn ctrl+s
* La carte Arduino étant "nue", faîtes attention à ne pas provoquer de court-circuit en manipulant des objets métalliques
* Le carte étant posé sur la table et le cable étant branché sous la table, faites attention à ne pas accidentellement tirer sur le câble.
===== Exercice 1 : Utilisation de la librairie Serial =====
Une description de la librairie Serial a été fournie en TD. Vous pouvez également accéder au descriptif de cette librairie en sélectionnant le menu "Aide" puis le menu "Référence".
**Si le shield RS232 est monté sur la carte Arduino, mettre les cavaliers en mode RX SOFT et TX SOFT pour que le shield n'intervienne pas sur l'UART HARD que vous allez utiliser. Vous accéderez à l'UART HARD uniquement à travers du convertisseur USB/Série.**
==== Description de l'application ===
L'application à programmer doit implémenter le comportement suivant :
- Configurer l'UART pour une communication 8N1 à 9600Bauds (Serial.begin)
- Attendre que un caractère soit disponible sur le périphérique UART (Serial.available)
- Lire le caractère (Serial.read)
- Si le caractère est une minuscule, le convertir en majuscule (?)
- Envoyer le caractère sur la liaison série (Serial.write)
Pour des formats de trames autres que 8N1, vous trouverez les valeurs de paramètres adaptés à la méthode Serial.begin à l'adresse: http://arduino.cc/en/Serial/Begin
De manière générale, pour consulter une documentation arduino de la même version que celle installée sur votre machine, il est préférable d'y accéder via l'IDE Arduino: Aide->Référence.
**A partir de la description de l'application, écrire le code correspondant dans un nouveau fichier (Fichier -> Nouveau). Vous devez implémenter les fonction setup et loop (vous inspirer du programme précédent).**
Solution:
void setup()
{
Serial.begin(9600);
Serial.println("Hello, world?"); // Envoi de la chaîne terminée par un saut de ligne
}
void loop()
{
char car ;
if (Serial.available()){
car = Serial.read();
if ( (car>='a') && (car<='z') )
car=car+'A'-'a';
Serial.write(car);
}
}
==== Utilisation de la console série ===
L'IDE arduino dispose d'une console série permettant de visualiser les caractères envoyés par l'Arduino sur son port périphérique matériel. Pour accéder à la console série, il suffit de cliquer sur la loupe en haut à droite de l'éditeur de code.
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_terminal.png}}
Une console série apparaîtra alors sous la forme suivante.
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_terminal2.png}}
Il suffit alors de configurer le baudrate de la communication à l'aide la liste déroulante en bas à gauche.
Pour envoyer des caractères à l'application, il suffit de les rentrer dans la zone de texte en haut de de la fenêtre, puis de cliquer sur "Envoyer".
{{https://bvdp.inetdoc.net/files/iut/td1_capt/arduino_terminal_send.png}}
Les caractères émis par l'UART HARD du Arduino doivent ensuite s'afficher dans la partie basse de la fenêtre.