Atelier1 - 6 Septembre 2018

De Wiki L.A.B
Révision de 20 septembre 2018 à 11:07 par BERNIER François (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

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 3
#define CE 4
#define DC 5
#define DIN 6
#define CLK 7

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