А сконфигурировать, работу пина D9 на выход не нужно?
Вид для печати
А сконфигурировать, работу пина D9 на выход не нужно?
Все разобрался!
Добавил "pinMode(GSM_ON, OUTPUT);"
Стал включаться GSM Shield IComSat v1.1 вместе с включением Arduino. Рабочий код такой:
Chip, спасибо!Код:#include <SoftwareSerial.h>
#define GSM_ON 9
SoftwareSerial phone(2, 3); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// generate turn on pulse
pinMode(GSM_ON, OUTPUT);
digitalWrite(GSM_ON, HIGH);
delay(1200);
digitalWrite(GSM_ON, LOW);
delay(5000);
phone.begin(9600);
Serial.println("Setup end");
}
void loop() // run over and over
{
if (phone.available())
Serial.write(phone.read());
if (Serial.available())
phone.write(Serial.read());
}
Как раз сам тоже дошел до этого, в библиотеке кстати этого нет, добавить нужно вручную.
PS
Полезно светодиод иногда подключить для отладки.
"Great minds think alike" (c)
Chip, спасибо!
Добрый день!
Заинтересовался вопросом сопряжения Arduino и сотового телефона. Набросал примеры в протеусе, смс отсылать удается (с телефона подключенного к компьютеру по mini-usb). Встал вопрос в выборе телефона. С последовательным портом телефоны практически канули в лету, большинство с интерфейсом mini-usb.
Можно-ли, каким нибудь образом телефон с mini-usb подключить к Arduino?
В принципе, можно. Если на плате найти Rx & Tx. В современных телефонах (на некоторых моделях) есть "инженерный (сервисный) разъем, так вот на таком разъеме иногда бывает. Нужно искать телефон с такими характеристиками, но это не легко. Наверное легче все-таки найти старенький телефон... :)
Ребята, огромное спасибо за ветку, помогла много в чем разобраться.
Купил Arduino Uno i Siemens TC35 board.
Посылать СМСки получается без проблем, звонить - тоже.
Но столкнулся с проблемой при чтении СМС.
Перед чтением СМС набираю команду
AT+CMGF=1 (переход в текстовый режим)
В терминле все работает прекрасно, но когда начинаю считывать
строку с помощью read появляются проблемы.
Сначала текст идет правильно , показывает телефон, дату время, а затем идут значки ÿÿÿÿÿÿÿÿ&# 255;.
Я читал что сталкивались с такой проблемой.
Может расскажете почему она возникает?
Из-за того что в буфер не влазит или?
Спасибо
Я так и не разобрался с этой проблемой. То она есть, то ее нет. Природа причины тоже не понятна.
Вобщем помучался я хорошо, но кое-что из ТС35 удалось выжать
Вот скетч для того чтобы включать и выключать звонком
Попробуйте кто-нибудь на телефоне, интересно, работает или нетPHP код:
#include <SoftwareSerial.h>
char gsm_char=0;
char d;//Stores character from the gsmSerial
int i=1;
int ledPin = 13;
boolean Status;
char strok[91]="";
long previousMillis = 0;
long interval = 5000;
SoftwareSerial gsmSerial(2,3);
void setup()
{
pinMode (ledPin, OUTPUT);
Status=LOW;
//Initialize serial ports for communication.
Serial.begin(9600);
gsmSerial.begin(2400);
for (i=1; i<90; i++)
{
strok [i] = gsmSerial.read();
Serial.println(strok[i]);
}}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval)
{
previousMillis = currentMillis;
gsmSerial.println("AT+CMGF=1\r");
delay(5);
for (i=1; i<32; i++)
{
strok [i] = gsmSerial.read();
Serial.println(strok[i]);
}
if ((strok[25] == '1') &&
(strok[26]=='2') &&
(strok[27]=='3') &&
(strok[28]=='4')&&
(strok[29]=='5')&&
(strok[30]=='6')&&
(strok[31]=='7')&&
(Status == LOW))
{
gsmSerial.print("ATH\r");
delay(2000);
Serial.println("ON");
digitalWrite(ledPin, HIGH);
Status= HIGH;
gsmSerial.print("AT+CMGS=+380501234567\r");
delay(100);
gsmSerial.print(" On");
delay(10);
gsmSerial.print("\x1A");
}
else
if ((strok[25] == '1') &&
(strok[26]=='2') &&
(strok[27]=='3') &&
(strok[28]=='4')&&
(strok[29]=='5')&&
(strok[30]=='6')&&
(strok[31]=='7')&&
(Status == HIGH))
{gsmSerial.print("ATH\r");
delay(2000);
Serial.println("OFF");
digitalWrite(ledPin, LOW);
Status = LOW;
gsmSerial.print("AT+CMGS=+380501234567\r");
delay(100);
gsmSerial.print(" Off");
delay(10);
gsmSerial.print("\x1A");
}
// Чистка буфера
for (i=1; i<80; i++)
{
strok [i] = gsmSerial.read();
Serial.print(strok[i]);
}
delay(2000);
}
}
Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...