Arduino Motion Detector + Gør det trådløst + Opkaldstelefon, når bevægelse opdages: 10 trin

Arduino Motion Detector + Gør det trådløst + Opkaldstelefon, når bevægelse opdages: 10 trin

Indholdsfortegnelse:

Anonim

Jeg har altid ønsket et bevægelsessensorsystem på min

hus, men de er alt for dyre.

Siden jeg begyndte at arbejde med arduino, indså jeg, at jeg kunne lave en selv.

Så jeg lavede dette projekt i 3 dele:

1) Enkel bevægelsesføler med en arduino og en ledning blinker, når bevægelse er registreret.

2) Ved hjælp af en anden arduino lavede en sender og en modtager systemet systemet trådløst.

3) Ved hjælp af et Arduino GSM skjold vil jeg ringe til mig hver gang bevægelse registreres.

forsyninger:

Trin 1: Dele og materialer

Ting, du skal bruge:

1. del:

  • Arduino Uno
  • LED indikator
  • Jumperkabler
  • 3 Kvinde til Male Kabler
  • breadboard
  • PIR Motion Sensor
  • 220ohm modstand

2. del:

Alle de ovenstående

  • Arduino Uno
  • breadboard
  • Transmitter og Receiver
  • Strømforsyning DC 9V / 1A For Arduino

3. del:

  • Arduino Uno Board
  • GSM skjold til Arduino
  • SIM-kort
  • PIR Motion Sensor
  • Jumperkabler
  • Led indikator
  • 220 ohm modstand
  • 3 Kvinde til Male Kabler
  • breadboard

Lad os komme igang!!!!!

Trin 2: Del 1: Hardwareopsætning

Tag nogle jumperkabler og tilslut jord og 5V til strømbusserne.

Brug de kvindelige til mænds kabler til at forbinde din PIR bevægelsesføler til dit brødbræt.

Derefter skal vi forbinde dem.

Først tilsluttes PIR-sensoren til strømbusserne som vist på billedet. Derefter skal du tage et andet kabel og tilslut PIR-sensorens OUT til en Digital Pin efter eget valg, for mit projekt vil jeg bruge Digital Pin 7.

Nu er det tid til at forbinde vores LED i brødbrættet og via modstanden Digital Pin 5 som vist på billedet. Jeg tror, ​​jeg behøver heller ikke at forklare, men hvis nogen har brug for hjælp, vil jeg gerne hjælpe.

Det er al den hardwareopsætning, der er nødvendig for første del af dette projekt.

Lad os komme til koden nu …

Trin 3: Del 1: Kodning

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

const int sensor_pin = 7;

int prepTime = 30;

lang usigneret int lowIn;

lang usigneret int pause = 5000;

boolean lockLow = true;

boolsk takeLowTime;

int pirPin = 7;

int ledPin = 5;

//OPSÆTNING

void setup () {

Serial.begin (9600);

pinMode (pirPin, INPUT);

pinMode (ledPin, OUTPUT);

digitalWrite (pirPin, LOW);

Serial.print ("forberedende sensor");

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

Serial.print ("");

forsinkelse (1000);

}

Serial.println ("done");

Serial.println ("SENSOR ACTIVE");

forsinkelse (50);

}

// LOOP

void loop () {

hvis (digitalRead (pirPin) == HIGH) {

digitalWrite (ledPin, HIGH);

hvis (lockLow) {

lockLow = false;

Serial.println ("---");

Serial.print ("motion detected at");

Serial.print (ms () / 1000);

Serial.println ("sec");

forsinkelse (50);

}

takeLowTime = true;

}

hvis (digitalRead (pirPin) == LOW) {

digitalWrite (ledPin, LOW);

hvis (takeLowTime) {

lowIn = millis ();

takeLowTime = false;

}

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

lockLow = true;

Serial.print ("motion ended at");

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

Serial.println ("sec");

forsinkelse (50);

}

}

}

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

Trin 4: Del 1: Resultater

Video og fotos er inkluderet, så du kan se, hvordan det skal fungere.

Hvis du har problemer eller har spørgsmål, tøv ikke med at spørge.

Dette er slutningen på del 1.

Lad os nu fortsætte med del 2 og gøre det hele trådløst.

Trin 5: Del 2: Hardwareopsætning

Før vi starter med opsætningen skal du downloade VirtualWire bibliotek fra linket.

For at installere biblioteket skal du blot placere det i biblioteker / mappen i din Arduino-mappe, for mig dens C: Program Files (x86) Arduino biblioteker.

Så lad os begynde at forbinde.

Først lader vi starte med arduino ved hjælp af modtageren.

Forbind leddet som vi gjorde på del 1 (for denne del fik jeg det på Digital Pin 10)

Kontrollér, hvor modtageren GND / DATA / VCC er, og tilslut derefter strømkablerne og dataene til Digital Pin 6.

Glem ikke at forbinde arduino med strømbusserne.

Lad os nu fokusere på senderen.

Som tidligere forbinder arduino med breadboard power busser.

Vedhæft transmitteren og bevægelsesføleren (ved hjælp af hunkablerne til mænd) til brødbrættet.

Som du kan se i billederne, har jeg Motion Sensor tilsluttet til Digital Pin 7 og DATA fra Sender til Digital Pin 9.

Det er det. Du er færdig med at forbinde til anden del.

Kodningstid …

Trin 6: Del 2: Kodning

SENDER KODE

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

#omfatte

const int led_pin = 13;

const int transmit_pin = 9;

const int sensor_pin = 7;

int sensor_value;

void setup () {

vw_set_tx_pin (transmit_pin);

vw_setup (2000);

pinMode (led_pin, OUTPUT);

pinMode (sensor_pin, INPUT);

}

void loop () {

sensor_value = digitalRead (sensor_pin);

char msg 3 = {'o', 'f', 'f'};

hvis (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);

forsinkelse (1000);

}

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

MODTAGER KODE

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

#omfatte

const int motion_pin = 10;

const int led_pin = 13;

const int transmit_pin = 9;

const int receive_pin = 6;

void setup () {

forsinkelse (1000);

Serial.begin (9600);

Serial.println ("setup");

vw_set_rx_pin (receive_pin);

vw_setup (2000);

vw_rx_start ();

pinMode (led_pin, OUTPUT);

pinMode (motion_pin, OUTPUT);

}

void loop () {

uint8_t buf VW_MAX_MESSAGE_LEN;

uint8_t buflen = VW_MAX_MESSAGE_LEN;

hvis (vw_get_message (buf, & buflen)) {

digitalWrite (led_pin, HIGH);

Serial.print ("Got:");

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

Serial.print (char (buf i));

Serial.print ('');

}

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

digitalWrite (motion_pin, HIGH);

forsinkelse (1000);

digitalWrite (motion_pin, LOW);

}

Serial.println ();

digitalWrite (led_pin, LOW);

}

}

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

Trin 7: Del 2: Resultater

Videoen er inkluderet, så du kan se, hvordan det skal fungere.

Hvis du har problemer eller har spørgsmål, tøv ikke med at spørge. Dette er slutningen af ​​del 2.

Lad os nu fortsætte med Del 3 og bruge GSM Shield, så vi kan ringe til et antal af vores valg hver gang sensoren registrerer bevægelse.

Trin 8: Del 3: Hardwareopsætning

Tag nogle jumperkabler og tilslut jord og 5V til strømbusserne.

Brug de kvindelige til mænds kabler til at forbinde din PIR bevægelsesføler til dit brødbræt.

Først tilsluttes PIR-sensoren til strømbusserne som vist på billedet.

Inden vi starter forbindelser med Arduino, skal vi lægge SIM-kortet på GSM-skjold og GSM-skjoldet på Arduino-kortet.

Derefter skal du tage et kabel og tilslutte PIR-sensorens OUT til en Digital Pin efter eget valg, for mit projekt bruger jeg Digital Pin 7.

Nu er det tid til at forbinde vores LED i brødbrættet og via modstanden til Digital Pin 10 som det ses på billedet.

Jeg tror, ​​jeg behøver heller ikke at forklare, men hvis nogen har brug for hjælp, vil jeg gerne hjælpe.

Det er slutningen af ​​hardware til denne del og dette projekt.

Lad os komme til koden nu …

Trin 9: Del 3: Kodning

#omfatte

SoftwareSerial SIM900 (7, 8); // konfigurere software seriel port

const int led_pin = 10;

const int sensor_pin = 7;

int sensor_value;

void setup () {

SIM900.begin (19200);

SIM900power ();

forsinkelse (20000); // giv tid til at logge på netværket.

pinMode (led_pin, OUTPUT);

pinMode (sensor_pin, INPUT);

}

void SIM900power ()

// software equivalent til at trykke på GSM skærm "power" knappen

{

digitalWrite (9, HIGH);

forsinkelse (1000);

digitalWrite (9, LOW);

forsinkelse (5000);

}

void callSomeone () {

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

// TRICKY DEL bruge dette hvis i USA -> SIM900.println ("ATD + +12128675309;"); / ring US (212) 8675309 / // i mit tilfælde Grækenland er SIM900.println ("ATDT + +302105432101; "); / drej GR (210) (5432101)

// så grundlæggende dens SIM900.println ("ATD + + CountryCode_AreaCode_PhoneNumber);

forsinkelse (100);

SIM900.println ();

forsinkelse (10000); // vent i 10 sekunder …

SIM900.println ("ATH"); // Læg på

}

void loop () {

sensor_value = digitalRead (sensor_pin);

hvis (sensor_value == 1) {

digitalWrite (led_pin, HIGH);

forsinkelse (1000);

digitalWrite (led_pin, LOW);

callSomeone (); // ring til nogen

SIM900power (); // sluk GSM skjold

forsinkelse (600000); // Forsink 10 minutter indtil næste opkald.

}

}

Trin 10: Del 3: Resultater

Videoen er inkluderet, så du kan se, hvordan det skal fungere.

Hvis du har problemer eller har spørgsmål, tøv ikke med at spørge. Dette er slutningen på del 3 og slutningen af ​​dette projekt. Håber du nyder det. Stem mig ved sensorkonkurrencen. Tak skal du have.

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

Her er kodefilerne.

Hav det sjovt.