Répertoire projet Interfaçage SESAM IUT Cachan. Interface Graphique Capteur HIH6030-021-001 Humidité & Température
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.
main.cpp
- Committer:
- jpally
- Date:
- 2019-06-04
- Revision:
- 0:553477233cd5
File content as of revision 0:553477233cd5:
#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); } } } }