ARDUINO UNO
OBJETS CONNECTES

Objectif

Le but est de mettre en œuvre une communication entre la carte Arduino UNO et l'ordinateur, pour réaliser un objet connecté. C'est aussi l'occasion de tester la photorésistance, reliée à une des six entrées analogiques.

Caractéristiques de la connexion

La liaison entre l'ordinateur et la carte, de type filaire, se fait via un câble USB.

Caractéristiques de la photorésistance

Cette résistance varie de 200 Ω à 10 MΩ environ selon la lumière reçue. Elle se place en série avec une résistance de 10 kΩ, le tout étant alimenté en 5 V. Une entrée analogique de la carte récupère la tension entre les deux composants.

Comprendre

De la carte à l'ordinateur : Du texte, des nombres

Programme

La carte Arduino UNO est programmée :

int compteur = 0;

void setup() {
  Serial.begin(9600);  // mise en route du port série
}

void loop() {
  Serial.print("Compteur : ");
  Serial.println(compteur);
  compteur++;
  delay(1000);
}

Dialogue avec la carte

L'ordinateur reçoit les données et les affiche avec le moniteur série de l'EDI. Ouvrir le menu Outils/Moniteur série, régler la cas échéant la vitesse de connexion à 9600 bauds, pour obtenir :

De la carte à l'ordinateur : Valeur fournie par un capteur

Câblage

La tension générée par le capteur est lue par la carte Arduino UNO, qui envoie à l'ordinateur un nombre proportionnel à cette tension. Le point de jonction entre la résistance et la photorésistance relie l'entrée analogique A0.

Programme

Le programme de base ci-dessous permet de tester le fonctionnement.

void setup() {
  Serial.begin(9600);
}

void loop() {
  int lu = analogRead(A0);
  Serial.println(lu);
  delay(1000);
}

Selon la tension reçue, la fonction analogRead(0) retourne un nombre compris entre 0 et 1023 :

Dialogue avec la carte

Ouvrir le menu Outils/Moniteur série, comme précédemment, pour afficher sur l'ordinateur le nombre reçu. Placer votre doigt sur la photorésistance pour voir le nombre changer.

De l'ordinateur à la carte : Piloter une DEL

Câblage

La photorésistance peut être laissée en place pour la suite des expériences.

Programme

Téléverser le programme ci-dessous.

void setup() {
  pinMode(3, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()>0) {       // si la mémoire tampon de la carte Arduino reçoit des octets
    char caractere = Serial.read(); // lecture d'un caractère
    if (caractere == 'a' || caractere == 'A') {
      digitalWrite(3, HIGH);
    }
    if (caractere == 'e' || caractere == 'E') {
      digitalWrite(3, LOW);
    }
    Serial.print(caractere);
  }
}

Dialogue avec la carte

Ouvrir le menu Outils/Moniteur série, régler la cas échéant la vitesse de connexion à 9600 bauds, pour obtenir :

Pour allumer ou éteindre la DEL présente sur la carte Arduino UNO, utiliser la première ligne du moniteur série, écrire les caractères a ou e. Valider en appuyant sur la touche Entrée du clavier ou en cliquant sur bouton Envoyer.

Pratiquer

Eclairage automatique

Pour une pièce mal éclairée (main positionnée au-dessus de la photorésistance), le système :

Dans le cas contraire, si la pièce est convenablement éclairée, le système :

Chenillard

Mettre en œuvre un chenillard :

Dé électronique

Réaliser un programme pour qu'à chaque passage de la main au-dessus de la photorésistance :

S'aider de la fonction random().

Approfondir

Il s'agit de remplacer le moniteur série par un programme en Python, interprété (par exemple) avec l'EDI EduPython.

De la carte à l'ordinateur : Du texte, des nombres

Code pour la carte Arduino

Le code à charger sur la carte Arduino UNO est le même que celui du paragraphe II.1.

Code en Python

Un exemple de code à faire tourner sur l'ordinateur est proposé ci-dessous. La ligne 2 est à adapter selon le nom de port série et la vitesse de transmission des données.

import serial
portUSB=serial.Serial('COM3', 9600)

while True:
  lu=portUSB.readline()[:-2] 
  print('Texte retourné par la carte Arduino UNO : ', lu.decode('utf-8'))

Explications :

De l'ordinateur à la carte : Piloter une DEL

Code pour la carte Arduino

Le code à charger sur la carte Arduino UNO est le même que celui du paragraphe II.3.

Code en Python

La ligne 2 du code ci-dessous est à adapter à votre cas.

import serial
portUSB=serial.Serial('COM3', 9600)

print ("Entrer a pour allumer la DEL, e pour l'éteindre, s pour stopper.")
while True:
  car = input("Saisir votre commande : ")
  if (car=='s'):
    portUSB.close()
    break
  portUSB.write(car.encode('utf-8'))