[/
#include "GSM.h"
#define PIN_ON output_high
#define PIN_OFF output_low
#define RELAY1 PIN_C0
#define RELAY2 PIN_C1
#define PULSADOR1 PIN_C2
#define PULSADOR2 PIN_C3
#define PULSADOR3 PIN_B6
#define PWM_LED PIN_C5
#define LED1 PIN_C6
#define LED2 PIN_C7
#define TEMP1 PIN_B4
#define TEMP2 PIN_C0
#define POWERKEYGSM PIN_C4
#define TEMP_ADCC0 4
#define TEMP_ADCB4 10
//*************************************************************************************************************************************
//--------------------------------------variables globales
//*************************************************************************************************************************************
long lm35, temperature;
float volt_lm35, g_lm35, volt_temp, grados;
char string_g_y[20], string_temp[20];
//*************************************************************************************************************************************
//--------------------------------------FUNCIONES
//*************************************************************************************************************************************
float conver_volt(long adc);
float conver_lm35(float lm35);
float conver_grados(float volt_adc);
void inicializacionSIM900(void)
{
int cont;
delay_ms(1000);
puts("A",SERIAL_SIM900
); //para sincronizar el baudrate del SIM 900 delay_ms(300);
delay_ms(1000);
for(cont=0;cont<5;cont++) // mando varios AT para el autobauding
{
puts("AT",SERIAL_SIM900
); delay_ms(200);
delay_ms(200);
PIN_ON(LED1);
delay_ms(200);
PIN_OFF(LED1);
}
//-----------------------------------seteos de configuracion del SIM900------------------------
puts("AT+CMGF=1\r",SERIAL_SIM900
); // configuro para que trabaje en modo texto y no PDU delay_ms(200);
delay_ms(200);
puts("AT+CNMI=2,2,0,0,0\r",SERIAL_SIM900
); // configuro para que en cuanto llegue un mensaje lo envie el modulo gsm por el puerto serie delay_ms(200);
delay_ms(200);
puts("ATS0=1\r",SERIAL_SIM900
); // configuro para que atienda en el segundo llamado delay_ms(200);
delay_ms(200);
return;
}
void main() {
set_tris_b(0b00001100); //0b00001100
set_tris_c(0b01110001); //SEGUN LA TEORIA RC0-RC3
PIN_OFF(RELAY1);
PIN_OFF(RELAY2);
PIN_OFF(LED1);
PIN_OFF(LED2);
PIN_OFF(POWERKEYGSM); //Enciendo modulo GSM
delay_ms(1200);
PIN_ON(POWERKEYGSM);
inicializacionSIM900(); //Inicializo el SIM900
setup_adc_ports(sAN4|sAN10|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL|ADC_TAD_MUL_0);
setup_wdt(WDT_OFF);
setup_vref(FALSE);
while (true) // bucle infinito
{
set_adc_channel(TEMP_ADCC0);
delay_ms(1);
lm35=read_adc();
set_adc_channel(TEMP_ADCB4);
delay_ms(1);
temperature=read_adc();
//Convertir datos:
volt_lm35=conver_volt(lm35);
g_lm35=conver_lm35(volt_lm35);
volt_temp=conver_volt(temperature);
grados=conver_grados(volt_temp);
if(input(PULSADOR1)==0)
{
PIN_ON(LED1);
while(input(PULSADOR1)==0);
PIN_OFF(LED1);
}
if(input(PULSADOR3)==0)
{
PIN_ON(LED2);
while(input(PULSADOR3)==0);
PIN_OFF(LED2);
}
if(input(PULSADOR2)==0) // Si presiono el boton manda un SMS
{
sprintf(string_g_y
,"T2=%1.1f GRADOS ",g_lm35
); sprintf(string_temp
,"Temp1=%1.1f GRADOS ",grados
); fprintf(SERIAL_SIM900
,"AT+CMGS=\"154048xxx\"\r"); // aca poner el numero de celular que recibe el SMS delay_ms(200);
fprintf(SERIAL_SIM900
," ELECTRO HPN \r"); fputs(string_g_y
,SERIAL_SIM900
); fputs(string_temp
,SERIAL_SIM900
); delay_ms(100);
output_high(LED2);
delay_ms(1000);
output_low(LED2);
}
}
}
float conver_volt(long adc)
{
float volt;
volt=(float)((adc/1024.0)*3.3);
return(volt);
}
float conver_lm35(float lm35)
{
float value;
value=(float)((lm35)/0.01);
return(value);
}
float conver_grados(float volt_adc)
{
float grados;
grados=(float)((volt_adc-0.5)/0.01);
return(grados);
}]
[code=c]