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);
}
