sim808 para esp

develop
Gerardo 2023-03-09 13:01:14 +01:00
parent 0c5ac40316
commit ca5df62d32
6 changed files with 164 additions and 22 deletions

View File

@ -0,0 +1,45 @@
//librerias propias--------------------
#include <GloboSonda.h>
#define PIN_POWERKEY_SIM808 48
#define PIN_RX_SIM808 4
#define PIN_TX_SIM808 5
Sim808Manager sim808;
SoftwareSerial sserial=SoftwareSerial(PIN_RX_SIM808, PIN_TX_SIM808,false);
char buf[1024];
void setup() {
Serial.begin(9600);
Serial.println("Iniciando");
if(!sim808.inicia(&sserial, PIN_POWERKEY_SIM808, 9600))
{
Serial.println("Sim808 join network error");
}
Serial.println("GPS iniciado...");
DataGPSSimManager* coor=sim808.GetGPSValid();
Serial.println("gps iniciado...");
}
void loop(){
char strFecha[24];
char precision[32];
DataGPSSimManager* coor=sim808.GetGPS();
coor->getFecha(strFecha);
Serial.print(strFecha);
Serial.print(" lon: ");
Serial.print(coor->lon);
Serial.print("lat: ");
Serial.println(coor->lat);
Serial.print(" altitud: ");
Serial.print(coor->altitude);
Serial.print("velocidad: ");
Serial.print(coor->speed_kmh);
Serial.print("precision: ");
Serial.print(coor->getPrecision(precision));
delay(20000);
}

View File

@ -0,0 +1,40 @@
#include "stdio.h"
#include <Wire.h>
#include <GloboSonda.h>
#define PIN_DHT22 16
#define TIMER_LOG 3000
//contect d1 -> scl d2->sda
SensorAcelerometro acele;
unsigned long Timer=0;
#define SDA_PIN 4
#define SCL_PIN 5
const int16_t I2C_MASTER = 0x42;
void setup() {
Serial.begin(9600);
Wire.begin(SDA_PIN, SCL_PIN);
acele.Init(&Wire);
}
void loop() {
if(!Utiles::isTime(&Timer,TIMER_LOG))
return;
Serial.print("aceleracion x: ");
Serial.print(acele.GetAx());
Serial.print(" aceleracion y: ");
Serial.print(acele.GetAy());
Serial.print(" aceleracion z: ");
Serial.println(acele.GetAz());
Serial.print("mag x: ");
Serial.print(acele.GetMx());
Serial.print(" mag y: ");
Serial.print(acele.GetMy());
Serial.print(" mag z: ");
Serial.println(acele.GetMz());
}

View File

@ -13,7 +13,7 @@ void setup() {
void loop() { void loop() {
if(!Utiles::isTime(&Timer,TIMER_LOG)) if(!Utiles::isTime(&Timer,(unsigned long)TIMER_LOG))
return; return;
Serial.print("Temperatura: "); Serial.print("Temperatura: ");
Serial.println(dht.GetT()); Serial.println(dht.GetT());

View File

@ -63,11 +63,25 @@ Sim808Manager::Sim808Manager()
simIniciada = false; simIniciada = false;
gpsIniciada = false; gpsIniciada = false;
AjusteHora = 1; AjusteHora = 1;
pSSerial = 0;
pSerial = 0;
}
bool Sim808Manager::inicia(SoftwareSerial* mySerial, int powerKey = -1, int baud = 0)
{
pSSerial = mySerial;
pk = powerKey;
if (pk >= 0)
pinMode(pk, OUTPUT);
if (baud)
return checkeaConfig(baud);
return checkea();
/* if (!CheckAt())
enciende();
return CheckAt();*/
} }
bool Sim808Manager::inicia(HardwareSerial *mySerial, int powerKey = -1, int baud=0) bool Sim808Manager::inicia(HardwareSerial *mySerial, int powerKey = -1, int baud=0)
{ {
pSeria = mySerial; pSerial = mySerial;
pk = powerKey; pk = powerKey;
if (pk >= 0) if (pk >= 0)
pinMode(pk, OUTPUT); pinMode(pk, OUTPUT);
@ -214,16 +228,35 @@ char* Sim808Manager::recibe()
char *buff = buffer; char *buff = buffer;
char *buf = buffer; char *buf = buffer;
int len = 0; int len = 0;
while (millis() - start < 100) if (pSerial)
{ {
while (pSeria->available() > 0 && len< (LEN_BUFFER_DATA_SIMMANAGER-3)) while (millis() - start < 100)
{ {
start = millis();
d = pSeria->read(); while (pSerial->available() > 0 && len < (LEN_BUFFER_DATA_SIMMANAGER - 3))
*buf = d; {
buf++; start = millis();
len++; d = pSerial->read();
} *buf = d;
buf++;
len++;
}
}
}
else
{
while (millis() - start < 100)
{
while (pSSerial->available() > 0 && len < (LEN_BUFFER_DATA_SIMMANAGER - 3))
{
start = millis();
d = pSSerial->read();
*buf = d;
buf++;
len++;
}
}
} }
*buf = 0; *buf = 0;
@ -238,16 +271,29 @@ char* Sim808Manager::recibe()
void Sim808Manager::envia(const char* dat) void Sim808Manager::envia(const char* dat)
{ {
pSeria->println(dat); if(pSerial)
pSerial->println(dat);
else
pSSerial->println(dat);
//Utiles::printCOM(dat); //Utiles::printCOM(dat);
} }
void Sim808Manager::enviaSolo(const char* dat, int ndata) void Sim808Manager::enviaSolo(const char* dat, int ndata)
{ {
for ( int i = 0; i < ndata; i++) if (pSerial)
{ {
pSeria->write(dat[i]); for (int i = 0; i < ndata; i++)
} {
pSerial->write(dat[i]);
}
}
else
{
for (int i = 0; i < ndata; i++)
{
pSSerial->write(dat[i]);
}
}
//Utiles::printCOM(dat); //Utiles::printCOM(dat);
} }
bool Sim808Manager::CheckAt() bool Sim808Manager::CheckAt()
@ -515,7 +561,10 @@ bool Sim808Manager::configBaud(int baud)
Utiles::printCOM("configBaud"); Utiles::printCOM("configBaud");
pSeria->begin(baud); if (pSerial)
pSerial->begin(baud);
else
pSSerial->begin(baud);
Utiles::printCOM("configurado p serial"); Utiles::printCOM("configurado p serial");
//envia("AT+GMR"); //envia("AT+GMR");
//reciveOK(); //reciveOK();
@ -530,7 +579,10 @@ bool Sim808Manager::configBaud(int baud)
uint32_t baudTest = baudSIM808[i]; uint32_t baudTest = baudSIM808[i];
sprintf(auxbuf, "prueba: %u", baudTest ); sprintf(auxbuf, "prueba: %u", baudTest );
Utiles::printCOM(auxbuf); Utiles::printCOM(auxbuf);
pSeria->begin(baudTest); if (pSerial)
pSerial->begin(baud);
else
pSSerial->begin(baud);
if (CheckAt()) if (CheckAt())
{ {
Utiles::printCOM("Conseguido"); Utiles::printCOM("Conseguido");
@ -541,7 +593,10 @@ bool Sim808Manager::configBaud(int baud)
} }
Utiles::printCOM("fail"); Utiles::printCOM("fail");
} }
pSeria->begin(baud); if (pSerial)
pSerial->begin(baud);
else
pSSerial->begin(baud);
return CheckAt(); return CheckAt();
} }

View File

@ -2,6 +2,7 @@
#define Sim808Manager_define 1 #define Sim808Manager_define 1
#include "Utiles.h" #include "Utiles.h"
#include <SoftwareSerial.h>
#define LEN_BUFFER_DATA_SIMMANAGER 1024 #define LEN_BUFFER_DATA_SIMMANAGER 1024
enum ProtocolSimManager { enum ProtocolSimManager {
@ -46,11 +47,12 @@ class Sim808Manager
bool gpsIniciada; bool gpsIniciada;
int pk; int pk;
DataGPSSimManager dataGPS; DataGPSSimManager dataGPS;
HardwareSerial *pSeria; HardwareSerial *pSerial;
SoftwareSerial* pSSerial;
int AjusteHora; int AjusteHora;
public: public:
Sim808Manager(); Sim808Manager();
bool inicia(SoftwareSerial* mySerial, int powerKey, int baud);//int powerKey = -1, int baud=0
bool inicia(HardwareSerial *mySerial, int powerKey, int baud);//int powerKey = -1, int baud=0 bool inicia(HardwareSerial *mySerial, int powerKey, int baud);//int powerKey = -1, int baud=0
bool EnviaSMS(char* tlf, char *sms); bool EnviaSMS(char* tlf, char *sms);