Accueil

Cours

Liens (à venir)


Messages
Cours
420-KF1-LG - Développement Environnement Intelligent - Hiver 2020
Semaine 11 janvier 24
=======================
AEC - Reseau
Système 3 - Jeudi 11 janvier
Module 8 - Retour
------------------------------------------------
Script 2 - Lundi 15 janvier - 8:00
Fonctions
Module 9
------------------------------------------------
Système 3 - Mardi 16 janvier 8:00
Module 9 - Serveur DNS
------------------------------------------------
Système 3 - Jeudi 18 janvier 8:00
Mur coupe-feu
------------------------------------------------


Capteurs / Actionneurs
Exemples de code / Programme  (Merci à François pour les exemples)

Le bouton poussoir
Capteur ou actionneur ?

Type:  Digital / numérique ou analogique ?

C'est un bouton poussoir momentané. Il contient un bouton "marche / arrêt momentané" indépendant. «Momentané» signifie que le bouton revient à sa position  normale tout seul après sa libération.

Le bouton émet un signal "HIGH" lorsqu'il est enfoncé et "LOW"  lorsqu'il est relâché.Autrement dit, lorsque le bouton est enfoncé, le courant passe sinon le courant ne passe pas.

Classe : GroveDigitalIn


// ----------------------------------------------------------------------------
// Exemple d'utilisation du bouton poussoir
// ----------------------------------------------------------------------------

import org.iot.raspberry.grovepi.GroveDigitalIn;
import org.iot.raspberry.grovepi.GrovePi;
import org.iot.raspberry.grovepi.pi4j.GrovePi4J;

import java.io.IOException;

public class LaboConfig {
    private GrovePi mGrovePi;
    private GroveDigitalIn mBouton;

    public LaboConfig() throws IOException {
        GrovePi mGrovePi = new GrovePi4J();
        mBouton = mGrovePi.getDigitalIn(4); // D4
    }

    private void attendre(int delai) {
        try {
            Thread.sleep(delai);
        } catch (InterruptedException ie) {
        }
    }

    private void go() throws IOException{
        while (true) {
            attendre(1000);
            try {
                System.out.println(mBouton.get());
            } catch (InterruptedException ie) {
            }
        }
    }

    public static void main(String[] args) {
        try {
            new LaboConfig().go();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

Le bouton rotatif


Capteur ou actionneur ?

Type:  Digital / numérique ou analogique ?

Ce module utilise un potentiomètre pour produire une tension analogique entre 0V et 5V, ce qui correspond à un angle de 0° à 300°.



Classe : GroveRotarySensor

Le signal fourni par l'encodeur peut être lu avec différentes méthodes qui retournent toutes un objet de la classe GroveRotaryValue. Le tableau suivant présente ces méthodes :

Méthode
(classe GroveRotaryValue)    Intervalle (nombre à virgule flottante)
getFactor()                                      0 à 1
getVoltage()                                    0 à 5
getDegrees()                                   0 à 300
getSensorValue()                             0 à 1023

Il s'agit de choisir la méthode la plus adaptée aux besoins de l'application.

// ----------------------------------------------------------------------------
// Exemple d'utilisation de l'encodeur rotatif Grove
// ----------------------------------------------------------------------------

import org.iot.raspberry.grovepi.GrovePi;
import org.iot.raspberry.grovepi.devices.GroveRotarySensor;
import org.iot.raspberry.grovepi.devices.GroveRotaryValue;
import org.iot.raspberry.grovepi.pi4j.GrovePi4J;

import java.io.IOException;

public class LaboConfig {
    private GrovePi mGrovePi;
    private GroveRotarySensor mEncodeur;

    public LaboConfig() throws IOException {
        GrovePi mGrovePi = new GrovePi4J();
        mEncodeur = new GroveRotarySensor(mGrovePi, 2); // A2
    }

    private void attendre(int delai) {
        try {
            Thread.sleep(delai);
        } catch (InterruptedException ie) {
        }
    }

    private void go() throws IOException{
        while (true) {
            attendre(1000);
            GroveRotaryValue valeur = mEncodeur.get();
            System.out.println(valeur.getVoltage());
        }
    }

    public static void main(String[] args) {
        try {
            new LaboConfig().go();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}


L'afficheur ACL/LCD 


Capteur ou actionneur ?

Type:  Afficheur

Un afficheur LCD qui permet de faire afficher 2 lignes de 16 caractères de long.  Il se connecte normalement dans un connecteur de type I2C.

Il permet également de faire afficher simplement du texte et de changer la couleur.  La couleur est représentée par 3 composants (le rouge, le vert et le bleu).  Souvent plus connu sous l'appelation de RGB (Red - Green - Blue).  Il est possible de réprésenter 2^24 couleur.


Classe : GroveRgbLcd


// ----------------------------------------------------------------------------
// Exemple d'utilisation de l'afficheur LCD
// ----------------------------------------------------------------------------

import org.iot.raspberry.grovepi.GrovePi;
import org.iot.raspberry.grovepi.devices.GroveRgbLcd;
import org.iot.raspberry.grovepi.pi4j.GrovePi4J;

import java.io.IOException;

public class LaboConfig {
    private GrovePi mGrovePi;
    private GroveRgbLcd mLcd;
    private String mMessage = "   You shall       not pass!";
    public LaboConfig() throws IOException {
        GrovePi mGrovePi = new GrovePi4J();
        mLcd = mGrovePi.getLCD();
    }

    private void attendre(int delai) {
        try {
            Thread.sleep(delai);
        } catch (InterruptedException ie) {
        }
    }

    private void go() throws IOException{
        mLcd.setRGB(255, 31, 0); // orange
        attendre(1000);
        mLcd.setText(mMessage);
    }

    public static void main(String[] args) {
        try {
            new LaboConfig().go();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }
}

Capteur de température

Capteur ou actionneur ?

Type:  Digital / numérique ou analogique ?

Ce capteur de température et d'humidité (DHT11) fournit une sortie numérique proportionnelle à la température et à l'humidité mesurée par le capteur.

Le coefficient d'étalonnage est mémorisé dans la mémoire interne  et cette valeur est utilisée par le processus de détection du signal interne du capteur.  Ce capteur est à la base un capteur analogique mais grâce à un petit convertisseur analogique à numérique, ce capteur devient un capteur numérique.

Classe:  GroveTemperatureAndHumiditySensor
Classe:  GroveTemperatureAndHumidityValue

import org.iot.raspberry.grovepi.GrovePi;
import org.iot.raspberry.grovepi.devices.GroveTemperatureAndHumiditySensor;
import org.iot.raspberry.grovepi.devices.GroveTemperatureAndHumidityValue;
import org.iot.raspberry.grovepi.pi4j.GrovePi4J;

import java.io.IOException;

public class TemperatureEtHumidite {

    public static void main(String[] args) throws IOException {

        GrovePi grovePi = new GrovePi4J();
        GroveTemperatureAndHumiditySensor dht
                = new GroveTemperatureAndHumiditySensor(grovePi, 2,
                        GroveTemperatureAndHumiditySensor.Type.DHT11);
                       
        GroveTemperatureAndHumidityValue conditions = dht.get();
       
        double temperature = conditions.getTemperature();
        System.out.println("Température = " + temperature);
       
        double humidite = conditions.getHumidity();
        System.out.println("Humidité = " + humidite);
    }
}