- Composants requis:
- Module GPS et son fonctionnement:
- Module GSM:
- Accéléromètre:
- Explication du circuit:
- Explication de travail:
- Explication de la programmation:
Dans nos tutoriels précédents, nous avons appris comment interfacer le module GPS avec l'ordinateur, comment construire une horloge GPS Arduino et comment suivre le véhicule à l'aide du GSM et du GPS. Ici, dans ce projet, nous allons construire un système d'alerte d'accident de véhicule basé sur Arduino utilisant le GPS, le GSM et l'accéléromètre. L'accéléromètre détecte le changement soudain des axes du véhicule et le module GSM envoie le message d'alerte sur votre téléphone portable avec l'emplacement de l'accident. Le lieu de l'accident est envoyé sous forme de lien Google Map, dérivé de la latitude et de la longitude du module GPS. Le message contient également la vitesse du véhicule en nœuds. Voir la vidéo de démonstrationà la fin. Ce projet d'alerte d'accident de véhicule peut également être utilisé comme système de suivi et bien plus encore, en apportant simplement quelques modifications au matériel et aux logiciels.
Composants requis:
- Arduino Uno
- Module GSM (SIM900A)
- Module GPS (SIM28ML)
- Accéléromètre (ADXL335)
- Écran LCD 16x2
- Source de courant
- Connexion des fils
- 10 K-POT
- Breadboard ou PCB
- Alimentation 12v 1amp
Avant d'entrer dans Project, nous discuterons du GPS, du GSM et de l'accéléromètre.
Module GPS et son fonctionnement:
GPS signifie Global Positioning System et est utilisé pour détecter la latitude et la longitude de n'importe quel endroit sur la Terre, avec l'heure UTC exacte (temps universel coordonné). Le module GPS est utilisé pour suivre l'emplacement de l'accident dans notre projet. Cet appareil reçoit les coordonnées du satellite pour chaque seconde, avec heure et date. Nous avons précédemment extrait la chaîne $ GPGGA dans le système de suivi des véhicules pour trouver les coordonnées de latitude et de longitude.
Le module GPS envoie les données liées à la position de suivi en temps réel, et il envoie autant de données au format NMEA (voir la capture d'écran ci-dessous). Le format NMEA se compose de plusieurs phrases, dans lesquelles nous n'avons besoin que d'une seule phrase. Cette phrase commence à partir de $ GPGGA et contient les coordonnées, l'heure et d'autres informations utiles. Ce GPGGA est appelé Global Positioning System Fix Data. En savoir plus sur les phrases NMEA et lire les données GPS ici.
Nous pouvons extraire les coordonnées de la chaîne $ GPGGA en comptant les virgules dans la chaîne. Supposons que vous trouviez la chaîne $ GPGGA et que vous la stockiez dans un tableau, alors Latitude se trouve après deux virgules et Longitude après quatre virgules. Maintenant, cette latitude et cette longitude peuvent être placées dans d'autres tableaux.
Vous trouverez ci-dessous la chaîne $ GPGGA, accompagnée de sa description:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M`` * 47 $ GPGGA, HHMMSS.SSS, latitude, N, longitude, E, FQ, NOS, HDP, altitude, M, hauteur, M,, données de somme de contrôle
Identifiant |
La description |
$ GPGGA |
Données de correction du système de positionnement global |
HHMMSS.SSS |
Heure au format heure minute seconde et millisecondes. |
Latitude |
Latitude (coordonnée) |
N |
Direction N = Nord, S = Sud |
Longitude |
Longitude (coordonnée) |
E |
Direction E = Est, W = Ouest |
FQ |
Corriger les données de qualité |
NOS |
Nombre de satellites utilisés |
HDP |
Dilution horizontale de précision |
Altitude |
Altitude (mètres au-dessus du niveau de la mer) |
M |
Mètre |
la taille |
la taille |
Somme de contrôle |
Données de contrôle |
Module GSM:
Le SIM900 est un module GSM / GPRS quadri-bande complet qui peut être intégré facilement utilisé par le client ou l'amateur. Le module GSM SIM900 fournit une interface standard de l'industrie. SIM900 offre des performances GSM / GPRS 850/900/1800 / 1900MHz pour la voix, les SMS et les données avec une faible consommation d'énergie. Il est facilement disponible sur le marché.
- SIM900 conçu en utilisant un processeur monopuce intégrant le cœur AMR926EJ-S
- Module GSM / GPRS quadri-bande de petite taille.
- GPRS activé
Commande AT:
AT signifie ATTENTION. Cette commande est utilisée pour contrôler le module GSM. Il existe des commandes d'appel et de messagerie que nous avons utilisées dans plusieurs de nos précédents projets GSM avec Arduino. Pour tester le module GSM, nous avons utilisé la commande AT. Après avoir reçu la commande AT, le module GSM répond par OK. Cela signifie que le module GSM fonctionne correctement. Voici quelques commandes AT que nous avons utilisées ici dans ce projet:
ATE0 Pour écho désactivé AT + CNMI = 2,2,0,0,0
(Pour en savoir plus sur le module GSM, consultez nos différents projets GSM avec différents microcontrôleurs ici)
Accéléromètre:
Broche Description de l'accéléromètre:
- L'alimentation Vcc 5 volts doit se connecter à cette broche.
- X-OUT Cette broche donne une sortie analogique dans la direction x
- Y-OUT Cette broche donne une sortie analogique dans la direction y
- Z-OUT Cette broche donne une sortie analogique dans la direction z
- Terre GND
- ST Cette broche utilisée pour régler la sensibilité du capteur
Consultez également nos autres projets utilisant Accelerometer: Ping Pong Game utilisant Arduino et un robot contrôlé par les gestes de la main à base d'accéléromètre.
Explication du circuit:
Les connexions de circuit de ce projet de système d'alerte d'accident de véhicule sont simples. Ici, la broche Tx du module GPS est directement connectée à la broche numérique numéro 10 d'Arduino. En utilisant la bibliothèque série logicielle ici, nous avons autorisé la communication série sur les broches 10 et 11, et les avons respectivement rendus Rx et Tx et laissé la broche Rx du module GPS ouverte. Par défaut, les broches 0 et 1 d'Arduino sont utilisées pour la communication série, mais en utilisant la bibliothèque SoftwareSerial, nous pouvons autoriser la communication série sur d'autres broches numériques de l'Arduino. Une alimentation de 12 volts est utilisée pour alimenter le module GPS.
Les broches Tx et Rx du module GSM sont directement connectées aux broches D2 et D3 d'Arduino. Pour l'interfaçage GSM, nous avons également utilisé ici une bibliothèque série logicielle. Le module GSM est également alimenté par une alimentation 12v. Un des LCD en option les broches de données D4, D5, D6, et D7 sont connectées aux numéros des broches 6, 7, 8 et 9 de Arduino. Les broches de commande RS et EN de l'écran LCD sont connectées aux broches 4 et 5 de l'Arduino et la broche RW est directement connectée à la terre. Un potentiomètre est également utilisé pour régler le contraste ou la luminosité de l'écran LCD.
Un accéléromètre est ajouté à ce système pour détecter un accident et ses broches de sortie ADC des axes x, y et z sont directement connectées aux broches A1, A2 et A3 de l'ADC Arduino.
Explication de travail:
Dans ce projet, Arduino est utilisé pour contrôler l'ensemble du processus avec un récepteur GPS et un module GSM. Le récepteur GPS est utilisé pour détecter les coordonnées du véhicule, le module GSM est utilisé pour envoyer le SMS d'alerte avec les coordonnées et le lien vers Google Map. L'accéléromètre, à savoir ADXL335, est utilisé pour détecter un accident ou un changement soudain dans n'importe quel axe. Et un écran LCD 16x2 en option est également utilisé pour afficher les messages d'état ou les coordonnées. Nous avons utilisé le module GPS SIM28ML et le module GSM SIM900A.
Lorsque nous sommes prêts avec notre matériel après la programmation, nous pouvons l'installer dans notre véhicule et le mettre sous tension. Désormais, chaque fois qu'il y a un accident, la voiture s'incline et l'accéléromètre change ses valeurs d'axe. Ces valeurs lues par Arduino et vérifie si un changement se produit dans un axe. Si un changement se produit, Arduino lit les coordonnées en extrayant la chaîne $ GPGGA à partir des données du module GPS (fonctionnement du GPS expliqué ci-dessus) et envoie un SMS au numéro prédéfini à la police, à l'ambulance ou au membre de la famille avec les coordonnées de l'emplacement du lieu de l'accident. Le message contient également un lien Google Map vers le lieu de l'accident, afin que cet emplacement puisse être facilement suivi. Lorsque nous recevons le message, il suffit de cliquer sur le lien et nous redirigerons vers la carte Google et nous pourrons alors voir l'emplacement exact du véhicule. Vitesse du véhicule, en nœuds(1,852 km / h), est également envoyé dans le SMS et affiché sur le panneau LCD. Regardez la vidéo de démonstration complète sous le projet.
Ici, dans ce projet, nous pouvons définir la sensibilité de l'accéléromètre en mettant les valeurs min et max dans le code.
Ici, dans la démo, ont utilisé des valeurs données:
#define minVal -50 #define MaxVal 50
Mais pour de meilleurs résultats, vous pouvez utiliser 200 au lieu de 50, ou définir selon vos besoins.
Explication de la programmation:
Le programme complet a été donné ci-dessous dans la section Code; ici nous expliquons brièvement ses différentes fonctions.
Nous avons d'abord inclus toutes les bibliothèques ou fichiers d'en-têtes requis et déclaré diverses variables pour les calculs et le stockage temporaire des données.
Après cela, nous avons créé une fonction void initModule (String cmd, char * res, int t) pour initialiser le module GSM et vérifier sa réponse à l'aide des commandes AT.
void initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Serial1.println (cmd); retard (100); while (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); retard (t); revenir; } else {Serial.println ("Erreur"); }} délai (t); }}
Après cela, dans la fonction void setup () , nous avons initialisé la communication série matérielle et logicielle, l'écran LCD, le GPS, le module GSM et l'accéléromètre.
void setup () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Alerte d'accident"); lcd.setCursor (0,1); lcd.print ("Système"); retard (2000); lcd.clear ();…………………
Le processus d'étalonnage de l'accéléromètre est également effectué dans la boucle de configuration . En cela, nous avons prélevé des échantillons, puis nous avons trouvé les valeurs moyennes pour les axes x, y et z. Et stockez-les dans une variable. Ensuite, nous avons utilisé ces exemples de valeurs pour lire les changements d'axe de l'accéléromètre lorsque le véhicule s'incline (accident).
lcd.print ("Callibration"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); pour (int i = 0; i
Après cela, dans la fonction void loop () , nous avons lu les valeurs de l'axe de l'accéléromètre et effectué un calcul pour extraire les changements à l'aide d'échantillons prélevés dans Calibration. Maintenant, si des changements sont plus ou moins au niveau défini, Arduino envoie un message au numéro prédéfini.
void loop () {int value1 = analogRead (x); int value2 = analogRead (y); int value3 = analogRead (z); int xValue = xsample-value1; int yValue = ysample-value2; int zValue = zsample-value3; Serial.print ("x ="); Serial.println (xValue); Serial.print ("y ="); Serial.println (yValue); Serial.print ("z ="); Serial.println (zValue);…………………
Ici, nous avons également créé une autre fonction pour diverses puposes comme gpsEvent void () pour obtenir les coordonnées GPS, coordinate2dec void () pour extraire les coordonnées de la chaîne de GPS et de les convertir en valeurs décimales, show_coordinate void () pour afficher les valeurs sur le moniteur série et LCD, et enfin le void Send () pour l'envoi de SMS d'alerte au numéro prédéfini.
Le code complet et la vidéo de démonstration sont donnés ci-dessous, vous pouvez vérifier toutes les fonctions du code.