mini+gsm

Hash
Offline
Зарегистрирован: 26.12.2013

Пытаюсь подключить gsm к arduino mini, для проверки сделать вызов.

#include <SoftwareSerial.h>
 
SoftwareSerial  SSerial(2, 3);
 
void setup()
{
  SSerial.begin(19200); 
  delay(1000); 
  SSerial.println("AT+CPIN=xxxx;");
  delay(1000); 

}
void loop()
{
  SSerial.println("ATD+7912xxxxxxx;");
  while(1);
}

GSM подключаю к 2 и 3 цифровому порту.

Что я делаю не так?

Hash
Offline
Зарегистрирован: 26.12.2013

Забыл добавить, земли между gsm и mini тоже соединил. GSM питаю от бп.

olegab
Offline
Зарегистрирован: 09.04.2013

Обычно ATD это импульсный набор, тоновый - ATDT

Hash
Offline
Зарегистрирован: 26.12.2013

Пробовал вставлять симку без пин-кода и набрать на нормер (даже без подключения к ардуино). Входящий вызов идет.

Потом вставил симку с пин-кодом и подключил к ардуинке (как написал выше). Вызов не идет! Т.е. пин-код не ввелся (насколько я понял).

Далее я взял сим-карту без пин-кода и опять вставил её. Подключил точно также к ардуинке (убрав из кода строку про пин-код). Исходящий вызов не идет!

Отсюда я делаю вывод, что данные с ардуинки не передаются в gsm. А значит что то подключил или написал не првильно. Вот только что?

olegab
Offline
Зарегистрирован: 09.04.2013

Посмотрите Через терминал что отвечает и отвечает ли

Hash
Offline
Зарегистрирован: 26.12.2013

olegab пишет:

Посмотрите Через терминал что отвечает и отвечает ли

Ничего оно не отвечает..

А вообще, каким образом оно бы стало отвечать, если в мое коде выше видно, что не прописано общение ардуинки с ПК. Ведь так?!

А как его прописать? В плане того, Serial.print( а что тут писать то? )...

Hash
Offline
Зарегистрирован: 26.12.2013

Пробовал грузить следующий пример:

#include <SoftwareSerial.h>
 
SoftwareSerial GPRS(2, 3);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0;     // counter for buffer array 
void setup()
{
  GPRS.begin(19200);               // the GPRS baud rate   
  Serial.begin(9600);             // the Serial port of Arduino baud rate.
 
}
 
void loop()
{
  if (GPRS.available())              // if date is comming from softwareserial port ==> data is comming from gprs shield
  {
    while(GPRS.available())          // reading data into char array 
    {
      buffer[count++]=GPRS.read();     // writing data into array
      if(count == 64)break;
  }
    Serial.write(buffer,count);            // if no data transmission ends, write buffer to hardware serial port
    clearBufferArray();              // call clearBufferArray function to clear the storaged data from the array
    count = 0;                       // set counter of while loop to zero
  }
}
void clearBufferArray()              // function to clear buffer array
{
  for (int i=0; i<count;i++)
    { buffer[i]=NULL;}                  // clear all index of array with command NULL
}

Результат нулевой(( жсм не отвечает..

 

olegab
Offline
Зарегистрирован: 09.04.2013

Читайте строку из софтсериал, примерно так, сразу за отправкой ат команды

while (Serial1.available()) {
  char inChar = Serial1.read(); // читаем побайтно
  Serial1.write(inChar);        // эхо
 
  if (inChar!= 13) {
   inString += inChar;          // формируем буфер
  } 
 
  if (inChar == 13) {
   command();
   Serial1.flush();
  }
 } 

 

А поторм отдавайте её в порт на котором терминал

Hash
Offline
Зарегистрирован: 26.12.2013

olegab пишет:

Читайте строку из софтсериал, примерно так, сразу за отправкой ат команды 

Понимаешь, она никуда не отправляется!

Я привел код выше постом, что в нём не правильно? лично на мой взгляд все верно в нём.. Или может я подключаю неверно?

Я уже и так и сяк перепробывал, а оно все ничего не происходит... 

olegab
Offline
Зарегистрирован: 09.04.2013

Hash пишет:

olegab пишет:

Читайте строку из софтсериал, примерно так, сразу за отправкой ат команды 

Понимаешь, она никуда не отправляется

C чего вы это решили?

Нужно 1. Отправить "AT" в порт и подождать ответа, если все хорошо порт ответит ОК, строку передайте в терминал, дальше смотрите что он отвечает на попытку инициализации и набора номера.

Если же он вообще ничего не отвечает, поиграйтесь со скоростью порта, перепроверьте подключения

Hash
Offline
Зарегистрирован: 26.12.2013

Ну допустим щас я подключил через фт232рл на прямую к пк. При вызове в наушниках играет мелодия. Пробовал писать в ком-порт, в итоге отвечает тоже самое, например: пишу AT, оно мне в ответ тутже AT. И что бы я не писал, в ответ приходит тоже самое!

Hash
Offline
Зарегистрирован: 26.12.2013

Щас начало при вызове писать RING, а при сбросе вызова NO CARRIER.. При вводе AT или чего либо другого, попрежнему, возвращает тожу надпись..

olegab
Offline
Зарегистрирован: 09.04.2013

Это эхо

Отключается ATE=0, если не изменяет память

Значит с модемом все хорошо

Инициалируйте софссериал ардуины с такойже скоростью и сделайте всетпки вывод в терминал.

Попробуйте подключить "железному" последовательному порту (0 и 1 пины)

Airbus
Offline
Зарегистрирован: 28.12.2013

Hash пишет:

#include <SoftwareSerial.h>
 
SoftwareSerial  SSerial(2, 3);
 
void setup()
{
  SSerial.begin(19200); 
  delay(1000); 
  SSerial.println("AT+CPIN=xxxx;");
  delay(1000); 

}
void loop()
{
  SSerial.println("ATD+7912xxxxxxx;");
  while(1);
}

GSM подключаю к 2 и 3 цифровому порту.

Что я делаю не так?

У Вас АТ команда не правильная надо так ATD>79121234567;Либо записать номер в 1 ячейке СИМ карты и послать ATD1;

Hash
Offline
Зарегистрирован: 26.12.2013

К сожалению ни одну команду модуль не воспринимать. Всегда возвращает тоже самое, что пишешь ему... и ничего более. Пробовал поразному вводить команды, эффекта 0.

Не представляю в чем может быть проблема.. 

Hash
Offline
Зарегистрирован: 26.12.2013

@#$%@ (#&%@#!!!! Подключился через putty, команды заработали! 

Hash
Offline
Зарегистрирован: 26.12.2013

К arduino mini попрежнему не могу подключить.