mardi 15 mai 2012

GPS pour les attraper tous!

Note: Le module GPS Ultime décrit ici est disponible à la vente chez MC Hobby.

Introduction
"Un GPS pour les attraper tous" tel est la traduction de la phrase d'introduction du GPS Ultime d'AdaFruit (GPS Ultimate).

Il s'agit d'un superbe produit à la fois simple à mettre en oeuvre, efficace, petit mais surtout bien documenté et équipé d'une libraire!
Nous avons décrit précisément le GPS Ultime sur notre fiche produit.
Pour résumé, on raccorde l'interface série, le met sous tension, ont attends qu'il se synchronise et c'est parti... il n'y a plus qu'à "jouer" avec les coordonnées GPS.

Une bonne documentation c'est vital
Comme tous le produits AdaFruit, le GPS Ultime dispose d'une belle documentation.
MC Hobby à d'ailleurs traduit cette documentation en FRANCAIS et la met à disposition sur son Wiki.
Comme nous l'avons déjà fait pour le GPRS shield, cette documentation contient également quelques informations complémentaires.
Cette documentation reprends code d'exemple, plan de montage, extrait de code et informations diverses.

Une documentation c'est bien, Une librairie c'est mieux
Comme on est en droit de s'y attendre, le module GPS Ultimate est fournit avec une libraire permettant configurer le module GPS mais aussi d'extraire plus facilement les coordonnées GPS.
Pour accéder à la librairie, rendez-vous sur notre page produit ou notre page wiki.

  // Ci-dessous, vous pouvez sélectionner la syntaxe que le module émet.
 
  // dé-commentez cette ligne pour activer RMC (recommended minimum) et GGA (fix data) incluant l'altitude
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  // dé-commentez cette ligne pour activer seulement le "minimum recommended" (données minimale recommandée) pour les mises-à-jour haut débit!
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
  // dé-commentez cette ligne pour activer  toutes les données disponibles - à 9600 bauds vous devez adapter la fréquence de mise-à-jour à 1 Hz
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);
 
  // Initialise la fréquence de mise-à-jour des données
  // 1 Hz 
  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);
  // 5 Hz - à 9600 bauds vous pouvez seulement sélectionner une syntaxe de sortie RMC ou RMCGGA 
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);
  // 10 Hz - pour 9600 bauds vous pouvez seulement sélectionner la syntaxe de sortie RMC  //GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);

Cette librairie propose d'autres fonctions telles que:
  • GPS.newNMEAreceived() pour vérifier si un nouveau paquet d'information est disponible. 
  • GPS.parse(GPS.lastNMEA()). pour décomposer le paquet NMEA et pouvoir accéder aux informations de géolocalisations.
  • GPS.day fournit le jour
  • GPS.month le mois 
  • GPS.year l'année 
  • GPS.fix indique s'il y a une synchronisation satellite (un GPS produit des données même sans synchronisation)
  • GPS.latitude et GPS.longitude, fournissent respectivement la latitude et la longitude
  • GPS.speed fournit la vitesse 
  • GPS.angle l'angle de déplacement par rapport au nord.
  • GPS.altitude l'altitude en cm (si suffisamment de satellites en synchro).
  • GPS.satellites le nombre de satellite impliqué dans le calcul de position. 
De quoi facilement exploiter le module GPS dans de nombreux projets.

La vitesse se mesure en knots
Contrairement à ce que l'on pourrait penser, un GPS ne produit pas une évaluation de la vitesse en km/h ou en Miles/H.
Un GPS nous informe de la vitesse en knots... cette unité bizarre est directement issus du noeud marin et la conversion est trivial.
1 knot = 1.852 Km/H (précisément)
Il faut le savoir, c'est tout.

Google Maps
Avoir un module GPS et des coordonées GPS c'est bien.
Faut-il encore savoir quoi en faire!
Notre page Wiki (encore et toujours) vous propose une section décrivant comment exploiter les données issues du GPS pour pouvoir les utiliser (rapidement) avec Google Maps.
 
Le protocole NMEA
Pour les plus curieux d'entre-vous, les modules GPS utilisent tous le même protocole série pour communiquer avec l'hôte (votre PC ou votre Arduino).
Ce protocole s'appelle NMEA et est issus des travaux de l'Armée. NMEA signifie "National Marine Electronics Association".
S'il est relativement rudimentaire, il est aussi diablement efficace (faire simple mais robuste) et permet une mise en oeuvre assez rapide.
Si vous voulez en savoir plus, une page spécifique de notre wiki vous permet d'accéder à une FAQ et une documentation complète ainsi qu'au détail du protocole relatif au module GPS utilisé sur ce Breakout board.

LOCUS - Le datalogger intégré au GPS Ultimate
Une fonctionnalité intéressante du MTK3339 est sa capacité de faire un enregistrement de données directement dans la mémoire flash du module (data-logger). Elle permet de stocker la date, l'heure, la latitude, la longitude et l'altitude dans la mémoire flash de 64 Kb disponible dans le module. Il ne s'agit pas d'un enregistreur haute résolution - un enregistrement toutes les 15 secondes lorsqu'il y a une synchro (fix) - mais cela devrait convenir pour 99% des projets voilant traquer des déplacements et positions.

Cela peut devenir un moyen vraiment puissant (et très peu gourmand en énergie) pour enregistrer des données, pas besoin de carte SD ou d'EEPROM! La mémoire flash peut stocker jusqu'à 16 heures de données.
Le module GSP nécessite un microcontrolleur pour démarrer le data-logger (en introduisant une requête de démarrage "kick start"). S'il y a une perte d'alimentation il faudra une autre "impulsion" pour redémarrer. Si vous avez déjà des données stockées dans la mémoire FLASH, une nouvelle trace sera créé (sans perte des anciennes données). L'enregistrement s'arrêtera lorsqu'il n'y a plus de mémoire disponible sans écrasement des anciennes données. Hormis cet inconvénient, il s'agit d'un joli plus et AdaFruit propose une librairie vous permettant de supporter et d'utiliser cette fonctionnalité.
Vous pourrez extraire les informations du LOCUS et produire un fichier de trace pour Google Maps depuis la page d'AdaFruit (voir détails sur notre wiki).

Cette fonctionnalité est vraiment très excitante :-)

Où acheter
Le module GPS Ultime est en vente ici chez MC Hobby.
Vous découvrirez sur la page produit qu'il est fournit avec quelques petit plus, ces petits plus qui font parfois de grandes différences :-)


mercredi 9 mai 2012

Nouveautés de la semaine

Traduction du GPS Ultime d'AdaFruit
Un bel avancement sur la traduction de la documentation du breakout GPS Ultime d'AdaFruit.

Je n'ai même pas eu l'occasion de terminer la traduction que c'est vraiment un chouette petit module, tellement sympa qu'il est déjà vendu avant même la fin de la traduction!
Les autres arrivent en stock dans quelque-jours.
Plus d'information sur la fiche produit et sur la documentation traduite par nos soins.

Nouveautés
Rien de vraiment foudroyant mes des petits plus vraiment très appréciés.

Photo-résistance + extra
De quoi détecter la présence (ou l'absence de lumière).
Les applications d'un tel dispositif sont vraiment nombreuses:
  • Détection de ligne blanche au sol.
  • Détecteur de passage (par effet d'ombre)
  • Détection jour/nuit.
  • Détection d'éclairage artificiel.
  • Suivre la lumière (véhicule se dirigeant vers une source de lumière).
  • Compensateur d'un module de température (en effet, on ne chauffe pas une maison durant la nuit... mais bien le jour).
  • ...
Pour plus d'information, voir la fiche produit chez MC Hobby.
Nous avons également prévu de traduire en français l'excellente documentation de notre fournisseur (AdaFruit).
Elle sera disponible en Français ici sur notre Wiki (dès l'achèvement de la doc sur le GPS Ultime).

Arduino+Ethernet+POE
C'est une carte Arduino Uno (made in Arduino) incluant une carte Ethernet sur la même carte mais aussi un lecteur Micro SD et un module POE.

Le module POE permet d'alimenter votre carte Arduino directement depuis la prise réseaux (si votre réseau ou modem internet le supporte, ce qui est en général le cas des réseaux récents).
Plus besoin d'alimentation externe, Arduino dispose d'une alimentation (et d'une connexion Ethernet) partout où il y a une prise réseau. C'est pas Cool ça?
Cette carte respecte scrupuleusement la taille de la carte Arduino original.
Avec un encombrement aussi réduit, cette carte se présente comme un concentré de technologie.
Pour plus de détails, référez-vous à notre fiche produit.

Un double Pont-H L298
Voici un breakout board vraiment utile! Basé sur un L298N (double pont H) il contient tous les élements nécessaires pour motoriser facilement deux moteurs continu à partir d'un microcontroleur.

Ce breakout board peut être raccordé directement sur un microcontrôleur.
Puisque le coeur de ce produit est un double pont-H L298, chacun des moteurs est commandable dans les deux sens de rotations!
Il est également possible de commander la vitesse de ceux-ci en appliquant un signal PWM sur la broche "Enable" correspondante du pont-H.
Equipé de son dissipateur, le L298 est capable de supporter  un courant de 2 ampère... de quoi commander des moteurs déjà assez costaud.
Ce module convient également pour la commande de moteur pas-à-pas.
Plus d'information sur notre fiche produit.
Nous avons également produit une documentation en Français avec exemple de montage et de code pour Arduino.

Un Piezo Buzzer
Nous vous proposons aussi un Piezo Buzzer.
Si ce dernier est petit il sait aussi se montrer bruyant.

Plus d'information sur notre fiche produit.

jeudi 3 mai 2012

Arduino + IPad

Introduction
Il est visiblement assez facile de connecter un IPad sur un Arduino.
A la base, il suffit de mettre un adaptateur USB pour son IPad, ce qui permet de raccorder l'IPad par l'intermédiaire d'un Cable USB identique à celui d'Arduino.

De son côté, Arduino utilise la librairie UsbKeyboard, ce qui lui permet de se faire passer pour un clavier USB.

C'est vraiment une approche très intéressant! 

Librairie UsbKeyboard
En temps normal, si l'on désire utiliser un Arduino couplé avec un logiciel, il faut utilisé le canal de communication série (qui passe par le port USB d'Arduino).
Cela réclame que le programme soit adapté pour traiter le flux d'information provenant du port série.

Permettre à Arduino de se faire passer pour un Clavier USB peu présenter de nombreux avantages.
Par exemple, il peut automatiser la saisie de donnée, piloter une application Web, activer des raccourcis claviers, etc.
Cela offre l'opportunité à Arduino d'intéragir avec un logiciel sans devoir modifier le logiciel!
C'est un avantage indéniable.

Pour en savoir plus sur ce point, je vous invite à lire l'article "Virtual USB Keyboard" (du livre Practical Arduino)

A terme, vous aurez besoin de la librairie VUSB-for-Arduino (Virtual USB).
Voir le projet VUSB-for-Arduino sur Google Code.

Plan de montage

Selon l'article source, les diodes Zener doivent êtres à 3.6V (pour une puissance de 0.5w ou moins, les diodes de 1W ne fonctionnent pas).

Code Arduino
Pour compiler ce code vous aurez besoin de VUSB-for-Arduino disponible sur Google Code. 

#include "UsbKeyboard.h"

#define BUTTON_PIN 7

// If the timer isr is corrected
// to not take so long change this to 0.
#define BYPASS_TIMER_ISR 1

void setup() {
  pinMode(BUTTON_PIN, INPUT);
  digitalWrite(BUTTON_PIN, HIGH);
  
#if BYPASS_TIMER_ISR
  // disable timer 0 overflow interrupt (used for millis)
  TIMSK0&=!(1<<TOIE0); // ++
#endif
}

#if BYPASS_TIMER_ISR
void delayMs(unsigned int ms) {
  for (int i = 0; i < ms; i++) {
    delayMicroseconds(1000);
  }
}
#endif

int value = 0;
boolean started = false;

void loop() {
  UsbKeyboard.update();
  if (digitalRead(BUTTON_PIN) == 0) {
    started = true;
  }
  if (started) {
    value = (int)(10*analogRead(0)/1023.0);
    switch (value) {
      case 0: UsbKeyboard.sendKeyStroke(KEY_0); break;
      case 1: UsbKeyboard.sendKeyStroke(KEY_1); break;
      case 2: UsbKeyboard.sendKeyStroke(KEY_2); break;
      case 3: UsbKeyboard.sendKeyStroke(KEY_3); break;
      case 4: UsbKeyboard.sendKeyStroke(KEY_4); break;
      case 5: UsbKeyboard.sendKeyStroke(KEY_5); break;
      case 6: UsbKeyboard.sendKeyStroke(KEY_6); break;
      case 7: UsbKeyboard.sendKeyStroke(KEY_7); break;
      case 8: UsbKeyboard.sendKeyStroke(KEY_8); break;
      case 9: UsbKeyboard.sendKeyStroke(KEY_9); break;
      default: break;
    }
    delay(300);
    
#if BYPASS_TIMER_ISR  // check if timer isr fixed.
    delayMs(20);
#else
    delay(20);
#endif
   }
}

Code sur IPad 
Côté IPad, notre développeur en herbe à utilisé Processing.js, ce qui permet d'exécuté un code plus évolué depuis une page html.
Processing.JS peut être obtenu sur processingjs.org

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- TITLE -->
<title>iPad + USB-keyboard + Processing.js</title>

<!-- Processing.js -->
<script type="text/javascript" src="excanvas.js"></script>
<script type="text/javascript" src="processing.js"></script>

<!-- Object for Keyboard Input -->
<style type="text/css">
form.keyinput input {
    position: absolute;
    padding-left: 0px;
    padding-top: 0px;
    border: 5px;
    top: 0px;
    left: 0px;
    width: 50px;
    height: 50px;
    background: #FFC000;//yellow;
    color: #646464;//black;
}
form.keyinput input:focus {
    background-color: transparent;
}
</style>

<!-- Update by keyinput -->
<script type="text/javascript">
var key_value ='';
function keyinput_update(){
    key_value = document.form_key.input_field.value;
    document.form_key.input_field.value = "";
}
</script>

<!-- JavaScript for Processing -->
<script type="text/javascript">
window.onload = function() {
    var canvas = document.getElementsByTagName('canvas')[0];
    var codeElm = document.getElementById('processing-code');
    var code = codeElm.textContent || codeElm.innerText || codeElm.text;
    Processing(canvas, code);
};
</script>

<!-- for Debug -->
<script type="text/javascript">
function msg(text) {
    document.getElementById('message').innerHTML = text;
}
</script>

<!-- Processing Code -->
<script id="processing-code" type="application/processing">
void setup(){
  size(768, 902);
  background(0);
  noStroke();
}

int count = 0;

void draw(){
  if ( key_value>=0 && key_value<=9 ) {
    count = key_value;
  } else {
    count = 0;
  }
  background(100);
  for (int i=0; i<count; i++) {
    fill(255,192,0);
    rect(100,760-80*i, 0.7*width,50);
  }
}
</script>

</head>
<body>
    <canvas style="position: absolute; top: 0px; left: 0px;"></canvas>
    <form action="#" class="keyinput" name="form_key" onkeyup="keyinput_update()">
        <input name="input_field">
    </form>
    <div id="message"></div>
</body>
</html>

Exemple en vidéo

Références

mercredi 2 mai 2012

Nouveautés de la semaine

Voila encore toute une série de nouveautés chez MC Hobby.

Senseur UltraSon de MaxBotix
Il s'agit probablement de l'un des meilleurs capteurs UltraSon du marché.
Il est petit, préçis et dispose de plusieurs type de sortie dont une sortie analogique (vraiment très pratique pour une mise en oeuvre rapide avec Arduino).
Plus d'information sur sa fiche produit.

Senseur de type PIR
Les senseurs infrarouge de type PIR sont souvents utilisés par les robots et humanoïdes pour détecter des mouvements. Il s'agit également du type (technologie) de détecteur utilisé par les système d'alarme.
La distance de détection de ce PIR est d'environ 6 mètres.
Comme pour le senseur ultrason, ce détecteur PIR est léger et petit, ce qui facilite son intégration sur les projets les plus divers.
Pour plus d'information, visitez notre fiche produit.
Notre Wiki à également été agrémenté d'un article dédié au montage et à l'utilisation du senseur PIR :-)

Le MUX Shield
Le MUX shield permet d'ajouter 48 entrées/sorties (en combinaison) digitales et/ou analogiques sur votre Arduino (nb: analogique réservé aux entrées).
De quoi transformer votre Arduino en super capteur, super clavier tactile, etc.
Un simple coup d'oeil sur notre fiche produit vous fournira plus d'informations, des exemples et proposition de projet.

Le GPS Ultimate
AdaFruit produit un excellent breakout board contenant un GPS d'excellente qualité. Facile à mettre en oeuvre, ce breakout board dispose d'une mémoire Flash interne permettant de faire du DataLogging directement sur le GPS.

Comme d'habitude, le produit dispose d'une abondante documentation accompagné d'exemples mais aussi d'une libraire (optionnelle) permettant de récupérer facilement les informations du GPS.
Déjà disponible en anglais, cette documentation est actuellement en cours de traduction sur le Wiki de MC Hobby (voir GPS Ultimate sur le wiki.mchobby.be).
Ce GPS serait un compagnon idéal de notre GPRS Shield, de quoi répondre à un SMS de demande de position en renvoyant la position GPS, vitesse, direction, etc. très excitant comme idée :-)

Pour plus d'information sur ce produit, reportez vous à notre fiche produit.

Boitier pour Arduino
Cette semaine vous aussi l'arrivée d'un boitier abordable pour Arduino Uno / Arduino Mega. Un compagnon idéal pour le boitier Deluxe.

Plus d'information ici :-)

Arduino Mega et Nano
Voila l'arrivée de deux nouveaux produits attendu depuis plusieurs semaines.
Je vous présente Arduino Mega (fiche produit)
mais aussi un Arduino Nano (fiche produit)
Mais aussi les câbles USB adaptés


Autres nouvelles
Une zone de recherche
Notre WebShop est maintenant équipé d'une zone de recherche.
De quoi faciliter vos recherches.

D'autres produits sont vont aussi sortie prochainement:
  • Une carte "Made In Arduino" contenant:
    Un Arduino + Ethernet + SD Card + Power Over Ethernet :-)  
  • Un convertisseur USB to Serial (FTDI friend)
  • Un breakout board avec un L298, de quoi booster vos montages moteur!
  • Un clavier 4*4 
  • Piezo et photorésistance
Bonne lecture

lundi 30 avril 2012

GSM/GRPS Shield: Commande via SMS

Introduction
Depuis la vente du GRPS Shield pour Arduino sur le WebShop de MC Hobby, nous nous sommes penchez sur deux applications.

Nous présenterons ici la projet le plus excitant des deux, à savoir la réception et l'interprétation de commandes reçues par SMS.

Ce projet est bien évidemment totalement documenté en Français sur notre Wiki. Il accompagne d'ailleurs notre traduction Française augmentée du GPRS Shield.
Pour plus d'information précises, vous pouvez consulter nos pages consacrées au GSM/GPRS Shield sur notre Wiki.


Dialoguer avec le GPRS Shield
Le GPRS Shield utilise un UART. L'UART est une interface de type série, ce qui permet à Arduino d'établir un canal de communication avec le GPRS Shield pour envoyer des commandes/ordres.
Cette méthode de communication présente différents avantages:
  1. Limite la complexité du montage. Il ne faut que 2 pins pour communiquer avec le GPRS shield. Pas besoin de mettre en oeuvre des signaux compliqués avec de nombreuses broches.
  2. Limite l'utilisation des broches de votre Arduino.
    Ce qui en laisse d'autant plus de libres pour votre propre projet.
  3. Simplifie les échanges et le programmation sur Arduino.
    La syntaxe des commandes AT est "textuelle" (tout comme un programme pour Arduino), simple et formalisée.
    Une fois habitué, vous comprendrez assez vite comment tirer parti de la documentation des commande AT fournies par le constructeur.
    Le principe des commandes AT est plus vieux même qu'Internet, c'est dire s'il s'agit d'une technologie à la fois simple, robuste (puisqu'elle à survécus) et d'une redoutable efficacité.
De même, la simplicité du formalise des commandes AT est également un avantage pour Arduino puisqu'il (le programme Arduino) sera capable:
  1. De donner des ordres au GPRS shield en employant des commandes AT.
  2. D'interpréter assez facilement les réponses reçues par le GRPS Shield.
C'est le principe même de "Commande via SMS".
C'est la raison pour-laquelle nous avons édité l'article "Envoyer/Interpréter des commandes par Port Série" il y a quelques semaines.

Le montage
Nous avons raccordé une LED sur la PIN 13 de notre Arduino.




Et nous utilisons les Pin 7 & 8 pour établir une liaison série avec notre GPRS Shield.
Par défaut, le GPRS shield est configuré pour utiliser les Pin 7 & 8.
La librairie SoftwareSerial (disponible en standard avec Arduino 1.0) permet au programme Arduino d'établir la communication avec le GPRS shield.

Le programme
Le programme est un peu plus long que celui permettant d'envoyer un SMS.
En effet, il faut ici intercepter les communications spontanées envoyées par le GPRS shield (par exemple à la réception d'un message SMS) pour y réagir.

Le programme complet est disponible ici sur notre Wiki.

Pour faciliter le débugging du programme, nous avons également renvoyé une copie de tous les messages du GPRS shield vers la liaison série d'Arduino.
De même, les messages que vous envoyés sur la liaison série d'Arduino sont relayés vers le GPRS shield.
Cela permet de faire des test en live.

Quelques explications sur le programme:
Lorsque le programme reçoit "+CPIN: SIM PIN", il sait qu'il faut entrer un code PIN pour accéder au réseau GSM.
Si vous avez remplace les "XXXX" par le code PIN adéquat, ce dernier sera immédiatement envoyé au GPRS Shield.

Quand le programme reçoit "Call Ready" depuis le GPRS shield, il sait que le shield est connecté sur un réseau mobile. En réponse, le programme envoi l'information "*** GPRS Shield registered on Mobile Network ***" sur la connexion série d'Arduino (donc sur le moniteur série).

Lorsque le programme reçoit le message spontané "+CMTI: "SM",20", il sait qu'un SMS est reçu et stocké dans la mémoire du shield (20 dans ce cas).


Le programme envoi alors la commande "AT+CMGR=20" pour demander les détails (et le contenu) du message SMS.



En réponse au message AT+CMGR, le GPRS shield renvoi le contenu contenu du SMS (plus quelques détails techniques).
Attention, il faut configurer la gestion des SMS en mode texte via la commande AT+CMGF=1.


En voici un exemple de résultat de AT+CMGR:

GPRS Message: [+CMGR: "REC UNREAD","+3249--secret--","","12/04/08,14:00:15+08"]

on


Le message "on" dans notre cas, est capturé et sert à allumer la LED sur la pin 13.
Le message "off", comme vous vous en doutez, éteint la LED.

Résultat du programme


Quelques suggestions
En variante, le programme SMS commande pourrait être modifié pour fournir les services suivants:
  • Retourner des coordonnées GPS d'un module GPS branché sur votre Arduino.
  • Recevoir un code de déverrouillage pour l'ouverture d'une porte ou la désactivation d'une alarme.
  • Relayer des messages vers un système physique (via le port série ou une carte ethernet)

Détection de mouvement / détecteur PIR infrarouge

Note: Le senseur PIR présenté sur cet article est disponible à la vente sur MC Hobby.
Introduction
Les senseurs PIR sont utilisés par les robots/animaux humanoides pour effectuer la détection de mouvement.
La distance de détection peut aller jusqu'à 6 à 7 mètres. Le senseur PIR est typiquement le type de technologie utilisée pour la détection de mouvement mis en oeuvre dans les systèmes d'alarme. Les applications d'un senseur PIR sont multiples:
  • Détection de mouvement et activation d'une oeuvre interactive.
  • Détection de passage/intrusion.
  • Commande d'une chatière automatisée.
  • Détecteur pour commande d'installation domotique. 
Montage
Il est vraiment facile de connecter un senseur PIR sur un microcontrôleur. Le PIR dispose d'une sortie digitale (ON/OFF HIHG/LOW), il suffit donc d'écouter la sortie digitale à l'aide d'une entrée du microcontrôleur. Il suffit détecter la montée du potentiel vers HIGH (détection du PIR) ou descente du potentiel vers LOW (non détection du PIR).
Il est fort probable que vous désiriez des re-déclenchement. Dans ce cas, assurez cous que le jumper est en position H!
Alimentez le PIR à l'aide de 5 Volts et connectez "Ground" à la masse (0v). Ensuite, connectez la sortie sur une entrée digitale de votre microcontrôleur.
Dans cet exemple, nous employons la pin 2 comme entrée digitale pour la sortie du détecteur PIR.


Le code
Le code est assez simple, il ne fait que surveiller l'état Haut/Bas (HIGH/LOW) de la Pin 2.
Il surveille également le changement d'état de la Pin 2, ce qui permet d'afficher un message quand un déplacement est détecter (lorsqu'il commence) et lorsque le mouvement à cessé.
/*
 * Test du senseur PIR
 */
 
int ledPin = 13;                // Pin choisie à cause de sa LED (visible sur la carte)
int inputPin = 2;               // Pin d'entrée choisie pour surveillé le senseur PIR
int pirMotionState = LOW;       // Pour commencer, nous considérons qu'il n'y a pas de nouvement.
int val = 0;                    // Variable utilisée pour lire l'entrée Pin 2 (valeur du PIR)
 
void setup() {
  pinMode(ledPin, OUTPUT);      // déclarer LED comme sortie
  pinMode(inputPin, INPUT);     // déclarer le Senseur comme entrée
 
  Serial.begin(9600);
}
 
void loop(){
  val = digitalRead(inputPin);  // Lire la valeur d'entrée
  if (val == HIGH) {            // Vérifier si l'entrée est HIGH
    digitalWrite(ledPin, HIGH); // Allumer la LED (activité PIR)
    if (pirMotionState == LOW) {
      // Si l'état du PIR est LOW, comme nous venons de détecter un mouvement
      // nous changeons l'état pirMotionState à HIGH (mouvement détecté)
      Serial.println("Mouvement détecté!");
      // Nous affichons le message seulement quand la sortie change
      pirMotionState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // Eteindre la LED (plus d'activité PIR)
    if (pirMotionState == HIGH){
      // Si l'état PIR est HIGH (mouvement détecté) et que la sortie du PIR
      // passe à LOW, c'est que le mouvement à cessé! 
      Serial.println("Mouvement terminé!");
      // Nous affichons le message que pour le changement d'état (détection mouvement)
      pirMotionState = LOW;
    }
  }
}
Où acheter
Le Senseur PIR et sa documentation française sont disponibles à la vente chez MC Hobby.

dimanche 29 avril 2012

LoL Shield - compatible Arduino Mega

Note: Le LoL shield est disponible à la vente sur chez MC Hobby.
Nous avions récemment testé le LOL Shield avec un Arduino Mega.
A notre grande surprise nous avions constaté qu'il restait inanimé!

Après quelques recherches nous avons trouvé une version modifiée de la librairie fonctionnelle avec la version Arduino Mega 2560 :-)

Pour plus d'information et téléchargement voir notre page dédiée au LoL Shield sur wiki.mchobby.be (section programmer | Librairie pour Mega)