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.
@Eng_Boody, 👍0
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 и взаимодействия с ним.
Надеюсь, эта информация будет полезна.
- Arduino GSM Shield GSM_READY никогда не готов
- SIM900 3G? Или SIM900A умеет подключаться к 3G?
- Библиотека Arduino Mega Shield для Eagle CAD
- Arduino Ethernet Shield при использовании контактов Arduino Mega
- Моделирование Arduino Mega 2560 с GSM модулем с использованием Proteus
- Проблема с подключением Arduino Mega 2560 и GSM shield (официальный M10)
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- mcufriend 2.4 tft мега 2560