You will never get this to work if you don't take the time to read any datasheet.... do I need an hex inverter? or a max232?
You will never get this to work if you don't take the time to read any datasheet.... do I need an hex inverter? or a max232?
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
don't quite understand your comment.
thanks for your input.
...nor RS232Originally Posted by dimitrin
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
because it does work with rs 232.
thanks again for you help
I got an Ericsson T18 phone, which works with the data cable for AT commands.. Going through the internet I found that it doesn't support Text mode, Only pdu mode available. So can I make it work by using bitmaniac's PDU decoder. And I am going to use PIC16F877A. If I do the necessary changes it should work right......
thanks in advance
aruran
Hello,
I am look out for technical details of Samsung SCH-N356. I also want to make SMS controled relay. Please suggest.
Bye
Hai all,
First of all thank you all for the help rendered. I have successfully made a Ericsson T18 to send SMS using PIC16F877A. I give the PIC using I2C bus some data from a main PIC for my microcontroller project. I have written a dynamic PDU encode routing to handle the dynamic texts sent by the main pic. This was achieved mainly from the help of bitmaniac's PDU encode...
Thank you all
aruran
aruran,
it would be nice if you would share youre code.
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
What is the metod for write a code in 16f628 for read in rs232?
when the telephone send (*elip string, my 16f628 to be one pin at gnd
I just finished my circuit below a PIC to cellphone interface to send text messages..I can succesfully SEND a pre-programmed text message using this code:
Device 16F84A
Declare Xtal = 4
Start:
LOW LED
DelayMS 1000
SerOut2 PORTB.1, 84,["AT+CMGS=",34,"MyNumber",34,13]
DelayMS 1000
SerOut2 PORTB.1, 84,["TEST",13]
DelayMS 1000
SerOut2 PORTB.1, 84,[26]
DelayMS 3000
GOTO Start
I can send an endless "TEST" text messages to "MyNumber" but I can't make it work to read received text messages..
I need a code sample that will READ the received text message and will text back to the sender the word "GOOD"
I don't have the idea how to strip the sender phone number and the sent text message "GOOD" from the example below using SERIN command..
+CMGR: "REC READ","+xx1234567890",,"05/05/26,17:19:23+00"
GOOD
OK
I'd look at this code:
HSerin 5000, Loop, [Wait("UNREAD"), skip 3, STR Caller\12, skip 4, STR GSMTime\17, skip 4, STR GSMbuffer\12]
But I can't "SAY" it using SERIN command using PIC16F84..
Thanks for any info..
Last edited by kasamiko; - 26th May 2005 at 11:25.
Hi
I am very new to PIC's so please excuse some of the comments that I have added to the following code.
I have put this together using data that was available earlier in this post. I have got the SMS sending working great whenever I push a button but I am also wanting an LED to be switched on when the GSM modem receives and SMS containing "SWITCH"
I think I have got everything that I require within the program but I am wondering what commands I should use in order to read the GSMBuffer then if it is true then switch on the LED.
I have added the line just to give an idea of what I'm trying to do:
IF GSMBUFFER = "SWITCH" THEN LED = 1
Here is the code:
' Setup PIC tx and rx serial port
DEFINE OSC 8
DEFINE HSER_TXSTA 20h
DEFINE HSER_RCSTA 90h
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1
'Setup the names that will be used throughout the program for the led and switch
PushButton var PORTB.0 ' Setup the name PushButton to mean PortB input 0
LED VAR PORTB.1 ' Setup the name LED to mean PortB output 1
' SMS receive buffer setup:
GSMBUFFER VAR BYTE[16] '16 is used to tell buffer to store max of 16 characters
Caller VAR BYTE[13] '13 is used to tell buffer to store max of 16 characters
GSMTime VAR BYTE[17] '17 is used to tell buffer to store max of 16 characters
' Set all PortB i/o 1 to be an output and all other i/o as inputs
TRISB = %11111101
Main:
IF PushButton = 0 THEN SMS 'If button is pressed then run the SMS routine below
goto main ' however if the button is not pushed then just go back to the Main
' routine to wait for the button to be pressed
SMS: ' this is the SMS commands routine in order to send an SMS
HSEROUT ["AT" ,13,10] ' send AT to modem followed by a CR and line feed
HSERIN 5000, SMS, [WAIT("OK")] ' now wait for 5secs until OK is received however
' if it is not then goto the SMS routine again
HSEROUT ["AT+CMGF=1" ,13,10]
HSERIN 5000, SMS, [WAIT("OK")]
HSEROUT ["AT+CMGS=+447977578999"]
HSEROUT [13,10]
HSERIN 5000, SMS, [WAIT(">")]
HSEROUT ["BUTTON HAS BEEN PRESSED!"]
HSEROUT [26] ' this is ASCII for Ctrl+Z of which completes SMS sending
HSERIN 15000, SMS, [WAIT("+CMG")] ' then PIC should receive +CMG from modem
HSEROUT [10] 'ascii code for a line feed
goto main
READSMS: 'Use this routine to read first 16 characters of new messages and then
' store them in the GSMBUFFER variable above then you are able to add a line at
' the end in order for an led to be switched on whenever the modem receives the
' correct SMS command such as LED ON or SWITCH etc
HSEROUT ["AT+CMGF=1",13,10] 'Instruct modem to use text mode
HSerout ["AT+CMGL",13,10] 'List new Messages
' Below I Read Caller ID, time and 16 CHARs of Message
' The timeout value in the HSERIN statement is important, it takes some time
' before the phone replies to the AT+CMGL command
' skip works like this: skip 4 (skips 4 characters) - this is a sample of the
' message that would be received after the AT+CMGL command is sent:
' +CMGL: 2,"REC UNREAD","+447977578999" Test
' Please note that I can't seem to receive the time in the reply as in this
' example: (of which the line of code is written for below - so maybe I should
' edit the line of code below in order to miss it - also remember to update
' GSMTime variable above i.e. remove it if your going to adit the line below)
' +CMGR: "REC READ","+xx1234567890",,"05/05/26,17:19:23+00" GOOD
' Loop could be setup as a routine such as:
' Loop:
' List new Messages again - as above (think about it)
' HSerout ["AT+CMGL",13,10]
HSerin 5000,loop,[wait("UNREAD"),skip 3,STR Caller\13,skip 4,STR GSMTime\17,skip 6, STR GSMBUFFER\16\13]
' Basically in the above line, \13 - stores 13 characters and \17 - stores 17 characters etc into
' each of the buffers i.e. Caller & GSMTime etc etc
HSerout ["AT+CMGD=1;+CMGD=2",13,10] 'Intruct modem to delete SMS's from location
' 1 & 2 as this is where any new messages will be stored, so its a good idea to
' delete them after we have processed the SMS command above - please note that
' it would be a good idea to wait for an OK after this command but we can add
' this at a later time
' --- Put your code to output the result here i.e. IF gsmbuffer = (your sms command) then goto
' subroutine etc
IF GSMBUFFER = "SWITCH" THEN LED = 1
Thank you for your time.
Kind Regards,
Royce
On the following code the phone responds ..."REC READ",... if the message was read sometime before. If you have a fresh new message then this becomes UNREAD as you state on your code.
So, why don't you change your code to:
HSerin 5000,loop,[wait("READ"),... since the word READ is present all the time?
Ioannis
' +CMGR: "REC READ","+xx1234567890",,"05/05/26,17:19:23+00" GOOD
' Loop could be setup as a routine such as:
' Loop:
' List new Messages again - as above (think about it)
' HSerout ["AT+CMGL",13,10]
HSerin 5000,loop,[wait("UNREAD"),skip 3,STR Caller\13,skip 4,STR GSMTime\17,skip 6, STR GSMBUFFER\16\13]
Thank you for the info.
I was wondering if you could tell me how I should use the data that is captured within the GSMBuffer i.e. the SMS text as I would like use this to switch on an LED. Should it be something like this:
IF GSMBuffer = Switch on then LED = 1
Thanks in advance.
Kind Regards,
Royce
PBP does not have such string compring capabilities.
You have to make your own subroutine to compare byte to byte the two string array. Like that:
i=0
while i less_than gsmbuffer_length (I cant sen the less character! Why?)
if gsmbuffer[i]=compare_array[i] then
'gsmbuffer[i]=0
i=i+1
else
goto wrong_sms
endif
wend
correct_sms:
'your code here
wrong_sms:
'your code here
You understand that in compare_array you have to put your characters in some other place of the program prior to the above subroutine.
Last edited by Ioannis; - 26th July 2005 at 10:25.
Thanks again but I'm afraid I dont quite understand. Really sorry but would it be possible to be little clearer.
Thanks again.
Kind Regards,
Royce
Hmm, what part you are not understanding?
Ioannis
Sorry.... would it be possible to add comments to each of the following lines:
You have to make your own subroutine to compare byte to byte the two string array. Like that:
i=0
while i less_than gsmbuffer_length (I cant sen the less character! Why?)
if gsmbuffer[i]=compare_array[i] then
'gsmbuffer[i]=0
i=i+1
else
goto wrong_sms
endif
wend
correct_sms:
'your code here
wrong_sms:
'your code here
Could you give me an example using the SMS keyword: "switch on" in order to switch on an LED.
Thanks again.
Regards,
Royce
The commands used in the small piece of code are very elementary. So you have to read the manual because all the answers are in there.
I cannot explain how an If-Then-EndIf statement is syntaxed or how is working. The code I gave you is very very easy and basic I could say.
It is comparing one element of the array gsmbuffer at a time with one element of the other array. If it succeeds then it is moving on to the part of the program labeled:
correct_sms:
'you add your code here
If it does not succeed then it is moving on to the part of the program labeled:
wrong_sms:
'you add your code here
Try to write some code and see what happens. One part at a time...
Ioannis
Thanks Ioannis. I will do my homework.
Kind Regards,
Royce
Hello all,
I have been doing something similar with an Ericsson T68I phone.
I communicated at 1200 buad and use AT command set.
I am NOT trying to send SMS, but DTMF tones. I am getting the phone to dial by using the access keypad AT command (rather than ATD command, which for some reason wouldn't work) and then activating send DTMF tones. Sorry I can't remember what the AT for these are, but what I dis was successful withoput too much trouble. Simple serout at N1200 (without MAX232 chip) was the most successful from a 4MHz 'F84. The T68I is autobaud so will talk at most baud rates above 1200.
Hello all
if I want not send sms But I dial to phone.How to make it.
tsupuntu,
See: This
And read the GSM thread from the beginning.
regards
Ralph
_______________________________________________
There are only 10 types of people:
Those who understand binary, and those who don't ...
_______________________________________________
Hai NavMicro,Originally Posted by NavMicroSystems
Sorry for the delayed response. I was involved in the project in another part..So I couldn't concentrate on the SMS sending part as it is almost finished.
I have finished the PBP coding to send SMS using a Ericsson T10. It uses PDU mode since T10 supports AT command for PDU mode. So help from bitmaniac's PBP file helped me.
I have attached the file.
I also want to develop this to be integrated into a Embedded IP module for my project. I want to know how can I make this SMS sender to send sms when a centrallized MCU gives an interrupt and then the datas such as message, recepient number and so on are fed from that centrallized MCU to the MCU that controlling sending sms.
Some people say that the PBP is not good for interrupt handling, and ASM codes inserted may be of use. Have anybody got any idea....
thanks
aruran
Last edited by aruran; - 16th August 2005 at 16:47.
i've read this thread a few times, but it wont work at all!
nokia 6210 connected with RX to PIC 16f84a port b.1
gnd2gnd
now thats the programm
SerOut2 PORTB.1, 396,["AT", 13, 10]
Pause 1000
SerOut2 PORTB.1, 396,["AT+CMGF=1", 13, 10]
Pause 500
SerOut2 PORTB.1, 396,["AT+CMGS=", 34, "+972544567209", 34, 13, 10]
Pause 500
SerOut2 PORTB.1, 396,["Test-message", 13, 10]
Pause 500
i tryed 8mhz crystal and 12mhz
pic sends some pulses out, but mobile just do nothing
is it a wrong programm or what?
ps, i need simply to send SMS.
i think i missed something important..
Last edited by Airrr; - 1st September 2005 at 01:59.
First of all I would like to say a big HELLO! to all of you.
I was out of this forum for some months and I really like the fact that this topic is of so great interest , while I am back.
SO back to PICs again..
Airrr:
I would advice you to read all the related topics about sending sms with Gsm ,
so to take an idea of how this works.
But to make you start:
A simple way to test if your phone is working ok (making sure you have checked the connections) you can connect it to your PC serial port and try sending AT commands using a terminal program like HyperTerminal for example
(set speed 9600,8,n,1)
OF COURSE YOU HAVE TO USE A RS232 LEVEL CONVERTER as your serial port
works with rs232 level volt (+-12v) and your Nokia ecpects TTL level volt (+-5v).
Second, as reading your code I noticed that you are trying to use NOKIA 6210 in 'text mode' and I am not sure that 6210 supports text mode.
I think it only supports PDU mode but I am not 100% sure.
You have to encode your text sms in PDU format in order to 'feed' it to your phone trough AT commands which is a complex procedure with pic but IT IS possible -please read through the topic to get an idea.
I hope I have helped you a little
AGAIN A BIG HELLO TO ALL OF YOU!
i have made this circuit for interfacing rs232 to nokia
http://pinouts.ru/images/cable_cell2.gif
now im starting huper terminal, 9600, com1, 8,n,1, connected xx:xx:xx and
i can't type anything, pressing on keys don't display nothing, but schematic works fine with logo manager as f-bus cable.
? how it could be? logo manager works, does it meen cable is OK?
after few hours i have sucesfully send msg from hyper terminal. now some other questions
1: is it so necessary to use pic on mbus? if so, my project has to be double pic'ed
2: finaly project uses a 9210 mobile, but seems like communicator dont recognize pic on mbus (debug led on pic remains off all the time)? 6210 works, but now i need to do the same with 9210.. any suggestions?
Last edited by Airrr; - 2nd September 2005 at 05:03.
I have the same problem with hyperTerm, how were you able to send AT cmds ?Originally Posted by Airrr
Thanks
Lotondo
Originally Posted by Lotondo
If you follow the thread from the top, you will find out how. Anyways, just type the commnds that are relative to the phone being used: AT+CMSG etc...
Look the manual of your phone and then type them in your terminal. You can also set your modem to ASCII and not PDU format which is more convinient.
Ioannis
Lotondo: like on the schematic abowe, u have to use pic connected to m-bus and if its working good, phone will connect to terminal...
I succesfully done it using this code..Originally Posted by Airrr
Device 16F84A
Declare Xtal = 4
Symbol BAUD = 84 ' 9600,8,N,1(True,driven)
SYMBOL LED = PORTB.2 ' Assign PortB.2 for Status LED
Symbol TX = PORTB.1 ' TX to Phone
Symbol RX = PORTA.0 ' RX from Phone
Start:
SerOut2 TX, BAUD,["AT",13]
DelayMS 500
SerOut2 TX, BAUD, ["AT+CMGF=1",13] ' Use TXT Mode
LOW LED ' Turn OFF Status LED
DelayMS 1000 ' Pause for 1 second
HIGH LED ' Turn ON Status LED
SerOut2 TX, BAUD,["AT+CMGS=",34,"Recipient Phone Number",34,13]' Prepare the recipient Phone Number
DelayMS 1000 ' Pause for 1 Second
SerOut2 TX, BAUD,["TEST Message!!",13] ' The message to be sent
DelayMS 1000 ' Pause for 1 second
SerOut2 TX, BAUD,[26] ' Terminate message with Control+Z (26)
LOW LED ' Turn OFF Status LED
DelayMS 1000
Goto Start ' Repeat
End
What i did is some sort of SMS bomber...look for the circuit I posted before to make this code works..
Notice that all it does is send..TX. I dont process any message I received so RX was not used.
BR
Last edited by kasamiko; - 5th September 2005 at 02:35.
Kasamiko,
thanks for sharing your project.
I built it according to your above schema but the test I did had no success.
The pics receive 2.8 V. from the phone, is that enough ?
IC2 has your software with my data (phone nr. + text)
IC1 has the the software found at http://www.atrox.at/datacable/dlr3/dlr1.hex
LED1 is always flashing
LED2 is just flashing once.
Could you pls. tell me the pic config (osc, wdt, pwrt) ?
What's the purpose of diode zener (D5 2.7) ?
Thanks your or anyone else support.
Lotondo
That circuit is drawing power from the phone..2.8VDC is enough since this is the maximum the phone can supply. Please remove that zener Diode that was left when I was experimenting powering it with external power supply.
I think you have the problem with the HEX you used for the DLR-3P part since LED1 will light steadily. You used the wrong HEX! this is the link for the 8 Mhz version..http://www.atrox.at/datacable/dlr3/dlr2.hex
LED2 will continously blink meaning it is sending SMS.
Kasamiko,
thanks for answering.
I did what you said.
Now the LED1 is always on and not flashing like before. This should be ok.
Led 2 is just flashing once cause I turn the loop off.
Till here should be everything correct but I dont receive any sms on the
other cellphone.
Testing my phone (7110) with a DLR3P cable (Nokia cable) and hyperterm I noticed that it worked only at 19200 baud. I knew that it should also work with a lower baud but it did not. Maybe it's the DLR3P cable that 'force' it works at 19200.
Btw here is "my" code pls have a look.
Thanks again for any further help.
Lotondo
;Device 16F84A
DEFINE OSC 4
BAUD VAR BYTE
LED VAR PORTB.2 ' Assign PortB.2 for Status LED
TX VAR PORTB.1 ' TX to Phone
RX VAR PORTA.0 ' RX from Phone
BAUD = 84 ' 9600,8,N,1(True,driven)
Start:
SerOut2 TX, BAUD,["AT",13]
Pause 500
SerOut2 TX, BAUD, ["AT+CMGF=1",13] ' Use TXT Mode
Low LED ' Turn OFF Status LED
Pause 1000 ' Pause for 1 second
High LED ' Turn ON Status LED
SerOut2 TX, BAUD,["AT+CMGS=",34,"0761111111",34,13]' Prepare the recipient Phone Number
Pause 1000 ' Pause for 1 Second
SerOut2 TX, BAUD,["TEST Message!!",13] ' The message to be sent
Pause 1000 ' Pause for 1 second
SerOut2 TX, BAUD,[26] ' Terminate message with Control+Z (26)
Low LED ' Turn OFF Status LED
Pause 1000
;GoTo Start ' Repeat
End
Hi!
All phones default on power up to Autobaud mode. The first connection defines the speed from that moment on upt to the next power up.
This is over ruled only if you define explicitly and store to the phone's memory the speed to use.
So, in your case may be you did a connection with the mobile at 19200 with the Hyperterminal and then without reseting the mobile, did you connected to the PIC circuit? Are you sure the mobile does autobaud at power up?
Ioannis
Hi!
All phones default on power up to Autobaud mode. The first connection defines the speed from that moment on upt to the next power up.
This is over ruled only if you define explicitly and store to the phone's memory the speed to use.
So, in your case may be you did a connection with the mobile at 19200 with the Hyperterminal and then without reseting the mobile, did you connected to the PIC circuit? Are you sure the mobile does autobaud at power up? If it does then you should send an AT command without any parameters to sync the mobile to the speed you set in the beginning of your program.
Ioannis
Hello,
as far as I know, I read again the manual, it's not possible to set baud speed to be used through the port. The only set possible for baud speed is if you want to connect to the internet (wap). I tried in any case to set it at 9600 but it did not work.
I checked the at command manual and i did the following check with the cable and hyperterm (19200,8,N,1):
AT+CBST?
> +CBST:0,0,1 the phone is in autobauding
then i typed:
AT+CBST 7,0,1
AT+CBST?
> +CBST:7,0,1 the phone is at 9600 baud
Great, I thought, now i change the hyperterm setting from 19200 to 9600 and let's see !!
Nothing, exactly like before, at + enter, no answer back
I reset the hyperterm to 19200 and i type
AT+CBST?
> +CBST:7,0,1 the phone is still at 9600 baud
Seen that the phone is in autobauding and it's not possible to set via menu
I'll try to add to the code this:
>>CUT
BAUD = 84 ' 9600,8,N,1(True,driven)
Start:
SerOut2 TX, BAUD, ["AT+CBST=7,0,1",13] ' <-------------------------------
SerOut2 TX, BAUD,["AT",13]
Pause 500
SerOut2 TX, BAUD, ["AT+CMGF=1",13] ' Use TXT Mode
Low LED ' Turn OFF Status LED
>>CUT
I have some doubts but I will try
What do you think you guys ??
Bye
Last edited by Lotondo; - 6th September 2005 at 19:48.
Hi,
i added this line
SerOut2 TX, BAUD, ["AT+CBST=7,0,1",13]
but no success.
I'm running out of ideas.
Thanks for yr help
Lotondo
Tried with Sony Ericsson T610
it works just GREAT !!!!
I dont know what's wrong with damn Nokia 7110 !!
Any help will be appreciated
Thanks
Lotondo
Why not read any manuals about the specified phone?
With Wavecom module, 6210 and 6310 I had no problem with any commands. May be your phone is a little different.
Ioannis
Guys, I finally successed !
The Nokia 7110 did work too !
Here what I did:
The 7110 boots and sets itself in autobaud mode,
even i forced it to work at 9600 baud with
AT+CBST= 7,0,1
it did not send out any sms. (see code previous msgs)
Now I did not want to waist more time I already did,
so I reprogrammed the 16f84a and I change the
line:
BAUD = 84 ' 9600,8,N,1(True,driven)
with this one
BAUD = 32 ' 19200,8,N,1(True,driven)
and it worked !
According to what I read here and in some manuals
the 16f84a with 4Mhz quarz should not work properly
with that baud speed, but it did.
Now I'll get more time to study some code
Thanks again
Lotondo
Bookmarks