Placa de Desenvolvimento SIM900.
Aqui um pequeno levantamento que fiz, para um trabalho da faculdade:
Comandos AT:
OBS: Utilize o comando AT+CLAC, para listar todos os comandos AT
Manual de comandos AT do SIM900: SIM900_ATC_V1_00.pdf
OBS: Utilize o comando AT+CLAC, para listar todos os comandos AT
Manual de comandos AT do SIM900: SIM900_ATC_V1_00.pdf
Comando | O que faz? | Observações |
ATD 9188998811; | Disca para um número | Chamada de voz Tem que ter um ponto e virgula no final. |
ATH0 | Encerra ligação | Desliga a chamada de voz |
ATH3 | Encerra GPRS | |
ATLx | Volume x é um número de 0 a 9 | |
AT+CLIP=1 | Ativa o identificador de chamadas do SIM900 | |
AT+CRC=1 | Ativa o identificador de tipo de chamada | Voz, dados, ... |
AT&W | Grava configurações | Nãograva APN e outras configurações de rede. |
Comandos relacionados ao GPRS | ||
AT+CIPMUX=1 | Ativa multiplas conexões por GPRS | Segue o padrão TCP/IP e permite usar várias portas TCP, sem isso não podemos usar muito bem protocolos HTTP e FTP |
AT+CSTT=”apn”,”user”,”pass” | Configura APN | Sem isso o GPRS não funciona! Exemplo operadora Oi: AT+CSTT=”gprs.oi.com.br”,”oi”, |
AT+CIICR | Conecta à rede GPRS | Precisa conectar para requisições TCP/UDP |
AT+CIFSR | Exibe o endereço IP, atribuído à placa | Bom para sabermos se estamos conectados ou não. |
AT+CIPSTATUS | Estado das conexões TCP/IP | |
AT+CDNSCFG=”8.8.8.8”,”8.8.4.4” | Configura DNS | 8.8.8.8 e 8.8.4.4 são DNSs válidos da Google! Após configurar os DNSs, o IP pode ser usado o nome do servidor nos comandos com o AT+CIPSTART |
AT+CIPSTART=x,”TCP”,”IP”,” | Conecta a um servidor | (1) x é o número da conexão se estiver usando CIPMUX=1 caso esteja com CIPMUX=0 não é necessário este parâmetro. |
AT+CIPCLOSE=x | Fecha a conexão x | (1) |
AT+CDNSGIP=”fazzi.eng.br” | Resolve o IP de um hostname válido | |
AT+CIPSEND=x | Envia um comando de protocolo para a conexão x | (1) |
AT+CIPSHUT | Desconecta tudo | |
Envio de SMS | ||
AT+CMGF=1 | Inicia modo SMS | |
AT+CMGS=”+55xxx” | Número de celular de destino | xxx é o número do celular, deve-se incluir o DDD, DDI e operadora são opcionais. |
> msg CTRL+Z | msg é o texto da mensagem a ser enviada. | Usando o terminal deve-se usar um CTRL+Z para terminar e enviar a msg, Usa-se ASCII 26 (hexa 0x1A) |
Sequência acesso à FTP | ||
AT+CIPMUX=1 | Multiplexado | |
AT+CSTT="gprs.oi.com.br","oi", | APN | |
AT+CIICR | Conexão | |
AT+CIFSR | Exibe IP da conexão | |
AT+CIPSTART=0,"TCP","70.84. | Conecta ao servidor FTP à conexão 0 | |
AT+CIPSEND=0 | Envia comandos à conexão 0 | Sempre deve-se aguardar a conexão “OK” |
>user anunakin CTRL+J CTRL+Z | user login | CTRL+J é o ASCII 10 |
AT+CIPSEND=0 | ||
>pass ssseeennnhhhaa CTRL+J CTRL+Z | pass senha | |
AT+CIPSEND=0 | ||
cwd www CTRL+J CTRL+Z | muda de diretório |
Exemplo via terminal Linux minicom: comando no shell do Linux:
minicom -D /dev/ttyUSB2 -b 19200
minicom -D /dev/ttyUSB2 -b 19200
RDY
+CFUN: 1
+CPIN: READY
+CREG: 0
+CREG: 2
+CREG: 1,"3016","4E71"
Call Ready N este ponto a placa SIM900 já está ligada e conectada à rede GSM
+CFUN: 1
+CPIN: READY
+CREG: 0
+CREG: 2
+CREG: 1,"3016","4E71"
Call Ready N
AT+CIPMUX=1
OK
AT+CSTT="gprs.oi.com.br","oi", "oi"
OK
AT+CIICR
OK
AT+CIFSR
187.124.14.63 Placa conectada via GPRS
AT+CIPSTART=0,"TCP","70.84. 174.162",21
OK
0, CONNECT OK
+RECEIVE,0,74:
220-FTP server ready.
220 This is a private system - No anonymous login
AT+CIPSEND=0
> user anunakin
0, SEND OK
+RECEIVE,0,41:
331 User anunakin OK. Password required
AT+CIPSEND=0n
> pass xxxxSenhaDoFTPxxxx
0, SEND OK
+RECEIVE,0,93:
230-User anunakin has group access to: anunakin
230 OK. Current restricted directory is /
AT+CIPSEND=0
> cwd www
0, SEND OK
+RECEIVE,0,35:
250 OK. Current directory is /www
Transferência de dados por FTP | Copiaremos o arquivo TESTE.TXT presente na pasta www Este arquivo contém o seguinte texto: “TESTE DE ARQUIVO NO SERVIDOR!” | |
AT+CIPSEND=0 | ||
>pwd CTRL+J CTRL+Z | lista o diretório atual | |
AT+CIPSEND=0 | ||
>pasv CTRL+J CTRL+Z | O comando PASV, diz ao servidor que usaremos o modo passivo, o servidor responde com a seguinte sequência: 227 Entering Passive Mode (70,84,174,162,79,144) Os primeiros 4 números são o IP do servidor e os dois últimos a porta aonde conectaremos para esperar os arquivos, e listagens (comando LIST) 79 é o hexa 4F 144 é o hexa 90 4F90 é a porta que em decimal é 20368 | Essa dos hexas é o pulo do gato sem isso nada de copiar um arquivo... |
AT+CIPSTART=1,"TCP","70.84. | Abrimos outra conexão ao servidor na porta 20368, essa é a conexão 1 | |
AT+CIPSEND=0 | Todos os comandos continuam na conexão 0 | |
>retr TESTE.TXT CTRL+J CTRL+Z | Solicitamos o arquivo TESTE.TXT | Após isso o arquivos será enviado pela conexão 1, e ao termino esta conexão será fechada pelo servidor. |
LOG no minicom:
AT+CIPSEND=0
> pwd
0, SEND OK
+RECEIVE,0,37:
257 "/www" is your current location
AT+CIPSEND=0
> pasv
0, SEND OK
+RECEIVE,0,50:
227 Entering Passive Mode (70,84,174,162,79,144)
AT+CIPSTART=1,"TCP","70.84. 174.162",20368
OK
1, CONNECT OK
AT+CIPSEND=0
> retr TESTE.TXT
0, SEND OK
+RECEIVE,0,30:
150 Accepted data connection
+RECEIVE,1,33:
TESTE DE ARQUIVO NO SERVIDOR!
+RECEIVE,0,94:
226-File successfully transferred
226 0.008 seconds (measured here), 3.89 Kbytes per second
1, CLOSED
Espero que ajude a galera!
31 comentários:
Parabéns pelos post e suas pesquisas.
Abraços na alma.
CABELO
muito bom seu trabalho. Tenho uma duvida referente ao envio dos comandos. somente jogar os comando no rx da placa e ja aceita?
rodrigomartinson@gmail.com
Isso mesmo direto pelo RX/TX usando RS232 pelo terminal ou via microcontrolador
Também estou brincando com este módulo mas estou com dificuldade para apos identificar a retirada do SIMCard forçar que o módulo reconecte.
@Kaed estás querendo tirar o SIM e depois reconectar com o módulo ligado? Até onde Eu saiba não se deve fazer isso.
Pq não? Vc encontrou algum lugar na documentação q informe q não pode?
No mais este módulo e muito bom!
Qualquer sistema de telefonia GSM/3G não se deve remover o chip SIM com o aparelho ligado, motivo pelo o qual todos os aparelhos celular têm o chip SIM atrás da bateria.
Boa noite!
Onde é possível comprar esse kit de desenvolvimento do SIM900 ?
Obrigado!
Há vários sites:
http://www.seeedstudio.com
http://www.iteadstudio.com
http://www.sparkfun.com
Tenho uma aqui da itead: vendo por R$200.00 for o frete.
Cara boa noite. To apanhando para fazer um GET e um POST numa pagina WEB a partir do SIM900. POdes me ajudar? Como faço!? Muito obrigado.
Marcelo,
O processo é bem simples, entretanto tens de atualizar a firmware do SIM900,
Dai vais ter comandos específicos para HTTP, assim que tiver um tempo posto aqui como fazer...
Por enquanto dá uma olhada aqui:
http://www.seeedstudio.com/wiki/GPRS_Shield
Bom na verdade não são todos que o sim fica atras iPhone e alguns outros poucos o sim fica acessivel e pode ser retirado com o celular ligado.
Outra questão, estou tentando servir uma html no sim900 mas estou com problemas.
Coloco o sim900 em estado de SERVER LISTENING e acesso de um browser e posso receber o GET do http. Mas algumas vezes não esta chegando o GET. Vc já fez algo parecido?
Tentou atualizar a firmware do SIM900?
Nao precisei atualizar o Firmaware. o meu já faz concções HTTP.
A partir desses consegui enviar dados com method GET. Assimque funfar direitinho posto aqui o código. Ainda estou apanhando pra enviar dados pelo metodo POST!! Achas que consegues me ajudar? Abração
A tua placa SIM900 já veio com os comandos AT especificos para HTTP? como AT+HTTPINIT, AT+HTTPPARA eAT+HTTPACTION ?
SIm. PAra conectar deve-se configurar o acess point atraves de comandos AT+SAPBR; Após configurado, utilizamos o AT+HTTPINIT para iniciar uma aplicação HTTP, após passa-se os parametros atravas do AT+HTTPPARA, neste comando montamos a URL que queremos submeter. Para submeter a URL utilizamosmo AT+HTTPACTION=0, e caso ocorra tudo normal, o SIM900 responde 1,1,200. Consegui fazer assim, somente via metodo GET, seguindo o api notes dofabricante(SICOM) porem não entendi ainda como faço para enviar os dados via POST. Abraços.
Amigo o que é esse HTTPParamValue?
Utilizado no HTTPPARA.
Se puder me dar uma breve descrição de como se utiliza o HTTPPARA agradeceria muito.
Desde já agradeço.
Tche, no HttpPara, voce passa o pametro para o GET, no meu caso foi a URL que descreve o GET,Ex.:
printf(AT+HTTPPARA="http://www.xxx.com.br/teste?indice1=3&indice2=te");
Passa o paramentro;
printf(AT+HTTPACTION=0);
Submete a pagina!!!
Abrass
Pessoa, estou realizando uns teste com uma placa destas com SIM900, porem a minha acabou de parar de responder ao pressionar o Perkey. Alguém sabe o que pode ser? Ou foi pra banha mesmo??
Opa, o que andastes a fazer com sua placa? quais comandos estavas usando?
Bom dia, estava usando comandos normais pelo PIC e pelo terminal, comandos AT, comandos de Mensagem, e acesso a FTP, conforme seu exemplo. Estava tudo funcionando, enviando SMS, e acessei ontem um servidor de um colega meu. Desliguei tudo liguei novamente e nada, ligo ele separado da placa, pressiono o botão Perky e nada.
Olá quanto ao problema acima, eu já comprei outro módulo mesmo. Sem jeito.
Outra pergunto se puder ajudar. Estou ligando o módulo em um PIC, você por acaso utilizou algum conversor de nível para inteligar as duas seriais? pois o PIC é 5V. Estou simplismente ligando meu PIC em 4V, não sei se este pode ter sido o motivo do estrago.
Obrigado se puder ajudar.
Se estiveres a usar uma placa como a da foto, ela funciona de 3.3V a 5V para nível lógico. Usei com Arduino, com cabo USB para Serial e com PIC32.
É possível integrar essa placa com o LPC1114 também?
Leonardo Gazio, essa placar requer que o microcontrolador tenha comunicação serial, acredito que todos tenham, e caso negativo ainda pode-se implementar um "bit bang" ..
Amigo estou fazendo um projeto utilizando o AT89S52 e modulo SIM900, estou com uma certa dificuldade no envio dos comando AT,
toda vez que coloco ela no meu programa quando vou compilar para arquivo .hex da erro. me ajude por favor.
Posta a parte do código aonde está dando erro.
Boa Noite
Desde ja agradeco pelo seu post, ajuda muito a galera.
Estou com um problema ate consigo fazer meu sim900 acessar uma pagina web, porem ele demora bastante e depois nao acessa mais, isso sem eu mudar nada.Pensei que poderia ser sinal mas aconteceu em um lugar em que o sinal estava muito bom e um lugar com sinal ruim. Acho que deve ter alguma configuracao que pode estar atrapalhando.Sabe se o chip SIM tem alguma memoria que com os acessos ela vai enchendo?
Segue abaixo meu codigo:
Serial.println("Ativando GPRS");
delay(5000);
SIM900.flush();
Serial.flush();
SIM900.println("AT+CSQ"); //medir nvel de sinal
delay(500);
mostraDadosSerial();
SIM900.println("AT+CREG?"); //SISTEMA ESTA OK?
delay(1000);
mostraDadosSerial();
SIM900.println("AT+CGATT?");
delay(500);
mostraDadosSerial();
SIM900.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");
delay(10000);
mostraDadosSerial();
SIM900.println("AT+SAPBR=3,1,\"APN\",\"zap.vivo.com.br\""); //zap.vivo.com.br
delay(10000);
mostraDadosSerial();
SIM900.println("AT+SAPBR=1,1");
delay(4000);
mostraDadosSerial();
while(d<=3)
{
/////// comecava o loop//////////////
SIM900.println("AT+HTTPINIT"); // INICIA SERVICO HTTP
delay(7000);
mostraDadosSerial();
SIM900.println("AT+HTTPPARA=\"URL\",\"http://google.com"\"");
delay(7000);
mostraDadosSerial();
SIM900.println("AT+HTTPACTION=0"); //ATIVA METODO GET PARA RECEBER RESPOSTA DA PAGINA
delay(30000); // lendo
mostraDadosSerial();
SIM900.println("AT+HTTPREAD"); // REALIZA LEITURA
delay(30000); //lendo
SIM900.println("AT+CSQ"); //medir nvel de sinal
delay(500);
mostraDadosSerial();
SIM900.println("");
SIM900.println("AT+HTTPTERM"); // FINALIZA SERVICO HTTP
mostraDadosSerial();
delay(600);
desde ja agradeco pela ajuda.
É arduino? Testa com uma página mais simples que a do google.
Os testes que fiz foram com uma placa Pinguino c/ PIC 32bits@80MHz ... e uma página em PHP que já gerava os dados no formato que seriam usados pelo µC ...
Verifica a velocidade entre o SIM900 e o Arduino tem uns comandos AT para aumentar isso, de 9600 ... fica ligado que tem de mudar nas duas pontas Arduino e SIM900.
Postar um comentário