Faire fonctionner Keyestudio GSM / GPRS Shield via la bibliothèque Amperka

Je veux présenter une bibliothèque pour le bouclier GSM / GPRS pour Arduino de Keyestudio. J'ai acheté cet appareil à cause du prix. En Chine, il s'est avéré être presque 2 fois moins cher que son homologue d'Amperka, et trois fois plus que celui d'iAruino. La raison de l'écriture de ce texte est le manque d'une bibliothèque acceptable sur Keyestudio pour travailler avec lui. Le traitement d'un ensemble de commandes AT n'est pas pris en compte. Les bibliothèques d'autres appareils similaires ne cadraient pas directement. En tout cas, je n'ai pas pu les faire travailler.

À mon avis, j'ai dû adapter la bibliothèque Amperkovskaya la plus élaborée pour cette carte, et ainsi essayer de maintenir la compatibilité du code écrit pour le bouclier Amperkovsky.

Lien vers la bibliothèque: github.com/andrewinc/keyestudio-gsm-gprs-shield
Apparence Keyestudio GSM / GPRS Shield
Amperka utilise une puce Sim900R dans son bouclier, et voici Sim900. La différence la plus importante dans le signal ST: c'est dans la bibliothèque source et le bouclier, mais ce n'est pas dans Keyestudio. Pendant ce temps, il aurait clairement activé ou désactivé la puce. Mais il y a un bouton SIM900_Power, ce qui m'a incité à avoir de mauvaises pensées sur le manque de capacité du logiciel à allumer la puce. Heureusement, ils avaient tort.

Pin 9 - contrôle l'inclusion de la puce, le même substitut que le bouton d'alimentation, PK est indiqué sur la carte Amperka.

Une légère différence dans la version de la puce n'a pas affecté ses capacités, en tout cas, j'ai réussi à initier un appel, envoyer et recevoir des SMS en utilisant les exemples fournis dans la bibliothèque. Je pense que c'est la direction principale de l'utilisation de ce bouclier.

Paramètres physiques


La carte communique avec Arduino via une interface UART. Pour ceux qui ne connaissent pas l'UART, ce sont les broches TX et RX. Par TX - les données proviennent d'Arduino, et par RX - retour.

Il y a aussi un commutateur «UART_Port - DBG_Port», mais je n'ai pas utilisé ce port. Le commutateur est resté dans le "UART_Port".

La caractéristique de la carte est qu'elle ne fonctionne pas hors de la boîte. Si vous faites attention à l'état des cavaliers après avoir ouvert le paquet (voir photo ci-dessus), vous pouvez voir les connexions TXD c 0 et RXD avec 1. Sur Arduino, les mêmes broches sont utilisées pour TX et RX. C'est exactement le problème, car ils sont occupés à télécharger le croquis, ils sont également utilisés pour échanger des informations via l'objet série, incl. et pour le débogage. Lors de la connexion de l'Arduino au bouclier, un conflit se produit et le firmware échoue.

Logiciel série


Il est connu qu'Arduino UNO n'a qu'une seule interface série, mais toute leur famille est, par exemple, Arduino Mega. Serial1 est associé à une paire de TX1 et RX1, de même pour Serial2 et Serial3.
Pour utiliser Arduino UNO, il est raisonnable d'utiliser le logiciel Serial. Il suffit de connecter la bibliothèque appropriée et de créer l'objet lui-même, en indiquant les broches Arduino auxquelles les signaux TXD et RXD proviennent de shield'a:

#include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7); 

Dans cet exemple, TXD est connecté à la broche 6 et RXD est connecté à 7.

Puce d'activation du logiciel


La broche on / off de la puce - 9, contrairement à TX et RX, ne peut pas être connectée à d'autres broches Arduino, dans tous les cas, il n'y avait aucun interrupteur sur le blindage pour cela.

Pour allumer la puce, vous devez envoyer un signal haut de 9 broches, attendez 1 à 3 secondes et appliquez-lui un signal bas. Ensuite, généralement dans le code, vous pouvez voir l'attente en secondes 5-15. Tout cela ressemble à la manipulation du bouton d'alimentation sur un téléphone portable, puis à le télécharger et à établir une connexion avec le réseau.

Dans la bibliothèque source d'Amperka, il y avait une rétroaction via le signal ST. Grâce à lui, en cours d'allumage, l'état a été vérifié: la puce est-elle allumée? Hélas, en l'absence de ce signal, les méthodes d'activation et de désactivation de la puce sont similaires à celles des frères jumeaux, car un stroboscope long à 9 broches est également envoyé pour s'éteindre. Ces méthodes n'ont pas été combinées en une seule en raison de la compatibilité du code et de la paresse courante .

Comment ça marche


La bibliothèque elle-même est connectée à la ligne:

 #include <GPRSk_Shield_Arduino.h> 

Ensuite, vous pouvez créer un objet basé sur la classe GPRSk et transmettre le même mySerial au constructeur ou spécifier le matériel Serial1, Serial2, etc. Un exemple:

 GPRSk gprs(mySerial); 

Serial et mySerial sont généralement initialisés dans la fonction de configuration, cependant, si vous ne prévoyez pas d'envoyer des informations de débogage au moniteur Arduino IDE, vous ne pouvez le faire qu'avec l'initialisation mySerial.

Après cela, la puce est désactivée à l'aide de la méthode gprs.powerOn (), puis gprs.init () est appelé, ce qui retournera vrai si la puce est prête à recevoir / transmettre des informations.

Une fois toutes ces tâches terminées, vous pouvez envoyer des SMS:

 gprs.sendSMS("+79007654321", "Hello SMS from Keyestudio!"); 

Lire les nouveaux messages:

 char message[160]; char phone[16]; char datetime[24]; if (gprs.ifSMSNow()) { gprs.readSMS(message, phone, datetime); } 

faire des appels:

 gprs.callUp("+79007654321"); 

etc.

Dans le cadre de la bibliothèque, des exemples «Amperkov» sont joints, où seul Serial1 est changé en logiciel. Ils ont été testés sur Keyestudio GSM / GPRS Shield et ont montré leurs performances.

La nutrition


Les observations ont montré que ce «sandwich» d'Arduino UNO et le blindage GPRS manquent de puissance USB. Cela s'exprime par l'émission systématique de false avec la méthode gprs.init ()
Il y avait également une alimentation insuffisante de 200 mA (9 V) au connecteur d'alimentation Arduino standard en plus de l'alimentation USB. Au contraire, parfois gprs.init () a réussi, et parfois non. Je pense qu'une alimentation 5V 1-1.5A sera tout à fait suffisante.

Inconvénients:


  1. La bibliothèque utilise des pauses delay (), ce qui interrompt l'exécution de tout le code du contrôleur.
  2. Il est supposé qu'aucun code PIN n'est installé sur la carte SIM
  3. Le texte des messages SMS ne prend pas en charge le cyrillique.

J'espère que cette bibliothèque peut être utile, ainsi que quelques notes sur l'utilisation de ce bouclier.

Source: https://habr.com/ru/post/fr403843/


All Articles