Atelier1 - 6 Septembre 2018 : Différence entre versions
Ligne 57 : | Ligne 57 : | ||
[[Fichier:STM32DUINO-ATELIER1-4.jpg]] | [[Fichier:STM32DUINO-ATELIER1-4.jpg]] | ||
+ | |||
+ | |||
+ | |||
+ | <syntaxhighlight lang="cpp" enclose="div"> | ||
+ | #include <SimpleDHT.h> | ||
+ | #include "Nokia_5110.h" | ||
+ | // Our pins were set as on presentation | ||
+ | #define RST 7 | ||
+ | #define CE 6 | ||
+ | #define DC 5 | ||
+ | #define DIN 4 | ||
+ | #define CLK 3 | ||
+ | #define BL 2 | ||
+ | |||
+ | Nokia_5110 lcd = Nokia_5110(RST, CE, DC, DIN, CLK); | ||
+ | |||
+ | // for DHT22, | ||
+ | // VCC: 5V or 3V | ||
+ | // GND: GND | ||
+ | // DATA: 15 | ||
+ | int pinDHT22 = 15; | ||
+ | // Defining sensor pins | ||
+ | SimpleDHT22 dht22(pinDHT22); | ||
+ | |||
+ | void setup() { | ||
+ | // Setting serial rate | ||
+ | Serial.begin(115200); | ||
+ | // Setting lcd contrast | ||
+ | lcd.setContrast(60); // 60 is the default value set by the driver | ||
+ | // Defining BL pin as an output with value ON | ||
+ | pinMode(BL, OUTPUT); | ||
+ | digitalWrite(BL, HIGH); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | // Clearing LCD screen... | ||
+ | lcd.clear(); | ||
+ | // Initializing logs | ||
+ | Serial.println("================================="); | ||
+ | Serial.println("Sample DHT22..."); | ||
+ | |||
+ | // read without samples. | ||
+ | // Remark : We use read2 to get a float data, such as 10.1*C | ||
+ | // if user doesn't care about the accurate data, use read to get a byte data, such as 10*C. | ||
+ | float temperature = 0; | ||
+ | float humidity = 0; | ||
+ | int err = SimpleDHTErrSuccess; | ||
+ | if ((err = dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) { | ||
+ | // Printing error on LCD display | ||
+ | lcd.println("Reading error from sensor"); | ||
+ | lcd.println(err); | ||
+ | // Printing error in logs | ||
+ | Serial.print("Read DHT22 failed, err="); | ||
+ | Serial.println(err); | ||
+ | // Delaying next mesure | ||
+ | delay(2000); | ||
+ | // Returning for new loop | ||
+ | return; | ||
+ | } | ||
+ | // Printing Temperature | ||
+ | lcd.println("Temperature : "); | ||
+ | lcd.print(temperature); | ||
+ | lcd.println(" *C"); | ||
+ | |||
+ | // Printing humidity | ||
+ | lcd.println("Humidite : "); | ||
+ | lcd.print(humidity); | ||
+ | lcd.println(" %HR"); | ||
+ | |||
+ | // Logs for debugging | ||
+ | Serial.print("Sample OK: "); | ||
+ | Serial.print((float)temperature); Serial.print(" *C, "); | ||
+ | Serial.print((float)humidity); Serial.println(" RH%"); | ||
+ | |||
+ | // DHT22 sampling rate is 0.5HZ. | ||
+ | delay(2500); | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> |
Version du 10 septembre 2018 à 20:43
Cet atelier à permis à chacun d'installer l'environnement nécessaire à l'utilisation des cartes Nucleo ST Micorelectronics , de brancher un capteur DHT22 et d'afficher ses données sur un afficheur LCD.
Installation de l'environnement Arduino
Télécharger et installer la dernière version de l’IDE Arduino disponible ici :
Après installation , dans le menu " Fichiers --> Préférences "
Copier et coller le lien suivant
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json
Ouvrez ensuite le gestionnaire de cartes : Outils > Type de carte :… > Gestionnaire de cartes
Taper STM32 dans la recherche , sélectionnez ensuite la version puis cliquez sur installer
Téléchargez et installer ensuite le driver suivant :
Branchez ensuite votre capteur DHT-22 comme ceci :
Rendez vous ensuite dans le menu --> Croquis --> Inclure une bibliothèque --> Gérer les Bibliothèques
Effectuez une recherche sur "DHT" et installez la bibliothèque
Dans le menu --> Fichiers --> Exemples --> DHT Sensor Library Charger le fichier "DHT_Unified_Sensors"
Branchez ensuite votre carte Nucleo sur votre PC
Sélectionnez ensuite dans le menu Outils --> Type de carte --> Nucleo64 Puis dans Board Part Number --> NUCLEOL476RG Puis sélectionner ensuite le port com correspondant à la carte --> Port --> xxx
Vous pouvez maintenant téléverser le programme dans la carte --> Croquis --> Téléverser
Ouvrez ensuite le moniteur série --> Outils --> Moniteur Série Vous devriez voir apparaitre les données de température et d'humidité lues par le capteur
Branchez ensuite votre écran LCD comme ceci
#include <SimpleDHT.h>
#include "Nokia_5110.h"
// Our pins were set as on presentation
#define RST 7
#define CE 6
#define DC 5
#define DIN 4
#define CLK 3
#define BL 2
Nokia_5110 lcd = Nokia_5110(RST, CE, DC, DIN, CLK);
// for DHT22,
// VCC: 5V or 3V
// GND: GND
// DATA: 15
int pinDHT22 = 15;
// Defining sensor pins
SimpleDHT22 dht22(pinDHT22);
void setup() {
// Setting serial rate
Serial.begin(115200);
// Setting lcd contrast
lcd.setContrast(60); // 60 is the default value set by the driver
// Defining BL pin as an output with value ON
pinMode(BL, OUTPUT);
digitalWrite(BL, HIGH);
}
void loop() {
// Clearing LCD screen...
lcd.clear();
// Initializing logs
Serial.println("=================================");
Serial.println("Sample DHT22...");
// read without samples.
// Remark : We use read2 to get a float data, such as 10.1*C
// if user doesn't care about the accurate data, use read to get a byte data, such as 10*C.
float temperature = 0;
float humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
// Printing error on LCD display
lcd.println("Reading error from sensor");
lcd.println(err);
// Printing error in logs
Serial.print("Read DHT22 failed, err=");
Serial.println(err);
// Delaying next mesure
delay(2000);
// Returning for new loop
return;
}
// Printing Temperature
lcd.println("Temperature : ");
lcd.print(temperature);
lcd.println(" *C");
// Printing humidity
lcd.println("Humidite : ");
lcd.print(humidity);
lcd.println(" %HR");
// Logs for debugging
Serial.print("Sample OK: ");
Serial.print((float)temperature); Serial.print(" *C, ");
Serial.print((float)humidity); Serial.println(" RH%");
// DHT22 sampling rate is 0.5HZ.
delay(2500);
}