Arduino ve kızılötesi sensörlere dayalı hareket sensörü ile güvenlik alarmı oluşturulması. Hareket sensörü ve Arduino taslağı üzerinde Arduino Gsm hareket sensörüne bağlanması hakkında

Bugün nasıl kullanılacağı hakkında konuşacağız. Arduino toplamak güvenlik sistemi... "Muhafızımız" bir devreyi korur ve bir sireni kontrol eder.

Arduino için bu bir sorun değildir ve program kodundan ve cihaz şemasından da göreceğiniz gibi korumalı erişim noktalarının sayısını ve uyarı veya gösterge cihazlarının sayısını kolayca artırabilirsiniz.
Güvenlik sistemi hem büyük nesneleri (binalar ve yapılar) hem de küçük eşyaları (kutular, kasalar) ve hatta taşınabilir çantaları ve valizleri korumak için kullanılabilir. İkincisinde daha dikkatli olmanız gerekse de, örneğin seyahate çıkmaya karar verdiğiniz bir bavula bir güvenlik sistemi kurarsanız ve bazı havaalanlarında uyarı sistemi devreye girerse, bence o zaman sahip olacaksınız. yerel güvenlik servisiyle ciddi bir görüşme :-)

Basitleştirilmiş bir şekilde cihazın çalışma prensibi aşağıdaki gibidir (Şekil 1). Gücü açtıktan sonra cihaz çalışma moduna girer ve devreye girmeyi bekler. Kurma ve devre dışı bırakma tek tuşla gerçekleştirilir. Güvenliği artırmak için bu düğmeyi korunan alanın (kasa veya kutu) içine yerleştirmek daha iyidir. Güvenlik modunu açmadan önce kapı hafifçe açılmalıdır. Güvenlik modu açıldığında (düğmesine basarak) elektronik devre siz odanın kapısını kapatana kadar bekler (kasa kapısı, kutu kapağı vb.).

Kapıya (veya kapıya) herhangi bir tipte bir limit anahtarı takılmalıdır, daha sonra daha fazlası. Kapatma (veya açma) ile limit anahtarı cihaza korumalı devrenin kapalı olduğunu bildirecek ve cihaz silahlı moda geçecektir. Sistem, silahlı moda geçişi iki kısa sinyalle bildirecektir (örn. araba alarmları). Bu modda, cihaz kapının açılmasını "yakalar". Kapı açıldıktan sonra sistem, devre dışı bırakmak için birkaç saniye bekler (bu yapılandırılabilir bir değerdir, odalar için yaklaşık on saniye, bir veya iki kutu için), bu olmazsa, siren açılır. Algoritma ve devre, sireni ancak kasayı tamamen söküp gücü keserek kapatabileceğiniz şekilde tasarlanmıştır.

Cihaz güvenlik sistemi çok basit (şekil 2). Ücretin merkezinde Arduino... Limit anahtarları, pull-up dirençleri aracılığıyla normal bir düğme gibi bağlanır. Limit anahtarları üzerinde ayrı ayrı duracağım. Normalde kapalı ve normalde açıktırlar. Sıradan bir düğmeyi limit anahtarı olarak açabilirsiniz, sadece sıradan düğmenin hareketi çok büyüktür, kapı boşluğu genellikle daha büyüktür. Bu nedenle, düğme için bir tür itici bulmak ve düğmeyi kapıyla kırmamak için yaylamak gerekir. Tembellik değilse, mağazaya yürüyebilir ve bir manyetik anahtar (kamış anahtar) satın alabilirsiniz (Şekil 3), toz ve kirden korkmaz.

Araba alarmları için bir limit anahtarı da uygundur (Şekil 4). Unutulmamalıdır ki program bir reed switch için yazılmıştır. saat kapalı kapı kontağı kapalıdır. Bir araba alarmından bir anahtar kullanırsanız, kapı kapatıldığında, büyük olasılıkla açılacak ve koddaki uygun yerlerde 0'ı 1'e değiştirmeniz gerekecek ve bunun tersi de olacaktır.

Bir siren olarak, Belarus'ta yapılan bir sesli uyarı cihazı PKI-1 IVOLGA kullanmayı öneriyorum (Şekil 5). Besleme gerilimi 9 - 15 V, çalışma akımı 20 - 30 mA. Bu, pil gücü ile kullanılmasına izin verir. Aynı zamanda 95 - 105 dB "verir".

"Krona" pilinin bu tür özellikleriyle, onlarca dakika çalacaktır. İnternette 110 ruble buldum. Orada, mıknatıslı bir kamış anahtarın maliyeti yaklaşık 30 ruble. Otomobil parçalarındaki araba alarm anahtarı 28 ruble için satın alındı. KT315 transistörü herhangi bir harfle alınabilir veya uygun iletkenliğe sahip herhangi bir modern düşük güçlü silikon transistör ile değiştirilebilir. Bir sirenin hacmi yeterli değilse (kim bilir, belki de kilometrelerce duyulmasını istersiniz), birkaç sireni paralel olarak bağlayabilir veya daha güçlü bir tane alabilirsiniz, ancak bu durumda transistör değiştirilmelidir. daha güçlü olanı (örneğin, tanıdık transistör tertibatı ULN2003). Kamış anahtarı ve siren bağlamak için konektörler olarak, ses / video cihazları için en basit konektörleri kullandım - radyo pazarındaki fiyat 5 ruble. bir çift için.

Cihazın gövdesi plastik veya kontrplaktan yapıştırılabilir; ciddi bir nesne korunuyorsa, onu metal yapmak daha iyidir. Güvenilirliği ve güvenliği artırmak için piller veya şarj edilebilir piller kasanın içine yerleştirilmelidir.

Program kodunu basitleştirmek için enerji tasarrufu sağlayan hiçbir unsur kullanılmamıştır ve piller uzun süre yeterli değildir. Kesme olay işleme ve MK hazırda bekletme modunu uygulayarak kodu optimize edebilir veya daha da iyisi kökten değiştirebilirsiniz. Bu durumda, seri olarak bağlanan iki kare pilden (9 V) güç kaynağı birkaç ay sürmelidir.

şimdi kod

// sabitler
const int düğmesi = 12; // buton için pin
const int gerkon = 3; // kamış anahtarı için pin
const int siren = 2; // sirenin pin kontrolü
const int led = 13; // gösterge pimi
// değişkenler
int düğmeDurumu = 0; // düğme durumu
int gerkonState = 0; // kamış anahtarın durumu
int N = 0; // devre dışı bırakma butonunun sayacı
geçersiz kurulum () (
// siren ve gösterge kontrolü - çıkış
pinMode (sirena, ÇIKIŞ);
pinMode (led, ÇIKIŞ); // basma düğmesi ve indükleme anahtarı girişlerdir
pinMode (gerkon, INPUT);
pinMode (düğme, GİRİŞ);
}
boşluk döngüsü () (
digitalWrite (led, YÜKSEK);
while (buttonState = = 0) (// butona basana kadar döngü bekle
buttonState = digitalRead (düğme); // güvenlik moduna geçmek için
}
digitalWrite (led, DÜŞÜK);
düğmeDurumu = 0; // butonun değerini sıfırla
while (gerkonState = = 0) (// kapıyı kapatana kadar döngü

}
gecikme (500); // :-)
digitalWrite (sirena, YÜKSEK); // kod
gecikme (100); // belirteçler
digitalWrite (sirena, DÜŞÜK); // Dahil etmek
gecikme (70); // mod
digitalWrite (sirena, YÜKSEK); // koruma
gecikme (100); // uyarmak
digitalWrite (sirena, DÜŞÜK); // ses
while (gerkonState = = 1) (// kapının açılmasını bekleyin
gerkonState = digitalRead (gerkon);
}
for (int i = 0; ben<= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead (düğme); // gizli düğme
if (buttonState = = HIGH) (// kendi - yabancımızı takip edin
N = N + 1;
}
gecikme (1500); // gizli özellik :-)))
}
if (N> 0) (// en önemlisi
digitalWrite (sirena, DÜŞÜK); // sireni açma
}
Başka (
digitalWrite (sirena, YÜKSEK); // veya sireni aç
}
digitalWrite (led, YÜKSEK); // göstergeyi aç N = 0;
düğmeDurumu = 0;
gecikme (15000); // beğenen aptallar için hatırlatma
digitalWrite (led, DÜŞÜK); // Kesintisiz gecikme olmadan düğmelere basın (1000);

Son on yılda, araba hırsızlıkları dünyada işlenen suçların yapısında en önemli yerlerden birini işgal etti. Bu, bu hırsızlık kategorisinin toplam suç sayısına göre özgül ağırlığından çok, arabaların yüksek maliyetinden kaynaklanan hasarın öneminden kaynaklanmaktadır. 90'lı yılların sonunda araç hırsızlığıyla mücadele alanında alınan önlemlerin etkinliğinin zayıf olması, bu suçların işlenmesinde uzmanlaşmış istikrarlı grupların oluşturulmasına ve sahip olunan mal varlığına yol açtı. ayırt edici özellikleri Organize suç; Muhtemelen "siyah otomobil işi" terimini duymuşsunuzdur. Avrupa ülkelerinin otoparklarında her yıl suç ihlallerine konu olan arabaların ≈ %2'si kayboluyor. Bu nedenle, arabam için bir gsm alarmı kurma fikri aklıma geldi. Arduino tabanı Uno.

Başlayalım!

ne toplayacağız

Sistemimizin kalbini seçmeliyiz. Bence böyle bir sinyal için Arduino Uno'dan daha iyi bir şey yok. Ana kriter, yeterli sayıda pin ve bir fiyattır.


Arduino Uno'nun temel özellikleri

Mikrodenetleyici - ATmega328
Çalışma voltajı - 5 V
Giriş voltajı (önerilen) - 7-12 V
Giriş voltajı (sınır) - 6-20 V
Dijital Girişler / Çıkışlar - 14 (6 tanesi PWM çıkışı olarak kullanılabilir)
Analog Girişler - 6
Giriş / çıkış üzerinden DC akımı - 40 mA
3,3 V pin için DC akımı - 50 mA
Flash Bellek - 0,5 KB'ı önyükleyici için kullanılan 32 KB (ATmega328)
RAM - 2 KB (ATmega328)
EEPROM - 1 KB (ATmega328)
Saat frekansı - 16 MHz


Uygun!

Şimdi bir gsm modülü seçmeniz gerekiyor, çünkü alarm sistemimiz arabanın sahibini bilgilendirebilmelidir. Yani, google'a ihtiyacınız var ... Burada mükemmel bir sensör - SIM800L, boyut sadece harika.


Çin'den düşündüm ve sipariş ettim. Ancak, her şeyin çok pembe olmadığı ortaya çıktı. Sensör, SIM kartı ağa kaydetmeyi reddetti. Mümkün olan her şey denendi - sonuç sıfırdı.
Bana daha fazlasını sağlayan kibar insanlar vardı güzel şeyler- Sim900 Kalkanı. Bu zaten ciddi bir şey. Kalkan, tam teşekküllü bir telefon olan bir mikrofon ve kulaklık jakına sahiptir.


Sim900 Shield'in başlıca özellikleri

4 standart çalışma frekansı 850/900/1800/1900 MHz
GPRS çoklu yuva sınıfı 10/8
GPRS mobil istasyon B sınıfı
GSM fazı 2/2 + ile uyumlu
Sınıf 4 (2 W @ 850/900 MHz)
Sınıf 1 (1W @ 1800 / 1900MHz)
AT komutları tarafından kontrol edilir (GSM 07.07, 07.05 ve SIMCOM genişletilmiş AT komutları)
Düşük güç tüketimi: 1.5mA (uyku modu)
Çalışma sıcaklığı aralığı: -40 °C ila +85 °C


Uygun!

Tamam, ama sahibine haber vermek için bazı sensörlerden okumalar almanız gerekiyor. Aniden araba boşaltılır, o zaman arabanın konumu uzayda açıkça değişecektir. Bir ivmeölçer ve bir jiroskop alalım. İyi. Dachshund, şimdi bir sensör arıyoruz.

GY-521 MPU6050'nin kesinlikle uyacağını düşünüyorum. Ayrıca bir sıcaklık sensörüne sahip olduğu ortaya çıktı. Kullanmak gerekecek, böyle bir "öldürücü özellik" olacak. Diyelim ki araba sahibi evin altına koydu ve gitti. Arabanın içindeki sıcaklık "pürüzsüz" değişecektir. Bir davetsiz misafir arabaya girmeye çalışırsa ne olur? Örneğin, kapıyı açabilecektir. Kabindeki hava hava ile karışmaya başladığından, arabadaki sıcaklık hızla değişmeye başlayacaktır. Çevre... Bence işe yarayacak.


GY-521 MPU6050'nin ana özellikleri

MPU-6050 çipinde 3 eksenli jiroskop modülü + 3 eksenli ivmeölçer GY-521. Bir cismin uzaydaki konumunu ve hareketini belirlemenizi sağlar, açısal hız dönerken. Ayrıca yerleşik bir sıcaklık sensörüne sahiptir. Çeşitli helikopterlerde ve uçak modellerinde kullanılmaktadır, bu sensörlere dayalı bir hareket yakalama sistemi kurmak da mümkündür.

Mikro devre - MPU-6050
Besleme gerilimi - 3,5V - 6V (DC);
Jiroskop aralığı - ± 250 500 1000 2000 °/s
İvmeölçer Aralığı - ± 2 ± 4 ± 8 ± 16g
İletişim arayüzü - I2C
Boyut - 15x20 mm.
Ağırlık - 5 gr


Uygun!

Bir titreşim sensörü de kullanışlıdır. Aniden arabayı "kaba kuvvetle" açmaya çalışacaklar veya park yerinde arabanıza başka bir araba dokunacak. SW-420 (ayarlanabilir) titreşim sensörünü alın.


Ana özellikler SW-420

Besleme gerilimi - 3,3 - 5V
Çıkış sinyali - dijital Yüksek / Düşük (normalde kapalı)
Kullanılmış sensör - SW-420
Kullanılan karşılaştırıcı - LM393
Boyutlar - 32x14mm
Ek olarak - Bir ayar direnci vardır.


Uygun!

SD bellek kartı modülünü vidalayın. Ayrıca bir günlük dosyası yazacağız.


SD bellek kartı modülünün ana özellikleri

Modül, mikrodenetleyiciye dayalı olarak cihazın çalışması için gerekli verileri SD karta kaydetmenizi, okumanızı ve yazmanızı sağlar. Cihazın kullanımı, onlarca megabayttan iki gigabayta kadar dosyaları saklarken önemlidir. Kartta bir SD kart kabı, bir kart güç sabitleyici, arayüz ve güç hatları için bir fiş bulunur. Ses, video veya diğer hacimsel verilerle çalışmanız gerekiyorsa, örneğin bir olay günlüğü, sensör verileri veya bir web sunucusundan bilgi depolamanız gerekiyorsa, Arduino için SD bellek kartı modülü bir SD kart kullanmayı mümkün kılacaktır. bu amaçlar için. Modülü kullanarak SD kartın özelliklerini inceleyebilirsiniz.
Besleme gerilimi - 5 veya 3,3 V
SD kart hafıza kapasitesi - 2 GB'a kadar
Boyutlar - 46 x 30 mm


Uygun!

Bir de servo ekleyelim sensörler tetiklendiğinde video kaydedicili servo döner ve olayın videosunu çeker. MG996R servoyu alın.


MG996R servonun ana özellikleri

kararlı ve güvenilir koruma hasardan
- Metal sürücü
- Çift sıralı bilyalı rulman
- Tel uzunluğu 300 mm
- Boyutlar 40x19x43mm
- Kütle 55 gr
- Dönme açısı: 120 derece.
- Çalışma hızı: 0.17sn / 60 derece (4.8V yüksüz)
- Çalışma hızı: 0.13sn / 60 derece (6V yüksüz)
- Başlangıç ​​torku: 4.8V güç kaynağında 9.4kg/cm
- Başlangıç ​​torku: 6V güç kaynağında 11kg/cm
- Çalışma voltajı: 4.8 - 7.2V
- Tüm tahrik parçaları metalden yapılmıştır


Uygun!

topluyoruz

Google'da her sensörün bağlanmasıyla ilgili birçok makale var. Ve yeni bisikletler bulmaya hiç niyetim yok, bu yüzden basit ve çalışma seçeneklerine bağlantılar bırakacağım.

Herkese merhaba, bugün hareket sensörü denen bir cihaza bakacağız. Birçoğumuz bu şeyi duyduk, hatta birileri bu cihazla ilgilendi. Hareket sensörü nedir? Bunu anlamaya çalışalım, yani:

Hareket sensörü veya yer değiştirme sensörü - herhangi bir nesnenin hareketini algılayan bir cihaz (cihaz). Çok sık olarak bu cihazlar güvenlik, alarm ve izleme sistemlerinde kullanılmaktadır. Bu sensörlerin birçok faktörü vardır, ancak biz tam olarak kartlara bağlantı için hareket sensörü modülünü ele alacağız. Arduino,ve bu firmadan RobotDyn. Neden bu özel şirket? Bu mağazanın ve ürünlerinin reklamını yapmak istemiyorum, ancak ürünlerinin son tüketiciye yüksek kaliteli sunumu nedeniyle laboratuvar numunesi olarak seçilenler bu mağazanın ürünleriydi. Böylece buluşuyoruz - hareket sensörü(PIR Sensörü) RobotDyn'den:


Bu sensörler boyut olarak küçüktür, az güç tüketir ve kullanımı kolaydır. Ayrıca RobotDyn'in hareket sensörleri de serigrafi ile işaretlenmiş kontaklara sahiptir, bu kesinlikle önemsiz ama çok hoştur. Eh, aynı sensörleri kullanan, ancak yalnızca diğer şirketlerden olanların endişelenmesine gerek yok - hepsi aynı işlevselliğe sahip ve kontaklar işaretlenmemiş olsa bile, bu tür sensörlerin pin çıkışını İnternette bulmak kolaydır.

Ana özellikler hareket sensörü (PIR Sensörü):

Sensör çalışma alanı: 3 ila 7 metre

İzleme açısı: 110 o'ya kadar

Çalışma voltajı: 4,5 ... 6 Volt

Tüketim akımı: 50μA'ya kadar

Not: Sensörün standart işlevselliği, IN ve GND pinlerine bir ışık sensörü bağlanarak genişletilebilir ve ardından hareket sensörü yalnızca karanlıkta çalışır.

Cihaz başlatma.

Açıldığında, sensörün başlatılması neredeyse bir dakika sürer. Bu süre zarfında sensör yanlış sinyal verebilir, kendisine bağlı sensör ile mikrodenetleyici programlanırken veya mikrodenetleyici kullanılmadan bağlantı yapılıyorsa yürütücü cihazların devrelerinde bu durum dikkate alınmalıdır.

Algılama açısı ve alanı.

Algılama (izleme) açısı 110 derecedir, algılama mesafesi aralığı 3 ila 7 metredir, aşağıdaki resim tüm bunları göstermektedir:

Hassasiyet ayarı (algılama mesafesi) ve zaman gecikmesi.

Aşağıdaki tablo hareket sensörünün ana ayarlarını göstermektedir, solda sırasıyla bir zaman geciktirme regülatörü vardır, sol sütunda olası ayarların bir açıklaması vardır. Sağ sütun, algılama mesafesi ayarlarını açıklar.


Sensör bağlantısı:

  • PIR Sensör - Arduino Nano
  • PIR Sensör - Arduino Nano
  • PIR Sensör - Arduino Nano
  • PIR Sensörü - ışık sensörü için
  • PIR Sensörü - ışık sensörü için

Aşağıdaki şemada tipik bir bağlantı şeması verilmiştir, bizim durumumuzda sensör konvansiyonel olarak gösterilmiştir. arka taraf ve Arduino Nano kartına bağlı.

Hareket sensörünün çalışmasını gösteren bir çizim (programı kullanın):

/ * * PIR Sensör -> Arduino Nano * PIR Sensör -> Arduino Nano * PIR Sensör -> Arduino Nano * / void setup () (// Seri port monitor.begin (9600);) void loop () ( // A0 portundan eşik değerini okuyun // bir sinyal varsa genellikle 500'den yüksektir if (analogRead (A0)> 500) (// Serial.println hareket sensöründen gelen sinyal ("Hareket var !! !");) başka (/ / Sinyal yok Serial.println ("Her şey sessiz ...");))

Çizim, hareket sensörünün rutin bir testidir, aşağıdakiler gibi birçok dezavantajı vardır:

  1. Olası yanlış alarmlar, sensörün bir dakika içinde kendini başlatması gerekir.
  2. Bağlantı noktası monitörüne sert bağlantı, çıkış yürütme aygıtı yok (röle, siren, ışık göstergesi)
  3. Çok fazla Kısa bir zaman sensör çıkışındaki sinyal, hareket algılandığında, sinyali programlı olarak daha fazla geciktirmek gerekir uzun dönem zaman.

Devreyi karmaşıklaştırarak ve sensörün işlevselliğini genişleterek yukarıdaki dezavantajlardan kaçınılabilir. Bunu yapmak için, devreyi bir röle modülü ile tamamlamanız ve içinden sıradan bir 220 voltluk bir lamba bağlamanız gerekecektir. bu modül... Röle modülünün kendisi Arduino Nano kartındaki pin 3'e bağlanacaktır. Yani şematik diyagram:

Şimdi hareket sensörünü test etmek için kullanılan taslağı iyileştirme zamanı. Hareket sensörünün kendisi tetiklendiğinde çıkışta çok kısa bir sinyal süresine sahip olduğundan, röle kapatma gecikmesinin uygulanacağı taslakta yer almaktadır. Program, sensör tetiklendiğinde 10 saniyelik bir gecikme uygular. İstenirse değişkenin değeri değiştirilerek bu süre artırılıp azaltılabilir. Gecikme Değeri... Aşağıda, bütünün çalışmasının bir taslağı ve videosu bulunmaktadır. montajlı devre:

/ * * PIR Sensör -> Arduino Nano * PIR Sensör -> Arduino Nano * PIR Sensör -> Arduino Nano * Röle Modülü -> Arduino Nano * / // röle modülü için pin (çıkış sinyali) const int relout = 3 ; // prevMillis - önceki program tarama döngüsünün zamanını depolamak için değişken // interval - röle kapanana kadar saniyeleri saymak için zaman aralığı imzasız uzun prevMillis = 0; int aralık = 1000; // DelayValue - rölenin açık durumda tutulduğu süre int DelayValue = 10; // initSecond - Başlatma döngüsü yineleme değişkeni int initSecond = 60; // countDelayOff - zaman aralıklarının sayacı statik int countDelayOff = 0; // tetik - statik bool tetikleyiciyi tetikleyen hareket sensörünün bayrağı = false; void setup () (// Röle modülünün bağlı olduğu portu başlatmak için standart prosedür // ÖNEMLİ !!! - röle modülünün başlangıçta kapalı durumda kalması // ve başlatma sırasında tetiklenmemesi için, G / Ç portuna // YÜKSEK bir değer yazmanız gerekir, bu yanlış "çevirmeyi" önler ve rölenin durumunu tüm devre pinMode'u açmadan önce olduğu gibi kaydeder (reout, OUTPUT); digitalWrite (reout, HIGH); // Burada her şey basit - 60 döngünün (değişken initSecond) sonuna kadar bekleriz // 1 saniye sürer, bu süre zarfında sensör (int i = için "kendi kendini başlatır" 0; ben< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) (// Hareket sensörü tetikleme bayrağını if (! Trigger) (trigger = true;)) // Hareket sensörü tetikleme bayrağı ayarlanırken while (trigger) (// Aşağıdaki talimatları uygulayın // currMillis'te saklayın değişken // programın başlangıcından beri geçen milisaniye değeri // program yürütme unsigned long currMillis = millis (); // Önceki milisaniye değeriyle karşılaştırın // fark belirtilen aralıktan büyükse, o zaman: if (currMillis - prevMillis > interval) (// Milisaniyelerin mevcut değerini bir değişkene kaydedin prevMillis prevMillis = currMillis; // Gecikme sayacını, rölenin açık durumda tutulması gereken // sürenin değeriyle karşılaştırarak kontrol ederiz / / if (countDelayOff> = DelayValue) (// Değer eşitse, o zaman: // sensör tetikleyen bayrak hareketi tetikleyiciyi sıfırlayın = false; // Gecikme sayacını sıfırlayın countDelayOff = 0; // digitalWrite rölesini kapatın (yeniden çıkış) , YÜKSEK); // Döngü sonunu iptal et;) başka (// If değer hala daha küçük, o zaman // Gecikme sayacını bir countDelayOff ++ artırın; // Röleyi digitalWrite'ta tutun (reout, LOW); ))))

Program bir yapı içerir:

imzasız uzun prevMillis = 0;

int aralık = 1000;

...

imzasız uzun currMillis = millis ();

if (currMillis - prevMillis> aralık)

{

prevMillis = currMillis;

....

// İşlemlerimiz yapının gövdesi içine alınır

....

}

Açıklığa kavuşturmak için, bu yapı hakkında ayrıca yorum yapılmasına karar verildi. Böyle, bu tasarım programda bir tür paralel görev gerçekleştirmenizi sağlar. Yapının gövdesi saniyede bir kez tetiklenir, bu, değişken tarafından kolaylaştırılır. Aralık... İlk olarak, değişken currMillis işlev çağrılırken döndürülen değeri atadı milis ()... İşlev milis () programın başlangıcından bu yana geçen milisaniye sayısını döndürür. eğer fark currMillis - öncekiMillis değişkenin değerinden büyük Aralık o zaman bu, programın yürütülmesinin başlangıcından bu yana bir saniyeden fazla zaman geçtiği ve değişkenin değerini saklamanız gerektiği anlamına gelir. currMillis bir değişkene öncekiMillis daha sonra yapının gövdesinde yer alan işlemleri gerçekleştirin. eğer fark currMillis - öncekiMillis değişkenin değerinden küçük Aralık, program tarama döngüleri arasında henüz bir saniye geçmedi ve yapının gövdesinde yer alan işlemler atlandı.

Eh, makalenin sonunda, yazardan bir video:

Yorumların çalışması için lütfen javascript'i etkinleştirin.

Bu proje, hırsızların giriş girişimlerini önlemek / kontrol etmek için bir sistemin geliştirilmesi ve iyileştirilmesi ile ilgilidir. Tarafından geliştirilmiş güvenlik aleti GSM (Global System for Mobile Communications) teknolojisine dayalı gömülü bir sistem (açık kaynaklı yazılım kullanan bir donanım mikro denetleyicisi ve bir gsm modemi içerir) kullanır.

Eve bir güvenlik cihazı takılabilir. arayüz sensörü hırsız alarmı ayrıca denetleyici tabanlı bir güvenlik sistemine de bağlıdır.
Nüfuz edilmeye çalışıldığında, sistem sahibine bir uyarı mesajı (örneğin, sms) gönderir. cep telefonu veya daha fazla işlem için önceden yapılandırılmış herhangi bir cep telefonuna.

Güvenlik sistemi Arduino Uno mikrodenetleyici ve GSM/GPRS tabanlı standart SIM900A modemden oluşmaktadır. Tüm sistem herhangi bir 12V 2A güç kaynağı / pil ile çalıştırılabilir.

Aşağıda Arduino tabanlı bir güvenlik sisteminin bir diyagramı bulunmaktadır.

Sistemin çalışması çok basit ve açıklayıcıdır. Sisteme güç verildiğinde bekleme moduna girer. J2 konnektörünün pinleri kısa devre yaptığında, gerekli cep telefonu numarasına önceden programlanmış bir uyarı mesajı gönderilir. J2 giriş konektörüne herhangi bir izinsiz giriş dedektörü (ışık koruması veya hareket dedektörü gibi) bağlayabilirsiniz. J2'nin pin 1'indeki aktif-düşük (L) sinyalinin hırsız alarmını etkinleştireceğini unutmayın.

Ayrıca isteğe bağlı olarak sisteme “çağrı - alarm” cihazı eklenmiştir. aktive eder telefon görüşmesi kullanıcı S2 düğmesine bastığında (veya başka bir elektronik ünite bir alarmı tetiklediğinde). “Ara” düğmesine (S2) bastıktan sonra, başka bir düğmeye S3 - “bitir” düğmesine basarak çağrı iptal edilebilir. Bu seçenek, izinsiz giriş durumunda bir "cevapsız arama" alarmı oluşturmak için kullanılabilir.

Devre çok esnektir, bu nedenle herhangi bir SIM900A modemi kullanabilir (ve tabii ki Arduino kurulu Uno). Montaja başlamadan önce modeminizin belgelerini dikkatlice okuyun. Bu, sistemi daha kolay ve daha keyifli hale getirme sürecini sağlayacaktır.

radyo elementlerin listesi

atama bir tip mezhep Miktar NotPuanBenim defterim
Arduino kurulu

Arduino Uno

1 not defterine
GSM / GPRS modemiSIM900A1 not defterine
IC1 Doğrusal regülatör

LM7805

1 not defterine
C1 100μF 25V1 not defterine
C2 Elektrolitik kondansatör10mkF 16V1 not defterine
R1 direnç

1 kΩ

1 not defterine
LED1 Işık yayan diyot 1 not defterine
S1 ButonSabitleme ile1

GSM alarmı Arduino'da

Bu yazıda, kendinize bir GSM alarm sistemi yapmayı (satın almayı) öğreneceksiniz. GSM kullanarak modül ve Arduino çok ucuz. GSM alarm sisteminin koruma amacı yazlık, ev, garaj, apartman dairesi için idealdir.


Adım 1: elemanlar
Bu proje için ihtiyacınız olacak:


GSM Kalkanı

zil
Alarm sireni 12V
12V güç kaynağı

Arduino klavye
Çerçeve.

Adım 2: Bileşenleri Bağlama


ilk sen koy GSM modülü Arduino Uno'da, iki sensör, bir buzzer ve röle modülünün girişi ile birlikte GND ve VCC kablolarını lehimlemeniz gerekecektir. Ardından bu lehimli kabloları GSM kalkanı üzerindeki ilgili konektöre bağlayın. Daha sonra bu parçalardan bir sinyal G/Ç konektörü yapacaksınız ve yapmanız gereken son şey bir klavye bağlamak

Arduino Uno / GSM Terminalleri:

Sonuç 0: bağlantılı değil;
Sonuç 1: bağlantılı değil;
Pin 2: bağlanmamış (GSM bu pini kullanacaktır);
Pin 3: bağlanmamış (GSM bu pini kullanacaktır);
Pin 4: klavyeyi kullanan son satır (klavye pin 4 - 8'den);
Sonuç 5: bağlantılı değil;
Pim 6: klavyeyi kullanan ikinci sütun (klavye pimi 6 - 8'den);
Sonuç 7: klavyeden üçüncü sütun (parmak 7'nin klavyeleri - 8'den);
Pin 8: bağlanmamış (GSM bu pini kullanacaktır);
Pin 9: bağlanmamış (GSM bu pini kullanacaktır);
Sonuç 10: 2 No'lu PIR sensörünün verileri;
Sonuç 11: siren ses sinyali (röle modülünün girişine gider);
Sonuç 12: PIR sensörünün verileri # 1;
Pin 13: Buzzer sinyal girişi;

Gördüğünüz gibi klavyede 8 pin olmasına rağmen sadece üç tanesi bağlı (bir satır ve iki sütun, iki sayının okunmasına izin veriyor - 1 × 2 matris), bu yüzden bu üç kabloyu kullanarak şifreler yapabilirim ve var klavyedeki tüm kişileri kullanmaya gerek yok. Bunun nedeni, hareket sensörü odada yürüyen bir kişiyi algıladıktan sonra, kişinin alarmı kapatmak için yalnızca 5 saniyesi olacaktır. Alarm belirli bir an için çalmadığında, GSM kalkanı size bir SMS gönderir veya telefon numaranızı arar. Arduino bir arama yapmak üzere programlanmıştır ve siz telefona cevap verir vermez telefonu kapatır.

Elbette yanlış sensör okumaları alabilirsiniz, bu nedenle telefonunuzdan Arduino'ya SMS göndererek alarmı kapatma seçeneği vardır. Ayrıca, yapabileceğiniz başka bir seçenek de kalkanınızı size günde bir mesaj gönderecek şekilde ayarlamaktır, böylece doğru çalıştığını bilirsiniz.

3. Adım: Kodlayın

Sadece aşağıdaki kodu indirin ve derleyin. Keypad.h ve GSM.h kitaplıklarını kullanır.
Dosyayı indirin: (İndirilenler: 181)
Dosyayı indirin: (İndirilenler: 104)

4. Adım: Sonuç


Arduino Uno kodunun evinize biri girdikten sonra sadece beş saniye içinde SMS mesajları göndereceği ve telefonunuzu çalacağı düşünüldüğünde, polisi aramak için yeterli zamanınız olacağını tahmin ediyorum. Elbette siren hırsızları korkutacak ve bu makalenin yardımıyla eviniz veya diğer mülkleriniz daha güvenli hale gelecek.