Arduino i Sony Ericsson T230 SMS, dzwonienie

4Zrobiłem sobie małą ściągę, gdyż w końcu po kilku godzinach nierównej walki udało mi się zestawić poprawną komunikację pomiędzy arduino 2560 (właściwie to jego klonem) a sony ercissonem T230 poprzez interfejs szeregowy (RX,TX,GND).

Załączam zdjęcia oraz cały kod. Uwaga! Jeśli macie 2560 nie podłączajcie RX,TX ani do pinów 0,1 ani 19,18 .. robimy normalnie – jak w kodzie – do pinów 10,11.

Niestety zdjęcie zrobiłem już po przylutowaniu przewodów. Generalnie łączymy pin4 RX z gniazdem TX arduino (w moim przypadku 11) i pin5 TX z pinem RX w arduino(u mnie 10), a masa ( w telefonie pin 10) do masy GND. Z tego co wiem, możemy także zasilać sobie telefon z linii +5V z arduino.

Oto kod wraz z komentarzami

#include

#define rxPin 10
#define txPin 11

SoftwareSerial mySerial(rxPin,txPin); // RX, TX

void setup(){

pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);

Serial.begin(9600);
Serial.println(„Arduino serial initialized!”);
delay(1000);

mySerial.begin(9600);
Serial.println(„Software serial initialized!”);
delay(1000);

delay(500);

}

void loop(){

//Zadzwon();
//czytajSms();

//WyslijSms();

while(true){ //czekaj
readSerial();
}
}

void issueCommand(char* msg){ //wyślij komendę na Softserial i zarazem na hardserial
mySerial.println(msg);
Serial.print(msg);

}

void readSerial(){ //odczyt z połączenia serialowego
while (mySerial.available()){
Serial.write(mySerial.read());

}
}
void czytajSms(){
issueCommand(„AT+CMEE=1”); //rozszerzone raportowanie potencjalnych błędów
readSerial();
delay(3000);
issueCommand(„AT+CMGF=1;”); //przełącz się w tryb tekstowy
readSerial();
delay(3000);
issueCommand(„AT+CPMS=\”ME\””); //wybierz pamieć z telefonu (można wybrać z sim jako „SM”)
readSerial();
delay(3000);

issueCommand(„AT+CMGL=\”ALL\””); //pokaż wszystkie wiadomości
readSerial();

}

void WyslijSms(){

issueCommand(„AT+CMGF=1”); //przełącz się w tryb tekstowy
readSerial();
delay(1000);
issueCommand(„AT+CMGS=\”0048662xxxxxx\””); //wyślij sms na nr

delay(2500);
issueCommand(„TEST”); //treść smsa
mySerial.write(char(26)); //znak zakończenia CTRL+Z
Serial.write(char(26));
readSerial();
delay(3000);

}

void Zadzwon(){

issueCommand(„AT”);
readSerial();
delay(1500);

issueCommand(„AT+CRC=1;”);
readSerial();
delay(1500);

issueCommand(„AT+CLIP=1;”); //włącz ident.numeru
delay(1500);

for (int i=0;i<1;i++) { //ile razy dzwonić
issueCommand(„ATD662xxxxxx;”);

delay(5500); //czas trwania połączenia
issueCommand(„ATH;”); //rozłącz
delay(2500);
}
}

 

Skomentuj wpis

komentarzy

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *