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
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
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
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
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");
}
}
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
Pullup: resistances de rappel interne Arduino 50000 ohms
Isnan: is not a number
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
Wificlient Crée un client pouvant se connecter à une adresse IP Internet et à un port spécifiés
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