2016-05-25 14 views
0

So wie es aus dem Titel, ich arbeite an Senden und Empfangen von Projekt mit Arduino Mega 2560 mit GSM-Schild SIM900 und einem TFT Nextion HMI-Bildschirm verbunden . Der folgende Code funktioniert und ich bin in der Lage, Nachrichten zu senden und zu empfangen, die den seriellen Monitor in Arduino IDE-Software verwenden. Der nächste Schritt besteht darin, die empfangene SMS-Nachricht auf den Bildschirm zu drucken. Ich verwende den AT-Befehl zum Empfangen und Senden von Nachrichten mit GSM. Das Problem ist, wie kann ich nur die Nachricht lesen, so dass ich leicht in jeder String-Variable gespeichert und auf dem TFT-Bildschirm mit TFT Nextion Style Print-Code gedruckt werden kann ??So drucken Sie SMS empfangen von GSM SIM900 in TFT Nextion Bildschirm mit Arduino IDE

Dies ist der Code:

#include <SoftwareSerial.h> 
#include <Nextion.h> 

SoftwareSerial mySerial(10, 11); // GSM Rx pin is connected to pin 10 and Tx pin is connected to pin 11 
SoftwareSerial nextion(53, 52); // Nextion TX to pin 2 and RX to pin 3 of Arduino 

Nextion myNextion(nextion, 9600); //a Nextion object named myNextion using the nextion serial port @ 9600bps 

void setup() 
{ 
    mySerial.begin(9600); // Setting the baud rate of GSM Module 
    Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino) 
    delay(100); 
    myNextion.init();  // Setting the baud rate of TFT Screen (LCD) 
} 


void loop() 
{ 
    if (Serial.available()>0) 
    switch(Serial.read()) 
    { 
    case 's': 
     SendMessage(); 
     break; 
    case 'r': 
     RecieveMessage(); 
     break; 
    } 

if (mySerial.available()>0) 
    Serial.write(mySerial.read()); 
} 


void SendMessage() 
{ 
    mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode 
    delay(1000); // Delay of 1000 milli seconds or 1 second 
    mySerial.println("AT+CMGS=\"+947779328453\"\r"); // Replace x with mobile number 
    delay(1000); 
    mySerial.println("I am SMS from GSM Module");// The SMS text you want to send 
    delay(100); 
    mySerial.println((char)26);// ASCII code of CTRL+Z 
    delay(1000); 
} 


void RecieveMessage() 
{ 
    mySerial.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS 
    delay(1000); 
} 
+0

Keine Spam-Tags! Arduino ist nicht C! – Olaf

Antwort

0

Wie Sie sagten, mit dem Modem zu kommunizieren, müssen Sie AT-Befehle einen Satz verwenden. Bei den ersten Versuchen schlage ich vor, dass Sie das Modem einfach an eine serielle Schnittstelle anschließen und AT-Befehle manuell ausführen, um sie zu erleben.

Hier ist das erste Dokument, das ich auf Google gefunden, für CMGR suchen:

http://www.zeeman.de/wp-content/uploads/2007/09/ubinetics-at-command-set.pdf

Sie auch den PIN-Code festlegen müssen wohl hier, von Geist ist, wie es geht:

AT+CPIN?  <-- request pin status 
AT+CPIN=1234 <-- Enter the pin 

Dann, wenn es funktioniert und Sie wissen, welche Befehle zu verwenden sind, können Sie mit der Programmierung beginnen!

Je nach Hersteller sind möglicherweise einige AT-Befehle verfügbar, aber für mehr Portabilität empfehle ich Ihnen, sich an die Standards zu halten!

Leider habe ich momentan kein Modem, daher kann ich kein vollständiges Beispiel liefern ...

+0

Tut mir leid, ich scrolle nicht den ganzen Code runter, aber schließlich scheint CMGR/CMGL der Weg zu sein :) – morandg

Verwandte Themen