- Este tópico contém 3 respostas, 2 utilizadores e foi actualizado pela última vez há 7 anos por Rui Silva.
-
AutorArtigos
-
GonçaloConvidado
Ola a todos
Precisava de uma ajudinha de alguem que perceba de arduino. Eu precisava de juntar o código de vários sensores para fazer uma casa autonoma.ArduinoPortugal.ptAdministradorOlá Gonçalo, explica-nos que sensores queres adicionar ao teu projeto. Talvez possamos ajudar
Rui SilvaConvidadoBom dia,
Precisava de ajuda se possível da vossa parte.
Tenho o seguinte programa;#include <call.h>
#include <gps.h>
#include <GSM.h>
#include <HWSerial.h>
#include <inetGSM.h>
#include <LOG.h>
#include <SIM900.h>
#include <sms.h>
#include <Streaming.h>
#include <WideTextFinder.h>SMSGSM sms;
CallGSM call;char numero[20] = “00351911092891”;
char numero1[20] = “00351932800737”;
char mensagem[30] = “Alarme Intrusao”;
char mensagem1[30] = “Alarme Incendio”;
char mensagem2[30] = “Falha Energia”;boolean started = false;
char smsbuffer[160];
char n[20];boolean estado = LOW;
String msg_esperada(“Portao Pedonal”);
String msg_esperada1(“Corte Energia”);
String msg_esperada2(“Luz Frente”);
String msg_esperada3(“Luz Traz”);
String msg_esperada4(“Abrir Estores RC”);
String msg_esperada5(“Fechar Estores RC”);
String msg_esperada6(“Abrir Estores 1”);
String msg_esperada7(“Fechar Estores 1”);
int FOG = 7;
int ALR = 8;
int ENE = 9;void setup()
{
pinMode(0, OUTPUT);
digitalWrite(0, HIGH);
pinMode(1, OUTPUT);
digitalWrite(1, HIGH);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
pinMode(11, OUTPUT);
digitalWrite(11, HIGH);
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
pinMode(A1, OUTPUT);
digitalWrite(A1, HIGH);
pinMode(A2, OUTPUT);
digitalWrite(A2, HIGH);
pinMode(A3, OUTPUT);
digitalWrite(A3, HIGH);
pinMode(A4, OUTPUT);
digitalWrite(A4, HIGH);
pinMode(A5, OUTPUT);
digitalWrite(A5, HIGH);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);//Inicializa a serial
Serial.begin(9600);
Serial.print(“Ligando shield GSM SIM900. “);
liga_desliga_GSMShield();
Serial.println(“Testando GSM shield…”);
//Comunicacao com o Shield GSM a 2400 bauds
if (gsm.begin(2400))
{
Serial.println(“nstatus=READY”);
started = true;
}
else Serial.println(“nstatus=IDLE”);
{
Serial.println(“Discando….”);
//Efetua a chamada formato call.Call(<numero a ser chamado>)
call.Call(“00351911092891”);
Serial.println(“Ligacao Efetuada!”);
delay(20000);
Serial.println(“Encerrando a ligacao…”);
call.HangUp();
}
}
void loop()
{
if (started)
{
//Aguarda SMS
Serial.println(“Aguardando SMS…”);
if (gsm.readSMS(smsbuffer, 160, n, 20))
{
String msg_recebida(smsbuffer);
msg_recebida.trim();
msg_esperada.trim();
if (msg_recebida == msg_esperada)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta 10….”);
digitalWrite(10, LOW);
delay(3000);
}
delay(1000);
digitalWrite(10, HIGH);
if (msg_recebida == msg_esperada1)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta 11….”);
digitalWrite(11, LOW);
delay(3000);
}
delay(1000);
digitalWrite(11, HIGH);
if (msg_recebida == msg_esperada2)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta 12….”);
digitalWrite(12, LOW);
delay(10000);
}
delay(1000);
digitalWrite(12, HIGH);
if (msg_recebida == msg_esperada3)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta 13….”);
digitalWrite(13, LOW);
delay(10000);
}
delay(1000);
digitalWrite(13, HIGH);
if (msg_recebida == msg_esperada4)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta A0….”);
digitalWrite(A0, LOW);
delay(10000);
}
delay(1000);
digitalWrite(A0, HIGH);
if (msg_recebida == msg_esperada5)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta A1….”);
digitalWrite(A1, LOW);
delay(10000);
}
delay(1000);
digitalWrite(A1, HIGH);
if (msg_recebida == msg_esperada6)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta A2….”);
digitalWrite(A2, LOW);
delay(10000);
}
delay(1000);
digitalWrite(A2, HIGH);
if (msg_recebida == msg_esperada7)
{
estado = !estado;
Serial.println(“SMS Recebido! Alterando estado da porta A3….”);
digitalWrite(A3, LOW);
delay(10000);
}
delay(1000);
digitalWrite(A3, HIGH);
}
if(digitalRead(ALR) == HIGH)
{ //Envia um SMS para o numero selecionado
if (sms.SendSMS(numero, mensagem))
delay(1000);
(sms.SendSMS(numero1, mensagem));
Serial.println(“SMS Alarme enviado!”);
digitalWrite(A4, LOW);
delay(10000);
digitalWrite(A4, HIGH);
delay(10000);
}
if(digitalRead(ENE) == HIGH)
{ //Envia um SMS para o numero selecionado
if (sms.SendSMS(numero, mensagem2))
delay(1000);
(sms.SendSMS(numero1, mensagem2));
Serial.println(“SMS Corte Energia enviado!”);
delay(10000);
}
if(digitalRead(FOG) == HIGH)
{ //Envia um SMS para o numero selecionado
if (sms.SendSMS(numero, mensagem1))
delay(1000);
(sms.SendSMS(numero1, mensagem1));
Serial.println(“SMS Incendio enviado!”);
digitalWrite(A5, LOW);
delay(10000);
}
digitalWrite(A5, HIGH);
delay(10000);
}
}void liga_desliga_GSMShield()
{
Serial.print(F(“Aguarde…”));
pinMode(6, OUTPUT);
digitalWrite(6, LOW);
delay(1000);
digitalWrite(6, HIGH);
delay(1000);
Serial.println(F(“OK!”));
digitalWrite(6, LOW);
delay(500);
}Estou a utilizar um arduino mega e uma placa gsm sim 900. O problema é que a ultima mensagem (“SMS Incendio enviado!”); está sempre a ser enviada para o telemóvel mesmo sem ativar a entrada correspondente.
Gostaria se possível de ter a vossa ajuda.Cumprimentos,
Rui Silva
Rui SilvaConvidadoBoas,
Por Favor apaga o meu artigo.
Rui Silva
-
AutorArtigos