SlideShare une entreprise Scribd logo
1  sur  31
ATELIERS PROTOTYPAGE DES OBJETS
CONNECTES VIA ARDUINO
Réalisé Par: Fagroud Fatima Zahra
Ateliers: Initiation
en Arduino
• 3 Ateliers
Ateliers: Envoi
des données
capte vers une
base de donnée
MySQL
• 1 Atelier
Ateliers:
Réception de
donnée par les
éléments Arduino
• 1 Atelier
Atelier 1 : Initiation en Arduino
Atelier 1 : Initiation en Arduino
Prototype de la
fonction
Description Paramètres
pinMode(pin, mode) Configure la broche spécifiée pour se comporter en
entrée ou en sortie
pin: numéro de la
broche
mode: INPUT, OUTPUT
ou INPUT_PULLUP
delay(ms) Met le programme en pause pendant une durée
spécifié
ms: nombre de
millisecondes à
suspendre
digitalWrite(pin, value) -broche configurée comme une OUTPUT:
HIGH Tension 5 V ou 3,3 V
LOW Tension 0 V
-broche configurée comme une INTPUT:
HIGH active le pullup interne sur la broche
d'entrée
LOW désactive le pullup interne sur la broche
pin: numéro de la
broche
value: HIGH ou LOW
Atelier 1 : Initiation en Arduino
int led1 = 2;
int led2 = 3;
int led3 = 4;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
delay(3000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(3000);
digitalWrite(led3, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, LOW);
}
Atelier 1 : Initiation en Arduino
LED Arduino Uno
- GND + Résistance
+ Broche (exemple: 5)
Atelier 2 : Initiation en Arduino
Atelier 2 : Initiation en Arduino
Prototype de la
fonction
Description Paramètres
Servo.attach(PIN) Prend en argument un unique paramètre obligatoire
correspond au numéro de broche sur laquelle le
servomoteur est câblé
PIN: numéro de la
broche
Servo.write (N) Permet de modifier l'angle du bras du servomoteur en
donnant en paramètre l'angle en question, sous la
forme d'un nombre entier compris entre 0° et 180°
N: angle et varie entre 0°
et 180°
Serial.begin (vitesse) Définit le débit de données en bits par seconde (bauds)
pour la transmission de données en série.
Vitesse: en bits par
seconde (bauds)
exemple 115200
Atelier 2 : Initiation en Arduino
#include <Servo.h>
Servo monServomoteur;
void setup() {
Serial.begin(115200);
monServomoteur.attach(6);
}
void loop() {
monServomoteur.write(0);
delay(1000);
monServomoteur.write(45);
delay(1000);
monServomoteur.write(90);
delay(1000);
monServomoteur.write(135);
delay(1000);
monServomoteur.write(180);
delay(1000);
monServomoteur.write(135);
delay(1000);
monServomoteur.write(90);
delay(1000);
monServomoteur.write(45);
delay(1000);
monServomoteur.write(0);
}
Atelier 2 : Initiation en Arduino
ServoMotor Arduino Uno
- GND
+ 5v
Signal Broche (exemple: 6)
Atelier 3 : Initiation en Arduino
Atelier 3 : Initiation en Arduino
Prototype de la fonction Description Paramètres
Serial.print(val) Imprime les données sur le port série sous forme
de texte ASCII lisible par l'homme.
val: la valeur à imprimer -
n'importe quel type de
données
Serial.println(val) Imprime les données sur le port série en tant que
texte ASCII lisible par un humain suivi d'un
caractère de retour chariot (ASCII 13 ou ' r') et
d'un caractère de nouvelle ligne (ASCII 10 ou '
n').
val: la valeur à imprimer -
n'importe quel type de
données
dht(DHTPIN, DHTTYPE) Initialisation du capteur DHT DHTPIN: numéro de la
broche
DHTTYPE: type du capteur
DHT
dht.readHumidity(); lecture de la valeur de l'humidité
dht.readTemperature() lecture de la valeur de la température en degrés
Celsius
Atelier 3 : Initiation en Arduino
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
}
else {
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *Ft");
Serial.print("Heat index: ");
Serial.print(hic);
Serial.print(" *C ");
Serial.print(hif);
Serial.println(" *F");
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
Atelier 3 : Initiation en Arduino
DHT11 Arduino Uno
Ground (-) GND
Vcc (+) 3.3v
Signal Broche (exemple: 2)
Atelier : Envoi des données capte vers
une base de donnée MySQL
Atelier : Envoi des données capte vers une
base de donnée MySQL
Prototype de la
fonction
Description Paramètres
WiFi .begin (ssid,
passe)
Initialise les paramètres réseau de la
bibliothèque WiFi et fournit l’état actuel
ssid : nom du réseau WiFi
pass : mot de passe
WiFi.status() Renvoie le statut de la connexion
server(port) Initialisation du serveur port : numéro de port
client.connect(ip,port)
client.connect(url,port)
Connectez-vous à l'adresse IP et au port spécifiés
dans le constructeur. La valeur de retour indique le
succès ou l'échec.
port : numéro de port
ip: l'adresse IP à laquelle le
client se connectera (tableau
de 4 octets)
URL: le nom de domaine
auquel le client se
connectera (string,
ex.:"arduino.cc ")
Atelier : Envoi des données capte vers une
base de donnée MySQL
#include <ESP8266WiFi.h>
#include <DHT.h>
#include <WiFiClient.h>
#define DHTPIN 2
#define DHTTYPE DHT11
const char* ssid = "AndroidAP";
const char* password = "123";
WiFiServer server(80);
const char* host= "temperature-
humidity.000webhostapp.com";
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
WiFi.mode(WIFI_STA);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
server.begin();
Serial.println("Server started");
Serial.println(WiFi.localIP());
}
Atelier : Envoi des données capte vers une
base de donnée MySQL
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
return;
}
else {
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
}
String data = "TEMP=";
data += t;
data += "&HUM=";
data += h;
if(client.connect(host,80)) {
client.println("GET /add1.php?"+ data +" HTTP/1.1");
client.println("Host: temperature-humidity.000webhostapp.com");
client.println("Connection: close");
client.println();
}
}
Atelier : Envoi des données capte vers une
base de donnée MySQL
<?php
$mysql_host = "localhost";
$mysql_database = "id6240287_arduino";
$mysql_user = "id6240287_root";
$mysql_password = "12345";
// Create connection
$conn = new mysqli($mysql_host, $mysql_user, $mysql_password,$mysql_database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$temp1=$_GET["TEMP"];
$hum1=$_GET["HUM"];
$dt = new DateTime();
$dt = $dt->format('Y/m/d/h/i/s');
Atelier : Envoi des données capte vers une
base de donnée MySQL
$sql = "SELECT id, temperature, humidity FROM templog2 WHERE id IN (SELECT MAX(id) FROM
templog2)";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$temp= $row["temperature"];
$hum= $row["humidity"] ;
$id = $row["id"] ;
}
}
Atelier : Envoi des données capte vers une
base de donnée MySQL
if($temp1!=$temp || $hum1!=$hum){
$req = "INSERT INTO templog2 (temperature, humidity, DateEnreg) VALUES
('".$temp1."','".$hum1."','".$dt."')";
$conn->query($req);
}
else{
$upt = "UPDATE templog2 SET DateEnreg='".$dt."' WHERE id='".$id."'";
$conn->query($upt);
}
$conn->close();
?>
Atelier : Envoi des données capte vers une
base de donnée MySQL
ESP8266 v1 Arduino Uno
VCC 3.3 V
GND GND
RX RX
TX TX
CH_PD 3.3 V
RST -
GPI0 0 GND
GPI0 2 -
Atelier : Envoi des données capte vers une
base de donnée MySQL
 https://www.youtube.com/watch?v=-wslrHr8xyI
Atelier 1 : Réception de donnée par les
éléments Arduino
Atelier : Réception de donnée par les
éléments Arduino
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
const char* ssid = "AndroidAP";
const char* password = "123";
String path= "/projects/etat.json";
const char* host = "192.168.43.2";
int led1 = D0;
int led2 = D1;
int led3 = D2;
int led4 = D6;
int led5 = D7;
int led6 = D8;
WiFiClient client;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(115200);
delay(10);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.println("IP address: " + WiFi.localIP());
}
Atelier : Réception de donnée par les
éléments Arduino
void loop() {
if(client.connect(host,80)) {
client.print(String("GET ") + path + " HTTP/1.1rn" +
"Host: " + host + "rn" + "Connection: keep-
alivernrn");
delay(500);
String section="header";
while(client.available()){
String line = client.readStringUntil('r');
if (section=="header") { // headers..
Serial.print(".");
if (line=="n") { // skips the empty space at the
beginning
section="json";
}
}
else if (section=="json") { // print the good stuff
section="ignore";
String result = line.substring(1); // Parse JSON
int size = result.length() + 1;
char json[size];
result.toCharArray(json, size);
StaticJsonBuffer<200> jsonBuffer;
JsonObject& json_parsed = jsonBuffer.parseObject(json);
if (!json_parsed.success())
{
Serial.println("parseObject() failed");
return;
}
Atelier : Réception de donnée par les
éléments Arduino
if (strcmp(json_parsed["led"], "vert") == 0) {
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led5, LOW);
digitalWrite(led4, LOW);
digitalWrite(led1, HIGH);
digitalWrite(led6, HIGH);
Serial.println("vert vs rouge");
}
else if (strcmp(json_parsed["led"], "rouge") == 0) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led6, LOW);
digitalWrite(led5, LOW);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
Serial.println("rouge vs vert");
}
else if (strcmp(json_parsed["led"], "orange") == 0) {
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led6, LOW);
digitalWrite(led2, HIGH); // allumer la LED
(tension 5V sur la broche)
digitalWrite(led5, HIGH);
Serial.println("orange vs orange");
}
}
Atelier : Réception de donnée par les
éléments Arduino
Atelier : Réception de donnée par les
éléments Arduino
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Feu Tricolor</title>
</head>
<body background="i.jpg">
<h1 style="color:white;text-align:center;font-style: italic;font-size: 70px;">Feu Tricolor </h1>
<div style="text-align:center;margin-top:5%;">
<a id="led_vert" href="?led=vert" style="margin-right:5%;"><img src="e1.png" height="150" width="150"></a>
<a id="led_orange" href="?led=orange" style="margin-right:5%;"><img src="e2.png"
height="150" width="150"></a>
<a id="led_rouge" href="?led=rouge" ><img src="e3.png" height="150" width="150"></a>
</div>
</body>
</html>
Atelier : Réception de donnée par les
éléments Arduino
<?php
$led = $_GET['led'];
if($led == "vert") {
$file = fopen("etat.json", "w") or die("can't open file");
fwrite($file, '{"led": "vert"}');
fclose($file);
}
else if ($led == "rouge") {
$file = fopen("etat.json", "w") or die("can't open file");
fwrite($file, '{"led": "rouge"}');
fclose($file);
}
else if ($led == "orange") {
$file = fopen("etat.json", "w") or die("can't open file");
fwrite($file, '{"led": "orange"}');
fclose($file);
}
?>
Atelier : Réception de donnée par les
éléments Arduino
LED ESP8266 v3
- GND (G)
+ Broche (exemple: D1)

Contenu connexe

Tendances

2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open HardwareSylvain Wallez
 
Chapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursChapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursSana Aroussi
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112Hafid Moujane
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseurISIG
 
Intro arduino
Intro arduinoIntro arduino
Intro arduinoSOAEnsAD
 
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashSthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashStHack
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseurPeronnin Eric
 
Hacking your home
Hacking your homeHacking your home
Hacking your homelaurenthuet
 
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...StHack
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le MicroprocesseurTheCrazyMan
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.iolaurenthuet
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Sana Aroussi
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jslaurenthuet
 
Architecture du microprocesseur
Architecture du microprocesseurArchitecture du microprocesseur
Architecture du microprocesseurOndernemersschool
 

Tendances (19)

2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware2012 11 Toulibre - Open Hardware
2012 11 Toulibre - Open Hardware
 
Chapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeursChapitre ii architecture interne des processeurs
Chapitre ii architecture interne des processeurs
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
 
Le microprocesseur
Le microprocesseurLe microprocesseur
Le microprocesseur
 
Intro arduino
Intro arduinoIntro arduino
Intro arduino
 
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cashSthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
Sthack 2015 - David Berard & Vincent Fargues - Attack the cache to get some cash
 
T ps dsp
T ps dspT ps dsp
T ps dsp
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Processeur
ProcesseurProcesseur
Processeur
 
Base des systèmes à microprocesseur
Base des systèmes à microprocesseurBase des systèmes à microprocesseur
Base des systèmes à microprocesseur
 
Hacking your home
Hacking your homeHacking your home
Hacking your home
 
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...
Sthack 2015 - Aris "@aris_ada" Adamantiadis - DUAL_EC_DRBG : Une histoire de ...
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Monitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.ioMonitoring d'un compteur EDF avec node.js @bdx.io
Monitoring d'un compteur EDF avec node.js @bdx.io
 
Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86Chapitre iii processeur intel 80x86
Chapitre iii processeur intel 80x86
 
Monitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.jsMonitoring Compteur EDF avec node.js
Monitoring Compteur EDF avec node.js
 
Architecture du microprocesseur
Architecture du microprocesseurArchitecture du microprocesseur
Architecture du microprocesseur
 
Astuces cisco
Astuces ciscoAstuces cisco
Astuces cisco
 

Similaire à Ateliers protypage d objets connectes via arduino

Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))Fatima Zahra Fagroud
 
Code source du serveur web Arduino pour contrôler un relais 5V
Code source du serveur web Arduino pour contrôler un relais 5V Code source du serveur web Arduino pour contrôler un relais 5V
Code source du serveur web Arduino pour contrôler un relais 5V Renaud Ahouansou
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.iolaurenthuet
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDOAbdoulaye Dieng
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScriptHabib Ayad
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdfAliouDiallo24
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++cppfrug
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsAurélien Regat-Barrel
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdfPatiento Del Mar
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec GoMickaël Rémond
 

Similaire à Ateliers protypage d objets connectes via arduino (20)

Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
Ateliers de base en Arduino (Carte Arduino Uno, Capteurs, Actionneurs))
 
Python + ansible = ♥
Python + ansible = ♥Python + ansible = ♥
Python + ansible = ♥
 
Code source du serveur web Arduino pour contrôler un relais 5V
Code source du serveur web Arduino pour contrôler un relais 5V Code source du serveur web Arduino pour contrôler un relais 5V
Code source du serveur web Arduino pour contrôler un relais 5V
 
Hacking your Home @bdx.io
Hacking your Home @bdx.ioHacking your Home @bdx.io
Hacking your Home @bdx.io
 
module_I6_Sockets.pdf
module_I6_Sockets.pdfmodule_I6_Sockets.pdf
module_I6_Sockets.pdf
 
Gce ipx800 v3 manual
Gce ipx800 v3 manualGce ipx800 v3 manual
Gce ipx800 v3 manual
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Partie1 TypeScript
Partie1 TypeScriptPartie1 TypeScript
Partie1 TypeScript
 
6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf6- Javacousesforenginerss_reseaux_v2.pdf
6- Javacousesforenginerss_reseaux_v2.pdf
 
Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++Comment développer un serveur métier en python/C++
Comment développer un serveur métier en python/C++
 
Introduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomicsIntroduction au lock-free programming avec std::atomics
Introduction au lock-free programming avec std::atomics
 
Introduction aux-sockets
Introduction aux-socketsIntroduction aux-sockets
Introduction aux-sockets
 
Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?Etes vous-pret pour php8 ?
Etes vous-pret pour php8 ?
 
Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf11-Concurrence-Section critiques.pdf
11-Concurrence-Section critiques.pdf
 
nodejs vs vertx
nodejs vs vertxnodejs vs vertx
nodejs vs vertx
 
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
Le Réseau et Java
Le Réseau et JavaLe Réseau et Java
Le Réseau et Java
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec Go
 

Plus de Fatima Zahra Fagroud

Introduction générale au Framework Flutter
Introduction générale au Framework FlutterIntroduction générale au Framework Flutter
Introduction générale au Framework FlutterFatima Zahra Fagroud
 
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Fatima Zahra Fagroud
 
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )Fatima Zahra Fagroud
 
Etude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BIEtude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BIFatima Zahra Fagroud
 
Récupération d’une Base De Données & Flashback Database
Récupération d’une Base De Données  & Flashback DatabaseRécupération d’une Base De Données  & Flashback Database
Récupération d’une Base De Données & Flashback DatabaseFatima Zahra Fagroud
 
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesFatima Zahra Fagroud
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processusFatima Zahra Fagroud
 

Plus de Fatima Zahra Fagroud (20)

Introduction générale au Framework Flutter
Introduction générale au Framework FlutterIntroduction générale au Framework Flutter
Introduction générale au Framework Flutter
 
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
Cours Algorithmique (Echange de valeurs, Expressions, structure de choix et s...
 
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
Cours Algorithmique : Tableaux (Déclaration , Saisie, Affichage et Tri )
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Etude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BIEtude comparative des fournisseurs de service BI
Etude comparative des fournisseurs de service BI
 
Récupération d’une Base De Données & Flashback Database
Récupération d’une Base De Données  & Flashback DatabaseRécupération d’une Base De Données  & Flashback Database
Récupération d’une Base De Données & Flashback Database
 
Rapid miner
Rapid miner Rapid miner
Rapid miner
 
Ibm bigsheets
Ibm bigsheetsIbm bigsheets
Ibm bigsheets
 
Angular
AngularAngular
Angular
 
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologies
 
Processus d’indexation
Processus d’indexationProcessus d’indexation
Processus d’indexation
 
Spring social
Spring socialSpring social
Spring social
 
Rapport TP Corrélation
Rapport TP CorrélationRapport TP Corrélation
Rapport TP Corrélation
 
Ionic
Ionic Ionic
Ionic
 
Ibm bluemix
Ibm bluemixIbm bluemix
Ibm bluemix
 
ATL et SVG
ATL et SVGATL et SVG
ATL et SVG
 
Rapport Projet Module Complexité
Rapport Projet Module ComplexitéRapport Projet Module Complexité
Rapport Projet Module Complexité
 
Rapport pfe licence
Rapport pfe licenceRapport pfe licence
Rapport pfe licence
 
Interfaces controlesbasededonné
Interfaces controlesbasededonnéInterfaces controlesbasededonné
Interfaces controlesbasededonné
 
Expose linux gestion des processus
Expose linux  gestion des processusExpose linux  gestion des processus
Expose linux gestion des processus
 

Ateliers protypage d objets connectes via arduino

  • 1. ATELIERS PROTOTYPAGE DES OBJETS CONNECTES VIA ARDUINO Réalisé Par: Fagroud Fatima Zahra
  • 2. Ateliers: Initiation en Arduino • 3 Ateliers Ateliers: Envoi des données capte vers une base de donnée MySQL • 1 Atelier Ateliers: Réception de donnée par les éléments Arduino • 1 Atelier
  • 3. Atelier 1 : Initiation en Arduino
  • 4. Atelier 1 : Initiation en Arduino Prototype de la fonction Description Paramètres pinMode(pin, mode) Configure la broche spécifiée pour se comporter en entrée ou en sortie pin: numéro de la broche mode: INPUT, OUTPUT ou INPUT_PULLUP delay(ms) Met le programme en pause pendant une durée spécifié ms: nombre de millisecondes à suspendre digitalWrite(pin, value) -broche configurée comme une OUTPUT: HIGH Tension 5 V ou 3,3 V LOW Tension 0 V -broche configurée comme une INTPUT: HIGH active le pullup interne sur la broche d'entrée LOW désactive le pullup interne sur la broche pin: numéro de la broche value: HIGH ou LOW
  • 5. Atelier 1 : Initiation en Arduino int led1 = 2; int led2 = 3; int led3 = 4; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); } void loop() { digitalWrite(led1, HIGH); delay(3000); digitalWrite(led1, LOW); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); digitalWrite(led3, HIGH); delay(3000); digitalWrite(led3, LOW); digitalWrite(led2, HIGH); delay(1000); digitalWrite(led2, LOW); }
  • 6. Atelier 1 : Initiation en Arduino LED Arduino Uno - GND + Résistance + Broche (exemple: 5)
  • 7. Atelier 2 : Initiation en Arduino
  • 8. Atelier 2 : Initiation en Arduino Prototype de la fonction Description Paramètres Servo.attach(PIN) Prend en argument un unique paramètre obligatoire correspond au numéro de broche sur laquelle le servomoteur est câblé PIN: numéro de la broche Servo.write (N) Permet de modifier l'angle du bras du servomoteur en donnant en paramètre l'angle en question, sous la forme d'un nombre entier compris entre 0° et 180° N: angle et varie entre 0° et 180° Serial.begin (vitesse) Définit le débit de données en bits par seconde (bauds) pour la transmission de données en série. Vitesse: en bits par seconde (bauds) exemple 115200
  • 9. Atelier 2 : Initiation en Arduino #include <Servo.h> Servo monServomoteur; void setup() { Serial.begin(115200); monServomoteur.attach(6); } void loop() { monServomoteur.write(0); delay(1000); monServomoteur.write(45); delay(1000); monServomoteur.write(90); delay(1000); monServomoteur.write(135); delay(1000); monServomoteur.write(180); delay(1000); monServomoteur.write(135); delay(1000); monServomoteur.write(90); delay(1000); monServomoteur.write(45); delay(1000); monServomoteur.write(0); }
  • 10. Atelier 2 : Initiation en Arduino ServoMotor Arduino Uno - GND + 5v Signal Broche (exemple: 6)
  • 11. Atelier 3 : Initiation en Arduino
  • 12. Atelier 3 : Initiation en Arduino Prototype de la fonction Description Paramètres Serial.print(val) Imprime les données sur le port série sous forme de texte ASCII lisible par l'homme. val: la valeur à imprimer - n'importe quel type de données Serial.println(val) Imprime les données sur le port série en tant que texte ASCII lisible par un humain suivi d'un caractère de retour chariot (ASCII 13 ou ' r') et d'un caractère de nouvelle ligne (ASCII 10 ou ' n'). val: la valeur à imprimer - n'importe quel type de données dht(DHTPIN, DHTTYPE) Initialisation du capteur DHT DHTPIN: numéro de la broche DHTTYPE: type du capteur DHT dht.readHumidity(); lecture de la valeur de l'humidité dht.readTemperature() lecture de la valeur de la température en degrés Celsius
  • 13. Atelier 3 : Initiation en Arduino #include <DHT.h> #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); delay(10); Serial.println(); } else { float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); Serial.print(f); Serial.print(" *Ft"); Serial.print("Heat index: "); Serial.print(hic); Serial.print(" *C "); Serial.print(hif); Serial.println(" *F"); } void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { return; }
  • 14. Atelier 3 : Initiation en Arduino DHT11 Arduino Uno Ground (-) GND Vcc (+) 3.3v Signal Broche (exemple: 2)
  • 15. Atelier : Envoi des données capte vers une base de donnée MySQL
  • 16. Atelier : Envoi des données capte vers une base de donnée MySQL Prototype de la fonction Description Paramètres WiFi .begin (ssid, passe) Initialise les paramètres réseau de la bibliothèque WiFi et fournit l’état actuel ssid : nom du réseau WiFi pass : mot de passe WiFi.status() Renvoie le statut de la connexion server(port) Initialisation du serveur port : numéro de port client.connect(ip,port) client.connect(url,port) Connectez-vous à l'adresse IP et au port spécifiés dans le constructeur. La valeur de retour indique le succès ou l'échec. port : numéro de port ip: l'adresse IP à laquelle le client se connectera (tableau de 4 octets) URL: le nom de domaine auquel le client se connectera (string, ex.:"arduino.cc ")
  • 17. Atelier : Envoi des données capte vers une base de donnée MySQL #include <ESP8266WiFi.h> #include <DHT.h> #include <WiFiClient.h> #define DHTPIN 2 #define DHTTYPE DHT11 const char* ssid = "AndroidAP"; const char* password = "123"; WiFiServer server(80); const char* host= "temperature- humidity.000webhostapp.com"; DHT dht(DHTPIN, DHTTYPE); WiFiClient client; void setup() { Serial.begin(115200); delay(10); Serial.println(); WiFi.mode(WIFI_STA); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); server.begin(); Serial.println("Server started"); Serial.println(WiFi.localIP()); }
  • 18. Atelier : Envoi des données capte vers une base de donnée MySQL void loop() { delay(2000); float h = dht.readHumidity(); float t = dht.readTemperature(); float f = dht.readTemperature(true); if (isnan(h) || isnan(t) || isnan(f)) { return; } else { float hif = dht.computeHeatIndex(f, h); float hic = dht.computeHeatIndex(t, h, false); Serial.print("Humidity: "); Serial.print(h); Serial.print(" %t"); Serial.print("Temperature: "); Serial.print(t); Serial.print(" *C "); } String data = "TEMP="; data += t; data += "&HUM="; data += h; if(client.connect(host,80)) { client.println("GET /add1.php?"+ data +" HTTP/1.1"); client.println("Host: temperature-humidity.000webhostapp.com"); client.println("Connection: close"); client.println(); } }
  • 19. Atelier : Envoi des données capte vers une base de donnée MySQL <?php $mysql_host = "localhost"; $mysql_database = "id6240287_arduino"; $mysql_user = "id6240287_root"; $mysql_password = "12345"; // Create connection $conn = new mysqli($mysql_host, $mysql_user, $mysql_password,$mysql_database); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $temp1=$_GET["TEMP"]; $hum1=$_GET["HUM"]; $dt = new DateTime(); $dt = $dt->format('Y/m/d/h/i/s');
  • 20. Atelier : Envoi des données capte vers une base de donnée MySQL $sql = "SELECT id, temperature, humidity FROM templog2 WHERE id IN (SELECT MAX(id) FROM templog2)"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $temp= $row["temperature"]; $hum= $row["humidity"] ; $id = $row["id"] ; } }
  • 21. Atelier : Envoi des données capte vers une base de donnée MySQL if($temp1!=$temp || $hum1!=$hum){ $req = "INSERT INTO templog2 (temperature, humidity, DateEnreg) VALUES ('".$temp1."','".$hum1."','".$dt."')"; $conn->query($req); } else{ $upt = "UPDATE templog2 SET DateEnreg='".$dt."' WHERE id='".$id."'"; $conn->query($upt); } $conn->close(); ?>
  • 22. Atelier : Envoi des données capte vers une base de donnée MySQL ESP8266 v1 Arduino Uno VCC 3.3 V GND GND RX RX TX TX CH_PD 3.3 V RST - GPI0 0 GND GPI0 2 -
  • 23. Atelier : Envoi des données capte vers une base de donnée MySQL  https://www.youtube.com/watch?v=-wslrHr8xyI
  • 24. Atelier 1 : Réception de donnée par les éléments Arduino
  • 25. Atelier : Réception de donnée par les éléments Arduino #include <ArduinoJson.h> #include <ESP8266WiFi.h> const char* ssid = "AndroidAP"; const char* password = "123"; String path= "/projects/etat.json"; const char* host = "192.168.43.2"; int led1 = D0; int led2 = D1; int led3 = D2; int led4 = D6; int led5 = D7; int led6 = D8; WiFiClient client; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); Serial.begin(115200); delay(10); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("WiFi connected"); Serial.println("IP address: " + WiFi.localIP()); }
  • 26. Atelier : Réception de donnée par les éléments Arduino void loop() { if(client.connect(host,80)) { client.print(String("GET ") + path + " HTTP/1.1rn" + "Host: " + host + "rn" + "Connection: keep- alivernrn"); delay(500); String section="header"; while(client.available()){ String line = client.readStringUntil('r'); if (section=="header") { // headers.. Serial.print("."); if (line=="n") { // skips the empty space at the beginning section="json"; } } else if (section=="json") { // print the good stuff section="ignore"; String result = line.substring(1); // Parse JSON int size = result.length() + 1; char json[size]; result.toCharArray(json, size); StaticJsonBuffer<200> jsonBuffer; JsonObject& json_parsed = jsonBuffer.parseObject(json); if (!json_parsed.success()) { Serial.println("parseObject() failed"); return; }
  • 27. Atelier : Réception de donnée par les éléments Arduino if (strcmp(json_parsed["led"], "vert") == 0) { digitalWrite(led3, LOW); digitalWrite(led2, LOW); digitalWrite(led5, LOW); digitalWrite(led4, LOW); digitalWrite(led1, HIGH); digitalWrite(led6, HIGH); Serial.println("vert vs rouge"); } else if (strcmp(json_parsed["led"], "rouge") == 0) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led6, LOW); digitalWrite(led5, LOW); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); Serial.println("rouge vs vert"); } else if (strcmp(json_parsed["led"], "orange") == 0) { digitalWrite(led1, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); digitalWrite(led6, LOW); digitalWrite(led2, HIGH); // allumer la LED (tension 5V sur la broche) digitalWrite(led5, HIGH); Serial.println("orange vs orange"); } }
  • 28. Atelier : Réception de donnée par les éléments Arduino
  • 29. Atelier : Réception de donnée par les éléments Arduino <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>Feu Tricolor</title> </head> <body background="i.jpg"> <h1 style="color:white;text-align:center;font-style: italic;font-size: 70px;">Feu Tricolor </h1> <div style="text-align:center;margin-top:5%;"> <a id="led_vert" href="?led=vert" style="margin-right:5%;"><img src="e1.png" height="150" width="150"></a> <a id="led_orange" href="?led=orange" style="margin-right:5%;"><img src="e2.png" height="150" width="150"></a> <a id="led_rouge" href="?led=rouge" ><img src="e3.png" height="150" width="150"></a> </div> </body> </html>
  • 30. Atelier : Réception de donnée par les éléments Arduino <?php $led = $_GET['led']; if($led == "vert") { $file = fopen("etat.json", "w") or die("can't open file"); fwrite($file, '{"led": "vert"}'); fclose($file); } else if ($led == "rouge") { $file = fopen("etat.json", "w") or die("can't open file"); fwrite($file, '{"led": "rouge"}'); fclose($file); } else if ($led == "orange") { $file = fopen("etat.json", "w") or die("can't open file"); fwrite($file, '{"led": "orange"}'); fclose($file); } ?>
  • 31. Atelier : Réception de donnée par les éléments Arduino LED ESP8266 v3 - GND (G) + Broche (exemple: D1)

Notes de l'éditeur

  1. Pullup: resistances de rappel interne Arduino 50000 ohms
  2. Isnan: is not a number
  3. dht.computeHeatIndex(f, h):Calculer l'indice de chaleur en degrés Fahrenheit dht.computeHeatIndex(t, h, false): Calculer l'indice de chaleur en degrés Celsius
  4. Wificlient Crée un client pouvant se connecter à une adresse IP Internet et à un port spécifiés
  5. VCC, Voltage (+3.3 V; can handle up to 3.6 V) GND, Ground (0 V) RX, Receive data bit X TX, Transmit data bit X CH_PD, Chip power-down RST, Reset GPIO 0, General-purpose input/output No. 0 GPIO 2, General-purpose input/output No. 2