Outils pour utilisateurs

Outils du site


wiki:projets:interfacecapteurarduino

Interface Capteur Arduino

Auteur

  • Vincent WU (wu.vincent10[at]gmail.com)

But du projet

Le but de ce projet est de réaliser une interface qui permet d'afficher les valeurs des capteurs (capteurs grove) présent dans le FABLAB. Nous avons à notre disposition dans le FABLAB différent capteur tel que des capteurs de température, d'humidité…

Matériels nécessaires

- 1 Arduino Uno 9.64 € - 1 Base Shield 9.70 € - 1 Écran LCD Liquid Crystal - 1 Breadboard
upload.wikimedia.org_wikipedia_commons_3_38_arduino_uno_-_r3.jpg www.seeedstudio.com_document_pics_base_20shield.jpg cdn.instructables.com_fux_7iv0_idk2k86q_fux7iv0idk2k86q.medium.jpg boutique.semageek.com_61-340-thickbox_default_breadboard-400-contacts.jpg
- 1 Capteur de Température et Humidité - 1 Capteur de réflexion Infrarouge - 1 Capteur de qualité
www.thermovarroa.com_images_projet_version2_electronique_temp_humi_pro.jpg www.lextronic.fr_imageslib_seeeduino_wls07061p.jpg www.gotronic.fr_ori-capteur-de-qualite-d-air-grove-101020078-23838.jpg
- 1 Capteur de Luminosité - 1 Capteur de UV - 1 Capteur de gaz de monoxyde carbone
derb.io_image_cache_data_products_capteurlight-400x400.jpg www.gotronic.fr_ori-capteur-uv-grove-101020043-20632.jpg www.gotronic.fr_ori-capteur-de-gaz-mq9-grove-101020045-22957.jpg
- 1 Capteur de Gesture

Montage à réaliser pour l'écran LCD

Pour le montage à réaliser pour l'écran LCD, il vous faudra :

  1. 1 potentiomètre de 100kΩ
  2. 1 résistance de 2.2kΩ
  3. Des câbles

Le montage à réaliser et le suivant :

Code isolé pour chaque capteur

Code pour le capteur de Température et d'Humidité

Ci-dessous, c'est le code pour afficher les valeurs de température et d'humidité sur l'écran LCD.

Capteur de Température et d'Humidité
#include "Arduino.h"
#include <LiquidCrystal.h>
#include <DHT.h>
#define DHTPIN A1
#define DHTTYPE DHT22
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
DHT dht(DHTPIN, DHTTYPE);

void setup() 
{
  lcd.begin(16,2);
  Serial.begin(9600);
  dht.begin();
}

void loop() 
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Capt Temp Humid");
  lcd.setCursor(0, 1);
  lcd.print("H="); 
  lcd.print(h);       // Affichage de la valeur de la de l'humidité en %
  lcd.print("%");
  lcd.print("T=");
  lcd.print(t);      // Affichage de la valeur de la température en °C
  lcd.print("C");
  delay(5000);
}

Cliquez pour avoir la librairie dth.zip.

Code pour le capteur de réflexion Infrarouge

Ci-dessous, c'est le code pour afficher si il y a présence ou non d'un objet. Il y a le potentiomètre sur le module (à régler pour détecter plus ou moins une distance).

Capteur de réfection Infrarouge
#include "Arduino.h"
#include <LiquidCrystal.h>
#define IR_DIST_DIGIT_PIN 6
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(IR_DIST_DIGIT_PIN,INPUT);
}
void loop()
{
  lcd.clear();
  lcd.setCursor(0, 0); 
  if(digitalRead(IR_DIST_DIGIT_PIN)==LOW)
  {
    lcd.print("Somebody is here.");
  }
  else
  {
    lcd.print("Nobody.");
  }
  delay(500);
}

Code pour le capteur de Qualité de l'Air

Ci-dessous, c'est le code pour afficher la qualité de l'air.

Capteur de qualité d'air
#include "Arduino.h"
#include <LiquidCrystal.h>
#define AIR_QUAL_PIN A0
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int lect_air_qual_1 = 0;
int lect_air_qual_2 = 0;
int lect_air_qual_3 = 0;
int moy_air = 0;

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(AIR_QUAL_PIN, INPUT);
}

void qualite_air()
{
  lect_air_qual_1 = analogRead(AIR_QUAL_PIN);
  delay(500);
  lect_air_qual_2 = analogRead(AIR_QUAL_PIN);
  delay(500);
  lect_air_qual_3 = analogRead(AIR_QUAL_PIN);
  moy_air = (lect_air_qual_1 + lect_air_qual_2 + lect_air_qual_3)/3;
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Qualite Air=");
  lcd.print(moy_air);
  lcd.setCursor(0,1);
  if (moy_air <= 45)
  {
    lcd.print("Outdoor air");
  }
  else if(moy_air <= 72 && moy_air >= 46)
  {
    lcd.print("Indoor Imurity");
  }
  
  else if(moy_air >= 73 && moy_air <= 110)
  {
    lcd.print("Bad qualite");
  }
  else if(moy_air >= 111 && moy_air <= 140)
  {
    lcd.print("Very bad qualite");
  }
  else if(moy_air >= 141)
  {
    lcd.print("Move fresh air");
  }
  delay(5000);
}

void loop()
{
  qualite_air();
}

Code pour le capteur de Luminosité

Ci-dessous, c'est le code pour afficher la luminosité dans la pièce.

Capteur de luminosité
#include "Arduino.h"
#include <LiquidCrystal.h>
#define PHOTOPIN  A3
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(PHOTOPIN, INPUT);
}

void photo_sensor(void)
{
  float photo = 0.0;
  photo = (analogRead(PHOTOPIN) * 100.0) / 1023.0;
  Serial.println("Light : ");
  Serial.println(photo);
  Serial.print("\n");
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Light : ");
  lcd.setCursor(8, 0);
  lcd.print(photo);
  lcd.print("%");
  delay(1000);
}

void loop()
{
  photo_sensor();
}

Code pour le capteur d'UV

Ci-dessous, c'est le code pour afficher l'indice d'UV.

Capteur de UV
#include "Arduino.h"
#include <LiquidCrystal.h>
#define UVPIN  A2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(UVPIN, INPUT);
}

void UV_sensor(void)
{
  float sensorValue;
  float sum=0;
  float indexUV = 0;
  for(int i=0; i<1024; i++)
  {
      sensorValue=analogRead(UVPIN);
      sum=sensorValue+sum;
      delay(1);
  }
  float meanVal = sum/1024;
  indexUV = -((meanVal*1000)/(4.3*-83))/21;
  Serial.print("UV index : ");
  Serial.print(indexUV);
  Serial.print("\n");
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("UV index : ");
  lcd.setCursor(11, 0);
  lcd.print(indexUV);
  delay(20);
}

void loop()
{
  UV_sensor();
}

Code pour le capteur de Gaz

Ci-dessous, c'est le code pour afficher la quantité de gaz (monoxyde de carbone). Il faut étalonner le capteur avec le potentiomètre présent sur le capteur pour avoir les bonnes valeur de monoxyde de carbone présent.

Capteur de gaz
#include "Arduino.h"
#include <LiquidCrystal.h>
#define GASPIN A0
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(GASPIN, INPUT);
}

void gas_sensor (void)
{
  float gas_value = 0.0;
  gas_value = (analogRead(GASPIN) * 100.0) / 1023.0;
  Serial.println("Gas CO :");
  Serial.println(gas_value);
  Serial.print("\n");
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Gas CO :");
  lcd.setCursor(9, 0);
  lcd.print(gas_value);
  lcd.print("%");
  delay(1000);
}

void loop()
{
  gas_sensor();
}

Code pour le capteur de Gesture

Ci-dessous, c'est le code pour afficher les mouvements effectué.

Capteur de gesture
#include <Wire.h>
#include <paj7620.h>
#include "Arduino.h"
#include <LiquidCrystal.h>
#define GES_REACTION_TIME    500       // You can adjust the reaction time according to the actual circumstance.
#define GES_ENTRY_TIME      800       // When you want to recognize the Forward/Backward gestures, your gestures' reaction time must less than GES_ENTRY_TIME(0.8s). 
#define GES_QUIT_TIME     1000
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  Serial.println("\nPAJ7620U2 TEST DEMO: Recognize 9 gestures.");
  error = paj7620Init();      // initialize Paj7620 registers
  if (error) 
  {
    Serial.print("INIT ERROR,CODE:");
    Serial.println(error);
  }
  else
  {
    Serial.println("INIT OK");
  }
}

void gesture_sensor(void)
{
  uint8_t data = 0, data1 = 0, error;
  
  error = paj7620ReadReg(0x43, 1, &data);
  if (!error) 
  {
    switch (data)
    {
      case GES_RIGHT_FLAG:
        delay(GES_ENTRY_TIME);
        paj7620ReadReg(0x43, 1, &data);
        Serial.println("Gesture : ");
        lcd.print("Gesture : ");
        if(data == GES_FORWARD_FLAG) 
        {
          Serial.println("Forward");
          lcd.print("Forward");
          delay(GES_QUIT_TIME);
        }
        else if(data == GES_BACKWARD_FLAG) 
        {
          Serial.println("Backward");
          lcd.print("Backward");
          delay(GES_QUIT_TIME);
        }
        else
        {
          Serial.println("Right");
          lcd.print("Right");
        }          
        break;
      case GES_LEFT_FLAG: 
        delay(GES_ENTRY_TIME);
        paj7620ReadReg(0x43, 1, &data);
        if(data == GES_FORWARD_FLAG) 
        {
          Serial.println("Forward");
          lcd.print("Forward");
          delay(GES_QUIT_TIME);
        }
        else if(data == GES_BACKWARD_FLAG) 
        {
          Serial.println("Backward");
          lcd.print("Backward");
          delay(GES_QUIT_TIME);
        }
        else
        {
          Serial.println("Left");
          lcd.print("Left");
        }          
        break;
      case GES_UP_FLAG:
        delay(GES_ENTRY_TIME);
        paj7620ReadReg(0x43, 1, &data);
        if(data == GES_FORWARD_FLAG) 
        {
          Serial.println("Forward");
          lcd.print("Forward");
          delay(GES_QUIT_TIME);
        }
        else if(data == GES_BACKWARD_FLAG) 
        {
          Serial.println("Backward");
          lcd.print("Backward");
          delay(GES_QUIT_TIME);
        }
        else
        {
          Serial.println("Up");
          lcd.print("Up");
        }          
        break;
      case GES_DOWN_FLAG:
        delay(GES_ENTRY_TIME);
        paj7620ReadReg(0x43, 1, &data);
        if(data == GES_FORWARD_FLAG) 
        {
          Serial.println("Forward");
          lcd.print("Forward");
          delay(GES_QUIT_TIME);
        }
        else if(data == GES_BACKWARD_FLAG) 
        {
          Serial.println("Backward");
          lcd.print("Backward");
          delay(GES_QUIT_TIME);
        }
        else
        {
          Serial.println("Down");
          lcd.print("Down");
        }          
        break;
      case GES_FORWARD_FLAG:
        Serial.println("Forward");
        lcd.print("Forward");
        delay(GES_QUIT_TIME);
        break;
      case GES_BACKWARD_FLAG:     
        Serial.println("Backward");
        lcd.print("Backward");
        delay(GES_QUIT_TIME);
        break;
      case GES_CLOCKWISE_FLAG:
        Serial.println("Clockwise");
        lcd.print("Clockwise");
        break;
      case GES_COUNT_CLOCKWISE_FLAG:
        Serial.println("anti-clockwise");
        lcd.print("anti-clockwise");
        break;  
      default:
        paj7620ReadReg(0x44, 1, &data1);
        if (data1 == GES_WAVE_FLAG) 
        {
          lcd.print("Wave");
        }
        break;
    }
  }
  Serial.println("\n");
  delay(100);
}

void loop()
{
  gesture_sensor();
}
wiki/projets/interfacecapteurarduino.txt · Dernière modification: 2017/09/25 17:18 de vincentwu