Modifications

Sauter à la navigation Sauter à la recherche
346 octets ajoutés ,  24 octobre 2015 à 13:17
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{Spark-Core-Hacking-NAV}}
 
{{Spark-Core-Hacking-NAV}}
  −
{{traduction}}
      
== Senseur PIR ==
 
== Senseur PIR ==
Ligne 22 : Ligne 20 :  
== Montage ==
 
== Montage ==
 
La sortie du senseur PIR est une '''sortie active''' qui place le potentiel à GND/Masse ou 3.3V en fonction de l'état du senseur PIR.
 
La sortie du senseur PIR est une '''sortie active''' qui place le potentiel à GND/Masse ou 3.3V en fonction de l'état du senseur PIR.
 +
 +
Cette sortie est donc compatible avec un système 3.3v, même si le senseur a besoin de 5 volts pour fonctionner correctement. En branchant l'alimentation du senseur sur la broche VIN, nous y récupérons une tension de 5V lorsque le Particle Core est alimenté via USB (5V) ou via {{underline|une source de tension externe 5V}} branchée directement sur VIN.
    
[[fichier:SPARK-PIR_bb.jpg|480px]]
 
[[fichier:SPARK-PIR_bb.jpg|480px]]
Ligne 37 : Ligne 37 :  
// 1) De détecter l'activation d'un senseur PIR avec
 
// 1) De détecter l'activation d'un senseur PIR avec
 
//    avec déparasitage logiciel.
 
//    avec déparasitage logiciel.
// 2) Reporte cette information dans une variable "counter" sur Spark Cloud
+
// 2) Reporte cette information dans une variable "counter" sur Particle Cloud
 
//    (le nombre de détection) permettant à un autre logiciel comme
 
//    (le nombre de détection) permettant à un autre logiciel comme
 
//    un SmartPhone de détecter l'événement.
 
//    un SmartPhone de détecter l'événement.
Ligne 44 : Ligne 44 :  
//    Pratique par exemple pour savoir s'il y a de l'activité dans une  
 
//    Pratique par exemple pour savoir s'il y a de l'activité dans une  
 
//    pièce (ex: surveiller un stock en pleine nuit).
 
//    pièce (ex: surveiller un stock en pleine nuit).
// 3) Offrir une fonction "reset" sur Spark Cloud permettant
+
// 3) Offrir une fonction "reset" sur Particle Cloud permettant
 
//    a un autre logiciel de remettre le compteur "counter" à zéro.
 
//    a un autre logiciel de remettre le compteur "counter" à zéro.
 
//    Force la relecture de l'entrée digital et la mise à jour
 
//    Force la relecture de l'entrée digital et la mise à jour
Ligne 55 : Ligne 55 :  
//
 
//
 
// Sortie du senseur PIR branché sur la broche D4
 
// Sortie du senseur PIR branché sur la broche D4
#define btnPin 4
+
#define pirPin 4
    
// Créer une variable qui pour stocker la valeur
 
// Créer une variable qui pour stocker la valeur
Ligne 67 : Ligne 67 :  
void setup()
 
void setup()
 
{
 
{
   // Enregistrer la variable compteur sur Spark Cloud
+
   // Enregistrer la variable compteur sur Particle Cloud
 
   Spark.variable("counter", &counter, INT );
 
   Spark.variable("counter", &counter, INT );
   // Publie l'état du contact  dans la variable "close" sur Spark Cloud
+
   // Publie l'état du contact  dans la variable "close" sur Particle Cloud
   Spark.variable("close", &contactState, INT );
+
   Spark.variable("actif", &pirState, INT );
 
    
 
    
   // Enregistrer la fonction "reset compteur" sur Spark Cloud
+
   // Enregistrer la fonction "reset compteur" sur Particle Cloud
 
   Spark.function("reset", resetCounter );
 
   Spark.function("reset", resetCounter );
 
    
 
    
 
   // Active la broche D4 comme entrée
 
   // Active la broche D4 comme entrée
   pinMode(btnPin, INPUT);
+
   pinMode(pirPin, INPUT);
 
   // lecture de l'état initial
 
   // lecture de l'état initial
   contactState = digitalRead( btnPin );
+
   pirState = digitalRead( pirPin );
 
}
 
}
   Ligne 86 : Ligne 86 :  
   int val, val2; // variable pour stocker la valeur lue sur la broche D4
 
   int val, val2; // variable pour stocker la valeur lue sur la broche D4
 
    
 
    
   val = digitalRead( btnPin );
+
   val = digitalRead( pirPin );
 
   delay( 10 ); // delai de 10ms pour déparasitage logiciel
 
   delay( 10 ); // delai de 10ms pour déparasitage logiciel
   val2 = digitalRead( btnPin );
+
   val2 = digitalRead( pirPin );
 
    
 
    
 
   // si val = val2 --> lecture de l'entrée est consistante
 
   // si val = val2 --> lecture de l'entrée est consistante
Ligne 96 : Ligne 96 :  
        
 
        
 
       // Si le contact a changé d'état? (passe du HIGH->LOW ou de LOW->HIGH)
 
       // Si le contact a changé d'état? (passe du HIGH->LOW ou de LOW->HIGH)
       if( val != contactState ){
+
       if( val != pirState ){
 
            
 
            
           // Si le contact est ouvert
+
           // Si le PIR est actif
           if( val == LOW ){
+
           if( val == HIGH ){
 
                
 
                
 
               counter = counter +1; // incrémenter le compteur
 
               counter = counter +1; // incrémenter le compteur
Ligne 105 : Ligne 105 :  
            
 
            
 
           // Se souvenir du nouvel état de l'entrée
 
           // Se souvenir du nouvel état de l'entrée
           contactState = val;  
+
           pirState = val;  
 
       }
 
       }
 
    
 
    
Ligne 115 : Ligne 115 :  
// Pas de chaine de commande.
 
// Pas de chaine de commande.
 
// a) Réinitialise le compteur "counter" à zéro.
 
// a) Réinitialise le compteur "counter" à zéro.
// b) mise-à-jour de la variable open.
+
// b) mise-à-jour de la variable actif.  
 
int resetCounter( String command ){
 
int resetCounter( String command ){
 
     counter = 0;
 
     counter = 0;
 
      
 
      
 
     // relecture de l'entrée
 
     // relecture de l'entrée
     contactState = digitalRead( btnPin );
+
     pirState = digitalRead( pirPin );
 
     delay( 10 ); // déparasitage logiciel
 
     delay( 10 ); // déparasitage logiciel
     contactState = digitalRead( btnPin );
+
     pirState = digitalRead( pirPin );
 
      
 
      
 
     return 1; // retour de valeur pour l'API
 
     return 1; // retour de valeur pour l'API
Ligne 128 : Ligne 128 :     
== Faire un appel d'API avec CURL ==
 
== Faire un appel d'API avec CURL ==
Nous allons maintenant tester notre programme... nous allons donc faire des appels d'API sur Spark Cloud.
+
Nous allons maintenant tester notre programme... nous allons donc faire des appels d'API sur Particle Cloud.
    
Pour rappel, nous avons deux API dans notre programme:
 
Pour rappel, nous avons deux API dans notre programme:
Ligne 175 : Ligne 175 :     
=== Réinitialiser le compteur ===
 
=== Réinitialiser le compteur ===
Idéalement votre programme utilisant l'API Spark devrait prendre la valeur du compteur... puis surveiller le changement de cette valeur.
+
Idéalement votre programme utilisant l'API Particle devrait prendre la valeur du compteur... puis surveiller le changement de cette valeur.
    
Si le compteur augmente... c'est qu'il détecte des mouvement (des personnes passent par là) :-)
 
Si le compteur augmente... c'est qu'il détecte des mouvement (des personnes passent par là) :-)
Ligne 181 : Ligne 181 :  
Restons pragmatique... cette façon de faire n'est pas forcement confortable.  
 
Restons pragmatique... cette façon de faire n'est pas forcement confortable.  
   −
En conséquence, nous avons ajouté une fonction '''reset''' sur Spark Cloud pour réinitialiser le compteur (ps: j'ai volontairement laissé le paramètre "params", même s'il est vide).
+
En conséquence, nous avons ajouté une fonction '''reset''' sur Particle Cloud pour réinitialiser le compteur (ps: j'ai volontairement laissé le paramètre "params", même s'il est vide).
    
  <nowiki>curl https://api.spark.io/v1/devices/0123456789abcdef/reset -d access_token=123412341234 -d params=</nowiki>  
 
  <nowiki>curl https://api.spark.io/v1/devices/0123456789abcdef/reset -d access_token=123412341234 -d params=</nowiki>  
Ligne 195 : Ligne 195 :  
}</nowiki>
 
}</nowiki>
   −
La valeur 1 est retournée par l'exécution de la fonction sur le Spark... mais le compteur sera bien à zéro!  
+
La valeur 1 est retournée par l'exécution de la fonction sur le Particle... mais le compteur sera bien à zéro!  
    
{{Spark-Core-Hacking-TRAILER}}
 
{{Spark-Core-Hacking-TRAILER}}
29 836

modifications

Menu de navigation