Académique Documents
Professionnel Documents
Culture Documents
Faire clignoter une LED (avec un intervalle de 1 seconde) branché sur la carte
ESP32 sur le port 23.
Montage:
Une diode électroluminescente, ou LED pour "Light-Emitting Diode", est polarisée, elle ne
s’allume que lorsque les pattes sont connectées dans un sens bien déterminé.
Resistance : ajouter une résistance en série avec la LED afin de limiter le courant qui va la
parcourir
La carte Esp32 possède un microcontrôleur facilement programmable ainsi que de
nombreuses entrées-sorties.
Croquis Arduino IDE:
// la fonction setup s'exécute lors d'un reset ou de mise sous tension de la carte
void setup() {
// initialiser le pin numérique ledPin comme pin de sortie.
pinMode(ledPin, OUTPUT);
}
Code MicroPython :
import time
from machine import Pin # importer pin à partir du module machine
while True: # boucle while , boucle infinie puisque condition toujours vrai ->True
led.value(1) # Allumer la LED
time.sleep(1) # attendre 1 seconde
led.value(0) # Eteindre la LED
time.sleep(1) # attendre 1 seconde
Remarque: Pour allumer/éteindre la lampe LED, on peut aussi utiliser led.on() et led.off()
Projet 2:
Montage:
Carte ESP32 , lampe LED, resistance de 220 Ω
// Choisir le seuil
const int seuil = 20;
// variable pour stocker la valeur du capteur capacitif
int touchValue;
void setup(){
Serial.begin(115200);
delay(1000); // pause d'une seconde
// initialiser le pin(broche) LED comme sortie(output):
pinMode (ledPin, OUTPUT);
}
void loop(){
// lire la valeur sur le touchpin:
touchValue = touchRead(touchPin);
Serial.print(touchValue);
// vérifier si touchvalue < seuil
//si oui mettre ledPin à la valeur HIGH
if(touchValue < seuil){
// Allumer la lampe LED
digitalWrite(ledPin, HIGH);
Serial.println(" - LED on");
}
else{
// Eteindre la lampe LED
digitalWrite(ledPin, LOW);
Serial.println(" - LED off");
}
delay(500);
}
Code MicroPython :
from machine import Pin,TouchPad
led=Pin(23,Pin.OUT)
touch0=TouchPad(Pin(4))
seuil=100 #configurer le seuil pour lequel le pin est
considéré comme touché
while True:
touch0.config(seuil)
print(touch0.read()) # lire puis afficher la valeur sur
le touchpin
if touch0.read()<100: # vérifier si la valeur sur le
touchpin < seuil
led.on() # Allumer la lampe LED
else:
led.off() # Eteindre la lampe LED
Projet 3
Montage:
Carte ESP32 , lampe LED, resistance de 220 Ω
Principe:
On va se connecter au réseau WiFi disponible puis créer un serveur web sur
la cate ESP32 enfin accéder à la carte via son adresse IP pour commander le
pin23 dans notre exemple.
Croquis Arduino IDE:
#include <WiFi.h>
void setup() {
pinMode(relaisPin, OUTPUT);
digitalWrite(relaisPin, LOW); // Éteindre la lampe au
démarrage
void loop() {
// Écouter les commandes de contrôle
if (Serial.available() > 0) {
char command = Serial.read();
if (command == '1') {
digitalWrite(relaisPin, HIGH); // Allumer la lampe
} else if (command == '0') {
digitalWrite(relaisPin, LOW); // Éteindre la lampe
}
}
}
Code MicroPython :
ssid = 'NOM_RESEAU_WIFI'
password = 'MOT_DE_PASSE_WIFI'
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password)
while station.isconnected() == False:
pass
print('connexion établie')
print(station.ifconfig())
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
conn, addr = s.accept()
print('Connexion de = %s' % str(addr))
request = conn.recv(1024)
request = str(request)
print('Contenu = %s' % request)
led_on = request.find('/?led=on')
led_off = request.find('/?led=off')
if led_on == 6:
print('LED ON')
led.value(1)
if led_off == 6:
print('LED OFF')
led.value(0)
Afficher la solution
Montage:
Carte ESP32 , lampe, relais 5V
GND:Conneté au GND (0 V)
VCC:Connecté au 5V
SIG: Permet de contrôler le relais (plus que 2.0 V permet de l'activer)
Sorties:
NO:Normally Open,est connecté au COM lorsque SIG est activé (High)
COM:Common pin
NC:Normally Closed, est connecté au COM lorsque SIG est désactivé
(LOW)
Principe:
On va se connecter au réseau WiFi disponible puis créer un serveur web sur
la cate ESP32 enfin accéder à la carte via son adresse IP pour commander le
pin23 dans notre exemple. (le même principe que la commande d'une lampe
LED et le même programme installé sur la carte)
Code MicroPython :
ssid = 'NOM_RESEAU_WIFI'
password = 'MOT_DE_PASSE_WIFI'
station = network.WLAN(network.STA_IF)
station.active(True)
station.connect(ssid, password)
print('connexion établie')
print(station.ifconfig())
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
conn, addr = s.accept()
print('Connexion de = %s' % str(addr))
request = conn.recv(1024)
request = str(request)
print('Contenu = %s' % request)
led_on = request.find('/?led=on')
led_off = request.find('/?led=off')
if led_on == 6:
print('LED ON')
led.value(1)
if led_off == 6:
print('LED OFF')
led.value(0)
Allumer une LED suivant le niveau de remplissage d'une poubelle (LED verte(espace vide
>10cm)) (LED rouge(espace vide <=10cm) ).
Montage:
Carte ESP32 , capteur ultrason HC-S004, 2 resistances 220 Ω, 2 LED rouge et vert
Vcc = Alimentation +5 V DC
Trig =Entrée de déclenchement de la mesure (Trigger input)
Echo =Sortie de mesure donnée en écho (Echo output)
GND = Masse de l'alimentation
Principe:
Le détecteur HC-SR04 utilise les ultrasons pour déterminer la distance à laquelle se trouve un
objet. Son champ de vision est de 90° environ selon l'environnement. Si une impulsion de
plus de 10µS est détectée (sur l'entrée TRIGGER), alors le capteur envoie une série de 8
impulsions à ultrason de 40kHZ et attends le réfléchissement du signal. Lorsque celui-ci est
détecté, une impulsion de durée proportionnelle à la distance mesurée (Plage de mesure : 2 cm
à 400 cm) est envoyée sur la sortie "Echo".
Calcul
Distance parcourue par le son : vitesse du son (340 m/s) * temps aller retour du son /2
Distance = 340m/s * t en sec / 2 = 34000 cm /1000000µs * t en µs /2 = 17 /1000 * t
T = Distance * 1000 /17 = D * 58,82 en µs
Distance en cm = temps propagation en µs / 58
Croquis Arduino IDE:(mesure de distance)
#define TRIG 5 //pin 5 carte UNO pour envoyer pulse de 10µs
#define ECHO 4 // pin 4 carte UNO pour recevoir pulse Echo
const long TIMEOUT = 30000UL; // 30ms soit mesure à moins de 6m25
unsigned long distance; //
void setup() {
pinMode(TRIG,OUTPUT); // configuration pin TRIG en sortie, elle sera raccordée à l'entrée Trig du
capteur HC-SR04
pinMode(ECHO,INPUT); // configuration pin ECHO en entrée, elle sera raccordée à la sortie Echo
du capteur HCSR04
digitalWrite(TRIG, LOW); //Elle doit être à 0 au démarrage
Serial.begin(115200);
}
void loop() {
//création impulsion trigger de 10µs
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
//mesure de la distance en cm capteur / cible
distance = pulseIn(ECHO, HIGH, TIMEOUT)/58;
//Affichage mesure toutes les 0.5 seconde
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
Pour voir les distances en cm, on peut voir le moniteur série (Outils--> Moniteur
série(Ctr+Maj+M) ou cliquer sur l'icône
Allumage d'une LED suivant une condition:
On va ajouter les instructions permettant d'allumer la LED (Verte) si la
distance est >10 et la LED (Rouge) dans le cas contraire.
Envoyer une notification Push sur son smartphone si l'espace vide dans une
poubelle<=10cm
Montage:
On va garder le même montage que le projet 5:
Principe:
Le détecteur HC-SR04 utilise les ultrasons pour déterminer la distance à
laquelle se trouve un objet. Lorsque la distance >10 une lampe LED verte
s'allume, mais si la distance <=10 une lampe LED Rouge est allumée et une
notification est envoyée au smartphone indiquant que la poubelle est pleine
et la distance vide qui reste.
Création de notification :
Sur un mobile, une notification push est un message d’alerte reçu via une
application que l’on peut ouvrir, supprimer, autoriser ou bloquer. Pour créer
une notification on va suivre les étapes suivantes:
Sur le PC :
Dans le menu Devices sur pc vous devez retrouver votre smartphone.
Ouvrir le menu My scenarios saisir le nom de votre scénario puis cliquer sur Add
Cliquer sur le bouton Add an action puis Add an action with this service
#include <WiFi.h>
#include <WiFiMulti.h>
WiFiMulti WiFiMulti;
WiFiClient client;
// Pushingbox API
char *api_server = "api.pushingbox.com";
char *deviceId = "v5FE1TE24CA4C6FB32";
void setup()
{
pinMode(ledPinVert, OUTPUT);
pinMode(ledPinRouge, OUTPUT);
pinMode(TRIG,OUTPUT); // configuration pin TRIG en sortie,
elle sera raccordée à l'entrée Trig du capteur HC-SR04
pinMode(ECHO,INPUT); // configuration pin ECHO en entrée,
elle sera raccordée à la sortie Echo du capteur HCSR04
digitalWrite(TRIG, LOW); //Elle doit être à 0 au démarrage
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("En attente du WiFi... ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connecté");
Serial.println("addresse IP: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop()
{
//création impulsion trigger de 10µs
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
//mesure de la distance en cm capteur / cible
distance = pulseIn(ECHO, HIGH, TIMEOUT)/58;
//Affichage mesure toutes les 0.5 seconde
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
if (distance>seuil) {
digitalWrite(ledPinRouge, LOW); // Eteindre le LED
Rouge(LOW)
digitalWrite(ledPinVert, HIGH); // Allumer le LED Vert
(HIGH)
}
else
{
digitalWrite(ledPinVert, LOW); // Eteindre le LED
Vert(LOW)
digitalWrite(ledPinRouge, HIGH); // Allumer le LED Rouge
(HIGH)
sendNotification(distance);
}
}
WiFiMulti WiFiMulti;
WiFiClient client;
// Pushingbox API
char *api_server = "api.pushingbox.com";
char *deviceId = "v5FE1TE24CA4C6FB32";
void setup()
{
pinMode(ledPinVert, OUTPUT);
pinMode(ledPinRouge, OUTPUT);
pinMode(TRIG,OUTPUT); // configuration pin TRIG en sortie, elle sera raccordée à l'entrée
Trig du capteur HC-SR04
pinMode(ECHO,INPUT); // configuration pin ECHO en entrée, elle sera raccordée à la
sortie Echo du capteur HCSR04
digitalWrite(TRIG, LOW); //Elle doit être à 0 au démarrage
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
Serial.print("En attente du WiFi... ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connecté");
Serial.println("addresse IP: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop()
{
//création impulsion trigger de 10µs
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
//mesure de la distance en cm capteur / cible
distance = pulseIn(ECHO, HIGH, TIMEOUT)/58;
//Affichage mesure toutes les 0.5 seconde
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
if (distance>seuil) {
digitalWrite(ledPinRouge, LOW); // Eteindre le LED Rouge(LOW)
digitalWrite(ledPinVert, HIGH); // Allumer le LED Vert (HIGH)
}
else
{
temps_courant=millis();
if (temps_courant - temps_mesure>= intervalle) { temps_mesure=millis();
digitalWrite(ledPinVert, LOW); // Eteindre le LED Vert(LOW)
digitalWrite(ledPinRouge, HIGH); // Allumer le LED Rouge (HIGH)
sendNotification(distance); }
}
}