Κωνσταντίνε, μπορείς να δοκιμάσεις τον παρακάτω κώδικα με τη συνημμένη βιβλιοθήκη για Uno;
Πες μας τι κάνει.
/*
PINOUT:
* _____________________________
* | ARDUINO UNO >>> SIM800L |
* -----------------------------
* GND >>> GND
* RX 10 >>> TX
* TX 11 >>> RX
* RESET 2 >>> RST
*
* POWER SOURCE 4.2V >>> VCC
*/
Κώδικας:
/*
PINOUT:
* _____________________________
* | ARDUINO UNO >>> SIM800L |
* -----------------------------
* GND >>> GND
* RX 10 >>> TX
* TX 11 >>> RX
* RESET 2 >>> RST
*
* POWER SOURCE 4.2V >>> VCC
*/
// ===================================================================
#include <SoftwareSerial.h> //is necesary for the library!!
#include <stdio.h>
#include <string>
#include "SIM900.h"
#include "sms.h"
// ===================================================================
SMSGSM sms; //to declare the library
SoftwareSerial modem(10,11);
// ===================================================================
boolean started = false;
char sms_text[6];
char phone_number[20]; // array for the phone number string
char sms_position;
int relay_a=4;
int relay_b=5;
int relay_c=6;
int relay_d=7;
// ===================================================================
void setup()
{
Serial.begin(9600); // only for debug the results .
modem.begin(9600);
pinMode( relay_a, OUTPUT );
pinMode( relay_b, OUTPUT );
pinMode( relay_c, OUTPUT );
pinMode( relay_d, OUTPUT );
digitalWrite( relay_a, LOW );
digitalWrite( relay_b, LOW );
digitalWrite( relay_c, LOW );
digitalWrite( relay_d, LOW );
if (gsm.begin(9600))
{
Serial.println(F("modem ready."));
Serial.println();
started=true;
}
}
// ===================================================================
void loop()
{
if(started)
{
sms_position = sms.IsSMSPresent(SMS_UNREAD);
if (sms_position)
{
sms.GetSMS(sms_position, phone_number, sms_text, 100);
if(strcmp(sms_text,"ona") == 0)
{
digitalWrite( relay_a, HIGH );
}
if(strcmp(sms_text,"offa") == 0)
{
digitalWrite( relay_a, LOW );
}
if(strcmp(sms_text,"onb") == 0)
{
digitalWrite( relay_b, HIGH );
}
if(strcmp(sms_text,"offb") == 0)
{
digitalWrite( relay_b, LOW );
}
if(strcmp(sms_text,"onc") == 0)
{
digitalWrite( relay_c, HIGH );
}
if(strcmp(sms_text,"offc") == 0)
{
digitalWrite( relay_c, LOW );
}
if(strcmp(sms_text,"ond") == 0)
{
digitalWrite( relay_d, HIGH );
}
if(strcmp(sms_text,"offd") == 0)
{
digitalWrite( relay_d, LOW );
}
deleteSMS();
}
}
}
// ===================================================================
void deleteSMS()
{
for(int i=1;i<=20;i++)
{
sms.DeleteSMS(i);
}
}
// ===================================================================
// ===================================================================
// ===================================================================
// ===================================================================
// ===================================================================
Υποθέτω πως έχεις ενεργοποιήσει το modem απο hardware.