Atelier1 - 6 Septembre 2018 : Différence entre versions

De Wiki L.A.B
Aller à : navigation, rechercher
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 :

[1]

Après installation , dans le menu " Fichiers --> Préférences "

STM32DUINO-INSTALL1.JPG

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

STM32DUINO-INSTALL2.JPG

Téléchargez et installer ensuite le driver suivant :

[2]

Branchez ensuite votre capteur DHT-22 comme ceci :

STM32DUINO-ATELIER1-1.JPG

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

STM32DUINO-ATELIER1-2.JPG

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

STM32DUINO-ATELIER1-3.JPG

Branchez ensuite votre écran LCD comme ceci

STM32DUINO-ATELIER1-4.jpg


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