Quero apresentar uma biblioteca para o GSM / GPRS Shield para Arduino da Keyestudio. Eu comprei este dispositivo por causa do preço. Na China, ficou quase duas vezes mais barato que o seu homólogo da Amperka e três vezes o do iAruino. A razão para escrever este texto é a falta de uma biblioteca aceitável no Keyestudio para trabalhar com ele.
O trabalho com um conjunto de comandos AT não é considerado. Bibliotecas para outros dispositivos semelhantes não se encaixavam diretamente. De qualquer forma, não consegui fazê-los funcionar.
Na minha opinião, tive que adaptar a biblioteca Amperkovskaya mais elaborada para este painel e, assim, tentar manter a compatibilidade do código escrito para o escudo Amperkovsky.
Na verdade, conecte-se à biblioteca:
github.com/andrewinc/keyestudio-gsm-gprs-shield
A Amperka usa um chip Sim900R em seu escudo, e aqui está o Sim900. A diferença mais importante no sinal ST: está na biblioteca de origem e na blindagem, mas não no Keyestudio. Enquanto isso, teria claramente ativado ou desativado o chip. Mas há um botão SIM900_Power, que me levou a pensar mal sobre a falta de capacidade do software para ligar o chip. Felizmente, eles estavam errados.
Pino 9 - controla a inclusão do chip, o mesmo substituto do botão liga / desliga, PK é indicado na placa Amperka.
Uma pequena diferença na versão do chip não afetou seus recursos; em qualquer caso, consegui iniciar uma chamada, enviar e receber SMS usando os exemplos fornecidos na biblioteca. Eu acho que essa é a direção principal do uso desse escudo.
Configurações físicas
A placa se comunica com o Arduino através de uma interface UART. Para quem não conhece o UART, esses são os pinos TX e RX. Por TX - os dados seguem do Arduino e por RX - de volta.
Há também um switch "UART_Port - DBG_Port", mas eu não usei essa porta. A opção permaneceu no "UART_Port".
A peculiaridade do quadro é que ele não funciona imediatamente. Se você prestar atenção ao estado dos jumpers após abrir a embalagem (veja a foto acima), poderá ver as conexões TXD c 0 e RXD com 1. Os mesmos pinos são usados no Arduino para TX e RX. Este é exatamente o problema, porque eles estão ocupados para baixar o esboço, eles também são usados para trocar informações através do objeto Serial, incl. e para depuração. Ao conectar o Arduino ao escudo, ocorre um conflito e o firmware falha.
Serial de software
Sabe-se que o Arduino UNO possui apenas uma interface serial, mas toda a sua família é, por exemplo, o Arduino Mega. Serial1 está associado a um par de TX1 e RX1, da mesma forma para Serial2 e Serial3.
Para usar o Arduino UNO, é razoável usar o software Serial. Basta conectar a biblioteca apropriada e criar o próprio objeto, indicando os pinos do Arduino aos quais os sinais TXD e RXD vêm da blindagem:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7);
Neste exemplo, TXD está conectado ao pino 6 e RXD está conectado ao 7.
Chip de habilitação de software
O pino de ligar / desligar o chip - 9, diferentemente do TX e RX, não pode ser conectado a outros pinos do Arduino; em qualquer caso, não havia interruptores na blindagem para isso.
Para ligar o chip, você precisa enviar um sinal alto de 9 pinos, aguarde 1-3 segundos e aplique um sinal baixo a ele. Geralmente, no código, você pode ver a espera nos segundos 5-15. Tudo isso se assemelha à manipulação do botão liga / desliga em um telefone celular e, posteriormente, baixá-lo e estabelecer uma conexão com a rede.
Na biblioteca de origem da Amperka, houve feedback através do sinal ST. Por meio dele, no processo de ativação, o estado foi verificado: o chip está ligado? Infelizmente, na ausência desse sinal, os métodos on e off do chip são semelhantes aos irmãos gêmeos, devido ao fato de que um strobe de 9 pinos também é enviado para desligar. Esses métodos não foram combinados em um por causa da compatibilidade de código
e por causa da preguiça comum .
Como isso funciona
A própria biblioteca está conectada com a linha:
#include <GPRSk_Shield_Arduino.h>
Em seguida, você pode criar um objeto com base na classe GPRSk e passar o mesmo mySerial para o construtor ou especificar o hardware Serial1, Serial2, etc. Um exemplo:
GPRSk gprs(mySerial);
Serial e mySerial geralmente são inicializados na função de configuração; no entanto, se você não planeja enviar informações de depuração para o monitor IDE do Arduino, pode fazer apenas com a inicialização do mySerial.
Depois disso, o chip é desligado usando o método gprs.powerOn () e, em seguida, é chamado gprs.init (), que retornará verdadeiro se o chip estiver pronto para receber / transmitir informações.
Quando todas essas tarefas estiverem concluídas, você pode enviar SMS:
gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!");
Leia novas postagens:
char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); }
fazer chamadas:
gprs.callUp("+79007654321");
etc.
Dentro da estrutura da biblioteca, exemplos "Amperkov" são anexados, onde apenas o Serial1 é alterado para software. Eles foram testados no Keyestudio GSM / GPRS Shield e mostraram seu desempenho.
Nutrição
Observações mostraram que este “sanduíche” do escudo Arduino UNO e GPRS carece de energia do USB. Isso é expresso emitindo sistematicamente false com o método gprs.init ()
Também havia energia insuficiente de 200mA (9V) no conector de energia padrão do Arduino, além da energia USB. Em vez disso, algumas vezes gprs.init () passou e outras não. Acredito que a fonte de alimentação 5V 1-1.5A será suficiente.
Desvantagens:
- A biblioteca usa pausa delay (), que interrompe a execução de todo o código do controlador.
- Supõe-se que nenhum código PIN esteja instalado no cartão SIM
- O texto das mensagens SMS não suporta cirílico.
Espero que esta biblioteca possa ser útil, bem como algumas notas sobre como trabalhar com esse escudo.