EFCom GPRS/GSM шилд

У меня есть EFCom GPRS/GSM Shield http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield и я использую его с mega 2560. Проблема в том, что код на странице вики

//Последовательное реле - Arduino исправит
//последовательное соединение между компьютером и GPRS Shield
//при 19200 бит/с 8-N-1
//Компьютер подключен к аппаратному UART
//GPRS Shield подключен к программному UART

#include <SoftwareSerial.h>   
SoftwareSerial mySerial(2, 3);   
void setup() {   
  mySerial.begin(19200);               // скорость передачи данных GPRS
  Serial.begin(19200);                 // скорость передачи данных GPRS
}   

void loop() {   
  if (mySerial.available())
    Serial.write(mySerial.read());   
  if (Serial.available())
    mySerial.write(Serial.read()); 
}

использует программный последовательный порт, но mega 2560 не может использовать программный последовательный порт на контакте 2, как в справочнике Arduino, поэтому я изменил контакты на 50 и 51 и использовал внешние разъемы мама-папа для подключения s_tx к контакту 50 "rx" и s_rx к контакту 51 "tx", по-прежнему нет ответа на команду AT...

код после обновления:

#include <SoftwareSerial.h>   
SoftwareSerial mySerial(50, 51);   
void setup() {   
  mySerial.begin(19200);               // скорость передачи данных GPRS
  Serial.begin(19200);                 // скорость передачи данных GPRS
}

void loop() {  
  if (mySerial.available())
    Serial.write(mySerial.read());   
  if (Serial.available())
    mySerial.write(Serial.read());    
}

Обратите внимание, что я использую последовательный монитор Arduino IDE.

, 👍0


1 ответ


1

Попробуйте подключить «Контакт RX на Mega к контакту RX на Shield» и «Контакт TX на Mega к контакту TX на Shield»:

  • Контакт 50 (Rx) на Mega <==> Контакт 2 GSM Rx на Shield
  • Контакт 51 (Tx) на Mega <==> Контакт 3 GSM Tx на Shield

Я использую Geeetech Shield с Mega 2560 и подключаю RX к Rx и TX к TX. Работает отлично.

Другое решение — использовать Serial1 вместо SoftwareSerial ...

Первое подключение:

  • Контакт 19 (Rx1) на Mega <==> Контакт 2 GSM Rx на Shield
  • Контакт 18 (Tx1) включен Mega <==> Контакт 3 GSM Tx на щите

//Последовательное реле
unsigned char buffer[64]; // массив буферов для приема данных через последовательный порт
int count=0; // счетчик для массива буфера

void setup() { Serial1.begin(19200); Серийный.начало(19200); } пустой цикл() { если (Serial1.available()) { пока(Serial1.available()) { буфер[count++]=Serial1.read(); если (количество == 64)прервать; } Serial.write(буфер,количество); clearBufferArray(); количество = 0; } если (Серийный.доступный()) Serial1.write(Serial.read()); } недействительный clearBufferArray() { для (int i=0; i<count;i++) { буфер[i]=NULL; } }

Вы можете использовать последовательный монитор Arduino IDE, последовательные терминалы (sscom32) или терминал Bray++ для отправки AT-команд на Shield и взаимодействия с ним.

Надеюсь, эта информация будет полезна.

,