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
#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);
}
}