Arduino Motion Detector + Make It Wireless + Llame al teléfono cuando se detecta movimiento: 10 pasos

Arduino Motion Detector + Make It Wireless + Llame al teléfono cuando se detecta movimiento: 10 pasos

Tabla de contenido:

Anonim

Siempre he querido un sistema de sensor de movimiento en mi

casa pero son todos muy caros

Desde que empecé a trabajar con arduino, me di cuenta de que yo mismo podía hacer uno.

Así que hice este proyecto en 3 partes:

1) Un sensor de movimiento simple con un arduino y un led parpadeará cuando se detecte movimiento.

2) Usando un segundo arduino, un transmisor y un receptor hice el sistema inalámbrico.

3) Utilizando un escudo Arduino GSM me llamaré cada vez que se detecte movimiento.

Suministros:

Paso 1: Piezas y materiales

Cosas que necesitarás:

1ª Parte:

  • Arduino Uno
  • Indicador LED
  • Cables de salto
  • 3 cables hembra a macho
  • Tablero de circuitos
  • Sensor de movimiento PIR
  • Resistencia de 220 ohmios

2ª Parte:

Todas las anteriores

  • Arduino Uno
  • Tablero de circuitos
  • Transmisor y receptor
  • Fuente de alimentación DC 9V / 1A para Arduino

3ª Parte:

  • Tablero Arduino Uno
  • Escudo GSM para Arduino
  • tarjeta SIM
  • Sensor de movimiento PIR
  • Cables de salto
  • Indicador LED
  • Resistor de 220 ohmios
  • 3 cables hembra a macho
  • Tablero de circuitos

¡¡¡¡¡Empecemos!!!!!

Paso 2: Parte 1: Configuración de hardware

Agarre algunos cables de puente y conecte el Ground y el 5V a los buses de alimentación.

Use los cables hembra a macho para conectar su sensor de movimiento PIR a su tablero de pruebas.

Después de eso tenemos que conectarlos.

Primero conecte el sensor PIR a los buses de alimentación como se ve en la foto. Después de eso, tome otro cable y conecte el sensor de SALIDA de PIR a un Pin Digital de su elección, para mi proyecto usaré el Pin Digital 7.

Ahora es el momento de conectar nuestro LED en el tablero y a través de la resistencia del Pin Digital 5 como se ve en la foto. Creo que no necesito explicarlo más, pero si alguien necesita ayuda, con gusto lo ayudaré.

Esa es toda la configuración de hardware que se necesita para la primera parte de este proyecto.

Vayamos al código ahora …

Paso 3: Parte 1: Codificación

---------------------------------------------------------------------

const int sensor_pin = 7;

int prepTime = 30;

long unsigned int lowIn;

larga pausa sin firmar int = 5000;

boolean lockLow = true;

boolean takeLowTime;

int pirPin = 7;

int ledPin = 5;

//PREPARAR

configuración vacía () {

Serial.begin (9600);

pinMode (pirPin, INPUT);

pinMode (ledPin, SALIDA);

digitalWrite (pirPin, LOW);

Serial.print ("sensor de preparación");

para (int i = 0; i <prepTime; i ++) {

Serial.print (".");

retraso (1000);

}

Serial.println ("hecho");

Serial.println ("SENSOR ACTIVE");

retraso (50);

}

//LAZO

bucle de vacío () {

if (digitalRead (pirPin) == HIGH) {

digitalWrite (ledPin, HIGH);

if (lockLow) {

lockLow = falso;

Serial.println ("---");

Serial.print ("movimiento detectado en");

Serial.print (millis () / 1000);

Serial.println ("sec");

retraso (50);

}

takeLowTime = true;

}

if (digitalRead (pirPin) == LOW) {

digitalWrite (ledPin, LOW);

if (takeLowTime) {

lowIn = millis ();

takeLowTime = false;

}

if (! lockLow && millis () - lowIn> pause) {

lockLow = true;

Serial.print ("movimiento finalizado en");

Serial.print ((millis () - pausa) / 1000);

Serial.println ("sec");

retraso (50);

}

}

}

---------------------------------------------------------------------

Paso 4: Parte 1: Resultados

Se incluyen videos y fotos para que pueda ver cómo debería funcionar.

Si tiene problemas o tiene alguna pregunta no dude en preguntar.

Este es el final de la Parte 1.

Ahora continuemos con la Parte 2 y hagamos que todo sea inalámbrico.

Paso 5: Parte 2: Configuración de hardware

Antes de comenzar con la configuración, deberá descargar la biblioteca VirtualWire desde el enlace.

Para instalar la biblioteca, simplemente colóquela en las bibliotecas / carpetas de su carpeta Arduino, para mí es C: Archivos de programa (x86) Arduino bibliotecas.

Así que vamos a empezar a conectar.

Primero vamos a empezar con el arduino usando el receptor.

Conecte el led como lo hicimos en la primera parte (para esta parte lo obtuve en Digital Pin 10)

Verifique dónde se encuentran los GND / DATA / VCC del receptor y conéctelos en consecuencia a los buses de alimentación y los datos al Digital Pin 6.

No olvides conectar el arduino con los power buses.

Ahora vamos a concentrarnos en el transmisor.

Como anteriormente conectamos el arduino con los buses de energía del tablero.

Ahora conecte el transmisor y el sensor de movimiento (utilizando los cables hembra a macho) a la placa de pruebas.

Como se puede ver en las fotos, tengo el sensor de movimiento OUT of motion conectado a Digital Pin 7 y los DATOS del transmisor a Digital Pin 9.

Eso es. Terminaste de conectar para la 2da parte.

Tiempo de codificación …

Paso 6: Parte 2: Codificación

CÓDIGO DE TRANSMISOR

------------------------------------------------------------------------

#incluir

const int led_pin = 13;

const int transmit_pin = 9;

const int sensor_pin = 7;

int sensor_value;

configuración vacía () {

vw_set_tx_pin (transmit_pin);

vw_setup (2000);

pinMode (led_pin, SALIDA);

pinMode (sensor_pin, INPUT);

}

bucle de vacío () {

sensor_value = digitalRead (sensor_pin);

mensaje ms 3 = {'o', 'f', 'f'};

if (sensor_value == 1) {

msg 0 = 'o';

msg 1 = 'n';

msg 2 = '#';

}

digitalWrite (led_pin, HIGH);

vw_send ((uint8_t *) msg, 3);

vw_wait_tx ();

digitalWrite (led_pin, LOW);

retraso (1000);

}

-----------------------------------------------------------------------------

CÓDIGO DE RECEPTOR

----------------------------------------------------------------------------

#incluir

const int motion_pin = 10;

const int led_pin = 13;

const int transmit_pin = 9;

const int receive_pin = 6;

configuración vacía () {

retraso (1000);

Serial.begin (9600);

Serial.println ("setup");

vw_set_rx_pin (receive_pin);

vw_setup (2000);

vw_rx_start ();

pinMode (led_pin, SALIDA);

pinMode (motion_pin, OUTPUT);

}

bucle de vacío () {

uint8_t buf VW_MAX_MESSAGE_LEN;

uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message (buf, & buflen)) {

digitalWrite (led_pin, HIGH);

Serial.print ("Got:");

para (int i = 0; i <buflen; i ++) {

Serial.print (char (buf i));

Serial.print ('');

}

if (char (buf 2) == '#') {

digitalWrite (motion_pin, HIGH);

retraso (1000);

digitalWrite (motion_pin, LOW);

}

Serial.println ();

digitalWrite (led_pin, LOW);

}

}

-------------------------------------------------------------

Paso 7: Parte 2: Resultados

El video está incluido para que puedas ver cómo debería estar funcionando.

Si tiene problemas o tiene alguna pregunta no dude en preguntar. Este es el final de la Parte 2.

Ahora continuemos con la Parte 3 y usemos el Escudo GSM para que podamos llamar a un número de nuestra elección cada vez que el sensor detecte movimiento.

Paso 8: Parte 3: Configuración de hardware

Agarre algunos cables de puente y conecte el Ground y el 5V a los buses de alimentación.

Use los cables hembra a macho para conectar su sensor de movimiento PIR a su tablero de pruebas.

Primero conecte el sensor PIR a los buses de alimentación como se ve en la foto.

Antes de iniciar cualquier conexión con Arduino, tendremos que colocar la tarjeta SIM en el escudo GSM y el escudo GSM en la placa Arduino.

Después de eso, tome un cable y conecte el sensor de SALIDA de PIR a un Pin Digital de su elección, para mi proyecto usaré el Pin Digital 7.

Ahora es el momento de conectar nuestro LED en la placa base y, a través de la resistencia, al Pin Digital 10 como se ve en la foto.

Creo que no necesito explicarlo más, pero si alguien necesita ayuda, con gusto lo ayudaré.

Ese es el final del hardware para esta parte y este proyecto.

Vayamos al código ahora …

Paso 9: Parte 3: Codificación

#incluir

SoftwareSerial SIM900 (7, 8); // configurar el puerto serie del software

const int led_pin = 10;

const int sensor_pin = 7;

int sensor_value;

configuración vacía () {

SIM900.begin (19200);

SIM900power ();

retraso (20000); // tiempo para iniciar sesión en la red.

pinMode (led_pin, SALIDA);

pinMode (sensor_pin, INPUT);

}

void SIM900power ()

// Software equivalente a presionar el botón "power" del escudo GSM

{

escritura digital (9, ALTA);

retraso (1000);

escritura digital (9, BAJA);

retraso (5000);

}

void callSomeone () {

SIM900.println ("ATDT + + 302105432101");

// TRICKY PART use esto si en los Estados Unidos -> SIM900.println ("ATD + +12128675309;"); / dial US (212) 8675309 / // en mi caso, Grecia es SIM900.println ("ATDT + +302105432101 "); / marcar GR (210) (5432101)

// así que básicamente su SIM900.println ("ATD + + CountryCode_AreaCode_PhoneNumber);

retraso (100);

SIM900.println ();

retraso (10000); // espera 10 segundos …

SIM900.println ("ATH"); // colgar

}

bucle de vacío () {

sensor_value = digitalRead (sensor_pin);

if (sensor_value == 1) {

digitalWrite (led_pin, HIGH);

retraso (1000);

digitalWrite (led_pin, LOW);

llamá a alguien(); // llamá a alguien

SIM900power (); // apagar el escudo GSM

retraso (600000); // demora 10 minutos hasta la próxima llamada.

}

}

Paso 10: Parte 3: Resultados

El video está incluido para que puedas ver cómo debería estar funcionando.

Si tiene problemas o tiene alguna pregunta no dude en preguntar. Este es el final de la Parte 3 y el final de este Proyecto. Espero que lo disfrutes. Votame en el concurso de sensores. Gracias.

http: //www.dropbox.com/s/ov00mod4obysk4x/Arduino% …

Aquí están los archivos de código.

Que te diviertas.