Atelier Arduino


1. Système de barrière automatique pour parking

                        



   Vous devez simuler un système de barrière automatique à deux battants (ex : portail de villa).

Au repos, les deux battants sont fermés (servos à 0°).
Lorsqu’on appuie sur un bouton poussoir pour entrer dans le parking:

    * Un servomoteurs s’ouvre l'autre reste fermé pendant 5 secondes.
Lorsqu’on appuie sur un bouton poussoir pour sorter du parking:
    * on inverse le fonctionnement.

2. Afficheur LCD défilant contrôlé par les boutons LEFT et RIGHT

Vous devez afficher deux messages personnalisés (ex : "BIENVENUE À L'ISET" et "EXAMEN ARDUINO") sur les deux lignes de l'écran LCD.
Lorsque l'utilisateur appuie sur le bouton :

  • LEFT, le texte des deux lignes décale vers la gauche (comme un bandeau déroulant).

  • RIGHT, le texte décale vers la droite.

Le défilement doit se faire en temps réel, à chaque appui détecté.


3. Contrôle d'accès avec carte RFID et servomoteur

Vous devez créer un système de verrouillage électronique intelligent.
Lors de la première détection d’un badge RFID, le système enregistre automatiquement cet UID comme "carte maître".
Par la suite :

  • Si le badge maître est présenté, la porte s’ouvre (servo passe à 90°), attend 5 secondes, puis se referme (servo à 0°).

  • Si un autre badge est présenté, l’accès est refusé et un message s’affiche dans le moniteur série.

4. Affichage en temps réel de la distance 

Réalisez un montage à l’aide d’un capteur à ultrasons HC-SR04 et d’une carte Arduino permettant de mesurer en temps réel la distance entre le capteur et un objet situé en face de lui. Le système devra afficher cette distance de manière continue dans le moniteur série sous cette forme:


5. Variation angulaire d’un servomoteur pilotée par potentiomètre

    Réalisez un montage électronique utilisant une carte Arduino, un servomoteur et un potentiomètre, permettant de faire varier l’angle du servomoteur en fonction de la position du potentiomètre. Lorsque l’utilisateur tourne le bouton du potentiomètre, la position angulaire du servomoteur doit suivre cette variation proportionnellement, de 0° à 180°. 

    Le signal analogique fourni par le potentiomètre sera lu via une entrée analogique de l’Arduino (par exemple A0), puis converti en une valeur d’angle comprise entre 0° et 180°.


***************************************************************

TP1 : LCD KeyPad Shiled

***************************************************************

Présentation du shield LCD:

Celle-ci est composée d’un écran LCD alphanumérique de 2 x 16 caractères, d'un potentiomètre de réglage du contraste et d'une série de 6 boutons (haut, bas, droite, gauche, sélection, reset). 


Pour savoir quel bouton a été appuyé, il suffit de faire appel à la fonction analogRead() sur la broche A0 et comparer la valeur lue par rapport à une fourchette de valeurs types.

Valeur lue avec analogRead(A0)

Bouton

0 <= valeur < 50

RIGHT (droite)

50 <= valeur < 250

UP (haut)

250 <= valeur < 450

DOWN (bas)

450 <= valeur < 650

LEFT (gauche)

650 <= valeur < 850

SELECT (sélection)

>= 850

aucun

pour tester les boutons on utilise ce portion de code:

int x;

              x = analogRead (0);

             lcd.setCursor(10,1);

             if (x < 50) {

                 lcd.print ("Right ");

                              }

            else if (x < 250) {

              ....

Travail à Faire


1- Avec la carte Arduino Uno équipé par un shield  LCD présenté ci-dessus tester le programme suivant :

#include <LiquidCrystal.h>

//LCD pin to Arduino

const int pin_RS = 8; 

const int pin_EN = 9; 

const int pin_d4 = 4; 

const int pin_d5 = 5; 

const int pin_d6 = 6; 

const int pin_d7 = 7; 

const int pin_BL = 10; 

LiquidCrystal lcd( pin_RS,  pin_EN,  pin_d4,  pin_d5,  pin_d6,  pin_d7);

void setup() {

 lcd.begin(16, 2);

 lcd.clear(); 

}

void loop() {

 lcd.setCursor(0,0);

 lcd.print("L2ElnI");

}

2- Ecrire un message défilant sur la première ligne 

3- En utilisant les 4 boutons (UP, DOWN, RIGHT, LEFT) défiler le message comme suit:

UP: mettre le message à la première ligne 

DOWN: mettre le message à la deuxième ligne 

RIGHT: le message défile de gauche à droite 

LEFT: le message défile de droite à gauche 


***************************************************************

TP2 : Carte RFID RC522

***************************************************************

Objectifs pédagogiques :

  • Utiliser un lecteur RFID pour l’authentification.

  • Enregistrer dynamiquement une carte comme "maître".

  • Contrôler un servomoteur pour simuler une serrure.

  • Gérer l’ouverture/fermeture et la protection d’accès.


Voici un code simple pour tester le module RFID RC522 avec Arduino, afin de vérifier qu’il est correctement câblé et fonctionnel. Ce code permet de lire l’UID de toute carte ou badge RFID compatible (13.56 MHz) présenté devant le lecteur, et l’affiche dans le moniteur série.

#include <SPI.h>

#include <MFRC522.h>

#define SS_PIN 10   // SDA du RC522

#define RST_PIN 9   // RST du RC522

 MFRC522 rfid(SS_PIN, RST_PIN);  // Instance du lecteur

 void setup() {

  Serial.begin(9600);

  SPI.begin();                              // Initialiser la communication SPI

  rfid.PCD_Init();                        // Initialiser le module RFID

  Serial.println("Scanner une carte RFID...");

}

 void loop() {

                                                // Vérifie si une nouvelle carte est présente

  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {

    return;

  }                                            

  Serial.print("UID de la carte : "); // Affiche l'UID de la carte

  for (byte i = 0; i < rfid.uid.size; i++) {

    Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");

    Serial.print(rfid.uid.uidByte[i], HEX);

  }

  Serial.println();                              

  rfid.PICC_HaltA(); // Met fin à la communication avec la carte

}

***************************************************************

TP 3 : Capteur ULTRASON

***************************************************************



Tester avec ce Code

int trig = 2;

int echo = 3;

long lecture_echo;

long cm;

void setup(){

pinMode(trig, OUTPUT);

digitalWrite(trig, LOW);

pinMode(echo, INPUT);

Serial.begin(9600);

Serial.println ("Bienvenue sur les tutoriels d'IHM 3D");

}

void loop(){

digitalWrite(trig, HIGH);

delayMicroseconds(10);

digitalWrite(trig, LOW);

lecture_echo = pulseIn(echo,HIGH);

cm = lecture_echo /58;

Serial.print("Distance en cm :");

Serial.println(cm);

delay(1500);

}

Travail à faire :

Un capteur est placé à une hauteur de 2,5 m. Comment afficher la hauteur d'une personne se tenant sous le capteur, en mètres ?

***************************************************************

    TP4 : Servomoteur 
***************************************************************

Soit une table traçante constituée de deux servomoteurs voire figure ci-après. La dimension de la bras 4 et 5 et de 10 cm.


1. Ecrire un programme qui permet de positionner l'organe terminal au point A(0,10).

4.  Ecrire un programme qui permet de positionner l'organe terminal au point B(5,5).


#include "Servo.h"

Servo servo; // création de l'objet "servo"

void setup() {
   servo.attach(10); // attache le servo au pin spécifié
}

void loop() {
   servo.write(0); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position

   servo.write(90); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position

   servo.write(180); // demande au servo de se déplacer à cette position
   delay(1000); // attend 1000 ms entre changement de position
}

Aucun commentaire:

Enregistrer un commentaire