Sistem de alarma wireless bazat pe Arduino. Alarma de acasă sau folosirea unui senzor de mișcare și monitor LCD cu Arduino Ce vom folosi pentru a asambla

În ultimul deceniu, furturile de mașini au ocupat unul dintre cele mai importante locuri în structura infracțiunilor comise în lume. Acest lucru se datorează nu atât gravității specifice acestei categorii de furturi raportat la numărul total de infracțiuni, cât și semnificației prejudiciului cauzat din cauza costului ridicat al mașinilor. Eficacitatea slabă a măsurilor luate în domeniul combaterii furtului de vehicule până la sfârșitul anilor 90 a condus la crearea unor grupuri stabile specializate în săvârșirea acestor infracțiuni și deținând caracteristici distinctive crima organizată; Probabil ați auzit termenul „afaceri auto negre”. Parcului auto din țările europene îi lipsesc anual ≈ 2% dintre mașinile care devin subiect de atacuri criminale. Prin urmare, mi-a venit ideea de a realiza o alarmă GSM pentru mașina mea bazată pe Arduino Uno.

Să începem!

De la ce vom colecta?

Trebuie să alegem inima sistemului nostru. După părerea mea, pentru o astfel de semnalizare nu există nimic mai bun decât Arduino Uno. Criteriul principal este un număr suficient de „pini” și preț.


Caracteristicile cheie ale Arduino Uno

Microcontroler - ATmega328
Tensiune de funcționare - 5 V
Tensiune de intrare (recomandată) - 7-12 V
Tensiune de intrare (limită) - 6-20 V
Intrări/Ieșiri digitale - 14 (dintre care 6 pot fi folosite ca ieșiri PWM)
Intrări analogice - 6
Curent constant prin intrare/ieșire - 40 mA
Curent constant pentru ieșire 3.3V - 50mA
Memorie flash - 32 KB (ATmega328) din care 0,5 KB sunt folosiți pentru bootloader
RAM - 2 KB (ATmega328)
EEPROM - 1 KB (ATmega328)
Frecvența ceasului - 16 MHz


Se potrivește!

Acum trebuie să selectați un modul GSM, deoarece sistemul nostru de alarmă trebuie să poată anunța proprietarul mașinii. Deci, trebuie să „Google”... Aici, un senzor excelent - SIM800L, dimensiunea este pur și simplu minunată.


M-am gândit și l-am comandat din China. Totuși, totul s-a dovedit a nu fi atât de roz. Senzorul a refuzat pur și simplu să înregistreze cartela SIM în rețea. S-a încercat tot posibilul - rezultatul a fost zero.
Găsit oameni buni care mi-a oferit mai mult misto lucru- Sim900 Shield. Acum, acesta este un lucru serios. Shield are atât un microfon, cât și o mufă pentru căști, ceea ce îl face un telefon cu drepturi depline.


Caracteristici cheie ale Sim900 Shield

4 standarde de frecventa de operare 850/ 900/ 1800/ 1900 MHz
GPRS multi-slot clasa 10/8
Stație mobilă GPRS clasa B
Conform cu GSM faza 2/2+
Clasa 4 (2 W @850/900 MHz)
Clasa 1 (1 W @ 1800/1900MHz)
Control folosind comenzi AT (GSM 07.07, 07.05 și comenzi AT extinse SIMCOM)
Consum redus de energie: 1,5 mA (mod inactiv)
Interval de temperatură de funcționare: -40°C până la +85°C


Se potrivește!

Ok, dar trebuie să luați citiri de la unii senzori pentru a anunța proprietarul. Dacă mașina este tractată, atunci poziția mașinii se va schimba evident în spațiu. Să luăm un accelerometru și un giroscop. Mare. Ok, acum căutăm un senzor.

Cred că GY-521 MPU6050 se va potrivi cu siguranță. S-a dovedit că are și senzor de temperatură. Ar trebui să-l folosim și noi, va exista o astfel de „funcție ucigașă”. Să presupunem că proprietarul mașinii a parcat-o sub casa lui și a plecat. Temperatura din interiorul mașinii se va schimba „liniște”. Ce se întâmplă dacă un intrus încearcă să pătrundă în mașină? De exemplu, el va putea deschide ușa. Temperatura din mașină va începe să se schimbe rapid pe măsură ce aerul din cabină începe să se amestece cu aerul mediu. Cred că va funcționa.


Principalele caracteristici ale GY-521 MPU6050

Giroscop cu 3 axe + modul accelerometru cu 3 axe GY-521 pe cip MPU-6050. Vă permite să determinați poziția și mișcarea unui obiect în spațiu, viteza unghiulară în timpul rotației. Are și un senzor de temperatură încorporat. Este folosit în diverse modele de aeronave și avioane, pe baza acestor senzori se poate asambla și un sistem de captare a mișcării.

Cip - MPU-6050
Tensiune de alimentare - de la 3,5V la 6V (DC);
Interval giroscop - ±250 500 1000 2000°/s
Gama accelerometrului - ±2±4±8±16g
Interfață de comunicare - I2C
Dimensiune - 15x20 mm.
Greutate - 5 g


Se potrivește!

Un senzor de vibrații va fi, de asemenea, la îndemână. Deodată încearcă să deschidă mașina cu „forță brută”, sau în parcare o altă mașină îți lovește mașina. Să luăm senzorul de vibrații SW-420 (reglabil).


Principalele caracteristici ale SW-420

Tensiune de alimentare - 3,3 - 5V
Semnal de ieșire - digital High/Low (în mod normal închis)
Senzor folosit - SW-420
Comparatorul folosit este LM393
Dimensiuni - 32x14 mm
În plus - există o rezistență de reglare.


Se potrivește!

Înșurubați modulul cardului de memorie SD. Vom scrie și un fișier jurnal.


Principalele caracteristici ale modulului cardului de memorie SD

Modulul vă permite să stocați, să citiți și să scrieți pe un card SD datele necesare funcționării unui dispozitiv bazat pe un microcontroler. Utilizarea dispozitivului este relevantă atunci când se stochează fișiere de la zeci de megaocteți la doi gigaocteți. Placa conține un container pentru card SD, un stabilizator de putere pentru card și un conector pentru interfața și liniile de alimentare. Dacă trebuie să lucrați cu date audio, video sau alte date la scară largă, de exemplu, pentru a înregistra evenimente, date senzorului sau pentru a stoca informații despre serverul web, atunci modulul cardului de memorie SD pentru Arduino va face posibilă utilizarea unui card SD pentru acestea. scopuri. Folosind modulul, puteți studia caracteristicile cardului SD.
Tensiune de alimentare - 5 sau 3,3 V
Capacitate de memorie card SD - până la 2 GB
Dimensiuni - 46 x 30 mm


Se potrivește!

Și să adăugăm un servo drive când senzorii sunt declanșați, servo drive-ul cu video recorder se va întoarce și va filma un videoclip al incidentului. Să luăm servomotor MG996R.


Principalele caracteristici ale Servo Drive MG996R

Stabil și protecţie fiabilă din daune
- Unitate de metal
- Rulment cu bile cu doua randuri
- Lungimea firului 300 mm
- Dimensiuni 40x19x43mm
- Greutate 55 g
- Unghi de rotatie: 120 grade.
- Viteza de funcționare: 0,17 sec/60 grade (4,8 V fără sarcină)
- Viteza de functionare: 0,13 sec/60 grade (6V fara sarcina)
- Cuplu de pornire: 9,4 kg/cm la sursa de alimentare de 4,8 V
- Cuplu de pornire: 11kg/cm la sursa de alimentare 6V
- Tensiune de operare: 4,8 - 7,2V
- Toate piesele de antrenare sunt realizate din metal


Se potrivește!

Colectăm

Există un număr mare de articole pe Google despre conectarea fiecărui senzor. Și nu am chef să inventez biciclete noi, așa că voi lăsa link-uri către opțiuni simple și funcționale.

Sistem de alarma GSM pe Arduino

În acest articol veți învăța cum să (cumpărați) să faceți singur o alarmă GSM folosind un modul GSM și Arduino foarte ieftin. Obiectul de securitate al alarmei GSM este ideal o dacha va face, casa, garaj, apartament.


Pasul 1: Elemente
Pentru acest proiect veți avea nevoie de:


Scut GSM

Buzzer
Sirena de alarma 12V
sursa de alimentare 12V

Tastatura pentru Arduino
Cadru.

Pasul 2: Conectarea componentelor


Mai întâi plasezi modul GSM pe Arduino Uno, va trebui să lipiți firele GND și VCC împreună cu doi senzori, un sonerie și o intrare pentru modulul releului. După aceea, conectați aceste fire lipite la conectorul corespunzător al scutului GSM. În continuare, veți realiza un conector de semnal I/O din aceste părți, iar ultimul lucru pe care va trebui să-l faceți este să conectați tastatura

Terminale Arduino Uno/GSM:

Pin 0: neconectat;
Concluzia 1: nu are legătură;
Pin 2: neconectat (GSM va folosi acest pin);
Pin 3: neconectat (GSM va folosi acest pin);
Pin 4: ultima linie folosind tastatura (pinul tastaturii 4 - de la 8);
Concluzia 5: fără legătură;
Pin 6: a doua coloană prin tastatură (pinul tastaturii 6 - de la 8);
Ieșire 7: a treia coloană de la tastatură (tastatura cu degetul 7 - de la 8);
Pin 8: neconectat (GSM va folosi acest pin);
Pin 9: neconectat (GSM va folosi acest pin);
Pin 10: datele senzorului PIR nr. 2;
Concluzia 11: sirena bip(intră în intrarea modulului releului);
Pin 12: datele senzorului PIR nr. 1;
Pin 13: semnal de intrare sonerie;

După cum puteți vedea, deși tastatura are 8 pini, doar trei sunt conectați (un rând și două coloane, permițând citirea a două numere - o matrice 1×2), așa că pot face parole folosind aceste trei fire și nu există trebuie să utilizați toate contactele de la tastatură. Acest lucru se datorează faptului că odată ce senzorul de mișcare detectează o persoană care merge în cameră, persoana respectivă va avea la dispoziție doar 5 secunde pentru a opri alarma. După ce alarma nu este oprită la un moment dat, scutul GSM vă trimite un SMS sau vă sună numărul de telefon. Arduino a fost programat să efectueze un apel și de îndată ce răspundeți la telefon, va închide.

Desigur, este posibil să obțineți citiri false de la senzor, așa că există o opțiune de a opri alarma prin simpla trimitere a unui SMS de pe telefon la Arduino. În plus, o altă opțiune pe care o puteți face este să setați scutul să vă trimită un mesaj pe zi, astfel încât să știți că funcționează corect.

Pasul 3: Cod

Doar descărcați codul de mai jos și compilați. Utilizează bibliotecile Keypad.h și GSM.h.
Descărcare fișier: (descărcări: 181)
Descărcare fișier: (descărcări: 104)

Pasul 4: Concluzie


Având în vedere că codul Arduino Uno îți va trimite mesaje și va suna telefonul în doar cinci secunde după ce cineva intră în casa ta, bănuiesc că vei avea suficient timp să suni la poliție. Bineînțeles, sirena va speria hoții, iar casa ta sau alte spații vor deveni mai sigure cu ajutorul acestui articol.

Bună, dragă cititor! Articolul de astăzi este despre crearea unui simplu sistem de acasă siguranța folosind componentele disponibile. Acest dispozitiv mic și ieftin vă va ajuta să vă protejați casa de intruziune. Ajutor Arduino, senzor de mișcare, afișaj și difuzor. Dispozitivul poate fi alimentat de o baterie sau de portul USB al unui computer.

Deci, să începem!

Cum funcționează?

Corpurile animalelor cu sânge cald emit radiații infraroșii, care sunt invizibile pentru ochii oamenilor, dar pot fi detectate cu ajutorul senzorilor. Astfel de senzori sunt fabricați dintr-un material care se poate polariza spontan atunci când sunt expuși la căldură, făcând posibilă detectarea apariției surselor de căldură în raza de acțiune a senzorului.

Pentru o gamă mai largă, se folosesc lentile Fresnel, care colectează radiația IR din diferite direcții și o concentrează pe senzorul însuși.

Figura arată cum lentila distorsionează razele care cad pe ea.

Este de remarcat faptul că roboții fără părți deosebit de fierbinți și cei cu sânge rece emit foarte puține radiații infraroșii, astfel încât senzorul poate să nu funcționeze dacă angajații Boston Dynamics sau reptilienii decid să te înconjoare.

Când există o modificare a nivelului radiației IR în gamă, aceasta va fi procesată pe Arduino, după care starea va fi afișată pe afișajul LCD, LED-ul va clipi, iar difuzorul va emite un bip.

Ce ne trebuie?

  1. (sau orice alta placa).
  2. (16 caractere pe două rânduri)
  3. Un conector pentru conectarea coroanei la Arduino
  4. (deși puteți folosi un difuzor obișnuit)
  5. Cablu USB - numai pentru programare ( aproximativ traducere: Vine întotdeauna cu Arduino!)
  6. Computer (din nou, doar pentru scrierea și încărcarea programului).

Apropo, dacă nu doriți să cumpărați toate aceste piese separat, vă recomandăm să fiți atenți la ale noastre. De exemplu, tot ce aveți nevoie și chiar mai mult se află în trusa noastră de pornire.

Să ne conectăm!

Conectarea unui senzor de mișcare este foarte simplă:

  1. Conectăm pinul Vcc la 5V Arduino.
  2. Conectăm pinul Gnd la GND al Arduino.
  3. Conectăm pinul OUT la pinul digital nr. 7 de la Arduino

Acum să conectăm LED-ul și difuzorul. E la fel de simplu aici:

  1. Conectam piciorul scurt (minus) al LED-ului la masă
  2. Conectăm piciorul lung (plus) al LED-ului la ieșirea nr. 13 a Arduino
  3. Cablul roșu al difuzorului la ieșirea nr. 10
  4. Sârmă neagră - la masă

Și acum partea grea este conectarea afișajului LCD 1602 la Arduino. Avem un display fără I2C, așa că vom avea nevoie de o mulțime de ieșiri Arduino, dar rezultatul va merita. Diagrama este prezentată mai jos:

Avem nevoie doar de o parte din circuit (nu vom avea reglaj de contrast cu un potențiometru). Prin urmare, trebuie doar să faceți următoarele:

Acum știți cum să conectați un afișaj 1602 la Arduino UNO R3 (precum și la orice versiune de Arduino de la Mini la Mega).

Programare

Este timpul să trecem la programare. Mai jos este codul pe care trebuie doar să-l completezi și, dacă ai asamblat totul corect, dispozitivul este gata!

#include int ledPin = 13; // LED pin int inputPin = 7; // Pinul la care este conectat senzorul de mișcare int pirState = LOW; // Stare curentă (nimic detectat la început) int val = 0; // Variabilă pentru citirea stării intrărilor digitale int pinSpeaker = 10; // Pinul la care este conectat difuzorul. Necesită pin PWM LiquidCrystal LCD (12, 11, 5, 4, 3, 2); // Inițializați afișajul LCD void setup() ( // Determinați direcția de transmisie a datelor pe pinii digitali pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); pinMode(pinSpeaker, OUTPUT); // Începe ieșirea informațiilor de depanare prin portul serial .begin(9600) // Porniți ieșirea pe afișajul LCD lcd.begin(16, 2 // Setați indexul de pe afișajele de la care vom începe ieșirea // (2 caractere, 0 linii); ) lcd.setCursor(2, 0) ; ); // Pauză pentru a citi, ceea ce a fost delay (5000); // Clearing lcd.clear(); ); lcd.setCursor(3, 0); Citiți citirea senzorului val = digitalRead(inputPin) if (val == HIGH) ( // Dacă există mișcare, atunci aprindeți LED-ul și porniți sirena digitalWrite(ledPin, HIGH);< duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } }

În ultimul deceniu, furturile de mașini au ocupat unul dintre cele mai importante locuri în structura infracțiunilor comise în lume. Acest lucru se datorează nu atât gravității specifice acestei categorii de furturi raportat la numărul total de infracțiuni, cât și semnificației prejudiciului cauzat din cauza costului ridicat al mașinilor. Eficacitatea slabă a măsurilor luate în domeniul combaterii furtului de vehicule până la sfârșitul anilor 90 a condus la crearea unor grupuri stabile specializate în săvârșirea acestor infracțiuni și având trăsăturile distinctive ale crimei organizate; Probabil ați auzit termenul „afaceri auto negre”. Parcului auto din țările europene îi lipsesc anual ≈ 2% dintre mașinile care devin subiect de atacuri criminale. Prin urmare, mi-a venit ideea de a realiza o alarmă GSM pentru mașina mea bazată pe Arduino Uno.

Să începem!

De la ce vom colecta?

Trebuie să alegem inima sistemului nostru. După părerea mea, pentru o astfel de semnalizare nu există nimic mai bun decât Arduino Uno. Criteriul principal este un număr suficient de „pini” și preț.


Caracteristicile cheie ale Arduino Uno

Microcontroler - ATmega328
Tensiune de funcționare - 5 V
Tensiune de intrare (recomandată) - 7-12 V
Tensiune de intrare (limită) - 6-20 V
Intrări/Ieșiri digitale - 14 (dintre care 6 pot fi folosite ca ieșiri PWM)
Intrări analogice - 6
Curent constant prin intrare/ieșire - 40 mA
Curent constant pentru ieșire 3.3V - 50mA
Memorie flash - 32 KB (ATmega328) din care 0,5 KB sunt folosiți pentru bootloader
RAM - 2 KB (ATmega328)
EEPROM - 1 KB (ATmega328)
Frecvența ceasului - 16 MHz


Se potrivește!

Acum trebuie să selectați un modul GSM, deoarece sistemul nostru de alarmă trebuie să poată anunța proprietarul mașinii. Deci, trebuie să „Google”... Aici, un senzor excelent - SIM800L, dimensiunea este pur și simplu minunată.


M-am gândit și l-am comandat din China. Totuși, totul s-a dovedit a nu fi atât de roz. Senzorul a refuzat pur și simplu să înregistreze cartela SIM în rețea. S-a încercat tot posibilul - rezultatul a fost zero.
Au fost oameni amabili care mi-au oferit un lucru mai cool - Sim900 Shield. Acum, acesta este un lucru serios. Shield are atât un microfon, cât și o mufă pentru căști, ceea ce îl face un telefon cu drepturi depline.


Caracteristici cheie ale Sim900 Shield

4 standarde de frecventa de operare 850/ 900/ 1800/ 1900 MHz
GPRS multi-slot clasa 10/8
Stație mobilă GPRS clasa B
Conform cu GSM faza 2/2+
Clasa 4 (2 W @850/900 MHz)
Clasa 1 (1 W @ 1800/1900MHz)
Control folosind comenzi AT (GSM 07.07, 07.05 și comenzi AT extinse SIMCOM)
Consum redus de energie: 1,5 mA (mod inactiv)
Interval de temperatură de funcționare: -40°C până la +85°C


Se potrivește!

Ok, dar trebuie să luați citiri de la unii senzori pentru a anunța proprietarul. Dacă mașina este tractată, atunci poziția mașinii se va schimba evident în spațiu. Să luăm un accelerometru și un giroscop. Mare. Ok, acum căutăm un senzor.

Cred că GY-521 MPU6050 se va potrivi cu siguranță. S-a dovedit că are și senzor de temperatură. Ar trebui să-l folosim și noi, va exista o astfel de „funcție ucigașă”. Să presupunem că proprietarul mașinii a parcat-o sub casa lui și a plecat. Temperatura din interiorul mașinii se va schimba „liniște”. Ce se întâmplă dacă un intrus încearcă să pătrundă în mașină? De exemplu, el va putea deschide ușa. Temperatura din mașină va începe să se schimbe rapid pe măsură ce aerul din cabină începe să se amestece cu aerul ambiental. Cred că va funcționa.


Principalele caracteristici ale GY-521 MPU6050

Giroscop cu 3 axe + modul accelerometru cu 3 axe GY-521 pe cip MPU-6050. Vă permite să determinați poziția și mișcarea unui obiect în spațiu, viteza unghiulară în timpul rotației. Are și un senzor de temperatură încorporat. Este folosit în diverse modele de aeronave și avioane, pe baza acestor senzori se poate asambla și un sistem de captare a mișcării.

Cip - MPU-6050
Tensiune de alimentare - de la 3,5V la 6V (DC);
Interval giroscop - ±250 500 1000 2000°/s
Gama accelerometrului - ±2±4±8±16g
Interfață de comunicare - I2C
Dimensiune - 15x20 mm.
Greutate - 5 g


Se potrivește!

Un senzor de vibrații va fi, de asemenea, la îndemână. Deodată încearcă să deschidă mașina cu „forță brută”, sau în parcare o altă mașină îți lovește mașina. Să luăm senzorul de vibrații SW-420 (reglabil).


Principalele caracteristici ale SW-420

Tensiune de alimentare - 3,3 - 5V
Semnal de ieșire - digital High/Low (în mod normal închis)
Senzor folosit - SW-420
Comparatorul folosit este LM393
Dimensiuni - 32x14 mm
În plus - există o rezistență de reglare.


Se potrivește!

Înșurubați modulul cardului de memorie SD. Vom scrie și un fișier jurnal.


Principalele caracteristici ale modulului cardului de memorie SD

Modulul vă permite să stocați, să citiți și să scrieți pe un card SD datele necesare funcționării unui dispozitiv bazat pe un microcontroler. Utilizarea dispozitivului este relevantă atunci când se stochează fișiere de la zeci de megaocteți la doi gigaocteți. Placa conține un container pentru card SD, un stabilizator de putere pentru card și un conector pentru interfața și liniile de alimentare. Dacă trebuie să lucrați cu date audio, video sau alte date la scară largă, de exemplu, pentru a înregistra evenimente, date senzorului sau pentru a stoca informații despre serverul web, atunci modulul cardului de memorie SD pentru Arduino va face posibilă utilizarea unui card SD pentru acestea. scopuri. Folosind modulul, puteți studia caracteristicile cardului SD.
Tensiune de alimentare - 5 sau 3,3 V
Capacitate de memorie card SD - până la 2 GB
Dimensiuni - 46 x 30 mm


Se potrivește!

Și să adăugăm un servo drive când senzorii sunt declanșați, servo drive-ul cu video recorder se va întoarce și va filma un videoclip al incidentului. Să luăm servomotor MG996R.


Principalele caracteristici ale Servo Drive MG996R

Protecție stabilă și fiabilă împotriva daunelor
- Unitate de metal
- Rulment cu bile cu doua randuri
- Lungimea firului 300 mm
- Dimensiuni 40x19x43mm
- Greutate 55 g
- Unghi de rotatie: 120 grade.
- Viteza de funcționare: 0,17 sec/60 grade (4,8 V fără sarcină)
- Viteza de functionare: 0,13 sec/60 grade (6V fara sarcina)
- Cuplu de pornire: 9,4 kg/cm la sursa de alimentare de 4,8 V
- Cuplu de pornire: 11kg/cm la sursa de alimentare 6V
- Tensiune de operare: 4,8 - 7,2V
- Toate piesele de antrenare sunt realizate din metal


Se potrivește!

Colectăm

Există un număr mare de articole pe Google despre conectarea fiecărui senzor. Și nu am chef să inventez biciclete noi, așa că voi lăsa link-uri către opțiuni simple și funcționale.

Salutare tuturor, astăzi ne vom uita la un dispozitiv numit senzor de mișcare. Mulți dintre noi am auzit despre acest lucru, unii chiar s-au ocupat de acest dispozitiv. Ce este un senzor de mișcare? Să încercăm să ne dăm seama, deci:

Senzor de mișcare sau senzor de deplasare - un dispozitiv (dispozitiv) care detectează mișcarea oricăror obiecte. Foarte des aceste dispozitive sunt folosite în sisteme de securitate, alarmă și monitorizare. Există o mulțime de forme de factori ai acestor senzori, dar vom lua în considerare modulul senzorului de mișcare pentru conectarea la plăci. Arduino,si in special de la firma RobotDyn. De ce această companie? Nu vreau să fac publicitate acestui magazin și produselor sale, dar produsele acestui magazin au fost alese ca mostre de laborator datorită prezentării de înaltă calitate a produselor lor către consumatorul final. Deci, ne întâlnim - senzor de mișcare(Senzor PIR) de la RobotDyn:


Acești senzori sunt de dimensiuni mici, consumă puțină energie și sunt ușor de utilizat. În plus, senzorii de mișcare RobotDyn au și contacte cu serigrafie, acesta este desigur un lucru mic, dar foarte plăcut. Ei bine, cei care folosesc aceiași senzori, dar numai de la alte companii, nu ar trebui să-și facă griji - toți au aceeași funcționalitate și, chiar dacă contactele nu sunt marcate, pinout-ul unor astfel de senzori este ușor de găsit pe Internet.

De bază specificatii tehnice senzor de mișcare (senzor PIR):

Zona de operare a senzorului: de la 3 la 7 metri

Unghi de urmărire: până la 110 o

Tensiune de funcționare: 4,5...6 Volți

Consum de curent: până la 50 µA

Nota: Funcționalitatea standard a senzorului poate fi extinsă prin conectarea unui senzor de lumină la pinii IN și GND, iar apoi senzorul de mișcare va funcționa numai în întuneric.

Inițializarea dispozitivului.

Când este pornit, senzorul durează aproape un minut pentru a se inițializa. În această perioadă, senzorul poate da semnale false, acest lucru ar trebui să fie luat în considerare la programarea unui microcontroler cu un senzor conectat la acesta, sau în circuite actuatoare, dacă conexiunea se face fără a utiliza un microcontroler.

Unghiul și zona de detectare.

Unghiul de detectare (urmărire) este de 110 de grade, distanța de detectare este de la 3 la 7 metri, ilustrația de mai jos arată totul:

Reglarea sensibilității (distanța de detectare) și a întârzierii.

Tabelul de mai jos prezintă principalele reglaje ale senzorului de mișcare în stânga există un regulator de întârziere, respectiv, în coloana din stânga există o descriere a setărilor posibile. Coloana din dreapta descrie ajustările distanței de detectare.


Conexiune senzor:

  • Senzor PIR - Arduino Nano
  • Senzor PIR - Arduino Nano
  • Senzor PIR - Arduino Nano
  • Senzor PIR - pentru senzor de lumină
  • Senzor PIR - pentru senzor de lumină

O diagramă tipică de conectare este prezentată în diagrama de mai jos, în cazul nostru, senzorul este afișat convențional din partea din spate și conectat la placa Arduino Nano.

Schiță care demonstrează funcționarea senzorului de mișcare (folosim programul):

/* * Senzor PIR -> Arduino Nano * Senzor PIR -> Arduino Nano * Senzor PIR -> Arduino Nano */ void setup() ( //Stabiliți o conexiune la monitorul portului Serial.begin(9600); ) void loop( ) ( //Citiți valoarea pragului de la portul A0 //de obicei este mai mare de 500 dacă există un semnal if(analogRead(A0) > 500) ( //Semnal de la senzorul de mișcare Serial.println("Există mișcare! !!"); ) else ( / /Fără semnal Serial.println("Totul este liniștit...");

Schița este un test comun al funcționării senzorului de mișcare, are multe dezavantaje, cum ar fi:

  1. Posibile alarme false; senzorul necesită auto-inițializare în decurs de un minut.
  2. Legare rigidă la monitorul portului, fără actuatoare de ieșire (releu, sirenă, indicator LED)
  3. Timpul semnalului la ieșirea senzorului este prea scurt atunci când se detectează mișcare, este necesar să se întârzie programat semnalul pentru o perioadă mai lungă de timp.

Prin complicarea circuitului și extinderea funcționalității senzorului, puteți evita dezavantajele descrise mai sus. Pentru a face acest lucru, va trebui să completați circuitul cu un modul releu și să conectați o lampă obișnuită de 220 de volți prin acest modul. Modulul releului în sine va fi conectat la pinul 3 de pe placa Arduino Nano. Deci diagrama schematică:

Acum este timpul să îmbunătățim ușor schița care a testat senzorul de mișcare. În schiță va fi implementată o întârziere în oprirea releului, deoarece senzorul de mișcare în sine are un timp de semnal prea scurt la ieșire atunci când este declanșat. Programul implementează o întârziere de 10 secunde când senzorul este declanșat. Dacă se dorește, acest timp poate fi mărit sau micșorat prin modificarea valorii variabilei DelayValue. Mai jos este o schiță și un videoclip al întregii lucrări circuit asamblat:

/* * Senzor PIR -> Arduino Nano * Senzor PIR -> Arduino Nano * Senzor PIR -> Arduino Nano * Modul releu -> Arduino Nano */ //relout - pin (semnal de ieșire) pentru modulul releu const int relout = 3 ; //prevMillis - variabilă pentru stocarea timpului ciclului anterior de scanare a programului //interval - interval de timp pentru numărarea secundelor înainte de oprirea releului unsigned long prevMillis = 0; int interval = 1000; //DelayValue - perioada în care releul este menținut în starea on int DelayValue = 10; //initSecond - Variabilă de iterație a buclei de inițializare int initSecond = 60; //countDelayOff - contor interval de timp static int countDelayOff = 0; //trigger - semnal de declanșare a senzorului de mișcare static bool trigger = false; void setup() ( //Procedura standard de inițializare a portului la care este conectat modulul releu //IMPORTANT!!! - pentru ca modulul releu să rămână în starea inițial oprită //și să nu se declanșeze în timpul inițializării, trebuie pentru a scrie //valoarea HIGH în portul de intrare/ieșire, aceasta va evita „clicurile” false și // va păstra starea releului așa cum era înainte de a porni întregul circuit pinMode(relout, OUTPUT(); relout, HIGH); //Totul este simplu aici - așteptăm până la 60 de cicluri (variabilă initSecond) //durează 1 secundă, timp în care senzorul se „autoinițializează” pentru (int i = 0; i.< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Setați indicatorul de declanșare a senzorului de mișcare dacă(!trigger) ( declanșare = adevărat; ) ) //În timp ce indicatorul de declanșare a senzorului de mișcare este setat în timp ce (declanșare) ( //Execută urmând instrucțiunile//Salvați în variabila currMillis //valoarea milisecundelor care au trecut de la începutul //execuției programului unsigned long currMillis = millis();

//Comparați cu valoarea anterioară a milisecundelor //dacă diferența este mai mare decât intervalul specificat, atunci: if(currMillis - prevMillis > interval) ( //Salvează valoarea curentă a milisecundelor în variabila prevMillis prevMillis = currMillis; // Verificați contorul de întârziere comparându-l cu valoarea perioadei //în care releul ar trebui să fie menținut în starea ON if(countDelayOff >= DelayValue) ( ​​​​//Dacă valoarea este egală, atunci: //resetați declanșare semnal de declanșare a senzorului de mișcare = false //Resetează numărul de întârziere. apoi //Măriți contorul de întârziere cu un număr DelayOff ++ //Păstrați releul în starea digitalWrite(relout, LOW ) ) ) ;

Programul conține următoarea structură:

prevMillis lung nesemnat = 0;

...

int interval = 1000;

currMillis lung nesemnat = millis();

{

if(currMillis - prevMillis > interval)

....

prevMillis = currMillis;

....

}

// Operațiunile noastre sunt incluse în corpul structurii Pentru a clarifica, s-a decis să se comenteze separat acest design. Aşa, acest design vă permite să efectuați o sarcină paralelă în program. Corpul structurii funcționează aproximativ o dată pe secundă, acest lucru fiind facilitat de variabilă interval . În primul rând, variabila currMillis este atribuită valoarea returnată la apelarea funcției milis() este atribuită valoarea returnată la apelarea funcției. Funcţie returnează numărul de milisecunde care au trecut de la începutul programului. Dacă diferența currMillis - prevMillis vă permite să efectuați o sarcină paralelă în program. Corpul structurii funcționează aproximativ o dată pe secundă, acest lucru fiind facilitat de variabilă mai mare decât valoarea variabilei . În primul rând, variabila atunci aceasta înseamnă că a trecut deja mai mult de o secundă de la începutul execuției programului și trebuie să salvați valoarea variabilei într-o variabilă prevMillis returnează numărul de milisecunde care au trecut de la începutul programului. Dacă diferența apoi efectuaţi operaţiile cuprinse în corpul structurii. Dacă diferența vă permite să efectuați o sarcină paralelă în program. Corpul structurii funcționează aproximativ o dată pe secundă, acest lucru fiind facilitat de variabilă mai mică decât valoarea variabilei

, atunci nu a trecut încă o secundă între ciclurile de scanare a programului, iar operațiunile conținute în corpul structurii sunt sărite.

Ei bine, la sfârșitul articolului, un videoclip de la autor:

Titlu: