Logs
Consultez les logs.
OK
Liste des données
Consultez la liste des données.
OK
Loading...
Formulaire
Saisissez vos données.
Enregistrer
Annuler

Apprendre Arduino

Vues
245

Introduction


Arduino est une carte électronique pour le prototypage de système embarqué.

image.png


### Travailler avec Arduino


L'éditeur Arduino permet d'éditer des programmes en langage Arduino destinés à la carte Arduino.


Clignoter une diode LED


// Google Chrome (Télécharger l'éditeur Arduino)
...
# Ouvrir le lien de téléchargement
https://www.arduino.cc/en/software
# Télécharger l'éditeur
Software > Download options > Windows win 10 and never, 64 bits
Just Download > Just Download
...

// Windows (Installer l'éditeur Arduino)
...
# Démarrer l'installation
Double clic > arduino-ide_2.3.4_Windows_64bit.exe > J'accepte
Juste pour moi (admins) > Suivant
Dossier d'installation > C:\Users\admins\AppData\Local\Programs\Arduino IDE
Cocher > Lancer Arduino IDE
Installer > Fermer
# Installer les extensions
Autoriser > Autoriser
Oui > Installer > Installer > Installer > Installer
Oui
...

Proteus est un outil de simulation de circuits électroniques prenant en charge la carte Arduino. 

// Google Chrome (Télécharger le simulateur Proteus)
...
# Ouvrir le lien de téléchargement
https://www.labcenter.com/
# Télécharger le simulateur
Circuit Simulation Software > Download Now
Download Proteus Professional Demonstration
Email > youremail@domain.com
Cocher > Receive our demo resource mailchimp emails
Submit
...
# Aller dans la boite email
# Démarrer le téléchargement
Cliquer sur le bouton > Proteus Demo Download
...

// Windows (Installer le simulateur Proteus)
...
# Démarrer l'installation du simulateur
Double clic > prodemo.exe > Oui > Next
Cocher > I accept the terms of this agreement > Next > Typical
Run Proteus 8 Demonstration
...

La librairie Arduino pour Proteus permet d'intégrer la carte Arduino dans le simulateur Proteus. 

// Google Chrome (Télécharger Arduino Library for Proteus)
...
# Ouvrir le lien de téléchargement
https://goalmdcat.com/arduino-uno-library-for-proteus/
# Télécharger la librairie
Download Arduino UNO Library for Proteus
...

// Windows (Configurer Arduino Library for Proteus)
...
# Copier les librairies Arduino
Copier > ArduinoUnoTEP.LIB
Copier > ArduinoUnoTEP.IDX
# Coller dans le répertoire de librairies de Proteus
Coller > C:\Program Files (x86)\Labcenter Electronics\Proteus 8 Professional\DATA\LIBRARY
...

// Arduino (Créer un projet Arduino)
...
# Ouvrir un nouveau croquis
File > New Sketch
# Enregistrer le croquis
File > Save As
Emplacement > v01
Nom du fichier > rdv_arduino
Enregistrer
...

// Arduino (Sélectionner une carte)
...
# Sélectionner la carte
Tools > Board > [nom-carte] > Arduino UNO
...

// rdv_arduino.ino (Programme principal)
...
int LED_PIN = 13;

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}
...

// Arduino (Formater le code source)
...
# Methode 1
# Formater le code source
Tools > Auto Format
...
# Methode 2
# Formater le code source
Touche (Ctrl + T)
...
# Methode 3
# Formater le code source
[code-source] > Clic droit > Formater Document
...

image.png

// Arduino (Refactoriser un symbole)
...
# Refactoriser un symbole
[nom-symbole] > Clic droit > Change All Occurrences > [nom-symbole-new]
...

Le fichier HEX est le fichier exécutable qui sera chargé dans la carte Arduino du simulateur Proteus.  

// Arduino (Activer la génération du fichier HEX)
...
# Ouvrir le menu des préférences
File > Preferences
# Activer la génération de fichier HEX
Show verbose output during > Cocher > Compile
...

image.png

// Arduino (Compiler le projet)
...
# Compiler le projet
Sketch > Verify/Compile
...

image.png

// Arduino (Identifier le fichier HEX)
...
# Identifier le fichier HEX
Aller dans la sortie de la compilation > Identifier le fichier HEX
Format du fichier HEX > [nom-projet.hex]
...

image.png

// Proteus (Créer un projet Arduino)
...
# Ouvrir le menu nouveau projet
File > New Project
# Définir le nom du projet
Name > rdv_arduino.pdsprj
Path > v01
Cocher > New Project
Next
Cocher > Create a schematic from the selected template
Cocher > DEFAULT
Next
Cocher > Do not create a PCB layout.
Next
Cocher > No Firmware Project
Next
Finish
...

// Proteus (Ajouter les composants)
...
# Ouvrir le menu Pick Devices
Schematic Capture > P
# Ajouter les composants
Keywords > ARDUINO UNO R3 > OK
Keywords > LED-YELLOW > OK
Keywords > RES > OK
...

image.png

image.png

// Proteus (Configurer le fichier HEX)
...
# Ouvrir les propriétés de la carte Arduino
Schematic Capture > Arduino UNO R3 > Clic droit > Edit Properties
# Charger le fichier HEX
Program File > rdv_arduino.ino.hex
OK
...

image.png

// Proteus (Configurer la taille des pas de la grille)
...
# Configurer la taille des pas de la grille
View > Snap 10th
View > Snap 50th
...

// Proteus (Ajouter un texte)
...
# Sélectionner l'outil d'édition de texte
Cliquer sur le bouton > A (2D Graphics Text Mode)
# Sélectionner la couleur du texte
C > COMPONENT
# Editer le texte
Cliquer sur > [zone-edition] > Pour ouvrir le menu d'édition
String > [editer-texte]
Horizontal > Center
Vertical > Middle
Global Style > COMPONENT
Height > 0.1in
OK
...

// Proteus (Exécuter le projet)
...
# Démarrer la simulation
Cliquer sur le bouton > Run the simulation
...

image.png


Créer une fonction


Une fonction est un bloc d'instructions destiné à réaliser une tâche bien précise.

// rdv_arduino.ino (Programme principal)
...
int LED_PIN = 13;

void setup() {
  LedFlash_Init();
}

void loop() {
  LedFlash_Run();
}

void LedFlash_Init() {
  pinMode(LED_PIN, OUTPUT);
}

void LedFlash_Run() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}
...

image.png


Créer un module


Un module est un ensemble de fonctionnalités réutilisable écrit dans un fichier séparé.

// Arduino (Créer un module)
...
# Ouvrir le menu Tab
Cliquer sur les 3 points (...) > New Tab
# définir le nom du fichier
Name for new file > rdv_led_flash.h > OK
Name for new file > rdv_led_flash.cpp > OK
...

// rdv_arduino.ino (Programme principal)
...
#include "rdv_led_flash.h"

void setup() {
  LedFlash_Init();
}

void loop() {
  LedFlash_Run();
}
...

// rdv_led_flash.h (Gestion du clignotement)
...
#ifndef _rdv_led_flash_
#define _rdv_led_flash_

#include <Arduino.h>

void LedFlash_Init();
void LedFlash_Run();

#endif
...

// rdv_led_flash.cpp (Gestion du clignotement)
...
#include "rdv_led_flash.h"

int LED_PIN = 13;

void LedFlash_Init() {
  pinMode(LED_PIN, OUTPUT);
}

void LedFlash_Run() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}
...

image.png


Créer une classe


Une classe est une structure destinée à encapsuler les propriétés et les fonctionnalités associées à un objet.

// rdv_arduino.ino (Programme principal)
...
#include "rdv_led_flash.h"

cLedFlash oLedFlah(13, 500);

void setup() {
  oLedFlah.init();
}

void loop() {
  oLedFlah.run();
}
...

// rdv_led_flash.h (Gestion du clignotement)
...
#ifndef _rdv_led_flash_
#define _rdv_led_flash_

#include <Arduino.h>

class cLedFlash {
public:
  cLedFlash(int _led, int _delay_ms);
  ~cLedFlash();
  void init();
  void run();

private:
  int m_led;
  int m_delay_ms;
};

#endif
...

// rdv_led_flash.cpp (Gestion du clignotement)
...
#include "rdv_led_flash.h"

cLedFlash::cLedFlash(int _led, int _delay_ms)
  : m_led(_led),
    m_delay_ms(_delay_ms) {
}

cLedFlash::~cLedFlash() {
}

void cLedFlash::init() {
  pinMode(m_led, OUTPUT);
}

void cLedFlash::run() {
  digitalWrite(m_led, HIGH);
  delay(m_delay_ms);
  digitalWrite(m_led, LOW);
  delay(m_delay_ms);
}
...

image.png


### Travailler avec les ports série


Un port série est un moyen de communiquer avec un système par liaison série à travers 2 fils (TXD, RXD). Il permet d'établir la communication entre 2 systèmes connectés par liaison série. Il est utilisé dans le milieu industriel pour remplacer la quantité de câbles générés autrefois par l'utilisation des ports parallèles.


Ecrire sur un port série


// rdv_arduino.ino (Programme principal)
...
#include "rdv_serial_port.h"

cSerialPort oSerialPort(9600);

void setup() {
  oSerialPort.init();
  oSerialPort.writeData("OK: Demarrage du systeme...");
}

void loop() {
}
...

// rdv_serial_port.h (Gestion du port série)
...
#ifndef _rdv_serial_port_
#define _rdv_serial_port_

#include <Arduino.h>
#include <WString.h>

class cSerialPort {
public:
  cSerialPort(int _bauds);
  ~cSerialPort();
  void init();
  void writeData(const String& _data);

private:
  int m_bauds;
};

#endif
...

// rdv_serial_port.cpp (Gestion du port série)
...
#include "rdv_serial_port.h"

cSerialPort::cSerialPort(int _bauds)
  : m_bauds(_bauds) {
}

cSerialPort::~cSerialPort() {;
}

void cSerialPort::init() {
  Serial.begin(m_bauds);
}

void cSerialPort::writeData(const String& _data) {
  Serial.println(_data);
}
...

image.png


Lire un port série


// rdv_arduino.ino (Programme principal)
...
#include "rdv_serial_port.h"

cSerialPort oSerialPort(9600);

void setup() {
  oSerialPort.init();
  oSerialPort.writeData("OK: Demarrage du systeme...");
}

void loop() {
  char oChar;
  if (oSerialPort.readData(oChar)) {
    if (oChar == 'a') {
      oSerialPort.writeData("OK: Commande: " + String(oChar));
    } else if (oChar == 'b') {
      oSerialPort.writeData("OK: Commande: " + String(oChar));
    } else {
      oSerialPort.writeData("KO: Commande invalide: " + String(oChar));
    }
  }
}
...

// rdv_serial_port.h (Gestion du port série)
...
#ifndef _rdv_serial_port_
#define _rdv_serial_port_

#include <Arduino.h>
#include <WString.h>

class cSerialPort {
public:
  cSerialPort(int _bauds);
  ~cSerialPort();
  void init();
  void writeData(const String& _data);
  boolean readData(char& _data);
  boolean readData(String& _data);

private:
  int m_bauds;
};

#endif
...

// rdv_serial_port.cpp (Gestion du port série)
...
#include "rdv_serial_port.h"

cSerialPort::cSerialPort(int _bauds)
  : m_bauds(_bauds) {
}

cSerialPort::~cSerialPort() {;
}

void cSerialPort::init() {
  Serial.begin(m_bauds);
}

void cSerialPort::writeData(const String& _data) {
  Serial.println(_data);
}

bool cSerialPort::readData(char& _data) {
  if (Serial.available()) {
    _data = Serial.read();
    return true;
  }
  return false;
}

bool cSerialPort::readData(String& _data) {
  if (Serial.available()) {
    _data = Serial.readString();
    return true;
  }
  return false;
}
...

image.png


Communiquer avec un port série physique


VSPE est un Emulateur de Port Série Virtuel (Virtual Serial Port Emulator). Il permet de créer autant de pairs de ports série virtuels sur un ordinateur.

// Google Chrome (Télécharger VSPE)
...
# Ouvrir le lien de téléchargement
https://eterlogic.com/Products.VSPE_Download.html
# Télécharger VSPE
Download VSPE 64 bit (x64)
...

// Windows (Installer VSPE)
...
# Extraire le fichier compresser
Extraire > SetupVSPE_64_1.5.1.191.zip
# Démarrer l'installation
Double clic > SetupVSPE_64.msi > Next
Cocher > I accept the terms in the License Agreement
Next 
Destination Folder > C:\Program Files\Eterlogic Software\Virtual Serial Ports Emulator (x64)\
Next > Installer > Oui
Finsih
...

// VSPE (Créer une paire de ports série)
...
# Ouvrir le menu type de port 
Device > Create new device
# Sélection le type port
Device type > Virtual Pair
Suivant
# Définir le nom des ports
Virtual serial port 1 > COM1
Virtual serial port 2 > COM2
Terminer
...

// Windows (Afficher les ports série)
...
# Ouvrir le gestionnaire de périphériques
Bouton Windows > Gestionnaire de périphériques
# Vérifier les ports série virtuels créés
Ports (COM et LPT) > Eterlogic Virtual Serial Port (COM1)
Ports (COM et LPT) > Eterlogic Virtual Serial Port (COM2)
...

image.png

Le composant COMPIM est le gestionnaire de port série physique sous le simulateur Proteus. 

// Proteus (Ajouter les composants)
...
# Ouvrir le menu Pick Devices
Schematic Capture > P
# Ajouter un composant Arduino
Keywords > COMPIM > OK
...

image.png

image.png

// Proteus (Configurer le port série)
...
# Ouvrir les propriétés du port série
Schematic Capture > COMPIM > Clic droit > Edit Properties
# Configurer le port série
Pysical Port > COM1
Pysical Baud Rate > 9600
Virtual Baud Rate > 9600
Terminer
...

RealTerm est un émulateur de terminal pour port série. Il permet d'envoyer et de recevoir des données à travers un port série. 

// Google Chrome (Télécharger RealTerm)
...
# Ouvrir le lien de téléchargement
https://sourceforge.net/projects/realterm/files/
# Télécharger le terminal
Download Last Version
...

// Windows (Installer RealTerm)
...
# Démarrer l'installation
Double clic > Realterm_2.0.0.70_Signed_Wrapper_setup.exe > Oui
Next > Next
Destination Folder > C:\Program Files (x86)\BEL\Realterm\
Next > Install > Finish
...

// RealTerm (Configurer le port série)
...
# Configurer le port série
Port > Baud > 9600
Port > Port > 2=\VSPE_SERIAL2
# Charger la configuration
Port > Open > Open > Change
...

image.png

// rdv_arduino.ino (Programme principal)
...
#include "rdv_serial_port.h"

cSerialPort oSerialPort(9600);

void setup() {
  oSerialPort.init();
  oSerialPort.writeData("OK: Demarrage du systeme...");
}

void loop() {
  char oChar;
  if (oSerialPort.readData(oChar)) {
    if (oChar == 'a') {
      oSerialPort.writeData("OK: Commande: " + String(oChar));
    } else if (oChar == 'b') {
      oSerialPort.writeData("OK: Commande: " + String(oChar));
    } else {
      oSerialPort.writeData("KO: Commande invalide: " + String(oChar));
    }
  }
}
...

image.png

image.png