А сконфигурировать, работу пина 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)
Последний раз редактировалось vseleznev; 19.07.2012 в 17:09.
Chip, спасибо!
Последний раз редактировалось vseleznev; 19.07.2012 в 17:09.
Добрый день!
Заинтересовался вопросом сопряжения Arduino и сотового телефона. Набросал примеры в протеусе, смс отсылать удается (с телефона подключенного к компьютеру по mini-usb). Встал вопрос в выборе телефона. С последовательным портом телефоны практически канули в лету, большинство с интерфейсом mini-usb.
Можно-ли, каким нибудь образом телефон с mini-usb подключить к Arduino?
В принципе, можно. Если на плате найти Rx & Tx. В современных телефонах (на некоторых моделях) есть "инженерный (сервисный) разъем, так вот на таком разъеме иногда бывает. Нужно искать телефон с такими характеристиками, но это не легко. Наверное легче все-таки найти старенький телефон...
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Ребята, огромное спасибо за ветку, помогла много в чем разобраться.
Купил Arduino Uno i Siemens TC35 board.
Посылать СМСки получается без проблем, звонить - тоже.
Но столкнулся с проблемой при чтении СМС.
Перед чтением СМС набираю команду
AT+CMGF=1 (переход в текстовый режим)
В терминле все работает прекрасно, но когда начинаю считывать
строку с помощью read появляются проблемы.
Сначала текст идет правильно , показывает телефон, дату время, а затем идут значки ÿÿÿÿÿÿÿÿ&# 255;.
Я читал что сталкивались с такой проблемой.
Может расскажете почему она возникает?
Из-за того что в буфер не влазит или?
Спасибо
Я так и не разобрался с этой проблемой. То она есть, то ее нет. Природа причины тоже не понятна.
Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.
Вобщем помучался я хорошо, но кое-что из ТС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);
}
}
Последний раз редактировалось andrey1980; 29.08.2012 в 20:05.
Ребята скажите комбинацию AT+CNMI= чтобы модем начал отображать что смс пришла...
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)