Modifications

Sauter à la navigation Sauter à la recherche
2 245 octets ajoutés ,  20 mai 2014 à 10:52
Ligne 8 : Ligne 8 :  
Le programme utilise la bibliothèque standard Softwareserial pour communiquer avec le Bluefruit EZ-Link. La broche 0 est utilisé pour la transmission et la broche 2 pour la réception. Vous pouvez très bien vous passer de spécifier la broche de réception (et réduire un peu la taille du code) en utilisant la bibliothèque tiers SendOnlySoftwareSerial disponible sur arduino.cc via le fil de discussion: [http://forum.arduino.cc/index.php?topic=112013.0 http://forum.arduino.cc/index.php?topic=112013.0.].  Cela vous permettrait alors d'utiliser la broche 2 (Analogique 1) pour les alarmes, libérant la broche 3 partagée avec USB.
 
Le programme utilise la bibliothèque standard Softwareserial pour communiquer avec le Bluefruit EZ-Link. La broche 0 est utilisé pour la transmission et la broche 2 pour la réception. Vous pouvez très bien vous passer de spécifier la broche de réception (et réduire un peu la taille du code) en utilisant la bibliothèque tiers SendOnlySoftwareSerial disponible sur arduino.cc via le fil de discussion: [http://forum.arduino.cc/index.php?topic=112013.0 http://forum.arduino.cc/index.php?topic=112013.0.].  Cela vous permettrait alors d'utiliser la broche 2 (Analogique 1) pour les alarmes, libérant la broche 3 partagée avec USB.
   −
Pin 1, which has the onboard red LED, is used as an indicator on which sensors are tripped. When the alarm is set (no alarms tripped), the LED does not blink. It blinks from 1 to 7 depending when sensors are tripped (1 for #1/PIR, 2 for #2, 3 for #3, 4 for 1 and 2, 5 for 1 and 3, 6 for 2 and 3, and 7 for all sensors tripped). If you decide to use Pin 1 for other purposes, you can do so but with the LED in-circuit it can be tricky. For example, the internal pullup resistor, if enabled, is too weak. You may use a fairly low value external pullup resistor like in the hundreds of ohms if you decide to use the pin for sensors.
+
La broche 1, sur laquelle est intégrée la LED rouge de la carte, est utilisée comme indicateur d'activation de senseur. Lorsque l'alarme est activée (sans alarme déclenchée), la LED ne clignote pas. Elle clignote de 1 à 7 fois en fonction du senseur déclencheur (1 pour #1/PIR, 2 pour #2, 3 pour #3, 4 fois pour 1 & 2, 5 pour 1 et 3, 6 pour 2 et 3, et 7 fois si tous les senseurs sont activés).  
   −
In the code for the example build, enabling DEBUG (uncommenting the line //#define DEBUG by deleting the // characters) will output the alarm values for the analog pin to the serial connection. You should do this once your circuit is together to ensure the values read by your circuit gives values understood by the code as alarms are set off.
+
Vous pouvez réserver la broche 1 à une autre utilisation si vous le désirez... sachez simplement que la LED branchée sur cette broche (qui n'est autre chose qu'une diode) risque de perturber votre montage. Par exemple, si vous activez la résistance pull-up interne, cette dernière est trop faible. Si vous voulez utiliser des senseurs sur cette broche, vous aurez besoin d'utiliser une résistance pull-up externe avec une valeur relativement faible de l'ordre de quelques centaines d'Ohms.
   −
Trip each combination of sensors, record the value for the analog pin displayed on the serial line. Change the code line that has uint16_t values to the values you find. On the bench this process takes less than 5 minutes. If you have problems with the final install giving errors, try this process again as the resistance of the wiring may change the values. }}
+
Dans le code d'exemple, il est possible d'activer les messages de débogage (DEBUG) en décommentant la ligne '''//#define DEBUG''' (en retirant les caractères qui commencent la ligne). Lorsque le DEBUG est actif, le programme envoi sur la connexion série les différentes valeurs d'alarmes lue sur la broche analogique. Vous devriez faire cela une fois votre circuit assemblé pour vous obtenir les différentes valeurs analogiques produites par le circuit, ce qui permet de les encoder dans le programme.
 +
 
 +
Activez chaque combinaison de senseurs et notez la valeur obtenue sur la broche analogique (et affichée par l'intermédiaire de la ligne série). Modifiez ensuita la ligne qui déclare les valeurs dans le tableau ''uint16_t values[8]'' pour y introduire vos propres valeurs. Ce processus prend environ 5 minutes à réaliser (sur notre banc d'essai). Si vous avez des problèmes avec le montage final (produisant des erreurs) alors il sera nécessaire de refaire un relevé des valeurs sur la broche analogique (la résistance peut varier sensiblement en fonction de la longueur des fils utilisés, c'est suffisant pour modifier la valeur lue sur la broche analogique. }}
      Ligne 18 : Ligne 20 :     
  <nowiki>/* Trinket Alarm Analog An alarm system based on the Adafruit Trinket mini microcontroller
 
  <nowiki>/* Trinket Alarm Analog An alarm system based on the Adafruit Trinket mini microcontroller
 +
  Alarme Analogique Trinket - un système d'alarme basé sur le mini microcontroleur Trinket d'AdaFruit
 
      
 
      
This version uses three sensors (or sensor branches) connected to one analog line
+
Cette version utilise 3 senseur (ou lignes de senseurs) connectés sur une entrée analogique
Annunciation is performed via the onboard LED and a Adafruit Bluefruit EZ-Link
+
L'annonce est réalisée à l'aide de la LED incluse sur la carte ET d'un Bluefruit EZ-Link Adafruit
A Trinket 3V is be used with a 3.7 volt LiPo battery and Adafruit charger connected to 5 volts
+
Le montage utilise un Trinket 3V avec un accu LiPo de 3.7 et un chargeur d'accu branché sur 5 volts
 +
 
 +
Tutoriel Traduit par Meurisse D. pour www.MCHobby.be - tutoriel accessible sur http://wiki.mchobby.be/index.php?title=Trinket-Alarme
 +
Tutorial translated by Meurisse D. for www.MCHobby.be - tutorial available at http://wiki.mchobby.be/index.php?title=Trinket-Alarme
 +
Source: Trinket Bluetooth Alarm System - www.adafruit.com - available on https://learn.adafruit.com/trinket-bluetooth-alarm-system
 
*/
 
*/
 
      
 
      
#define SerialPin 0 // Serial debug via Bluefruit EZ-Link on this pin
+
#define SerialPin 0 // Débogage sériel via le Bluefruit EZ-Link branché sur cette broche
#define LEDpin 1 // Use Trinket LED for displaying tripped sensors
+
#define LEDpin 1   // Utiliser la LED du Trinket pour indiquer la détection d'alarme
#define SensorPin 3 // A3 which is GPIO #3 has resistor network to read 3 normally closed sensors
+
#define SensorPin 3 // A3 qui est GPIO #3 utilisant un réseau de résistance pour lire 3 senseurs normalement fermés
 
      
 
      
 
//#define DEBUG
 
//#define DEBUG
 
      
 
      
// Serial code, use a Bluefruit EZ-Link with its RX pin connected to Pin 0 of Trinket
+
// code connexion Série, utilise un Bluefruit EZ-Link avec sa broche RX connectée sur la broche 0 du Trinket (TX)
// You will need a terminal program (such as freeware PuTTY for Windows) to get the alerts
+
// Vous aurez besoin d'un programme type Terminal (tel que le freeware PuTTY sous Windows) pour voir les alertes
// but better would be a Processing or Python script looking for alarms.
+
// Mais l'idéal est encore d'utiliser Processing ou un script Python pour surveiller les alarmes.
   −
#include <SoftwareSerial.h> // Software serial library (standard in Arduino 1.x +)
+
#include <SoftwareSerial.h> // Bibliothèqye Software serial (standard pour Arduino 1.x +)
SoftwareSerial Serial(2,0); // Serial transmission on Trinket Pin 0, receive pin 2 (not used)
+
SoftwareSerial Serial(2,0); // Communication série - TX/Transmission sur la broche 0, RX/Réception sur la broche 2 (non utilisée)
 
      
 
      
// Multiplex 3 normally closed sensors on one analog pin. If you have 2 sensors,
+
// Multiplexer 3 senseurs normalement ouvert sur un broche analogique. Si vous avez deux senseurs,
// you can leave the one resistor open and adjust the text values accordingly
+
// vous pouvez laisser une résistance ouverte et ajuster le texte en fonction
const uint8_t numSensors = 3; // number of sensors on analog line
+
const uint8_t numSensors = 3; // nombre se senseur sur la broche analogique
const uint8_t states = 8; // 2^numsensors
+
const uint8_t states = 8; // Nombre d'états possible = 2^numsensors
 
uint16_t values[8] = {541, 685, 661, 614, 840, 780, 776, 997};
 
uint16_t values[8] = {541, 685, 661, 614, 840, 780, 776, 997};
 
char *textval[8] = {"Set","PIR", "2", "3", "PIR+2","PIR+3","2+3","All"};
 
char *textval[8] = {"Set","PIR", "2", "3", "PIR+2","PIR+3","2+3","All"};
    
void setup() {
 
void setup() {
   pinMode(LEDpin, OUTPUT); // Set GPIO 1 to output to blink LED
+
   pinMode(LEDpin, OUTPUT);   // configurer le GPIO 1 en sortie (output) pour faire clignoter la LED
   pinMode(SensorPin, INPUT); // sets analog pin for input
+
   pinMode(SensorPin, INPUT); // configurer la broche analogique en lecture (input)
   Serial.begin(9600); // Send status information via serial
+
   Serial.begin(9600);       // Envoyer l'information de statut via connexion série
   Serial.println("Alarm System"); // Initialize message (can read to determine reset)
+
   Serial.println("Alarm System"); // Message d'initialisation (peut être utilisé pour détecter un reset)
 
}
 
}
    
void loop()
 
void loop()
 
{
 
{
   int8_t contact; // read alarm loops (returns -1 if a read error)
+
   int8_t contact; // boucle de lecture d'alame
   contact = readContact(SensorPin); //
+
   contact = readContact(SensorPin); // lecture des senseurs, retourne -1 en cas d'erreur de lecture
   if(contact >= 1) { // if any value greater than 0 (set),
+
   if(contact >= 1) {         // S'il y a une valeur plus grande que 0 ...
     Blink(LEDpin, contact); // we have an alarm! Blink LED corresponding to
+
     Blink(LEDpin, contact); // alors nous avons une alarme! Faire clignoter la LED en fonction du senseur activé
     Serial.print("Alarm! "); // which sensor(s) and write to Bluetooth
+
     Serial.print("Alarm! "); // Envoyer l'info sur Bluetooth
 
     Serial.println(textval[contact]);
 
     Serial.println(textval[contact]);
 
   }
 
   }
   else if(contact < 0) { // a bad analog read was done. If you get errors
+
   else if(contact < 0) {   // Il y a une erreur de lecture sur la broche analogique. Si vous obtenez des erreurs
     Serial.print("Error"); // set DEBUG, walk test, record values, and
+
     Serial.print("Error"); // alors activez le DEBUG, faites vos test, relevez les valeurs, et
   } // update code with analogread values
+
   }                         // faite une mise-à-jour du code avec les valeurs lues sur la broche analogique
 
   else {
 
   else {
     Serial.println("Set"); // Alarm is set (no sensors tripped), all is well
+
     Serial.println("Set"); // l'Alarme est active "Set" et il n'y a aucun senseur activé. Tout va bien :-)
 
   }
 
   }
 
      
 
      
   delay(500); // We do not need to poll the sensors very often although you can change
+
   delay(500); // Il n'est pas nécessaire de vérifier les senseurs très souvent. Vous pouvez néanmoins modifier le délais
 
}
 
}
 
      
 
      
 
int8_t readContact(uint8_t TrinketPin)
 
int8_t readContact(uint8_t TrinketPin)
// returns the number corresponding to sensor values.
+
// Retourne une valeur numérique correspondant aux valeurs du senseur.
// TrinketPin is the analog pin on the Trinket (A1=#2, A2=#4, A3=#3)
+
// Les broches du Trinket sont en analogique (A1=#2, A2=#4, A3=#3)
 
{
 
{
   const int variance = 8; // Analog readings can vary, use this value for +- variance
+
   const int variance = 8; // Les lectures analogiques peuvent varier un petit peu.
 +
                          // utilisons la valeur +-variance pour tenir compte de la divergence
 
   int contact = 0;
 
   int contact = 0;
 
   uint16_t readval = 0;
 
   uint16_t readval = 0;
   readval = analogRead(TrinketPin); // Check the pin
+
   readval = analogRead(TrinketPin); // Lecture de la broche
 
   #ifdef DEBUG
 
   #ifdef DEBUG
   Serial.print(": Sensor read value: ");
+
   Serial.print(": valeur lue sur le senseur: ");
 
   Serial.println(readval);
 
   Serial.println(readval);
 
   #endif
 
   #endif
   for(uint8_t i=0; i<states; i++) { // if reading is near state value, return that state
+
   for(uint8_t i=0; i<states; i++) {  
 +
      // Si la valeur lue est proche d'une valeur d'un état (state), alors retourner l'identification
 +
      // de l'état
 
       if(readval >= (values[i]-variance) && readval <= (values[i]+variance) ) {
 
       if(readval >= (values[i]-variance) && readval <= (values[i]+variance) ) {
 
         return(i);
 
         return(i);
 
       }
 
       }
 
   }
 
   }
   return -1; // value not one of the alarm system values
+
   return -1; // La valeur ne correspond pas à une alarme système
 
}
 
}
 
      
 
      
// This routine toggkes a pin the number you pass. Good to use on LED pin to
+
// Cette fonction fait clignoter une broche du nombre de fois indiqué.  
// output which sensors are triggered
+
// Utile pour brancher une LED sur une broche afin de d'indiquer et
 +
// identifier quel senseur à été déclenché
 
void Blink(uint8_t pin, uint8_t times) {
 
void Blink(uint8_t pin, uint8_t times) {
 
   for(uint8_t i=1; i<=times; i++) {
 
   for(uint8_t i=1; i<=times; i++) {
Ligne 101 : Ligne 112 :  
}</nowiki>
 
}</nowiki>
   −
Remember to comment out the DEBUG line for your final installation.  
+
N'oubliez pas de remettre la ligne DEBUG débug en commentaire pour lors de l'installation finale.  
    
{{Trinket-Alarme-TRAILER}}
 
{{Trinket-Alarme-TRAILER}}
29 917

modifications

Menu de navigation