Atelier1 - 6 Septembre 2018
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);
}