Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système d'alarme pour sac à dos avec Arduino et boussole LSM303

Composants et fournitures

Composant Quantité Note
Arduino UNO 1
Adafruit LSM303 – Accéléromètre + Magnétomètre (Boussole) triple axe 1
Buzzer piézo fort SparkFun – 3kHz 1
Batterie 9V (standard) 1
Jack femelle 6.35mm (commuté) 1 Optionnel
Fiche audio 6.35mm 1 Optionnel
Fils de connexion Male/Female 1
Connecteur 9V vers jack barrel 1

Applications et services en ligne

Outil
Arduino IDE

À propos de ce projet

Avez-vous déjà ressenti le besoin d'une alarme pour votre sac à dos ? Vous êtes-vous déjà assis dans un lieu public avec votre sac, craignant qu'on ne le vole ? Si oui, ce projet est pour vous !

En utilisant la boussole/accéléromètre LSM303, ce projet déclenche une alarme quand le sac a été déplacé. Il surveille l'orientation via le magnétomètre, et si un mouvement de plus de 10° est détecté, l'alarme retentit.

Étape 1 : Câbler l'Arduino

Connectez la carte LSM303 à l'Arduino :

Pour plus de détails, consultez le guide Adafruit.

Connectez le buzzer piézo :

Système d alarme pour sac à dos avec Arduino et boussole LSM303

Étape 2 : Installer les bibliothèques

  1. Téléchargez les bibliothèques Adafruit_LSM303DLHC et Adafruit_Sensor au format ZIP.
  2. Ouvrez l'Arduino IDE (téléchargeable ici si besoin).
  3. Croquis → Inclure une bibliothèque → Ajouter bibliothèque .ZIP…
Système d alarme pour sac à dos avec Arduino et boussole LSM303
Système d alarme pour sac à dos avec Arduino et boussole LSM303
  1. Sélectionnez les fichiers .ZIP téléchargés.

Étape 3 : Programmer l'Arduino

Ouvrez l'IDE Arduino, nouveau fichier, effacez tout, collez le code ci-dessous :

// Inclusion des bibliothèques
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>

// Sensibilité (seuil en degrés)
const int sens = 10;

// ID unique pour le capteur
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);

void setup(void) {
  // Pour débogage (décommenter si besoin)
  // Serial.begin(9600);
  // Serial.println("Démarrage...");

  // Configuration broche 13 (buzzer)
  pinMode(13, OUTPUT);

  // Initialisation du capteur
  if(!mag.begin()) {
    // Problème détection LSM303 – vérifiez connexions
    digitalWrite(13, HIGH); delay(500);
    digitalWrite(13, LOW);  delay(500);
    digitalWrite(13, HIGH); delay(500);
    digitalWrite(13, LOW);  delay(500);
    while(1); // Boucle infinie
  }

  // Attente 5 secondes pour positionner le sac
  delay(5000);

  // Signal de démarrage
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
}

// Fonction lecture capteur (retourne cap 0-359°)
int getDeg(void) {
  sensors_event_t event;
  mag.getEvent(&event);
  float Pi = 3.14159;
  // Calcul angle vecteur (y, x)
  float heading = int((atan2(event.magnetic.y, event.magnetic.x) * 180) / Pi);
  // Normalisation 0-360
  if (heading < 0) heading = 360 + heading;
  return heading;
}

void loop(void) {
  // Lecture orientation initiale
  int oldDeg = getDeg();
  delay(1000);
  // Lecture orientation après 1s
  int newDeg = getDeg();

  // Détection mouvement > seuil
  if (newDeg < (oldDeg - sens) && oldDeg != 0 && newDeg != 0) {
    digitalWrite(13, HIGH); // Alarme ON
    // Serial.println("Déclenché");
  }
  else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
    digitalWrite(13, HIGH); // Alarme ON
    // Serial.println("Déclenché");
  }

  // Débogage (décommenter si besoin)
  // Serial.print("Nouveau:"); Serial.println(newDeg);
  // Serial.print("Ancien:"); Serial.println(oldDeg);
  // Serial.println();
}

Branchez l'Arduino, compilez et téléversez.

Étape 4 : Test

Si tout est correct, après reset : quelques bips, 3s silence, puis un bip long. Si vous bougez le LSM303, l'alarme se déclenche.

Si 2 bips longs avant le délai de 3s : problème de câblage. Vérifiez toutes les connexions.

Si ça ne marche pas :

Étape 5 : Ajouter une clé d'activation

Le projet fonctionne : branchez une pile 9V sur le jack barrel, installez dans le sac. Mais débrancher/rebrancher pour armer/désarmer est fastidieux. Solution : le jack 6.35mm.

Pourquoi 6.35mm et pas 3.5mm (standard casque) ? Sécurité accrue – moins de risque qu'un passant ait la fiche adaptée. Mais vous pouvez utiliser un interrupteur à clé, un contacteur reed + aimant, RFID, appli smartphone…

Câblez l'interrupteur/clé entre la pile et le jack barrel :

Système d alarme pour sac à dos avec Arduino et boussole LSM303

Si vous avez un connecteur barrel à bornier : coupez un fil, rallongez si besoin, insérez l'interrupteur. Moi j'ai mis un simple toggle (peu soucieux de sécurité max), mais soyez créatif !

Étape 6 : Installation dans le sac

Bravo ! Alarme fonctionnelle avec clé. Il ne reste qu'à l'installer :

Système d alarme pour sac à dos avec Arduino et boussole LSM303
Système d alarme pour sac à dos avec Arduino et boussole LSM303
Système d alarme pour sac à dos avec Arduino et boussole LSM303

Aller plus loin

Cette alarme ne se limite pas aux sacs à dos. Adaptez-la pour une porte, un bocal à cookies, le frigo, ou tout objet à protéger. Les possibilités sont infinies !

Code

Code (Arduino)

Code Arduino complet :

// Inclusion des bibliothèques
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>

// Sensibilité
const int sens = 10;

// ID unique capteur
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);

void setup(void) {
  // Serial.begin(9600);
  // Serial.println("Starting...");
  pinMode(13, OUTPUT);
  if(!mag.begin()) {
    digitalWrite(13, HIGH); delay(500);
    digitalWrite(13, LOW);  delay(500);
    digitalWrite(13, HIGH); delay(500);
    digitalWrite(13, LOW);  delay(500);
    while(1);
  }
  delay(5000);
  digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW);
}

int getDeg(void) {
  sensors_event_t event;
  mag.getEvent(&event);
  float Pi = 3.14159;
  float heading = int((atan2(event.magnetic.y, event.magnetic.x) * 180) / Pi);
  if (heading < 0) heading = 360 + heading;
  return heading;
}

void loop(void) {
  int oldDeg = getDeg();
  delay(1000);
  int newDeg = getDeg();
  if (newDeg < (oldDeg - sens) && oldDeg != 0 && newDeg != 0) {
    digitalWrite(13, HIGH);
    // Serial.println("Triggered");
  }
  else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
    digitalWrite(13, HIGH);
    // Serial.println("Triggered");
  }
  // Serial.print("New:"); Serial.println(newDeg);
  // Serial.print("Old:"); Serial.println(oldDeg);
  // Serial.println();
}

Schématiques

Vers la boussole :
Bleu – SDA
Jaune – SCL
Noir – GND
Rouge – VIN

Système d alarme pour sac à dos avec Arduino et boussole LSM303

Processus de fabrication

  1. Conception de systèmes de commande à sécurité intrinsèque (fail-safe) pour la sûreté et la fiabilité
  2. Surveillance domestique sécurisée avec Home Assistant sur Raspberry Pi : Mouvement, Alarme et Capture Vidéo
  3. Construire une alarme à eau headless Raspberry Pi 2 avec Adafruit T‑Cobbler Plus
  4. Système d'alarme détection mouvement avec Java et Reactive Blocks – Déploiement sur Raspberry Pi et envoi SMS
  5. Robot réveil roulant : Système mobile intelligent piloté par Raspberry Pi et Google Calendar
  6. Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
  7. SERENA : Système d'Alarme Arduino Mega 2560 Personnalisé avec Écran Tactile TFT LCD
  8. Évaluer la sécurité d'un système d'alarme avec Arduino et modules RF 433 MHz
  9. Construire un Réveil Fiable avec RTC DS1302 et Arduino UNO