Salve a tutti, sono nuovo per quanto riguarda la programmazione con arduino, tuttavia mi son mosso un po nei vari blog e ho trovato uno sketch che permette attraverso la shield sim 900 di accendere e spegnere un unico led, il mio problema è legato al fatto che non riesco ad esternderlo a più led in particolare 6 e soprattutto vorrei aggiungere il fatto che arduino mi risponda con uno squillo per dimostrarmi che l'operazione è andata a buon fine; anche per questo ultima operazione ho trovato uno sketch ma non riesco a metterlo insieme al primo .
Qualcuno mi può aiutare !?
Hi everybody, i'm new about the programmation with arduino, anyway moving among different blogs I found a sketch that allows to turn on and off a single led, thanks to the shield sim 900. My problem is that i don't manage to extend it to more leds ( 6 in partcular) and above all, I'd like to add that arduino answers me through a ring meaning the work done correctly. For this last work, i found a sketch but i don't manage to put it together the previous one. Could somebody help me?
Ciao Drugo96,
non è difficile specialmente se hai gli skecth .
Di do una specie di diagramma
La prima cosa è il numero che invia sms deve essere tra quelli registrati o in memoria o nella rubrica della sim .
Poi devi controllare il testo per sapere quale led bisogna accendere.
Una volta Acceso il ded effettua una chiamata al numero mittente dell sms
chiudi chiamata dopo un tot di squilli.
Se non riconosci numero e testo ignora sms.
Cancella sms
Consigli, per il riconoscimento del testo usa le char per i problemi noti di memoria e fai attenzione al dimensionamento perchè provoca problemi di reset,
all'nizio usa i println cosi da vedere l'esecuzione.
Ciao
P
Io sono giunto a questo punto, per ora sto lavorando con un unico led poi lo estenderò agli altri 6, soltanto che la sim900 non ne vuole proprio sapere di chiamare; questo è lo schetch che ho caricato:
#include "SIM900.h"
#include <SoftwareSerial.h> // necessaria alla libreria gsm.h richiamata in sms.h
// #include "inetGSM.h" // necessaria per l'uso di HTTP
#include "sms.h" // Libreria per la gestione degli SMS
#include <SoftwareSerial.h>
SoftwareSerial SIM900(2, 3); // configuro TX/RX (2 TDX - 3 RDX)
SMSGSM sms;
int led = 13; // Il Pin 13 è quello connesso al LED
byte ledstato = LOW;
int numdata;
boolean started=false;
char smsbuffer[160];
char Mittente[20];
void setup()
{
SIM900.begin(19200);
// delay(20000); // eventuale attesa il collegamento alla rete cellulare.
Serial.begin(9600);
Serial.println("ESEMPIO INVIO/RICEZIONE SMS");
pinMode(led, OUTPUT); // imposta il pin 13 come pin di OUTPUT.
digitalWrite(led, LOW); // spegne inizialmente il led
// Inizializzo la connessione GSM impostando il baudrate
// Per l'utilizzo di HTTP è opportuno usare 4800 baud o meno
if ( gsm.begin(2400) )
{
Serial.println("STATUS Modulo GSM = PRONTO");
started=true;
}
else
Serial.println("STATUS Modulo GSM = INATTIVO");
};
// legge una stringa dal Serial Monitor
// Questa procedura serve solo nella fase di TEST ovvero
// quando provo a simulare i comandi SMS tramite il SERIAL MONITOR
boolean SerialRead(char s[])
{
int i=0;
if (Serial.available() > 0)
{
while (Serial.available() > 0)
{
s[i]=Serial.read();
delay(10);
i++;
}
}
s[i]='\0'; // Metto il terminatore di stringa
return (i!=0);
}
// legge una stringa dal Serial Monitor
// Questa è la versione proposta da Arduino Lab
// int readSerial(char result[])
// {
// int i = 0;
// while(1)
// {
// while (Serial.available() > 0)
// {
// char inChar = Serial.read();
// if (inChar == '\n') // Line Feed
// {
// result[i] = '\0';
// Serial.flush();
// return 0;
// }
// if(inChar!='\r') // Scarta i Carriage Return
// {
// result[i] = inChar;
// i++;
// }
// }
// }
// }
void loop()
{
char inSerial[50];
char position;
if (started)
{
// -- Righe commentate poichè utilizzate per nei test
// strcpy(Mittente,"3380000000");
// if (SerialRead(smsbuffer))
// ------------------------------------------------------
// Legge se ci sono messaggi disponibili sulla SIM Card
// e li visualizza sul Serial Monitor.
position = sms.IsSMSPresent(SMS_ALL); // Valore da 1..20
if (position)
{
// Leggo il messaggio SMS e stabilisco chi sia il mittente
sms.GetSMS(position, Mittente, smsbuffer, 160);
Serial.print("Comando Ricevuto [tel. "+String(Mittente)+String("]: ") + String(smsbuffer));
if (strcmp(smsbuffer,"ON")==0)
{
digitalWrite(led, HIGH); // Accende il LED impostando il voltaggio a HIGH
delay(3000);
digitalWrite(led, LOW);
Serial.println(" => Accendo il LED");
if (ledstato == HIGH)
{SIM900.println("ATD + +39xxxxxxxxx;");
delay(100);
SIM900.println();
delay(5000); // aspetta 30 secondi...
SIM900.println("ATH"); // Si disconnette
do {} while (1); // loop a vuoto infinito
}
}
else if (strcmp(smsbuffer,"OFF")==0)
{
digitalWrite(led, LOW); // Spengo il LED impostando il voltaggio a LOW
Serial.println(" => Spengo il LED");
}
else if (strcmp(smsbuffer,"STATUS")==0)
{
if (digitalRead(led)==HIGH)
{
sms.SendSMS(Mittente, "STATUS: LED Acceso"); // restituisce true se invia l'SMS
Serial.println(" => il LED e' Acceso");
}
else
{
sms.SendSMS(Mittente, "STATUS: LED Spento"); // restituisce true se invia l'SMS
Serial.println(" => il LED e' Spento");
}
}
else
Serial.println(" => non riconosciuto!");
sms.DeleteSMS(position); // Elimina l'SMS appena analizzato
}
delay(1000);
}
};
La parte dell''off e dello status non mi servono ma le ho mantenute dallo schetch di base che avevo trovato online; il led è giusto che si spenga dopo 5 secondi perchè è ciò che ho bisogno.
Drugo96:
Io sono giunto a questo punto
Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
Drugo96:
Salve a tutti, sono nuovo
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento se non lo hai già fatto: Regolamento
Qui una serie di link utili, non inerenti al tuo problema:
- qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- qui le pinout delle varie schede by xxxPighi: Pinout
- qui una serie di link generali utili: Link Utili
Nessuno mi può aiutare???
io ho rinunciato alla Library e mi sono scritto solo le funzioni che mi servivano. il sistema della libreria non mi piace e mi ha creato problemi.