Proyecto: sistema de seguridad con arduino

Hola buenos dias/tardes/noches depende del horario que estan leyendo esto, me presento soy "ArduineroChileno".

Actualmente me encuentro realizando un proyecto que se me pidio (es un trabajo donde cada uno presentaba una idea la cual debian desarrollar), el tema va que soy muy nuevo en arduino.

Mi proyecto consiste de un sistema de seguridad para un hogar, el cual la idea es que por medio de un modulo bluetooth se envie una señal a mi celular (y configurarlo de alguna forma que aun estoy descubriendo) para activar mi sistema y para desactivarlo.

El sistema contiene principalmente sensores, luces led y buzzers.

Lo que no entiendo es mucho la configuracion, digo esto porque al tener muchos sensores (contiene de temperatura, movimiento, luz) no se como hacerlos para que todos se activen a la vez.

Alguien podria explicarme eso por favor? al igual que el como hacer la codificacion de los sensores? Muchas gracias :slight_smile:

HI,
Adjunto un link que explica lo basico de como usar el bluetooth usando el arduino para controlar con el telefono cellular. Por lo menos te da una idea que es lo que tienes que hacer. Tambien puedes hacer un google como usando el arduino para controlar equipos usando el cellular. Veras que hay un millon de tutorias que lo explican paso por paso.

https://create.arduino.cc/projecthub/user206876468/arduino-bluetooth-basic-tutorial-d8b737?f=1

Buenos dias/tardes o noches. Lo que sucede es lo siguiente:

tengo actualmente 5 sensores que estoy utilizando pero tengo los codigos uno por uno.

Esto se debe a que tengo que hacer un proyecto de un sistema de seguridad de una casa, donde mi idea es que al activar el sistema, todos los sensores comiencen a funcionar a la vez, y cuando yo desactive el sistema, los sensores no se desactiven.

Lo que pasa es que como tengo 5 codigos, como ellos los puedo transformar en uno.

Lo otro es que quiero utilizar el modulo bluetooth HC-06 pero no entiendo como utilizarlo para activar y desactivar el sistema.

PIR BUZZER LED.txt (867 Bytes)

sensor de temperatura con LCD.txt (1.04 KB)

sensor de luz.txt (1.08 KB)

sensor de nivel de agua.txt (266 Bytes)

sensor de sonido con 2 leds.txt (826 Bytes)

Hi,
Aqui adjunto un sketch segun lo que yo entiendo que te sugiere una formar de hacer lo que tu buscas hacer. Como funciona es scanear las rutinas una por una y que ellas ejecunten cada cual su funcion.. Lo que hay que hacer es como desastivarlas. Podrias mandar un flag que al leerla vaya una funcion y que haga lo que quieres hacer para desastivarla. Es solamente una idea pues ya tu tienes los sketch para los snsores.

void setup() {
  // put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:
pir_buzzer_led();

sensor_sonido();

sensor_temp();

sensor_luz();

sensor_nivel_agua();

}

//********************************************
void pir_buzzer_led(){
 
}
//********************************************
void sensor_sonido(){
  
}
//********************************************
void sensor_temp(){
  
}
//**********************************************
void sensor_luz(){
  
}
//*********************************************
void sensor_nivel_agua(){
  
}
//*********************************************

hay 3 hilos similares donde he respondido como hacerlo.
@ArduinoChileno solo busca en las dos primeras páginas de Software y/o General que ahi estan las explicaciones.

Sección Software : Poner 3 programas en uno solo - Software - Arduino Forum

Hay que buscar @ArduinoChileno, casi todo en el foro ya ha sido preguntado y respondido.

Hola buenos dias/tardes o noches, mi problema es el siguiente, estaba uniendo diversos codigos en uno solo, para que hasta el dia de ayer, el codigo me funcionaba sin problemas pero ahora lo intento activar (o hacer funcionar) y me declara el siguiente error "looplluvia was not declared in this scope". Re-escribi el codigo pero aun sigue apareciendo el mismo error.

Adjunto el codigo, por si alguien ve el error

Muchas gracias

//Sensor Movimiento//
const int buzzer= 3; //Pin del buzer
const int PIR= 7; //pin de PIR
const int LED= 6; //pin del LED

int pirState = LOW; //de inicio no hay movimiento
int val = 0; //estado del pin

//Sensor Lluvia//
const int analogInPin= A0;
int sensorValue= 0;

//Sensor Sonido//
int led = 12;  //verde
int led2 = 9; //amarillo
int rango = 600; //es el rango de los sonidos que coge
int volumen;

//Sensor Temperatura//
#include <LiquidCrystal.h>          //Incluir esta libreria para poder usar el lcd

int Ana1 = A0;                      //Entrada analogica de LM35
LiquidCrystal lcd(12,11,5,4,3,2);   //Definimos la pantalla LCD
int Temp = 0;
char Grados = 'º';

//Sensor de Luz//

#define LED 4     //El LED esta conectado en el pin 3 
#define LDR 5     //El LDR esta conectador en el pin A5

int luz = 0;       
int valor_sensor = 0;       
int valor_limite = 300;  //Este valor hara que el LED cambie de estado a una determinada luminosidad (podeis con distintos valores para ajustar la sensibilidad)


void setup() {
  pinMode(3,OUTPUT);
 pinMode(7,INPUT);
 pinMode(6,OUTPUT);
 Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(led2,OUTPUT);
 lcd.begin(16,2);  
  pinMode(13,OUTPUT);
  digitalWrite(13, HIGH);          //Activamos la retroiluminacion
    pinMode(LED,OUTPUT);
  pinMode(LDR,INPUT);
}

void loop() {
  loopPIR();
  looplluvia();
  loopsonido();
  looptemp();
  loopluz();
}

void loopPIR(){
  val = digitalRead(PIR);
if (val == HIGH) //si esta activado
{ 
  digitalWrite(LED, HIGH); //se enciende el led
  analogWrite(buzzer,128); //se enciende el buzzer
  
  
  if (pirState == LOW) //si antes estaba apagado

  { 
    Serial.println("Sensor Activado");
    pirState = HIGH;
  }
}
else //si esta desactivado
{ 
  digitalWrite(LED, LOW); //se apaga el led
  digitalWrite(buzzer, LOW); //se apaga el buzer
  if (pirState == HIGH) //si antes estaba prendido
  { 
    Serial.println("Sensor Parado");
    pirState = LOW;
  }
}
}
}

void looplluvia();{
  sensorValue = analogRead(analogInPin);

Serial.print("Sensor cubierto =");
Serial.print(sensorValue*100/1024);
Serial.println("%");

delay(1000);

}

void loopsonido(){
  volumen = analogRead(A0);

Serial.println(volumen);
delay(50); //Para que los sonidos los escriba en los LED’s con un delay de 50 milisegundos (un pequeño rango para que sea visible el encendido y el apagado por el ser humano)

digitalWrite(led,LOW); //Se inicializa el LED rojo a apagado
digitalWrite(led2,LOW); //Se inicializa el LED verde a apagado
if(volumen <=rango){
digitalWrite(led, HIGH); //Se enciende el LED rojo
digitalWrite(led2,LOW); //Se apaga el LED verde
}
else{
digitalWrite(led, LOW); //Se apaga el LED rojo
digitalWrite(led2,HIGH); //Se enciende el LED verde
}
}

void looptemp(){
  Temp = analogRead(Ana1);          //Leemos el valor de la entrada analogica
  Temp = map(Temp,0,1024,-55,150);  //Escalamos la señal a grados centigrados
  
  //Mostramos los grados en el serial
  Serial.print("Grados: ");
  Serial.print(Temp);
  Serial.print(Grados);
  Serial.println("C");
   //Mostramos los grados en la pantalla LCD
  lcd.setCursor(0,0);            //Con este comando decimos en que linea queremos escribir
  lcd.print("Temperatura: ");
  lcd.setCursor(0,1);            
  lcd.print(Temp); 
  delay(500);                  //Al ser temperatura no hace falta leerlo tan seguido
}
  
void loopluz(){
   valor_sensor = analogRead(LDR); 
  luz = (5.0 * valor_sensor * 100.0)/1024.0; //Para entender esta formula visitar: http://programarfacil.com/podcast/48-sensor-de-temperatura-en-arduino/
  Serial.print(luz);  
  Serial.println(" Luz");             
  delay(300);                       
  
  if (luz <= valor_limite)   //Si el valor de luz es menor o igual que el valor limite
  {
    digitalWrite (LED, LOW);  //El led se apaga
  }
  if (luz > valor_limite)   //Si es mayor que el valor limite
  {
    digitalWrite (LED, HIGH);  //El led se eniende
  }
}

Hi,
Adjunto esta tu sketch con una marca donde te indica donde esta el error. El error esta marcado con una linea. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Suerte

//Sensor Movimiento//
const int buzzer = 3; //Pin del buzer
const int PIR = 7; //pin de PIR
const int LED = 6; //pin del LED

int pirState = LOW; //de inicio no hay movimiento
int val = 0; //estado del pin

//Sensor Lluvia//
const int analogInPin = A0;
int sensorValue = 0;

//Sensor Sonido//
int led = 12;  //verde
int led2 = 9; //amarillo
int rango = 600; //es el rango de los sonidos que coge
int volumen;

//Sensor Temperatura//
#include <LiquidCrystal.h>          //Incluir esta libreria para poder usar el lcd

int Ana1 = A0;                      //Entrada analogica de LM35
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Definimos la pantalla LCD
int Temp = 0;
char Grados = 'º';

//Sensor de Luz//

#define LED 4     //El LED esta conectado en el pin 3
#define LDR 5     //El LDR esta conectador en el pin A5

int luz = 0;
int valor_sensor = 0;
int valor_limite = 300;  //Este valor hara que el LED cambie de estado a una determinada luminosidad (podeis con distintos valores para ajustar la sensibilidad)


void setup() {
  pinMode(3, OUTPUT);
  pinMode(7, INPUT);
  pinMode(6, OUTPUT);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(led2, OUTPUT);
  lcd.begin(16, 2);
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);          //Activamos la retroiluminacion
  pinMode(LED, OUTPUT);
  pinMode(LDR, INPUT);
}

void loop() {
  loopPIR();
 looplluvia();
  loopsonido();
  looptemp();
  loopluz();
}

void loopPIR() {
  val = digitalRead(PIR);
  if (val == HIGH) //si esta activado
  {
    digitalWrite(LED, HIGH); //se enciende el led
    analogWrite(buzzer, 128); //se enciende el buzzer


    if (pirState == LOW) //si antes estaba apagado

    {
      Serial.println("Sensor Activado");
      pirState = HIGH;
    }
  }
  else //si esta desactivado
  {
    digitalWrite(LED, LOW); //se apaga el led
    digitalWrite(buzzer, LOW); //se apaga el buzer
    if (pirState == HIGH) //si antes estaba prendido
    {
      Serial.println("Sensor Parado");
      pirState = LOW;
    }
  }
}
 void looplluvia(); {  //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<         corrige esta instrucciones
sensorValue = analogRead(analogInPin);

Serial.print("Sensor cubierto =");
Serial.print(sensorValue * 100 / 1024);
Serial.println("%");

delay(1000);

}

void loopsonido() {
  volumen = analogRead(A0);

  Serial.println(volumen);
  delay(50); //Para que los sonidos los escriba en los LED's con un delay de 50 milisegundos (un pequeño rango para que sea visible el encendido y el apagado por el ser humano)

  digitalWrite(led, LOW); //Se inicializa el LED rojo a apagado
  digitalWrite(led2, LOW); //Se inicializa el LED verde a apagado
  if (volumen <= rango) {
    digitalWrite(led, HIGH); //Se enciende el LED rojo
    digitalWrite(led2, LOW); //Se apaga el LED verde
  }
  else {
    digitalWrite(led, LOW); //Se apaga el LED rojo
    digitalWrite(led2, HIGH); //Se enciende el LED verde
  }
}

void looptemp() {
  Temp = analogRead(Ana1);          //Leemos el valor de la entrada analogica
  Temp = map(Temp, 0, 1024, -55, 150); //Escalamos la señal a grados centigrados

  //Mostramos los grados en el serial
  Serial.print("Grados: ");
  Serial.print(Temp);
  Serial.print(Grados);
  Serial.println("C");
  //Mostramos los grados en la pantalla LCD
  lcd.setCursor(0, 0);           //Con este comando decimos en que linea queremos escribir
  lcd.print("Temperatura: ");
  lcd.setCursor(0, 1);
  lcd.print(Temp);
  delay(500);                  //Al ser temperatura no hace falta leerlo tan seguido
}

void loopluz() {
  valor_sensor = analogRead(LDR);
  luz = (5.0 * valor_sensor * 100.0) / 1024.0; //Para entender esta formula visitar: http://programarfacil.com/podcast/48-sensor-de-temperatura-en-arduino/
  Serial.print(luz);
  Serial.println(" Luz");
  delay(300);

  if (luz <= valor_limite)   //Si el valor de luz es menor o igual que el valor limite
  {
    digitalWrite (LED, LOW);  //El led se apaga
  }
  if (luz > valor_limite)   //Si es mayor que el valor limite
  {
    digitalWrite (LED, HIGH);  //El led se eniende
  }
}
//****************************************************************

Bien como dije hay 2 o 3 hilos con explicaciones

Poner 4 programas en uno solo

En el post#1 respondo.