PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit Atmega32 über GSM Modem ein SMS senden



Benni111
08.01.2008, 12:21
Aufgabenstellung:
Über meinen Microcontroller(ATmega32) mittels dem At-Befehlssatz eine
SMS mit meinem GSM-Modem(MC35i von Siemens) zu senden.

Problem:
Das SMS kommt einfach nicht an. Ich bin kein C Experte und verstehe
nicht wieso nichts funktioniert (Liegt wahrscheindlich am Coding).
Programmiert wird mittels PonyProg.
Dies ist ein Teil meiner Diplomarbeit und für mich eine sehr schwere
Hürde.

Hier mein Coding in AVR Studio 4:

#include <avr/io.h>
#include <util/delay.h>

int uart_putc(unsigned char c);
void SendeString (char *szBuf);
void long_delay(uint16_t ms);

int main(void)
{
int c=0;

UCSRA = 0x00; // MCU =ATMega32, F_CPU = 16Mhz, 9600 Baudrate
UCSRB = 0x18; //8 Bit , kein Parity, 1 Stopbit, Asynchron
UCSRC = 0x86;
UBRRH = 0x00;
UBRRL = 0x67;

if(c==0)
{
SendeString("at+cpin=0000\r\n"); //AT-Befehl zur Pineingabe
long_delay(2000); //2 sec warten //2 Sekunden Warteschleife
SendeString("at+cmgf=1\r\n"); //SMS-Ein und Ausgabe erfolgt
im 7Bit Klartext
long_delay(2000);
SendeString("at+cmgs=+436644209014\r\n"); //Zieladressnummer
nach Österreich A1
long_delay(2000);
SendeString("Test"); //SMS-Text
long_delay(2000);
uart_putc(0x1A); //Hex Code fuer Strg+Z wird gesendet
long_delay(5000);
c=1; // Überprüfung das SMS nur 1 mal gesendet wurde
}
return 0;
}

int uart_putc(unsigned char c)
{
while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
{
}

UDR = c; /* sende Zeichen */
return 0;
}

void SendeString (char *szBuf) //Methode zum Senden
{
while (*szBuf++)
{
outp (*szBuf, UDR);
loop_until_bit_is_set (UCSRA, UDRE);
}
}
void long_delay(uint16_t ms) //Warteschleife
{
for(; ms>0; ms--) _delay_ms(1);
}

Bluesmash
08.01.2008, 13:14
ich spiele auch gerade ein wenig mit einem Siemens-Natel herum. allerdings mit Bascom und im PDU-Format... SMS senden klappt...

hast du mal versucht das modem am pc anzuschliessen und eine sms über das terminal zu versenden? achtung! eventuell ist ein pegelwandler notwendig...

wenn dies funktioniert würde ich den mega32 auch einmal an den pc anschliessen und im terminal schauen was wirklich gesendet wird... Achtung! eventuell pegelwandler notwendig...

gruss bluesmash

Benni111
08.01.2008, 14:44
Ja ich habe das SMS mittels Hyperterminal wegschicken können und alles hat geklappt. Es gibt nur mit dem Microcontroller Probleme...
Es wird auch nichts in Hyperterminal gezeigt wenn ich ihn mit PC verbinde... Hab aber keine Ahnung wieso.
lg Benni

Barracuda_cy
09.03.2009, 18:53
ist das thema noch aktuell?

versuche mal ein nullmodem-Kabel bez. KEIN NUllmodemkabel zu verwenden?!

wie uwrde das Problem im endeffekt behoben?