Olá garagistas!

Recentemente comprei um GPRS com o chip sim900. Mas já tentei de tudo e, apesar do led indicar que o sim900 alcançou a rede, a placa não responde a nenhum comando AT! Tenho 90% de certeza de que a placa está com os pinos trocados ou estou fazendo a conexão incorreta dos pinos.

A placa que tenho é idêntica a esta:

Já tentei soldar pinos no local onde está escrito "UART". Tentei conectar o RX e TX diretamente, mas não consigo fazer a conexão. Para dificultar as coisas, não encontrei o esquemático da placa.

Agradeço qualquer auxílio que me ajude a solucionar o problema.


Update

Este é o código que estou utilizando:

//Serial Relay - Arduino will patch a //serial link between the computer and the GPRS Shield//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
#include SoftwareSerial GPRS(7, 8);
unsigned char buffer[64]; // buffer array for data recieve over serial port
int count=0; // counter for buffer array
void setup()
{
GPRS.begin(4800); // the GPRS baud rate
Serial.begin(4800); // 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
}
if (Serial.available()) // if data is available on hardwareserial port ==> data is comming from PC or notebook
GPRS.write(Serial.read()); // write it to the GPRS shield
}
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
} }



Consegui algum progresso. Dessa vez alguns caracteres estranhos estão retornando pela serial. Estou utilizando o pino 7 e 8 ligados também aos pinos 7 e 8 do GPRS. Também conectei o 0 e 1 do Arduino (Rx e Tx) aos pinos ali no jumper (D9 e D1).

Exibições: 849

Anexos

Responder esta

Respostas a este tópico

Por favor,  cole o sketch que vc usou para tentar enviar comandos AT,  e diga qual arduino vc usa

Tenho alguns shields que vem de fábrica configurados pra trabalharem em 19600 bauds e se comunicam através dos pinos 7 e 8 no softserial. Ali na foto vejo que o jumper  está usando os pinos 7 e 8. Vc configurou certo seu sketch?  

Olá!

Muito grato por ter respondido.

Fiz testes com um Arduino Uno R3 e com um Arduino Mega 2560. Estou usando os pinos 7 e 8 com softwareSerial. Já tentei os baud rates de 300, 1200, 2400, 4800 (esse retorna "AT+caractere estranho" quando eu envio "AT"), 9600, 19200, 28800, [...] e 115200.

no mega não poderá usar a dupla de pinos 7/8. Ao invés disso, terá que usar algo como 10/8 (interligue um fiozinho jumpeando os pinos 7 com o 10) ou 53/8 (interligue um fiozinho jumpeando os pinos 7 com o 53)

Use esse sketch para testar o envio de comandos AT pro shield:

#include <SoftwareSerial.h>
SoftwareSerial cell(10, 8); //RX, TX no Mega2560 (jumpear pinos D7 com D10)
//SoftwareSerial cell(53, 8); //RX, TX no Mega2560 (jumpear pinos D7 com D53)
//SoftwareSerial cell(7, 8); //RX, TX no Uno

String readString ;
char serIn;

void setup()
{
cell.begin(19200); // velocidade em bauds do shield; teste qual funcionará
Serial.println("ajuste o serial monitor em CARRIAGE RETURN");
}

void loop()
{
if (Serial.available())
{
while (Serial.available() > 0)
{
serIn = Serial.read();
readString += serIn;
delay(1);
}
cell.print(readString);
}

if (cell.available())
{
Serial.write(cell.read());
}

readString = "";

}

Olá, agradeço o auxílio, mas acho que consegui resolver o problema.

O que fiz foi ligar o terra do Arduino ao terra da fonte externa que alimenta o SIM900. Isto funcionou para mim. De qualquer forma, muito grato pelo seu auxílio.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço