Répertoire projet Interfaçage SESAM IUT Cachan. Interface Graphique Capteur HIH6030-021-001 Humidité & Température

Dependencies:   F746_GUI mbed

L'objectif de ce projet à pour but d'afficher la température et l'humidité du capteur HIH6030-021-001 de Honeywell.

Capteur HIH6030-021-001 :

Lien Farnell : https://fr.farnell.com/honeywell/hih6030-021-001/capteur-humidite-temperature-num/dp/2356755

« Datasheet » du composant : http://www.farnell.com/datasheets/1927619.pdf?_ga=2.84320473.1584398624.1549960629-263764023.1527238100

Le HIH6030-021-001 de Honeywell est un capteur d'humidité / température numérique humidIcon dans un boîtier SOIC-8. Ce capteur fournit un niveau de précision de ±4,5% de HR pour les performances d'humidité et ±1,0°C pour la performance de la température. Les applications typiques comprennent HVAC/R, les compresseurs d'air, les stations météorologiques, les armoires de télécommunication, les thérapies respiratoires et les incubateurs industriels / micro environnements.

• Plage d'alimentation de 2.3VDC à 5.5VDC • Disponible sans filtre et sans condensation • Stabilité à long terme de l'industrie jusqu'à ± 1,2% HR et ± 0,05 ° C / an • La fiabilité leader de l'industrie • Haute résolution • Sortie I2C Température réelle • Faible consommation • Gamme de température d'utilisation de -40°C à 100°C • Plage d'humidité de 0%RH à 100%RH • Courant d'alimentation de 1mA

A l’aide de l’écran tactile de la carte STM32F746G-DISCO, nous pouvons choisir différentes options pour les 2 modes.

Pour le mode température, il y a une option entre Degrés Celsius, Kelvin et Fahrenheit. Pour le mode humidité, l’option permettant de savoir, si nous sommes dans un taux d’humidité faible, modéré ou élevée est disponible.

Revision:
0:553477233cd5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jun 04 13:01:02 2019 +0000
@@ -0,0 +1,180 @@
+#include "mbed.h"
+#include "F746_GUI.hpp"
+
+//RESOLUTION 480x272
+
+LCD_DISCO_F746NG lcd;   //Affichage LCD
+TS_DISCO_F746NG ts; //Touch Screen
+
+DigitalOut myled(LED1);
+
+I2C i2c(D14, D15); //Liaison I2C
+
+const int addr = 0x27;
+
+Button button1(15, 110, 80, 40, "Celsius");
+Button button2(15, 160, 80, 40, "Kelvin");
+Button button3(15,210, 80, 40, "Fahrenheit");
+Button button4(260,125, 200, 50, "Connaitre taux d'humidite");
+Button cache1(100,110, 140, 40, "");
+Button cache2(100,160, 140, 40, "");
+Button cache3(100,210, 140, 40, "");
+Button cache4(245,180, 230, 90, "");
+
+int main() 
+{        
+    float valeur_celsius=0.00;
+    double valeur_kelvin;
+    float valeur_fara;
+    float valeur_hum;
+  
+    char valeur[4];
+    
+    char buffer[50];
+    char buffer2[50];
+    char buffer3[50];
+    char buffer4[50];
+       
+    lcd.Init();
+    lcd.Clear(LCD_COLOR_WHITE);
+    lcd.SetBackColor(LCD_COLOR_WHITE);
+    lcd.SetTextColor(LCD_COLOR_BLACK);
+    lcd.SetFont(&Font20);
+    lcd.DisplayStringAt(0, LINE(1), (uint8_t *)"CAPTEUR HIH6030-021-001", CENTER_MODE);
+    lcd.SetFont(&Font12);
+    lcd.DisplayStringAt(0, LINE(4), (uint8_t *)"Julien PALLY LPRO SESAM", CENTER_MODE);
+    lcd.DrawLine(240, 65, 240, 260); 
+    lcd.SetFont(&Font24);
+    lcd.DisplayStringAt(25, LINE(3), (uint8_t *)"Temperature", LEFT_MODE);
+    lcd.SetFont(&Font24);
+    lcd.DisplayStringAt(290, LINE(3), (uint8_t *)"Humidite", LEFT_MODE); 
+     
+    while(1) 
+    {                   
+/////////////////////////////////////////////////////    PARTIE I2C    //////////////////////////////////////////////////////////////////         
+         
+        
+        i2c.write(addr<<1,0,0);      
+        i2c.read(addr<<1, valeur, 4);
+
+        float lecture_hum = (valeur[0]<< 8) + valeur[1];
+        float humidite = lecture_hum / 163382 * 100;    
+              
+        float lecture_temp = (valeur[2] << 6) + (valeur[3] >> 2);
+        float temperature = lecture_temp / 16382 * 165 - 40;      
+     
+/////////////////////////////////////////////////////   AFFICHAGE DES BOUTONS    //////////////////////////////////////////////////////////////////      
+        
+        button1.Draw(LCD_COLOR_GRAY, LCD_COLOR_WHITE); //Dessin des boutons
+        button2.Draw(LCD_COLOR_GRAY, LCD_COLOR_WHITE); 
+        button3.Draw(LCD_COLOR_GRAY, LCD_COLOR_WHITE);
+        button4.Draw(LCD_COLOR_GRAY, LCD_COLOR_WHITE); 
+          
+       
+///////////////////////////////////////////////////// PARTIE TRAITEMENT /////////////////////////////////////////////////////////////////////       
+       
+       
+       
+       wait_ms(100);
+       
+       valeur_celsius = temperature;          
+       valeur_kelvin = temperature + 273.15;       
+       valeur_fara = temperature * 1.8 + 32; 
+       valeur_hum = humidite; 
+       
+          
+       if (valeur_celsius >= 999){valeur_celsius = 999;}   
+       if (valeur_kelvin >= 999){valeur_kelvin = 999;}
+       if (valeur_fara >= 999){valeur_fara = 999;}
+       if (valeur_hum >= 999){valeur_hum = 999;} 
+                          
+       sprintf(buffer, "%.2f", valeur_celsius);
+       sprintf(buffer2, "%.2f", valeur_kelvin);
+       sprintf(buffer3, "%.2f", valeur_fara);
+       sprintf(buffer4, "%.2f", valeur_hum);
+      
+       if(button1.IsOnButton()) //si on touche le bouton Celsius
+        {       
+           cache2.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);  
+           cache3.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);
+           cache4.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);
+          
+        
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font24);
+            lcd.DisplayStringAt(100, LINE(5), (uint8_t *)buffer, LEFT_MODE); 
+            lcd.DisplayStringAt(210, LINE(5), (uint8_t *)"C" , LEFT_MODE);
+        }
+           
+       if(button2.IsOnButton()) //si on touche le bouton Kelvin
+        {
+           cache1.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);  
+           cache3.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);
+           cache4.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);
+           
+        
+           lcd.SetBackColor(LCD_COLOR_WHITE);
+           lcd.SetTextColor(LCD_COLOR_BLACK);
+           lcd.SetFont(&Font24);
+           lcd.DisplayStringAt(100, LINE(7), (uint8_t *)buffer2, LEFT_MODE);
+           lcd.DisplayStringAt(210, LINE(7), (uint8_t *)"K", LEFT_MODE);  
+        }
+     
+        
+         if(button3.IsOnButton()) //si on touche le bouton Fahrenheit
+        {
+           cache1.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);  
+           cache2.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE); 
+           cache4.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE); 
+    
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font24);
+            lcd.DisplayStringAt(100, LINE(9), (uint8_t *)buffer3, LEFT_MODE);
+            lcd.DisplayStringAt(210, LINE(9), (uint8_t *)"F", LEFT_MODE);
+        }
+       
+       
+         if(button4.Touched()) //si on touche le bouton de l'Humidité
+       
+        {
+            cache1.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);  
+            cache2.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);  
+            cache3.Draw(LCD_COLOR_WHITE, LCD_COLOR_WHITE);
+           
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font24);         
+            lcd.DisplayStringAt(295, LINE(10), (uint8_t *)buffer4, LEFT_MODE);
+            lcd.DisplayStringAt(410, LINE(10), (uint8_t *)"%", LEFT_MODE); 
+            
+            
+            if(valeur_hum < 40)
+           {
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font20); 
+            lcd.DisplayStringAt(250, LINE(10), (uint8_t *)"Humidite Faible", LEFT_MODE);
+           }
+           
+           else if((valeur_hum > 40) && (valeur_hum < 70))
+           {
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font20); 
+            lcd.DisplayStringAt(250, LINE(10), (uint8_t *)"Humidite Moyenne", LEFT_MODE);
+           }
+           
+           else if(valeur_hum > 70)
+           {
+            lcd.SetBackColor(LCD_COLOR_WHITE);
+            lcd.SetTextColor(LCD_COLOR_BLACK);
+            lcd.SetFont(&Font20); 
+            lcd.DisplayStringAt(250, LINE(10), (uint8_t *)"Humidite Elevee", LEFT_MODE);
+           }              
+        }
+       
+               
+    }
+}
\ No newline at end of file