Quiero presentar una biblioteca para GSM / GPRS Shield para Arduino de Keyestudio. Compré este dispositivo por el precio. En China, resultó ser casi 2 veces más barato que su homólogo de Amperka, y tres veces más que el de iAruino. La razón para escribir este texto es la falta de una biblioteca aceptable en Keyestudio para trabajar con él.
El trabajo a través de un conjunto de comandos AT no se considera. Las bibliotecas para otros dispositivos similares no se ajustaban directamente. En cualquier caso, no pude hacer que trabajaran.
En mi opinión, tuve que adaptar la biblioteca Amperkovskaya más elaborada para esta placa, y así tratar de mantener la compatibilidad del código escrito para el escudo Amperkovsky.
Realmente enlace a la biblioteca:
github.com/andrewinc/keyestudio-gsm-gprs-shield
Amperka usa un chip Sim900R en su escudo, y aquí está Sim900. La diferencia más importante en la señal ST: está en la biblioteca fuente y el escudo, pero no está en Keyestudio. Mientras tanto, claramente habría habilitado o deshabilitado el chip. Pero hay un botón SIM900_Power, que me llevó a pensar mal sobre la falta de capacidad del software para encender el chip. Afortunadamente, estaban equivocados.
Pin 9: controla la inclusión del chip, el mismo sustituto del botón de Encendido, PK se indica en la placa Amperka.
Una ligera diferencia en la versión del chip no afectó sus capacidades, en cualquier caso, logré iniciar una llamada, enviar y recibir SMS utilizando los ejemplos proporcionados en la biblioteca. Creo que esta es la dirección principal del uso de este escudo.
Ajustes físicos
La placa se comunica con Arduino a través de una interfaz UART. Para aquellos que no conocen UART, estos son los pines TX y RX. Por TX - los datos se derivan de Arduino, y por RX - de regreso.
También hay un conmutador "UART_Port - DBG_Port", pero no utilicé este puerto. El interruptor permaneció en el "Puerto UART".
La peculiaridad del tablero es que no funciona fuera de la caja. Si presta atención al estado de los puentes después de abrir el paquete (vea la foto de arriba), puede ver las conexiones TXD c 0 y RXD con 1. En Arduino, se usan los mismos pines para TX y RX. Este es exactamente el problema, porque están ocupados para descargar el boceto, también se usan para intercambiar información a través del objeto Serie, incl. y para depurar. Al conectar el Arduino al escudo, se produce un conflicto y el firmware falla.
Serie de software
Se sabe que Arduino UNO solo tiene una interfaz en serie, pero toda su familia es, por ejemplo, Arduino Mega. Serial1 está asociado con un par de TX1 y RX1, de manera similar para Serial2 y Serial3.
Para usar Arduino UNO, es razonable usar el software Serial. Es suficiente conectar la biblioteca apropiada y crear el objeto en sí mismo, indicando los pines Arduino a los que provienen las señales TXD y RXD de shield'a:
#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7);
En este ejemplo, TXD está conectado al pin 6 y RXD está conectado al 7.
Chip de habilitación de software
El pin de encendido / apagado del chip - 9, a diferencia de TX y RX, no se puede conectar a otros pines Arduino, en cualquier caso, no hubo interruptores en el escudo para esto.
Para encender el chip, debe enviar una señal alta de 9 pines, espere 1-3 segundos y aplique una señal baja. Luego, generalmente en el código puede ver la espera en segundos 5-15. Todo esto se asemeja a la manipulación del botón de encendido en un teléfono celular, y luego descargarlo y establecer una conexión con la red.
En la biblioteca fuente de Amperka, hubo retroalimentación a través de la señal ST. A través de él, en el proceso de encendido, se verificó el estado: ¿está encendido el chip? Por desgracia, en ausencia de esta señal, los métodos de encendido y apagado del chip son similares a los de los hermanos gemelos, debido al hecho de que también se envía una luz estroboscópica de 9 pines para apagarse. Estos métodos no se combinaron en uno solo por la compatibilidad del código
y por la pereza común .
Como funciona
La biblioteca en sí está conectada con la línea:
#include <GPRSk_Shield_Arduino.h>
Luego puede crear un objeto basado en la clase GPRSk y pasar el mismo mySerial al constructor o especificar el hardware Serial1, Serial2, etc. Un ejemplo:
GPRSk gprs(mySerial);
Serial y mySerial generalmente se inicializan en la función de configuración, sin embargo, si no planea enviar información de depuración al monitor IDE de Arduino, puede hacerlo solo con la inicialización de mySerial.
Después de eso, el chip se apaga usando el método gprs.powerOn () y luego se llama a gprs.init (), que volverá verdadero si el chip está listo para recibir / transmitir información.
Cuando se completen todas estas tareas, puede enviar SMS:
gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!");
Leer nuevas publicaciones:
char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); }
hacer llamadas:
gprs.callUp("+79007654321");
etc.
Dentro del marco de la biblioteca, se adjuntan ejemplos de "Amperkov", donde solo Serial1 se cambia a software. Fueron probados en Keyestudio GSM / GPRS Shield y mostraron su rendimiento.
Nutrición
Las observaciones han demostrado que este "emparedado" de Arduino UNO y el escudo GPRS carece de energía del USB. Esto se expresa emitiendo sistemáticamente false con el método gprs.init ()
También había una potencia insuficiente de 200 mA (9 V) para el conector de alimentación Arduino estándar además de la alimentación USB. Más bien, a veces gprs.init () pasó, y a veces no. Creo que la fuente de alimentación de 5V 1-1.5A será suficiente.
Desventajas
- La biblioteca usa pausas delay (), que interrumpe la ejecución de todo el código del controlador.
- Se supone que no hay un código PIN instalado en la tarjeta SIM
- El texto de los mensajes SMS no es compatible con cirílico.
Espero que esta biblioteca pueda ser útil, así como algunas notas sobre cómo trabajar con este escudo.