Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

NEED HELP! Sending sms using gm862 and pic16f887 with mikroc

Status
Not open for further replies.

Computer engineer

Newbie level 3
Joined
Apr 9, 2012
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,329
Hello,
I am new to mikroc and i have a project to detect intrusion and fire and send alarm through gsm to any number i did that but for temperature sensor if it is higher than a 28 for example it sends an alarm message but whenever it is at this temperature or above it keeps sending the message forever many times i need it to detect high temperature and send the message once but it keeps sending !!!
 

Please for more info!
Where is your code? How we can help you without it?

P.s.
Telit gm862 modem have integrated python and you can program this job without PIC
 

i am using a temperature sensor that use one wire communication so i need to connect it to a microcontroller and the temperature sensor read temperature in a do loop and inside i have an if statement to check if temperature is greater than 28 it sends a message using the gsm to the user but as temperature is on the range of the if statement it keeps sending and i need it to check temperature and send the message once and if it check again and temperature is still on that range i dont want to send again , i try to break the loop but it doesnt work >>> am not allowed to put the code in the internet

---------- Post added at 23:00 ---------- Previous post was at 22:55 ----------

i use this code from mikroe website for reading temperature

/*
program to show temperature in degrees on the LCD using digital thermometer (DS1820)
and PIC16F887
*/

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

const unsigned short TEMP_RESOLUTION = 9;
char *text = "000.0000";
unsigned temp;

void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;

// check if temperature is negative
if (temp2write & 0x8000) {
text[0] = '-';
temp2write = ~temp2write + 1;
}
// extract temp_whole
temp_whole = temp2write >> RES_SHIFT ;

// convert temp_whole to characters
if (temp_whole/100)
text[0] = temp_whole/100 + 48;
else
text[0] = '0';

text[1] = (temp_whole/10)%10 + 48; // Extract tens digit
text[2] = temp_whole%10 + 48; // Extract ones digit

// extract temp_fraction and convert it to unsigned int
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;

// convert temp_fraction to characters
text[4] = temp_fraction/1000 + 48; // Extract thousands digit
text[5] = (temp_fraction/100)%10 + 48; // Extract hundreds digit
text[6] = (temp_fraction/10)%10 + 48; // Extract tens digit
text[7] = temp_fraction%10 + 48; // Extract ones digit

// Display temperature on LCD
Lcd_Out(2, 5, text);
}

void main() {
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
C1ON_bit = 0; // Disable comparators
C2ON_bit = 0;

Lcd_Init(); // Initialize LCD
Lcd_Cmd(_LCD_CLEAR); // Clear LCD
Lcd_Cmd(_LCD_CURSOR_OFF); // Turn the cursor off
Lcd_Out(1, 1, " Temperature: ");

// Print degree character, 'C' for Centigrades
Lcd_Chr(2,13,223); // different LCD displays have different char code for degree
// if you see greek alpha letter try typing 178 instead of 223

Lcd_Chr(2,14,'C');

//--- main loop
do {
//--- perform temperature reading
Ow_Reset(&PORTE, 2); // Onewire reset signal
Ow_Write(&PORTE, 2, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTE, 2, 0x44); // Issue command CONVERT_T
Delay_us(120);
Ow_Reset(&PORTE, 2);
Ow_Write(&PORTE, 2, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTE, 2, 0xBE); // Issue command READ_SCRATCHPAD
temp = Ow_Read(&PORTE, 2);
temp = (Ow_Read(&PORTE, 2) << 8) + temp;

//--- Format and display result on Lcd
Display_Temperature(temp);
Delay_ms(500);
} while (1);
}

i just add after display_temperature an if statement if temperature is greater than 28 the i add at commands to send the sms
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top