- Components necessaris:
- Mòdul GPS i el seu funcionament:
- Mòdul GSM:
- Acceleròmetre:
- Explicació del circuit:
- Explicació de treball:
- Explicació de la programació:
En els nostres tutorials anteriors, hem après sobre com es relaciona el mòdul GPS amb l'ordinador, com es construeix un rellotge GPS Arduino i com es pot rastrejar el vehicle mitjançant GSM i GPS. Aquí, en aquest projecte, construirem un sistema d’alerta d’accidents de vehicles basat en Arduino mitjançant GPS, GSM i acceleròmetre. L'acceleròmetre detecta el canvi sobtat dels eixos del vehicle i el mòdul GSM envia el missatge d'alerta al telèfon mòbil amb la ubicació de l'accident. La ubicació de l'accident s'envia en forma d'enllaç de Google Map, derivat de la latitud i la longitud del mòdul GPS. El missatge també conté la velocitat del vehicle en nusos. Vegeu el vídeo de demostracióal final. Aquest projecte d’alerta d’accidents de vehicles també es pot utilitzar com a sistema de seguiment i molt més, amb només fer alguns canvis en el maquinari i el programari.


Components necessaris:
- Arduino Uno
- Mòdul GSM (SIM900A)
- Mòdul GPS (SIM28ML)
- Acceleròmetre (ADXL335)
- LCD de 16x2
- Font d'alimentació
- Connexió de cables
- 10 K-POT
- Taula de pa o PCB
- Font d'alimentació 12v 1amp
Abans d’entrar a Project, parlarem de GPS, GSM i acceleròmetre.
Mòdul GPS i el seu funcionament:
GPS significa Sistema de Posicionament Global (Global Positioning System) i s’utilitza per detectar la latitud i la longitud de qualsevol ubicació de la Terra, amb hora UTC exacta (temps universal coordinat). El mòdul GPS s’utilitza per rastrejar la ubicació de l’accident al nostre projecte. Aquest dispositiu rep les coordenades del satèl·lit per cada segon, amb hora i data. Prèviament, hem extret la cadena $ GPGGA al sistema de seguiment de vehicles per trobar les coordenades de latitud i longitud.

El mòdul GPS envia les dades relacionades amb la posició de seguiment en temps real i envia tantes dades en format NMEA (vegeu la captura de pantalla següent). El format NMEA consta de diverses frases, en què només necessitem una frase. Aquesta frase comença a partir de $ GPGGA i conté les coordenades, el temps i altra informació útil. Aquest GPGGA es refereix a dades de correcció del sistema de posicionament global. Obteniu més informació sobre les frases NMEA i la lectura de dades GPS aquí.
Podem extreure coordenades de la cadena $ GPGGA comptant les comes de la cadena. Suposem que trobeu una cadena $ GPGGA i la deseu en una matriu; llavors Latitude es pot trobar després de dues comes i la Longitud es pot trobar després de quatre comes. Ara, aquesta latitud i longitud es poden incloure en altres matrius.

A continuació es mostra la cadena $ GPGGA, juntament amb la seva descripció:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47 $ GPGGA, HHMMSS.SSS, latitud, N, longitud, E, FQ, NOS, HDP, altitud, M, alçada, M,, dades de suma de verificació
|
Identificador |
Descripció |
|
$ GPGGA |
Dades de correcció del sistema de posicionament global |
|
HHMMSS.SSS |
Temps en format hora hora segon i mil·lisegons. |
|
Latitud |
Latitud (coordenada) |
|
N |
Direcció N = nord, S = sud |
|
Longitud |
Longitud (coordenada) |
|
E |
Direcció E = Est, O = Oest |
|
FQ |
Corregir dades de qualitat |
|
NOS |
Nombre de satèl·lits que s’utilitzen |
|
HDP |
Dilució horitzontal de precisió |
|
Altitud |
Altitud (metres sobre el nivell del mar) |
|
M |
Metre |
|
Alçada |
Alçada |
|
Suma de control |
Dades de suma de verificació |
Mòdul GSM:
El SIM900 és un mòdul GSM / GPRS de quatre bandes complet que pot ser incrustat fàcilment per al client o aficionat. El mòdul GSM SIM900 proporciona una interfície estàndard del sector. SIM900 ofereix un rendiment GSM / GPRS 850/900/1800/1900 MHz per a veu, SMS, dades amb baix consum d'energia. Està fàcilment disponible al mercat.
- SIM900 dissenyat mitjançant un processador d’un sol xip que integra el nucli AMR926EJ-S
- Mòdul GSM / GPRS de quatre bandes de mida petita.
- GPRS activat

Comandament AT:
AT significa ATENCIÓ. Aquesta ordre s'utilitza per controlar el mòdul GSM. Hi ha algunes ordres per trucar i enviar missatges que hem utilitzat en molts dels nostres projectes GSM anteriors amb Arduino. Per provar el mòdul GSM hem utilitzat l'ordre AT. Després de rebre AT Command Module GSM, responeu amb OK. Vol dir que el mòdul GSM funciona bé. A continuació es mostren algunes ordres AT que hem utilitzat aquí en aquest projecte:
ATE0 Per a ressò AT + CNMI = 2,2,0,0,0
(Per obtenir més informació sobre el mòdul GSM, consulteu aquí els nostres diferents projectes GSM amb diversos microcontroladors)
Acceleròmetre:
Pin Descripció de l’acceleròmetre:
- L’alimentació de 5 volts Vcc s’hauria de connectar en aquest pin.
- X-OUT Aquest pin proporciona una sortida analògica en direcció x
- Y-OUT Aquest pin proporciona una sortida analògica en direcció y
- Z-OUT Aquest pin proporciona una sortida analògica en direcció z
- Terra GND
- ST Aquest pin s'utilitza per configurar la sensibilitat del sensor


Consulteu també els nostres altres projectes mitjançant Accelerometer: Ping Pong Game amb Arduino i Accelerometer Based Hand Gestor Controled Robot.
Explicació del circuit:
Les connexions de circuit d’aquest projecte de sistema d’alerta d’accidents de vehicles són senzilles. Aquí el pin Tx del mòdul GPS està connectat directament al pin digital número 10 d’Arduino. Mitjançant l’ús de Software Serial Library aquí, hem permès la comunicació en sèrie als pins 10 i 11 i els hem fet Rx i Tx respectivament i hem deixat obert el pin Rx del mòdul GPS. Per defecte, els pins 0 i 1 d’Arduino s’utilitzen per a la comunicació en sèrie, però mitjançant la biblioteca SoftwareSerial podem permetre la comunicació en sèrie en altres pins digitals de l’Arduino. L’alimentació de 12 volts s’utilitza per alimentar el mòdul GPS.
Els pins Tx i Rx del mòdul GSM estan connectats directament als pins D2 i D3 d’Arduino. Per a la interfície GSM, aquí també hem utilitzat la biblioteca en sèrie de programari. El mòdul GSM també funciona amb alimentació de 12v. Els pins de dades D4, D5, D6 i D7 d’ un LCD opcional estan connectats als pins número 6, 7, 8 i 9 d’Arduino. El pin de comandament RS i EN del LCD estan connectats amb els pins número 4 i 5 d'Arduino i el pin RW està connectat directament a terra. També es fa servir un potenciòmetre per configurar el contrast o la brillantor de la pantalla LCD.
S'afegeix un acceleròmetre en aquest sistema per detectar un accident i els seus pins de sortida ADC de l'eix x, y i z estan connectats directament als pins A1, A2 i A3 d'Arduino ADC.

Explicació de treball:
En aquest projecte, Arduino s’utilitza per controlar tot el procés amb un receptor GPS i un mòdul GSM. El receptor GPS s’utilitza per detectar coordenades del vehicle, el mòdul GSM s’utilitza per enviar l’alerta SMS amb les coordenades i l’enllaç a Google Map. L’acceleròmetre ADXL335 s’utilitza per detectar accidents o canvis sobtats en qualsevol eix. I també s’utilitza una pantalla LCD de 16x2 opcional per mostrar missatges d’estat o coordenades. Hem utilitzat el mòdul GPS SIM28ML i el mòdul GSM SIM900A.

Quan estem preparats amb el nostre maquinari després de la programació, el podem instal·lar al nostre vehicle i encendre'l. Ara, sempre que hi ha un accident, el cotxe s’inclina i l’acceleròmetre canvia els valors dels eixos. Aquests valors llegits per Arduino i comproven si es produeix algun canvi en algun eix. Si es produeix algun canvi, Arduino llegeix les coordenades extraient la cadena $ GPGGA de les dades del mòdul GPS (el funcionament del GPS s’explica més amunt) i envia un SMS al número predefinit a la policia, l’ambulància o el membre de la família amb les coordenades d’ubicació del lloc de l’accident. El missatge també conté un enllaç de Google Map a la ubicació de l'accident, de manera que es pot fer un seguiment fàcil de la ubicació. Quan rebem el missatge, només haurem de fer clic a l'enllaç i redirigirem al mapa de Google i, a continuació, podrem veure la ubicació exacta del vehicle. Velocitat del vehicle, en nusos(1,852 KPH), també s’envia per SMS i es mostra al tauler LCD. Consulteu el vídeo de demostració complet sota el Projecte.

Aquí, en aquest projecte, podem establir la sensibilitat de l’acceleròmetre posant el valor mínim i màxim al codi.
Aquí a la demostració hem utilitzat valors donats:
#define minVal -50 #define MaxVal 50
Però per obtenir millors resultats, podeu utilitzar 200 en lloc de 50 o configurar-los segons el vostre requisit.
Explicació de la programació:
A continuació, es dóna el programa complet a la secció Codi; aquí expliquem breument les seves diverses funcions.
Primer hem inclòs totes les biblioteques o fitxers de capçalera necessaris i hem declarat diverses variables temporals per als càlculs i l’emmagatzematge de dades.
Després d'això, hem creat una funció void initModule (String cmd, char * res, int t) per inicialitzar el mòdul GSM i comprovar la seva resposta mitjançant comandes AT.
void initModule (String cmd, char * res, int t) {while (1) {Serial.println (cmd); Sèrie1.println (cmd); retard (100); while (Serial1.available ()> 0) {if (Serial1.find (res)) {Serial.println (res); retard (t); tornar; } else {Serial.println ("Error"); }} delay (t); }}
Després d'això, en la funció void setup () , hem inicialitzat la comunicació en sèrie de maquinari i programari, LCD, GPS, mòdul GSM i acceleròmetre.
configuració nul·la () {Serial1.begin (9600); Serial.begin (9600); lcd.begin (16,2); lcd.print ("Alerta d'accident"); lcd.setCursor (0,1); lcd.print ("Sistema"); endarreriment (2000); lcd.clear ();…………………
El procés de calibratge de l’acceleròmetre també es fa al bucle de configuració En això, hem pres algunes mostres i, a continuació, hem trobat els valors mitjans per a l'eix X, l'eix Y i l'eix Z. I emmagatzemeu-los en una variable. A continuació, hem utilitzat aquests valors de mostra per llegir els canvis en l’eix de l’acceleròmetre quan el vehicle s’inclina (accident).
lcd.print ("Callibrating"); lcd.setCursor (0,1); lcd.print ("Acceleromiter"); per a (int i = 0; i
Després d'això, a la funció void loop () , hem llegit els valors de l'eix de l'acceleròmetre i hem fet un càlcul per extreure canvis amb l'ajut de mostres que es prenen a Calibration. Ara bé, si hi ha canvis més o menys definits, Arduino envia un missatge al número predefinit.
bucle buit () {valor int1 = Llegir analògic (x); valor int2 = analogRead (y); valor int3 = analogRead (z); int xValue = xsample-value1; int Valor i = valor-mostra2; int zValue = zsample-value3; Serial.print ("x ="); Serial.println (xValue); Serial.print ("y ="); Serial.println (yValue); Serial.print ("z ="); Serial.println (zValue);…………………
Aquí també hem creat alguna altra funció per a diverses aplicacions com void gpsEvent () per obtenir coordenades GPS, void coordinate2dec () per extreure coordenades de la cadena GPS i convertir-les en valors decimals, void show_coordinate () per mostrar valors sobre el monitor sèrie i LCD i, finalment, el botó Enviar () per enviar SMS d'alerta al número predefinit.
A continuació es mostra el codi complet i el vídeo de demostració, podeu consultar totes les funcions del codi.
