J'ai travaillé sur un projet. J'ai deux croquis. L'un est d'obtenir l'emplacement GPS et l'autre est l'emplacement d'envoi par SMS (module GSM). Je veux combiner les deux croquis.Fusion de deux croquis arduino
croquis GPS:
#include <SoftwareSerial.h>
#include <TinyGPS.h>
//long lat,lon; // create variable for latitude and longitude object
float flat, flon;
SoftwareSerial gpsSerial(4, 3); // create gps sensor connection
TinyGPS gps; // create gps object
void setup(){
Serial.begin(9600); // connect serial
gpsSerial.begin(9600); // connect gps sensor
}
static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
Serial.print('*');
Serial.print(' ');
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(' ');
}
// smartdelay(0);
}
void loop(){
while(gpsSerial.available()){ // check for gps data
if(gps.encode(gpsSerial.read())){ // encode gps data
// gps.get_position(&lat,&lon); // get latitude and longitude
gps.f_get_position(&flat, &flon);
String lat = String(flat,6);
String lon = String(flon,6);
Serial.print(lat);
Serial.print(' ');
Serial.println(lon);
}
}
}
croquis GSM:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(9, 10);
void setup()
{
mySerial.begin(9600); // Setting the baud rate of GSM Module
Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino)
delay(100);
}
int index=0;
long dlat=0,dlong=0;
char st[256],st1[256],st2[256];
void RecieveMessage()
{
mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS
// mySerial.println("cheking");
// mySerial.println(string);
}
void loop()
{
if (Serial.available()>0)
RecieveMessage();
if (mySerial.available()>0)
{
//int st;
st[index++] = mySerial.read();
//Serial.write(st[index-1]);
if(index>=51&&index<=63){
st1[index-51]=st[index-1];
Serial.write(st1[index-51]);
}
if(index>=65&&index<=77){
st2[index-65]=st[index-1];
Serial.write(st2[index-65]);
}
/*if(index==77)
{
int i=0;
mySerial.print(st1);
for(i=0;i<13;i++)
{
if(st1[i]!='.')
dlat=dlat*10+(st1[i]-'0');
if(st2[i]!='.')
dlong=dlong*10+(st2[i]-'0');
//Serial.print(dlat);
}
//Serial.print(dlat);
//Serial.print(" ");
//Serial.print(dlong);
*/
}
}
Je veux fusionner ces deux croquis afin que je puisse envoyer emplacement via croquis GSM et emplacement de réception par croquis GPS. Toute aide sera appréciée.
Merci.
Le GPS va générer une sortie plusieurs fois à toutes les secondes et il ne sera pas possible d'envoyer cela via GSM (car le GSM aura besoin de temps pour envoyer des données) .Vous devriez avoir à donner une certaine limite de temps, c'est-à-dire, supposons qu'il soit limité à dire envoyer les données de localisation toutes les 3 secondes (le GSM peut prendre environ 2 secondes pour régler up) – Billa
'SoftwareSerial' est un peu déprimé que vous devriez éviter de l'utiliser. – Billa
@Billa Je n'envoie pas de données de gsm à gps. J'envoie des données à gsm séparément et gps obtient automatiquement son emplacement. Je veux juste que ces deux codes soient fusionnés en un. –