Koneksyon ng alarm sa Arduino. Home alarm o paggamit ng motion sensor at LCD monitor na may Arduino


Ang mga ito ay mga espesyal na platform ng hardware sa batayan kung saan maaari kang lumikha ng iba't ibang mga kagamitang elektroniko, kasama ang at . Ang mga device ng ganitong uri ay nakikilala sa pamamagitan ng kanilang simpleng disenyo at ang kakayahang mag-program ng kanilang mga operating algorithm. Dahil dito, nilikha ang isang sistema ng alarma gamit ang Arduino , maaaring ma-customize nang husto sa bagay na protektahan nito.

Ano ang isang Arduino module?

Ang mga Arduino ay ipinatupad sa anyo ng mga maliliit na board na may sariling microprocessor at memorya. Ang board ay naglalaman din ng isang hanay ng mga functional na contact kung saan maaari mong ikonekta ang iba't ibang mga nakuryenteng device, kabilang ang mga sensor na ginagamit para sa mga sistema ng seguridad.

Ang Arduino processor ay nagbibigay-daan sa iyo na mag-load ng isang program na isinulat mismo ng gumagamit. Sa pamamagitan ng paglikha ng iyong sariling natatanging algorithm, maaari kang magbigay ng pinakamainam na mga mode ng pagpapatakbo para sa mga alarma sa seguridad para sa iba't ibang bagay at para sa iba't ibang kondisyon gamit at gawaing dapat lutasin.

Mahirap bang magtrabaho sa Arduino?

Ang mga module ng Arduino ay napakapopular sa maraming mga gumagamit. Naging posible ito dahil sa pagiging simple at accessibility nito.

Ang mga programa para sa pagkontrol ng mga module ay isinulat gamit ang regular na C++ at mga karagdagan sa anyo ng mga simpleng function para sa pagkontrol ng mga proseso ng I/O sa mga module pin. Bilang karagdagan, ang libreng Arduino IDE software na tumatakbo sa ilalim ng Windows, Linux o Mac OS ay maaaring gamitin para sa programming.

Sa mga module ng Arduino, ang pamamaraan para sa pag-assemble ng mga aparato ay makabuluhang pinasimple. Ang isang sistema ng alarma ng GSM sa Arduino ay maaaring gawin nang hindi nangangailangan ng isang panghinang - nagaganap ang pagpupulong gamit ang isang breadboard, mga jumper at mga wire.

Paano lumikha ng isang alarma gamit ang Arduino?

Ang mga pangunahing kinakailangan na dapat matugunan ng isang DIY gsm alarm system na nilikha sa Arduino ay kinabibilangan ng:

  • abisuhan ang may-ari ng pasilidad tungkol sa isang break-in o entry;
  • suporta para sa mga panlabas na sistema tulad ng tunog sirena, mga ilaw ng babala;
  • kontrol ng alarma sa pamamagitan ng SMS o tawag;
  • autonomous na operasyon nang walang panlabas na supply ng kuryente.

Upang lumikha ng isang alarma kakailanganin mo:

  • Arduino module;
  • isang hanay ng mga functional sensor;
  • o modem;
  • autonomous na mapagkukunan ng kuryente;
  • panlabas na actuator.

Ang isang natatanging tampok ng mga module ng Arduino ay ang paggamit ng mga espesyal na expansion board. Sa kanilang tulong, ang lahat ng karagdagang mga aparato ay konektado sa Arduino, na kinakailangan upang tipunin ang pagsasaayos ng sistema ng seguridad. Ang mga naturang board ay naka-install sa tuktok ng Arduino module sa anyo ng isang "sandwich", at ang mga kaukulang auxiliary na aparato ay konektado sa mga board mismo.

Paano ito gumagana?

Kapag ang isa sa mga nakakonektang sensor ay na-trigger, ang isang signal ay ipinapadala sa processor ng Arduino module. Gamit ang na-download na software ng user, pinoproseso ito ng microprocessor ayon sa isang partikular na algorithm. Bilang resulta nito, maaaring mabuo ang isang utos na magpatakbo ng isang panlabas na actuator, na ipinadala dito sa pamamagitan ng kaukulang expansion-interface board.

Upang matiyak ang kakayahang magpadala ng mga signal ng babala sa may-ari ng isang bahay o apartment na protektado, isang espesyal na GSM module ay konektado sa Arduino module sa pamamagitan ng isang expansion board. Naka-install dito ang isang SIM card mula sa isa sa mga provider komunikasyong cellular.

Sa kawalan ng isang espesyal na adaptor ng GSM, ang isang regular ay maaaring gumanap ng papel nito. mobile phone. Bilang karagdagan sa pagpapadala ng mga mensaheng SMS na babala ng isang alarma at pag-dial, ang pagkakaroon ng isang cellular na koneksyon ay magbibigay-daan sa iyo na kontrolin ang GSM alarm system sa Arduino nang malayuan, pati na rin subaybayan ang kondisyon ng bagay sa pamamagitan ng pagpapadala ng mga espesyal na kahilingan.

“Papansin!

Upang makipag-usap sa may-ari ng bagay, bilang karagdagan sa mga module ng GSM, maaaring gamitin ang mga ordinaryong modem, na nagbibigay ng komunikasyon sa pamamagitan ng Internet.

Sa kasong ito, kapag ang sensor ay na-trigger, ang signal na naproseso ng processor ay ipinadala sa pamamagitan ng isang modem sa isang espesyal na portal o website. At mula sa site, awtomatikong nabubuo ang isang babalang SMS o mailing sa naka-link na e-mail.

Mga konklusyon

Ang paggamit ng mga module ng Arduino ay magbibigay-daan sa mga user na independiyenteng magdisenyo ng mga GSM alarm na maaaring gumana sa iba't ibang functional sensor at kontrol. mga panlabas na aparato. Salamat sa posibilidad ng paggamit ng iba't ibang mga sensor, ang mga pag-andar ng alarma ay maaaring makabuluhang mapalawak at isang kumplikadong maaaring malikha na susubaybayan hindi lamang ang kaligtasan ng bagay, kundi pati na rin ang kondisyon nito. Halimbawa, magiging posible na kontrolin ang temperatura sa pasilidad, tuklasin ang mga pagtagas ng tubig at gas, patayin ang kanilang suplay kung sakaling magkaroon ng emergency, at marami pang iba.

Ang mga infrared (IR) sensor ay karaniwang ginagamit upang sukatin ang mga distansya, ngunit maaari rin itong gamitin upang makakita ng mga bagay. Sa pamamagitan ng pagkonekta ng ilang IR sensor sa Arduino, maaari tayong lumikha ng alarma sa seguridad.

Balik-aral

Ang mga infrared (IR) sensor ay karaniwang ginagamit upang sukatin ang mga distansya, ngunit maaari rin itong gamitin upang makakita ng mga bagay. Ang mga IR sensor ay binubuo ng isang infrared transmitter at isang infrared na receiver. Ang transmitter ay naglalabas ng mga pulso infrared radiation habang nakikita ng receiver ang anumang pagmuni-muni. Kung ang receiver ay nakakita ng isang pagmuni-muni, nangangahulugan ito na mayroong ilang bagay sa ilang distansya sa harap ng sensor. Kung walang reflection, walang object.

Ang IR sensor na gagamitin namin sa proyektong ito ay nakakakita ng pagmuni-muni sa loob ng isang tiyak na saklaw. Ang mga sensor na ito ay may maliit linear na aparato charge-coupled device (CCD), na nakikita ang anggulo kung saan bumalik ang IR radiation sa sensor. Tulad ng ipinapakita sa figure sa ibaba, ang sensor ay nagpapadala ng isang infrared pulse sa espasyo, at kapag ang isang bagay ay lumitaw sa harap ng sensor, ang pulso ay makikita pabalik sa sensor sa isang anggulo na proporsyonal sa distansya sa pagitan ng bagay at ang sensor. Ang sensor receiver ay nakakakita at naglalabas ng anggulo at gamit ang halagang ito maaari mong kalkulahin ang distansya.

Sa pamamagitan ng pagkonekta ng ilang IR sensor sa Arduino, makakagawa tayo ng simpleng alarma sa seguridad. Mag-i-install kami ng mga sensor sa frame ng pinto at sa pamamagitan ng wastong pag-align ng mga sensor ay matutukoy namin kapag may dumaan sa pinto. Kapag nangyari ito, magbabago ang output ng IR sensor at makikita natin ang pagbabagong ito sa pamamagitan ng patuloy na pagbabasa ng output ng mga sensor gamit ang Arduino. SA sa halimbawang ito alam namin na ang isang bagay ay dumadaan sa pinto kapag ang IR sensor output reading ay lumampas sa 400. Kapag nangyari ito, ang Arduino ay magti-trigger ng alarma. Upang i-reset ang alarma, maaaring pindutin ng user ang isang button.

Mga accessories

  • 2 x IR distance sensor;
  • 1 x Arduino Mega 2560;
  • 1 x buzzer;
  • 1 x na pindutan;
  • 1 x 470 Ohm risistor;
  • 1 x NPN transistor;
  • mga tumatalon.

Diagram ng koneksyon

Ang diagram para sa proyektong ito ay ipinapakita sa figure sa ibaba. Ang mga output ng dalawang IR sensor ay konektado sa mga pin A0 at A1. Ang iba pang dalawang pin ay konektado sa 5V at GND pin. Ang 12-volt buzzer ay konektado sa pin 3 sa pamamagitan ng isang transistor, at ang button na ginamit upang patahimikin ang alarma ay konektado sa pin 4.


Ipinapakita ng larawan sa ibaba kung paano namin idinikit ang mga sensor sa isang frame ng pinto para sa eksperimentong ito. Siyempre, kung regular mong ginagamit ito, iba ang pagkaka-install mo ng mga sensor.


Pag-install

  1. Ikonekta ang 5V at GND pin ng Arduino board sa power at GND pin ng mga sensor. Maaari mo ring bigyan sila ng panlabas na kapangyarihan.
  2. Ikonekta ang mga output pin ng mga sensor sa mga pin A0 at A1 ng Arduino board.
  3. Ikonekta ang pin 3 ng Arduino sa base ng transistor sa pamamagitan ng 1k ohm risistor.
  4. Ilapat ang 12V sa kolektor ng transistor.
  5. Ikonekta ang positibong lead ng 12-volt buzzer sa emitter at ang negatibong lead sa ground bus.
  6. Ikonekta ang pin 4 sa pin 5V sa pamamagitan ng isang button. Para sa mga kadahilanang pangkaligtasan, upang maiwasan ang malaking daloy ng kasalukuyang, palaging mas mahusay na gawin ito sa pamamagitan ng isang karagdagang maliit na risistor.
  7. Ikonekta ang Arduino board sa iyong computer sa pamamagitan ng USB cable at i-load ang program sa microcontroller gamit ang Arduino IDE.
  8. Paganahin ang Arduino board gamit ang power supply, baterya, o USB cable/

Code

const int buzzer=3; // pin 3 ang output sa buzzer const int pushbutton=4; // ang pin 4 ay ang input para sa button na void setup() ( pinMode(buzzer,OUTPUT); // itakda ang pin 3 sa output pinMode(pushbutton,INPUT); // itakda ang pin 4 sa input ) void loop() ( / / basahin ang output ng parehong sensor at ihambing ang resulta sa halaga ng threshold int sensor1_value = analogRead(A0 int sensor2_value = analogRead(A1 kung (sensor1_value > 400 || sensor2_value > 400) ( while(true) ( ​​​​); digitalWrite(buzzer,HIGH) ; // i-on ang alarm if(digitalRead(pushbutton) == HIGH) break;

Video


Paano gumawa ng isang simpleng GSM alarm system gamit ang SIM800L at Arduino para sa isang garahe o cottage. Ginagawa namin ito sa aming sarili gamit ang mga yari na module mula sa Aliexpress. Mga pangunahing module– GSM module SIM800L, Arduino Nano (maaari mong gamitin ang anumang Uno, atbp.), step-down board, baterya mula sa cellphone.

kanin. 1. Layout ng module alarma ng magnanakaw sa Arduino

Produksyon ng alarma

Naka-mount kami breadboard sa pamamagitan ng mga pad, na magpapahintulot sa iyo na palitan ang mga module kung kinakailangan. I-on ang alarm sa pamamagitan ng pagbibigay ng 4.2 volt power sa pamamagitan ng switch sa SIM800L at Arduino Nano.



Kapag na-trigger ang unang loop, tatawagan muna ng system ang unang numero, pagkatapos ay ibababa ang tawag at tatawag muli sa pangalawang numero. Ang pangalawang numero ay idinagdag kung sakali kung ang una ay biglang nadiskonekta, atbp. Kapag na-trigger ang ikalawa, ikatlo, ikaapat, at ikalimang loop, ipapadala ang isang SMS na may numero ng na-trigger na zone, sa dalawang numero din. Ang diagram at sketch para sa mga interesado ay nasa paglalarawan sa ilalim ng video.
Inilalagay namin ang lahat ng electronics sa isang angkop na pabahay.



Kung hindi mo kailangan ng 5 cable, ikonekta ang 5V Arduino pin sa no mga kinakailangang input. GSM alarm system na may 5 loops at isang baterya, na magbibigay-daan sa device na magpatuloy sa paggana ng awtonomiya sa loob ng ilang araw, kahit na sa panahon ng pagkawala ng kuryente. Maaari mong ikonekta sa kanila ang anumang mga sensor ng contact sa seguridad, mga contact sa relay, atbp. Bilang resulta, nakakakuha kami ng simple, mura, at compact na security device para sa pagpapadala ng SMS at pag-dial sa 2 numero. Maaari itong magamit upang protektahan ang isang dacha, apartment, garahe, atbp.

Higit pang mga detalye sa video

Ngayon ay pag-uusapan natin kung paano gamitin Arduino mangolekta sistema ng seguridad. Ang aming "seguridad" ay magbabantay sa isang circuit at magkokontrol sa isang sirena.

Para sa Arduino hindi ito problema, at, tulad ng makikita mo mula sa program code at sa diagram ng device, madali mong madaragdagan ang bilang ng mga protektadong access point at ang bilang ng mga notification o indication device.
Sistema ng seguridad ay maaaring gamitin upang protektahan ang parehong malalaking bagay (mga gusali at istruktura), at maliliit na bagay (mga kahon, safe), at maging ang mga portable na kaso at maleta. Bagaman kailangan mong mag-ingat sa huli, kung nag-install ka ng isang sistema ng seguridad, halimbawa, sa isang maleta kung saan nagpasya kang maglakbay, at ang sistema ng babala ay umalis sa ilang paliparan, sa palagay ko magkakaroon ka ng seryosong pakikipag-usap sa ang lokal na serbisyo sa seguridad :-)

Ang isang pinasimple na prinsipyo ng pagpapatakbo ng aparato ay ang mga sumusunod (Larawan 1). Pagkatapos i-on ang power, ang device ay pupunta sa operating mode at maghihintay para sa pag-armas. Ang pag-aarmas at pag-disarma ay isinasagawa gamit ang isang pindutan. Upang madagdagan ang seguridad, mas mainam na ilagay ang button na ito sa loob ng isang protektadong lugar (safe o kahon). Bago i-on ang mode ng seguridad, dapat na bahagyang buksan ang pinto. Kapag na-on mo ang security mode (pindutin ang button) elektronikong circuit naghihintay hanggang sa isara mo ang pinto sa silid (safe na pinto, takip ng kahon, atbp.).

Ang isang limit switch ng anumang uri ay dapat na naka-install sa pinto (o pinto), higit pa sa na mamaya. Sa pamamagitan ng pagsasara (o pagbubukas), ipapaalam ng limit switch sa device na sarado ang protected circuit, at mapupunta ang device sa security mode. Aabisuhan ka ng system tungkol sa pagpasok sa mode ng seguridad na may dalawang maikling signal (tulad ng sa mga alarma ng sasakyan). Sa mode na ito, "nahuhuli" ng device ang pagbubukas ng pinto. Pagkatapos buksan ang pinto, ang system ay naghihintay ng ilang segundo (ito ay isang adjustable na halaga, mga sampung segundo para sa mga silid, isa o dalawa para sa isang kahon) para i-off ang mode ng seguridad, kung hindi ito mangyayari, ang sirena ay i-on. Ang algorithm at circuit ay idinisenyo sa paraang maaari mong patayin ang sirena sa pamamagitan lamang ng ganap na pag-disassembling ng pabahay at pag-off ng kuryente.

Device sistema ng seguridad napakasimple (Larawan 2). Batay sa pisara Arduino. Ang mga switch ng limitasyon ay konektado tulad ng isang regular na pindutan, sa pamamagitan ng mga pull-up resistors. Ako ay tumira nang hiwalay sa mga switch ng dulo. Ang mga ito ay karaniwang sarado o karaniwang bukas. Maaari mong i-on ang isang regular na pindutan bilang isang limit switch, tanging ang paglalakbay ng isang regular na pindutan ay napakalaki, ang backlash ng pinto ay karaniwang mas malaki. Samakatuwid, ito ay kinakailangan upang makabuo ng ilang uri ng pusher para sa pindutan at spring ito upang hindi masira ang pindutan sa pinto. Buweno, kung hindi ka masyadong tamad, maaari kang pumunta sa tindahan at bumili ng magnetic switch (reed switch) (Fig. 3), hindi ito natatakot sa alikabok at dumi.

Ang switch ng limitasyon para sa mga alarma ng kotse ay angkop din (Larawan 4). Dapat tandaan na ang programa ay isinulat para sa isang switch ng tambo. Sa saradong pinto sarado ang contact nito. Kung gumagamit ka ng switch ng alarma ng kotse, pagkatapos ay kapag nakasara ang pinto ay malamang na bukas ito, at sa naaangkop na mga lugar sa code kakailanganin mong baguhin ang 0 hanggang 1 at kabaliktaran.

Bilang isang sirena, ipinapanukala kong gamitin ang PKI-1 IVOLGA audio siren, na ginawa sa Belarus (Larawan 5). Supply boltahe 9 - 15 V, operating kasalukuyang 20 - 30 mA. Ito ay nagpapahintulot na ito ay magamit nang may lakas ng baterya. Kasabay nito, ito ay "gumagawa" ng 95 - 105 dB.

Sa ganitong mga katangian, ito ay tutunog nang ilang sampu-sampung minuto mula sa isang Krona na baterya. Natagpuan ko ito sa Internet para sa 110 rubles. Doon, ang isang reed switch na may magnet ay nagkakahalaga ng mga 30 rubles. Ang switch ng alarma ng kotse ay binili sa mga bahagi ng sasakyan para sa 28 rubles. Ang KT315 transistor ay maaaring kunin gamit ang anumang titik o palitan ng anumang modernong low-power na silicon transistor na may naaangkop na conductivity. Kung ang lakas ng tunog ng isang sirena ay hindi sapat (na nakakaalam, marahil ay nais mong marinig ito mula sa maraming kilometro ang layo), maaari mong ikonekta ang ilang mga sirena nang magkatulad o kumuha ng mas malakas na isa, tanging sa kasong ito ang transistor ay dapat mapalitan ng isang mas malakas (halimbawa, ang pamilyar na transistor assembly ULN2003). Bilang mga konektor para sa pagkonekta sa switch ng tambo at sirena, ginamit ko ang pinakasimpleng mga konektor para sa mga aparatong audio/video - ang presyo sa merkado ng radyo ay 5 rubles. para sa mag-asawa.

Ang katawan ng aparato ay maaaring nakadikit mula sa plastik o playwud; kung ang isang seryosong bagay ay pinoprotektahan, kung gayon ito ay mas mahusay na gawin itong metal. Upang madagdagan ang pagiging maaasahan at kaligtasan, ipinapayong maglagay ng mga baterya o accumulator sa loob ng case.

Upang gawing simple ang code ng programa, ang mga elemento ng pag-save ng enerhiya ay hindi ginamit, at ang mga baterya ay hindi nagtatagal. Maaari mong i-optimize ang code, o kahit na mas mahusay, radikal na gawing muli ito sa pamamagitan ng paggamit ng interrupt na pagproseso ng kaganapan at MK sleep mode. Sa kasong ito, ang kapangyarihan mula sa dalawang square na baterya na konektado sa serye (9 V) ay dapat sapat para sa ilang buwan.

Ngayon ang code

// mga pare-pareho
pindutan ng const int = 12; // pin para sa button
const int gerkon = 3; // pin para sa switch ng tambo
const int sirena = 2; // control pin ng sirena
const int led = 13; // indicator pin
// mga variable
int buttonState = 0; // estado ng button
int gerkonState = 0; // estado ng switch ng tambo
int N = 0; // disarm button counter
void setup() (
// control sirena at indicator - output
pinMode(sirena, OUTPUT);
pinMode(humantong, OUTPUT); // button at reed switch - mga input
pinMode(gerkon, INPUT);
pinMode(button, INPUT);
}
void loop()
digitalWrite(humantong, HIGH);
while(buttonState= =0)( // wait loop hanggang pinindot namin ang button
buttonState = digitalRead(button); // para lumipat sa security mode
}
digitalWrite(humantong, LOW);
buttonState = 0; // i-reset ang halaga ng button
while(gerkonState= =0)( // loop hanggang sa isara namin ang pinto

}
pagkaantala(500); // :-)
digitalWrite(sirena, HIGH); // Code
pagkaantala(100); // mga indikasyon
digitalWrite(sirena, LOW); // paganahin
pagkaantala(70); // mode
digitalWrite(sirena, HIGH); // seguridad
pagkaantala(100); // abiso
digitalWrite(sirena, LOW); // tunog
while(gerkonState= =1)( // hintaying bumukas ang pinto
gerkonState = digitalRead(gerkon);
}
para sa (int i=0; i<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead(button); // secret button
if (buttonState = = HIGH) ( // subaybayan ang atin - sa ibang tao
N=N+1;
}
pagkaantala(1500); // lihim na tampok :-)))
}
kung (N > 0) ( // ang pinakamahalagang bagay
digitalWrite(sirena, LOW); // huwag mong buksan ang sirena
}
iba pa(
digitalWrite(sirena, HIGH); // o buksan ang sirena
}
digitalWrite(humantong, HIGH); // i-on ang indicator N = 0;
buttonState = 0;
pagkaantala(15000); // paalala para sa mga dummies na gusto
digitalWrite(humantong, LOW); // pindutin ang mga pindutan nang walang pagkaantala (1000);

Kumusta sa lahat, titingnan natin ngayon ang isang device na tinatawag na motion sensor. Marami sa atin ang nakarinig tungkol sa bagay na ito, ang ilan ay nakipag-usap pa sa device na ito. Ano ang isang motion sensor? Subukan nating alamin ito, kaya:

Motion sensor o displacement sensor - isang aparato (device) na nakikita ang paggalaw ng anumang bagay. Kadalasan ang mga device na ito ay ginagamit sa mga sistema ng seguridad, alarma at pagsubaybay. Napakaraming uri ng mga kadahilanan ng mga sensor na ito, ngunit isasaalang-alang namin ang module ng motion sensor para sa koneksyon sa mga board. Arduino,at partikular na mula sa kumpanya RobotDyn. Bakit ang kumpanyang ito? Hindi ko gustong i-advertise ang tindahang ito at ang mga produkto nito, ngunit ang mga produkto ng tindahang ito ang napili bilang mga sample ng laboratoryo dahil sa mataas na kalidad na presentasyon ng kanilang mga produkto sa end consumer. Kaya, nagkikita kami - sensor ng paggalaw(PIR Sensor) mula sa RobotDyn:


Ang mga sensor na ito ay maliit sa laki, kumonsumo ng kaunting kapangyarihan at madaling gamitin. Bilang karagdagan, ang mga sensor ng paggalaw ng RobotDyn ay mayroon ding silk-screened na mga contact, ito ay siyempre isang maliit na bagay, ngunit napaka-kaaya-aya. Kaya, ang mga gumagamit ng parehong mga sensor, ngunit mula lamang sa ibang mga kumpanya, ay hindi dapat mag-alala - lahat sila ay may parehong pag-andar, at kahit na ang mga contact ay hindi minarkahan, ang pinout ng naturang mga sensor ay madaling mahanap sa Internet.

Basic teknikal na mga pagtutukoy motion sensor (PIR Sensor):

Lugar ng pagpapatakbo ng sensor: mula 3 hanggang 7 metro

Anggulo ng pagsubaybay: hanggang 110 o

Boltahe sa pagpapatakbo: 4.5...6 Volts

Kasalukuyang pagkonsumo: hanggang 50 μA

Tandaan: Maaaring palawakin ang karaniwang functionality ng sensor sa pamamagitan ng pagkonekta ng light sensor sa IN at GND pin, at pagkatapos ay gagana lang ang motion sensor sa dilim.

Pagsisimula ng device.

Kapag naka-on, ang sensor ay tumatagal ng halos isang minuto upang masimulan. Sa panahong ito, ang sensor ay maaaring magbigay ng mga maling signal; dapat itong isaalang-alang kapag nag-program ng isang microcontroller na may sensor na konektado dito, o sa mga actuator circuit kung ang koneksyon ay ginawa nang hindi gumagamit ng microcontroller.

Anggulo ng pagtuklas at lugar.

Ang anggulo ng pagtuklas(pagsubaybay) ay 110 degrees, ang hanay ng distansya ng pagtuklas ay mula 3 hanggang 7 metro, ang paglalarawan sa ibaba ay nagpapakita ng lahat ng ito:

Pagsasaayos ng sensitivity (distansya ng pagtuklas) at pagkaantala ng oras.

Ang talahanayan sa ibaba ay nagpapakita ng mga pangunahing pagsasaayos ng motion sensor sa kaliwa mayroong isang time delay regulator, ayon sa pagkakabanggit, sa kaliwang hanay ay mayroong isang paglalarawan ng mga posibleng setting. Inilalarawan ng kanang column ang mga pagsasaayos ng distansya ng pagtuklas.


Koneksyon ng sensor:

  • PIR Sensor - Arduino Nano
  • PIR Sensor - Arduino Nano
  • PIR Sensor - Arduino Nano
  • PIR Sensor - para sa light sensor
  • PIR Sensor - para sa light sensor

Ang isang tipikal na diagram ng koneksyon ay ipinapakita sa diagram sa ibaba, sa aming kaso, ang sensor ay karaniwang ipinapakita mula sa likurang bahagi at konektado sa Arduino Nano board.

Sketch na nagpapakita ng pagpapatakbo ng motion sensor (ginagamit namin ang program):

/* * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano */ void setup() ( //Magtatag ng koneksyon sa port monitor Serial.begin(9600); ) void loop( ) ( //Basahin ang halaga ng threshold mula sa port A0 //kadalasan ay mas mataas ito sa 500 kung mayroong signal kung(analogRead(A0) > 500) ( //Signal mula sa motion sensor Serial.println("May paggalaw! !!"); ) else ( //Walang signal Serial.println("Tahimik ang lahat...");

Ang sketch ay isang pangkaraniwang pagsubok sa pagpapatakbo ng motion sensor;

  1. Posibleng mga maling alarma, ang sensor ay nangangailangan ng self-initialization sa loob ng isang minuto.
  2. Rigid binding sa port monitor, walang output actuator (relay, sirena, LED indicator)
  3. Ang oras ng signal sa output ng sensor ay masyadong maikli kapag natukoy ang paggalaw, kinakailangan na ipagpaliban ang signal nang mas mahabang panahon.

Sa pamamagitan ng pagpapakumplikado sa circuit at pagpapalawak ng pag-andar ng sensor, maiiwasan mo ang mga disadvantage na inilarawan sa itaas. Upang gawin ito, kakailanganin mong dagdagan ang circuit gamit ang isang relay module at ikonekta ang isang regular na 220-volt lamp sa pamamagitan ng module na ito. Ang relay module mismo ay ikokonekta sa pin 3 sa Arduino Nano board. Kaya ang schematic diagram:

Ngayon ay oras na upang bahagyang pagbutihin ang sketch na sumubok sa motion sensor. Nasa sketch na ipapatupad ang pagkaantala sa pag-off ng relay, dahil ang motion sensor mismo ay masyadong maikli ang oras ng signal sa output kapag na-trigger. Ang programa ay nagpapatupad ng 10 segundong pagkaantala kapag ang sensor ay na-trigger. Kung ninanais, ang oras na ito ay maaaring dagdagan o bawasan sa pamamagitan ng pagbabago ng halaga ng variable DelayValue. Nasa ibaba ang isang sketch at video ng buong gawain assembled circuit:

/* * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * Relay Module -> Arduino Nano */ //relout - pin (output signal) para sa relay module const int relout = 3 ; //prevMillis - variable para sa pag-iimbak ng oras ng nakaraang ikot ng pag-scan ng programa //interval - time interval para sa pagbibilang ng mga segundo bago patayin ang relay na hindi pinirmahan mahabang prevMillis = 0; int interval = 1000; //DelayValue - ang panahon kung saan ang relay ay pinananatili sa estado int DelayValue = 10; //initSecond - Initialization loop iteration variable int initSecond = 60; //countDelayOff - time interval counter static int countDelayOff = 0; //trigger - motion sensor trigger flag static bool trigger = false; void setup() ( // Karaniwang pamamaraan pagsisimula ng port kung saan nakakonekta ang relay module //MAHALAGA!!! - upang ang relay module ay manatili sa unang off state //at hindi mag-trigger sa panahon ng initialization, kailangan mong magsulat ng HIGH value sa input/output port //, maiiwasan nito ang maling "pag-click" at // panatilihin ang relay state gaya ng dati bago i-on ang buong circuit sa operation pinMode(relout, OUTPUT);< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >digitalWrite(relout, HIGH); //Ang lahat ay simple dito - naghihintay kami ng 60 cycle na matapos (initSecond variable) // tumatagal ng 1 segundo, sa panahong ang sensor ay "nagsisimula sa sarili" para sa(int i = 0; i//I-save sa variable na currMillis //ang halaga ng millisecond na lumipas mula noong simula ng //execution ng program unsigned long currMillis = millis();

//Ihambing sa dating value ng milliseconds //kung ang pagkakaiba ay mas malaki kaysa sa tinukoy na interval, kung gayon: if(currMillis - prevMillis > interval) ( //I-save ang kasalukuyang halaga ng milliseconds sa variable prevMillis prevMillis = currMillis; // Suriin ang delay counter sa pamamagitan ng paghahambing nito sa halaga ng tuldok / /sa panahon kung saan ang relay ay dapat panatilihin sa ON na estado kung(countDelayOff >= DelayValue) ( ​​// Kung ang halaga ay katumbas, pagkatapos ay: //i-reset ang motion sensor trigger flag trigger = false; //I-reset ang delay counter countDelayOff = 0; pagkatapos //Idagdag ang delay counter ng isang countDelayOff ++ //Panatilihin ang relay sa estadong digitalWrite(relout, LOW );

Ang programa ay naglalaman ng sumusunod na istraktura:

unsigned long prevMillis = 0;

...

int interval = 1000;

unsigned long currMillis = millis();

{

if(currMillis - prevMillis > interval)

....

prevMillis = currMillis;

....

}

// Ang aming mga operasyon ay nakapaloob sa katawan ng istraktura Upang linawin, napagpasyahan na magkomento nang hiwalay sa disenyong ito. Kaya, itong disenyo nagpapahintulot sa iyo na magsagawa ng isang parallel na gawain sa programa. Ang katawan ng istraktura ay nagpapatakbo ng humigit-kumulang isang beses bawat segundo, ito ay pinadali ng variable pagitan . Una, ang variable currMillis ang halaga ay ibinalik kapag tumatawag sa function ay itinalaga millis() ang halaga ay ibinalik kapag tumatawag sa function ay itinalaga. Function ibinabalik ang bilang ng mga millisecond na lumipas mula noong simula ng programa. Kung ang pagkakaiba currMillis - prevMillis nagpapahintulot sa iyo na magsagawa ng isang parallel na gawain sa programa. Ang katawan ng istraktura ay nagpapatakbo ng humigit-kumulang isang beses bawat segundo, ito ay pinadali ng variable mas malaki kaysa sa halaga ng variable . Una, ang variable pagkatapos ay nangangahulugan ito na higit sa isang segundo ang lumipas mula noong simula ng pagpapatupad ng programa, at kailangan mong i-save ang halaga ng variable sa isang variable prevMillis ibinabalik ang bilang ng mga millisecond na lumipas mula noong simula ng programa. Kung ang pagkakaiba pagkatapos ay gawin ang mga operasyon na nakapaloob sa katawan ng istraktura. Kung ang pagkakaiba nagpapahintulot sa iyo na magsagawa ng isang parallel na gawain sa programa. Ang katawan ng istraktura ay nagpapatakbo ng humigit-kumulang isang beses bawat segundo, ito ay pinadali ng variable mas mababa kaysa sa variable na halaga

, pagkatapos ay hindi pa lumilipas ang isang segundo sa pagitan ng mga ikot ng pag-scan ng programa, at ang mga operasyong nakapaloob sa katawan ng istraktura ay nilaktawan.

Well, sa dulo ng artikulo, isang video mula sa may-akda: