![]() |
|
#1
|
||||
|
||||
|
Hi!
I am trying a project of remote control (SMS) using 16f628 connected to an Ericsson T10 mobile phone. My problem is with the serial communication with the phone I have tried everyting from software Serou/Serin to HSERIN/HDEROUT using build-in f628 USART. Although Sending AT commands is ok receiving the reply from the phone is very difficult. I think the phone response is too uick for picbasic to receive the stirng. What is your opinion. Is it possible from PBP Pro to cath-up the receiving data from the mobile? (Using 9600,8,n,1) with no rs232-drivers - with inverted/noninverted modes -the same problem Any ideas? P.S: I have developed a PDU decoded with the pic. If it works properly I may public the code Thank you all Pic-maniacs! )
|
|
#2
|
|||
|
|||
|
It is difficult to use Ericsson try to use Nokia Phones..
try to visit this site maybe it can help you.. www.embedtronics.com |
|
#3
|
|||
|
|||
|
Hi I have had the same problem, mobiles are sometimes to fast
I use the GSM engine TC 35 from siemens they can run Normaly text but run to fast for a pic too. so put in a larger crystal (8mhz) set up your programmer to HS if your settings is 9600 chose 2400 baud because at 8 MHZ it goes to faster I use serin and a timeout seqenze so i can find the end of the message If your modem can deal with slower speed auto matically try to send some AT AT at a lower speed 1200 Baud You won't fell the differnce since SMS messages are so short. Best regards Mikkel Holm I |
|
#4
|
|||
|
|||
|
I may help you but please give some more details, as what do you expect to receive from the phone and what do you receive?
Most of the times is a matter of sync problem. Ioannis |
|
#5
|
||||
|
||||
|
I have tried it using a NOKIA Phone and it works fine.
The Phone is connected to the HW-USART via MAX232 Baudrate: 9600 8N1 You need a clock spped of minimum 8MHz (I'm using a 12MHz resonator) ------------------------------------- DEFINE OSC 12 DEFINE HSER_TXSTA 20h DEFINE HSER_RCSTA 90h DEFINE HSER_BAUD 9600 DEFINE HSER_CLROERR 1 GSMBUFFER VAR BYTE[16] Caller VAR BYTE[13] GSMTime VAR BYTE[17] 'Send SMS Test-Message HSerout ["ATZ",13,10] Pause 1000 HSerout ["AT+CMGF=1",13,10] 'Set Text Mode Pause 500 HSerout ["AT+CMGS=",34,"+491232456789",34,",129",13,10] Pause 500 HSerout ["Test-Message",10,13] HSerout [26] Pause 500 ' Check for new incomming Messages HSerout ["ATZ",13,10] Pause 1000 HSerout ["AT+CMGF=1",13,10] Pause 1000 Loop: 'List new Messages HSerout ["AT+CMGL",13,10] ' 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 HSerin 5000,loop,[wait("UNREAD"),skip 3,STR Caller\13,skip 4,STR GSMTime\17,skip 6, STR GSMBUFFER\16\13] ' --- Put your code to output the result here ' i.e. LCDOUT . . . . Goto Loop: ------------------------------------------------- There are certainly better ways to do the job, this was just a quick test and it works |
|
#6
|
||||
|
||||
|
NavMicroSystems thanks!
I think I will go for Nokia phone as it would be better to handle! Anyway does al Nokia supports Text mode or only PDU format? P.S I have a PDU decode routine available -as soon as I will try it out I will make the code available.
|
|
#7
|
||||
|
||||
|
Quote:
As far as I know do all NOKIA phones with embedded Modem support the text mode. I have successfully tested it on 62xx and 63xx series. The TEXT mode is easier to handle than PDU mode and it certainly saves some code space. anyway: I am interested in your PDU encoding / decoding routines. rgds |
|
#8
|
|||
|
|||
|
Hi people,
I had implemented an interface with Ericsson and a 16F628 that worked fine. I used a T65 model and pin 4 on the RS232 connector has to be driven high for the phone to accept and issue responces. For other models this can be different. Appart from pin 4, I used 3 more pins, Ground, TX and RX. I used PDU mode due to the Ericsson and the fact that, any phone can be interfaced with virtually only hardware modifications. I sample of my code is shown below: @ DEVICE pic16F628, HS_OSC ' ---- High Speed Oscilator @ DEVICE pic16F628, WDT_OFF ' ---- Watchdog Timer=OFF @ DEVICE pic16F628, BOD_ON ' ---- Brown-Out Detect @ DEVICE pic16F628, LVP_OFF ' ---- Low-Voltage Programming=OFF @ DEVICE pic16F628, MCLR_OFF ' ---- Reset Pin=Internal @ DEVICE pic16F628, PWRT_ON ' ---- Power-On Timer=Disabled @ DEVICE pic16F628, CPD_OFF ' Data Memory Code Protect ' Set to CPD_OFF for Development Copy @ DEVICE pic16F628, PROTECT_OFF ' Program Code Protection INCLUDE "modedefs.bas" ' ******* Definitions ******* ' ------------------------------ DEFINE OSC 16 ' Define clock Oscillator Frequency at 16Mhz DEFINE HSER_RCSTA 90H ' Enable Hardware USART receive DEFINE HSER_TXSTA 24H ' Set Hardware USART parameters DEFINE HSER_BAUD 9600 ' Set baud rate to 9600 define HSER_CLROERR 1 CMCON=%00000111 ' Make PortA digital ' ****** Initialise PORTs ****** '---------------------------------- TRISA = %11110000 'Set PORTA status (Low byte=Output, for LEDs) TRISB = %11100010 'Set PORTB status PORTA = %00000000 ' Initial state of PORT A PORTB = %00000000 ' Initial state of PORT B ' ****** Variables ****** '--------------------------- TXD VAR PORTA.0 ' Phone not responding RXD VAR PORTA.1 ' Transmit to Phone error VAR PORTA.2 ' Receive from Phone deb var PORTA.3 ' Debugging led relay0 VAR PORTB.3 ' First Relay relay1 VAR PORTB.4 ' Second Relay CALLER var byte[8] ' Callers ID Array INSMS VAR BYTE[8] ' Incoming SMS message Array cr con 13 ' Carriage Return character lf con 10 ' Line Feed character j var byte goto start ' Jump to Main Program ' ****** SUBROUTINE AREA ****** ' ------------------------------- meminit: ' Instract Phone to use it's own memory for storage and SMS manipulations TXD = 1 ' Tx LED=ON HSerout ["AT+CPMS=",34,"ME",34,44,34,"ME",34,44,34] HSerout ["ME",34,cr] ' Command AT+CPMS="ME","ME","ME" Pause 600 TXD = 0 ' TX LED=OFF return Some other ROUTINES reside here....... ' ****** MAIN PROGRAM AREA ****** ' ---------------------------------- Start: PAUSE 1000 TXD = 1 ' Tx LED=ON HSerout ["at",cr] ' <----- Check for Phone presence RXD = 1 ' Rx LED=ON HSerin 400,nophone,[wait ("OK")] Pause 500 TXD = 0 : RXD = 0 ' Tx & Rx LEDs=OFF TXD = 1 hserout ["AT+CMGF=0",cr] ' <----- Initiate PDU Format pause 400 ' Not needed for Ericsson Phones ' hserout ["ATE0",cr] ' <----- Turn Echo OFF ' pause 200 TXD = 0 Gosub meminit ' <----- Initialise Phone's SMS memory TXD = 1 hserout ["AT+CSAS",cr] ' <----- SAVE SETTINGS PAUSE 400 TXD = 0 ' ++++ Read from Phone ++++ ' ------------------------- GOSUB meminit pause 3000 TXD = 1 HSerout ["AT+CMGL=0",cr] ' <----- Read Received and Unread Incoming messages. TXD = 0 pause 2 RXD = 1 Hserin 800, msg_old , [wait ("+CMGL:")] ' If no +CMGL then no new SMS was read hserin [skip 36, str caller\8 , skip 20, str insms \8] RXD = 0 'GOSUB eepwrite gosub meminit ' <----- Initialise Phone's SMS memory hserout ["AT+CMGD=1",cr] ' <----- Delete the "read message" (First SMS) pause 200 I do not decode the PDU but I use it ready made All the messages were sent and read from phone via HyperTerminal. The resulting PDU coded message was used. an example is shown below.++++ An Unrecognised command was received ++++ ' ---------------------------------------------- PAUSE 400 GOSUB meminit TXD = 1 : deb = 1 : PAUSE 500 HSerout ["at+cmgs=33",cr] ' Intraction to Phone to send SMS in PDU mode Pause 500 ' "Unrecognised Command" Message HSerout ["0011000B915397490185F80000AA1455B7BC3C7E9FDDE97999 0C1ABEDBEDB09BEC02",26,cr,lf] ' PDU message of 33 bytes. I hope that I helped a bit Regards Kypros V. P.S. If you developed a PDU decoding code I woould appriciate if you share it. |
|
#9
|
||||
|
||||
|
hi,
is there any AT COMMAND to check the time of a nokia 6210. thanks, brenda |
|
#10
|
||||
|
||||
|
Hi Brenda,
unfortunately there is no such AT-command. If your intention is to set an RTC on your PIC-board connected to the Phone you could do the following: as soon as you have received a new SMS-message write your RTC-time to some variables. now you have got plenty of time to decode the SMS-message. The message header contains the time it was delivered by the server. comparing this to your RTCs time gives you the offset you need to correct the RTC. This is certainly not perfect in terms of accuracy, but far better (+/- 1 min) than the long term accuracy of an RTC with a non-compensated clock. rgds. |
|
#11
|
||||
|
||||
|
thanks! That was a good idea which I didn't think off. I'll try it today.
regards, |
|
#12
|
||||
|
||||
|
finally here is the forum linkfor the pdu encoding.decoding routine for anyone that is interested
http://www.picbasic.co.uk/forum/show...=&threadid=305 |
|
#13
|
|||
|
|||
|
Many many thanks bitmaniac.
Regards Kypros |
|
#14
|
||||
|
||||
|
Thanks bitmaniac !
I'll give it a try this weekend. rgds |
|
#15
|
||||
|
||||
|
Anybody knows at command for Flash SMS.. i.e.. recipient will recieve tha sms direct to screen without opening it.
Thankx! Brenda |
|
#16
|
|||
|
|||
|
Hi brenda,
There is no AT command for this. You have to use PDU mode in order to send FLASH SMS. First you must undertand how PDU works, then you should know that this function is not supported by all phones. Try http://www.traud.de/gsm/ and http://www.dreamfabric.com/sms/ for more information on Flash messaging and PDU mode. Regards Kypros |
|
#17
|
||||
|
||||
|
hi kypros,
thanks for the info. I think I have to study Pdu format as what you and everybody recommend. Nice site!!! thanks again! brenda |
|
#18
|
||||
|
||||
|
Hi kyprus and everybody,
Well, Its really hard to understand PDU format but I manage to understand it. Now I can send a Flash SMS. Cheers!!!! I found a nice PDU converter by Peter Sandstrom. http://www.spaceorbit.net/peter/proj...rk1/index.html Another question: How about sending Picture message? Regards, brenda |
|
#19
|
|||
|
|||
|
I have tried sending a SMS on a nokia 6210 with a 16f84A ( only micro I had at the time) the osc was only at 4MHz. As I was only sending AT commands I thought it would be ok. The sequence seems to hang before the SMS is completed. Has anyone tried this with a 16f84a at 4MHz?
|
|
#20
|
|||
|
|||
|
Hi Darrenmac,
how do you determine tha the sequence hangs? I sugest that you send a simple AT command and capture the answer as a first step. In my code example as published is: HSerout ["at",cr] ' <----- Check for Phone presence HSerin 400,nophone,[wait ("OK")] Pause 500 Just convert it to SEROUT and SERIN commands since 16F84 does not have a hardware USART. In the above example, a sent an AT command followed by a Carriage Return character and then waited for 400 ms for the phone to respond with an “OK”. If within the 400 ms there is no answer (meaning that the phone does not respond) then program execution would continue at label “nophone” where I use a small code to indicate phone absence. Further to the above, I suggest you test communication at various speeds, baud rates. Try 9600 which is the standard and on unsuccessful results move down to lower speeds. You can also check your cable connection or the levels on your RS232 interface. Also check if you need to use True or Inverted mode in your SEROUT lines. I haven used the 16F84 but I cannot see any reason why it should not work ok. Regards Kypros |
|
#21
|
|||
|
|||
|
Thanks for the advice Kypros, I found the problem to be the lack of a comma. I found the program to be hanging by add in a couple of leds and some toggle commands between at commands.
I used the debug command instead of the serout as I could not get the serout to work properly for some strange reason. |
|
#22
|
|||
|
|||
|
Hi.
Where can I find the Nokia protocol? I can't understand what are the AT commands for? Where can I find a comprehensive info about the commands like: AT AT+CMGF=1 AT+CMGL ATZ AT+CMGS etc. I would like to understand the NavMicroSystems's program, but I can't without the protocol. Please give me some usefull links, bacause I would also like to control my PIC with a SMS. Thanks |
|
#23
|
||||
|
||||
|
GOOGLE:
NOKIA AT COMMANDS and you will find all you need. rgds. |
|
#24
|
|||
|
|||
|
Hi NavMicroSystems
Thanx for the point. I still can’t understand some of your ideas, therefore I rewrote your program in a way that I think it should be. I wrote my questions like comments next to the lines which I can’t get. So could you please take a look and answer the questions. And do you think that this program could be used with all Nokia phones with embedded modems, or it’s for the 62xx series only? Regards DEFINE OSC 20 DEFINE HSER_TXSTA 24h DEFINE HSER_RCSTA 90h DEFINE HSER_BAUD 115200 DEFINE HSER_CLROERR 1 GSMbuffer var Byte [12] Caller var Byte [12] GSMtime var Byte [17] ‘Check the connection between the phone and PIC works. Should ‘give OK. Instead you’ve used ATZ, why? Hserout [“AT”, 13, 10] Pause 1000 HSerout ["AT+CMGF=1", 13, 10] 'Set Text Mode. Answer: OK Pause 500 Hserout [“AT+CMGS=”, 34, “+359888123456”, 34, 13, 10] ‘Answer: > ‘Why have you put “,129” in addition. I think it’s not nessesary. Pause 500 Hserout [“Test-message”, 13, 10] ‘Terminate the SMS by Control+Z ‘Here you send ASCII 26 => SUB. Is it equal with CTRL+Z? Hserout [26] ‘Answer: +CMGS: 125 - the ord. number of the SMS (0-‘255) Pause 500 ' Check for new incomming Messages HSerout ["AT", 13, 10] ‘Check the connection Pause 1000 HSerout ["AT+CMGF=1", 13, 10] Pause 1000 Loop: ‘list new unread messages Hserout [“AT+CMGL=”, 34, “REC UNREAD”, 34, 13, 10] ‘Optionally: "REC READ", "ALL" ‘Or it must be HSerout ["AT+CMGL",13,10] ? ‘Answer in 3 lines should look like this: ‘+CMGL: 1,"REC UNREAD","+359888123456",,"04/07/21,08:03:05-00" ‘Test-message ‘OK HSerin 5000, Loop, [Wait("UNREAD"), skip 3, STR Caller\12, skip 4, STR GSMTime\17, skip 4, STR GSMbuffer\12] ‘You ‘ve written skip 6 before STR GSMuffer\12 but I think it ‘should 'be skip 4? Then you used GSMBUFFER\16\13, which must be 'GSMbuffer\12. Am I right? What \16\13 does mean? ' --- Put your code to output the result here ' i.e. LCDOUT . . . . ‘Delete the processed SMS: Hserout [“AT+CMGD=1”, 13, 10] Goto Loop |
|
#25
|
||||
|
||||
|
@ Bulman
I still can’t understand some of your ideas, therefore I rewrote your program in a way that I think it should be. --> My code example is a working program, have you given it a try? I wrote my questions like comments next to the lines which I can’t get. So could you please take a look and answer the questions. And do you think that this program could be used with all Nokia phones with embedded modems, or it’s for the 62xx series only? --> I have tested it on 62xx and 63xx series, --> according to the NOKIA documentation --> it should work on any model with embedded modem. -------------------------------------- DEFINE OSC 20 DEFINE HSER_TXSTA 24h DEFINE HSER_RCSTA 90h DEFINE HSER_BAUD 115200 --> I couldn't establish a reliable connection to the phone faster than 9600 --> and 9600 is certainly fast enough to transfer those few bytes DEFINE HSER_CLROERR 1 GSMbuffer var Byte [12] Caller var Byte [12] GSMtime var Byte [17] ‘Check the connection between the phone and PIC works. Should ‘give OK. Instead you’ve used ATZ, why? --> You are right, a simple AT would do the same job at this point Hserout [“AT”, 13, 10] Pause 1000 HSerout ["AT+CMGF=1", 13, 10] 'Set Text Mode. Answer: OK Pause 500 Hserout [“AT+CMGS=”, 34, “+359888123456”, 34, 13, 10] ‘Answer: > ‘Why have you put “,129” in addition. I think it’s not nessesary. --> "129" is the "TYPE" (See NOKIA AT COMMANDS) Pause 500 Hserout [“Test-message”, 13, 10] ‘Terminate the SMS by Control+Z ‘Here you send ASCII 26 => SUB. Is it equal with CTRL+Z? Hserout [26] --> ASCII 26 is equal to CTRL+Z ‘Answer: +CMGS: 125 - the ord. number of the SMS (0-‘255) Pause 500 ' Check for new incomming Messages HSerout ["AT", 13, 10] ‘Check the connection Pause 1000 HSerout ["AT+CMGF=1", 13, 10] Pause 1000 Loop: ‘list new unread messages Hserout [“AT+CMGL=”, 34, “REC UNREAD”, 34, 13, 10] --> Lists all unread (new) messages ‘Optionally: "REC READ", "ALL" --> I'm only interested in new "UNREAD" messages --> already processed MSGs have been deleted ‘Or it must be HSerout ["AT+CMGL",13,10] ? ‘Answer in 3 lines should look like this: ‘+CMGL: 1,"REC UNREAD","+359888123456",,"04/07/21,08:03:05-00" ‘Test-message ‘OK HSerin 5000, Loop, [Wait("UNREAD"), skip 3, STR Caller\12, skip 4, STR GSMTime\17, skip 4, STR GSMbuffer\12] ‘You ‘ve written skip 6 before STR GSMuffer\12 but I think it ‘should 'be skip 4? --> There are two additional bytes to be skipped at the end of the first line (CR LF) Then you used GSMBUFFER\16\13, which must be 'GSMbuffer\12. Am I right? --> I did want to read the first 16 chars of the received message, --> GSMbuffer\16 What \16\13 does mean? --> See PBP Manual Section 5.30 --> stop reading if chr(13) is received if no chr(13) read max 16 chars ' --- Put your code to output the result here ' i.e. LCDOUT . . . . ‘Delete the processed SMS: Hserout [“AT+CMGD=1”, 13, 10] --> This is exactly what I would do after the MSG has been processed Goto Loop -------------------------------------- regards Last edited by NavMicroSystems; - 21st July 2004 at 21:59. |
|
#26
|
|||
|
|||
|
Thank you very much NavMicroSystems.
I'm gonna bye a Nokia and do some test. Thanx again. Bye. |
|
#27
|
||||
|
||||
|
@ Bulman
before you buy a mobile phone you should have a look at at the SIEMENS TC35i GSM Terminal. It is more reliable and has more features. (i.e. remote reset and remote power on/off) The TC35i is available at about 150 EUR (or even less) see: siemens.com. rgds. |
|
#28
|
|||
|
|||
|
Hi,
I have Nokia 7110 and MBUS/FBUS dual data cable. (home made) I can use some Nokia GSM control softwares with it. (Oxygen Phone Manager, LogoManager etc) But, when I want to use with Hyper Terminal for AT commands, the phone does not answer. I am planning for secure use with PIC mController. But after PC tests. What is the wrong ? Any idea for this ? |
|
#29
|
|||
|
|||
|
sounds like the data lead is working in one mode but not the other. I have 2 seperate cables, the one I use for Logo manager is different from the one I use for sms or interconect connection
|
|
#30
|
|||
|
|||
|
May be if you type the ATE1 command enables the echo?
Ioannis |
|
#31
|
|||
|
|||
|
I just learned that Nokia 7110 has not an embedded modem.
A software driver or DLR-3P cable required. I am planning to use Siemens C55. Thanks, |
|
#32
|
||||
|
||||
|
Hello there!
Anybody knows how to restart a nokia 6210 thru AT COMMAND or PDU format. Logo Manager has a provision for that. Thanks in advance Brenda |
|
#33
|
|||
|
|||
|
gonna get a second hand 6210 to have a play at this
![]() do i need to use a max232 or will i be able to hook straight up to a mobile and just use the serin and serout commands? |
|
#34
|
|||
|
|||
|
Nope. Nokia uses the Fbus. You must bye a RS232-to-Fbus converter, or make your own.
See this link for additional info: http://www.panuworld.net/nuukiaworld...les/basics.htm Regards Boyko |
|
#35
|
|||
|
|||
|
hi, got a nokia 6210 and a dlr-3p cable
tried it with hyperterminal with the pc and works fine. i tried connecting pins 2,3 and 5 (rx,tx and gnd) to the pic and could not get it to work, i just tried connecting it to the pc with just the 3 pins connected and it would not work? any ideas? i thought i only needed to connect the 3 wires? |
|
#36
|
||||
|
||||
|
It is correct, to communicate with the phone you only need RX, TX and GND.
But the Data cable has some embedded logic that is powered from the DB9 connector DTR and/or RTS pin. regards Ralph |
|
#37
|
|||
|
|||
|
so if i connect the dtr pin to 5v it should work?
|
|
#38
|
||||
|
||||
|
Try it with both RTS and DTR on the data cable connected to +5V.
If this doesn't work you may need a higher voltage (up to +12V) regards Ralph |
|
#39
|
|||
|
|||
|
not having much luck with this, have u dont this with a 6210 and dlr-3p cable yourself, or has anyone else who can let me know what they did?
thanks, Stu |
|
#40
|
||||
|
||||
|
I can't tell wether the "Taiwan-Cable" I have used was a "DLR-3P" type or something else.
But I think it does not really matter as you are saying your cable works with "HyperTerm". Do you have a DB9 "Breakout-Box" handy? If so: connect your DLR-3P cable to your PC across "Breakout-Box" and find out which pins are really needed by checking communication with "Hyperterm" Once you have identified the Pins check the Voltage Level at the "Supply" pins (DTR and/or RTS) it is most likely something between +10 an +12 V. Connect RX, TX and GND to your PIC and supply the identified "supply"-pins with the correct voltage. Assuming your PIC-code is ok, It should work. If it doesn't work, try to communicate with your PIC using "Hyperterm" and debug the PIC code. Questions: What type of PIC are ypu using? Are you using the HW USART and HSERIN/HSEROUT? Do you have a "MAX232" type of level shifter connected to the PIC? What is the PICs clock speed? (9600 Baud won't work with a 4MHz clock.) regards Ralph |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Pic to GSM Phone connection | samertop | mel PIC BASIC Pro | 4 | - 14th July 2005 14:40 |
| USART problems | egberttheone | mel PIC BASIC Pro | 47 | - 6th March 2005 22:45 |
| Bluetooth wireless with PIC / HSERIN / DAC | rpatel | mel PIC BASIC Pro | 1 | - 20th December 2004 23:13 |
| Hserin | egberttheone | mel PIC BASIC Pro | 6 | - 27th November 2004 16:42 |
| Cell Phone | elproducts | mel PIC BASIC Pro | 2 | - 6th October 2004 02:21 |