Damit Keyestudio GSM / GPRS Shield über die Amperka-Bibliothek funktioniert

Ich möchte eine Bibliothek für GSM / GPRS Shield für Arduino von Keyestudio vorstellen. Ich habe dieses Gerät wegen des Preises gekauft. In China erwies es sich als fast zweimal billiger als das Gegenstück von Amperka und dreimal so viel wie das von iAruino. Der Grund für das Schreiben dieses Textes ist das Fehlen einer akzeptablen Bibliothek auf Keyestudio für die Arbeit damit. Das Durcharbeiten einer Reihe von AT-Befehlen wird nicht berücksichtigt. Bibliotheken für andere ähnliche Geräte passten nicht direkt. Auf jeden Fall konnte ich sie nicht zum Arbeiten bringen.

Meiner Meinung nach musste ich die aufwendigste Amperkovskaya-Bibliothek für dieses Board anpassen und damit versuchen, die Kompatibilität des für das Amperkovsky-Schild geschriebenen Codes aufrechtzuerhalten.

Link zur Bibliothek: github.com/andrewinc/keyestudio-gsm-gprs-shield
Aussehen Keyestudio GSM / GPRS Shield
Amperka verwendet einen Sim900R-Chip in seinem Schild, und hier ist Sim900. Der wichtigste Unterschied im ST-Signal: Es befindet sich in der Quellbibliothek und im Shield, aber nicht in Keyestudio. In der Zwischenzeit hätte es den Chip eindeutig aktiviert oder deaktiviert. Aber es gibt eine SIM900_Power-Taste, die mich zu schlechten Gedanken über die mangelnde Software-Fähigkeit zum Einschalten des Chips veranlasste. Zum Glück haben sie sich geirrt.

Pin 9 - steuert die Aufnahme des Chips, der gleiche Ersatz für den Netzschalter. PK ist auf der Amperka-Platine angegeben.

Ein geringfügiger Unterschied in der Version des Chips hatte keine Auswirkungen auf seine Funktionen. Auf jeden Fall gelang es mir, anhand der in der Bibliothek bereitgestellten Beispiele einen Anruf einzuleiten, SMS zu senden und zu empfangen. Ich denke, dies ist die Hauptrichtung für die Verwendung dieses Schildes.

Physikalische Einstellungen


Das Board kommuniziert mit Arduino über eine UART-Schnittstelle. Für diejenigen, die UART nicht kennen, sind dies die Pins TX und RX. Per TX - Daten folgen von Arduino und per RX - zurück.

Es gibt auch einen Schalter "UART_Port - DBG_Port", aber ich habe diesen Port nicht verwendet. Der Schalter blieb im "UART_Port".

Die Besonderheit des Boards ist, dass es nicht sofort funktioniert. Wenn Sie nach dem Öffnen des Pakets auf den Status der Jumper achten (siehe Foto oben), sehen Sie die Verbindungen TXD c 0 und RXD mit 1. Auf Arduino werden für TX und RX dieselben Pins verwendet. Das ist genau das Problem, weil Sie sind damit beschäftigt, die Skizze herunterzuladen. Sie werden auch verwendet, um Informationen über das serielle Objekt auszutauschen. und zum Debuggen. Beim Verbinden des Arduino mit dem Shield tritt ein Konflikt auf und die Firmware schlägt fehl.

Software Serial


Es ist bekannt, dass Arduino UNO nur eine serielle Schnittstelle hat, aber ihre ganze Familie ist zum Beispiel Arduino Mega. Serial1 ist einem Paar von TX1 und RX1 zugeordnet, ähnlich wie Serial2 und Serial3.
Um Arduino UNO zu verwenden, ist es sinnvoll, Software Serial zu verwenden. Es reicht aus, die entsprechende Bibliothek anzuschließen und das Objekt selbst zu erstellen. Dabei werden die Arduino-Pins angegeben, an die TXD- und RXD-Signale von Shield'a kommen:

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

In diesem Beispiel ist TXD an Pin 6 und RXD an 7 angeschlossen.

Software aktivieren Chip


Der Chip-Ein / Aus-Pin - 9 kann im Gegensatz zu TX und RX nicht mit anderen Arduino-Pins verbunden werden. In diesem Fall gab es dafür keine Schalter auf der Abschirmung.

Um den Chip einzuschalten, müssen Sie ein hohes Signal von 9 Pins senden, 1-3 Sekunden warten und ein niedriges Signal an ihn anlegen. Dann können Sie normalerweise im Code die Wartezeit in Sekunden 5-15 sehen. All dies ähnelt der Manipulation des Netzschalters auf einem Mobiltelefon und dem anschließenden Herunterladen und Herstellen einer Verbindung mit dem Netzwerk.

In der Quellbibliothek von Amperka gab es eine Rückmeldung über das ST-Signal. Dadurch wurde beim Einschalten der Zustand überprüft: Ist der Chip eingeschaltet? Leider sind in Abwesenheit dieses Signals die Ein- und Ausschaltmethoden des Chips ähnlich wie bei Zwillingsbrüdern, da auch ein 9-poliger Blitz zum Ausschalten gesendet wird. Diese Methoden wurden aus Gründen der Codekompatibilität und der alltäglichen Faulheit nicht zu einer zusammengefasst.

Wie funktioniert es?


Die Bibliothek selbst ist mit der Leitung verbunden:

 #include <GPRSk_Shield_Arduino.h> 

Anschließend können Sie ein Objekt basierend auf der GPRSk-Klasse erstellen und dasselbe mySerial an den Konstruktor übergeben oder Hardware Serial1, Serial2 usw. angeben. Ein Beispiel:

 GPRSk gprs(mySerial); 

Serial und mySerial werden normalerweise in der Setup-Funktion initialisiert. Wenn Sie jedoch nicht vorhaben, Debugging-Informationen an den Arduino IDE-Monitor zu senden, können Sie nur die mySerial-Initialisierung durchführen.

Danach wird der Chip mit der Methode gprs.powerOn () ausgeschaltet und anschließend gprs.init () aufgerufen. Dies gibt true zurück, wenn der Chip bereit ist, Informationen zu empfangen / zu senden.

Wenn alle diese Aufgaben abgeschlossen sind, können Sie SMS senden:

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

Lesen Sie neue Beiträge:

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

Anrufe tätigen:

 gprs.callUp("+79007654321"); 

usw.

Im Rahmen der Bibliothek werden „Amperkov“ -Beispiele angehängt, bei denen nur Serial1 in Software geändert wird. Sie wurden auf Keyestudio GSM / GPRS Shield getestet und zeigten ihre Leistung.

Ernährung


Beobachtungen haben gezeigt, dass dieses „Sandwich“ von Arduino UNO und GPRS Shield keinen Strom von USB hat. Dies wird durch systematische Ausgabe von false mit der Methode gprs.init () ausgedrückt
Zusätzlich zur USB-Stromversorgung war der Standard-Arduino-Stromanschluss nicht mit 200 mA (9 V) versorgt. Vielmehr wurde manchmal gprs.init () bestanden und manchmal nicht. Ich glaube, dass eine 5V 1-1,5A Stromversorgung völlig ausreichend sein wird.

Nachteile:


  1. Die Bibliothek verwendet pausen delay (), wodurch die Ausführung des gesamten Controller-Codes unterbrochen wird.
  2. Es wird davon ausgegangen, dass auf der SIM-Karte kein PIN-Code installiert ist
  3. Der Text von SMS-Nachrichten unterstützt kein Kyrillisch.

Ich hoffe, diese Bibliothek kann nützlich sein, sowie einige Hinweise zur Arbeit mit diesem Schild.

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


All Articles