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.

Files at this revision

API Documentation at this revision

Comitter:
jpally
Date:
Tue Jun 04 13:01:02 2019 +0000
Commit message:
Interfacage SESAM

Changed in this revision

F746_GUI.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 553477233cd5 F746_GUI.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/F746_GUI.lib	Tue Jun 04 13:01:02 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/MikamiUitOpen/code/F746_GUI/#50b8f7654c36
diff -r 000000000000 -r 553477233cd5 main.cpp
--- /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
diff -r 000000000000 -r 553477233cd5 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Jun 04 13:01:02 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file