Kızılötesi radyasyonla hareket tespiti | Haberler Online

semaver

New member


  1. Kızılötesi radyasyon yoluyla hareket tespiti

Bu ve bir sonraki bölüm, kızılötesi veya ultrason kullanarak kaldırılan nesneleri tanıyan sensörlerle ilgilidir. Küçük projelerde her iki sensör türünü biliyoruz. İlk bölüm hareket sensörleri ile ilgilidir.



Kızılötesi radyasyon, karanlıkta bile hareketli nesneleri tanımak için başarılarda yaygın bir yardımdır. Kızılötesi sensörler aracılığıyla hareketi tespit ederek çeşitli uygulamalar uygulanabilir. Kediniz yasaklanmış zemine geri dönerse, kendi başına, patronun önlenmesinden kaynaklanan bir hırsızlık, ister temizlik olarak hırsızlık olsun.

Karşılık gelen sensörler, projelerinde kurulum için PIR sensörleri (pasif infras-kırmızı) olarak kullanılabilir. Fiyatınız daha ucuz varyantlar için yaklaşık bir veya üç avro. Daha büyük alanlar için sensörler kullanmak istiyorsanız, cebinizde daha derinlemesine kazmalısınız.



Bir PIR sensörü nasıl çalışır?


Sensörün kendisi, kızılötesi radyasyon meydana geldiğinde bir elektrik voltajı yaratan kristal malzemeden yapılmıştır. Entegre bir amplifikatör gerilimleri ölçer. Sensörün etrafında, kızılötesi ışınları bir araya getiren ve kızılötesi sensöre iletilmeye devam eden bir yarım küre friz var. Bu sensör aralığını arttırır. Lenslerden gelen geleneksel segmentlerin aksine, Fresnellinsen'den oluşurlar. Aynı etkiye sahip daha az malzemeye ihtiyacınız var. Örneğin, farlar Fresnell lenslerinden başka bir mesafede görünürlüklerini artırabilir.





Parallass şirketinin bir PIR sensörü



Paralaks şirketinin bir PIR sensörü. “Dome” Fresnellse'nin hareket ediyor



Parallass sensörünün PIR'sinde, PIR sensörü kapalı bir çevre alanı olarak altı metre oda yarıçapı içerir. Sensör, 110 derecelik yatay bir ortamı ve 70 derecelik dikey aralığı kaplayabilir. Besleme voltajı 3 V ile 5 V arasında olabilir, 5 V ideal bir değeri temsil eder.

devre




Örnek projede, entegre çıkış 13 LED parlıyor ve hareket ettiğimde sikline veya pieric hoparlörde bir ses çıkmalı.

Devre için aşağıdaki bileşenlere ihtiyacımız var:

  • PIR sensörü
  • Piezo Buzzer (ses çıkışı için)
  • Küçük gözaltı
  • Konuların bağlantısı
PIR sensörünün bir voltaj bağlantısı (sol, kırmızı), karasal bir bağlantısı (sağ, siyah) ve bir veri bağlantısı (ortada sarı) vardır. Pozitif breadboard ve Arduino GND terminalinin 5V Arduino güç voltajını breadboard negatif terminaline bağlıyoruz.

Daha sonra PIR sensörünü breadboard terminal bloğu üzerinden bağlarız ve sensör verilerinin çıkışını Arduino'nun dijital pimine bağlarız. Ayrıca piezoetor cycal'ın bir bacağını negatif terminale, diğerini Arduino'nun dijital pimine bağlıyoruz. Bu aşağıdaki devreye dönüşür:





Hoparlör (Piezele) ve PIR sensörü ile devre



Hoparlör (Piezele) ve PIR sensörü ile devre



Eskiz örneği


Aşağıdaki programda bazı özel özellikler vardır:

  • Değişkenlerdeki PIR sensörü verilerinin çıktısının son durumunu hatırlıyoruz pirstateBu başlangıçta bas ile işgal edildi.
  • Değişken Vadi Sensör veri çıkışını okumaya yarar.
  • İçinde Ayarlamak ()-Metod Yöntemi diyoruz Kalibrasyon () AÇIK. Bir PIR sensörü emilmek için biraz zaman gerektirir. Kalibrasyon süresi, eskizde 10 saniye ile çok cömerttir (değişken kalibrasyon süresi).
  • Yardımcı yöntem Tespit Alarmant () Sensör bir hareket keşfettiğinde geri çağrılır. Yanıt olarak, eskiz çıkış 13'teki entegre LED'den geçer ve sesi (bilinen A) hoparlöre gönderir.
  • Yardımcı yöntem Son Algılama Alarmı () LED'i ve sesin çıkışını kapatın.
  • Her yarışta Sürekli Döngü () PIR sensörünün durumunu okuduk.
    • Yüksek değerdir ve PIR sensörü daha önce düşüktü (pirstate), yani sinyalin sinyali yükseldiğinde, sensör bir hareket keşfetti, bu yüzden bir çağrı Tespit Alarmant () Olur. pirstate Yüksek içerir.
    • Düşük değerdir, ancak daha önce yüksekti (pirstate), yani, taraf düştüğünde, hareketin tespiti bitti, bu yüzden bir çağrı Son Algılama Alarmı () Olur e pirstate Dibe ayarlanmıştır.
    • Diğer tüm durumlarda sinyal değişikliği yoktu, bu yüzden taslağın yapacak hiçbir şeye ihtiyacı yok.
Program Kodu:

/*
Sketch, um Bewegungen über einen PIR-Sensor zu entdecken
und audiovisuell anzuzeigen
*/
const int ledPin = 13; // Bei Bewegungserkennung => LED-Ausgabe
const int piezoPin = 9; // Alarmton
const int pirPin = 2; // Eingangspin des IR-Sensors
int pirState = LOW; // Anfangs keine Bewegung
int val = 0; // Status des PIR-Sensors
const int calibrationTime = 10;

void setup() {
pinMode(ledPin, OUTPUT); // LED als Ausgang
pinMode(piezoPin, OUTPUT); // Piezo als Ausgang
pinMode(pirPin, INPUT); // PIR-Sensor als Eingang
Serial.begin(9600);
calibration(); // Sensorkalibrierung
}

void calibration() {
for (int i=0; i < calibrationTime; i++) {
Serial.print(".");
delay(1000); // 1 Sekunde Pause
}
Serial.println("PIR bereit!");
}

void detectionAlarm() {
digitalWrite(ledPin, HIGH); // Licht an
tone(piezoPin, 440); // Note a ausgeben
}

void endDetectionAlarm() {
digitalWrite(ledPin, LOW); // Licht aus
noTone(piezoPin); // Ton aus
}

void loop(){
val = digitalRead(pirPin); // Status des Sensors lesen
if (val == HIGH) { // Falls HIGH => Bewegung gemeldet
if (pirState == LOW) {
// Es gab also eine Flanke von LOW -> HIGH
detectionAlarm();
Serial.println("Bewegung erkannt!");
// pirState auf neuen Wert setzen
pirState = HIGH;
}
} else {
if (pirState == HIGH){
// Flanke von HIGH -> LOW Bewegungsmeldung vorüber
endDetectionAlarm();
Serial.println("Bewegung beendet!");
// pirState auf neuen Wert setzen
pirState = LOW;
}
}
}

Alternatif olarak kesin


Bu vesileyle alternatif bir çözümü inceleyebiliriz. Arduino UNO, harici pim üzerindeki işlemler için iki özel kesinti 0 ve 1'e sahiptir: Kesme 0, dijital pim 2'ye ve Dijital 3 ile kesinti 1'e bağlanır.

Yöntemi kullanmak Attackerctr () Kesme kişisinin etkinleştirilmesinin gerekli olduğu olayın bir tedavi rutini tanımlayabilir ve belirleyebilirsek, örneğin tarafı (artış), tarafın düşüşünü (düşüş) veya sinyal değişiklikleri (modifikasyon) durumunda. Belirtilen pim ilgili PIN'de oluşur oluşmaz, olay tedavisi rutini geri çağrılır.

PIR sensörü bir hareketi tanırsa, sonucuna yüksek verir. Bu, alttan yüksekliğe kadar büyüyen bir sinyal tarafı oluşturur. Bu nedenle bir sonraki tarafa tepki veren bir kesinti yöneticisi sağlayabiliriz.

Önceki eskizin azaltılmış bir varyantını temsil eden bir sonraki bir taslak geliştirdim. En önemli unsur, aşağıdaki kod satırıdır. Ayarlamak ():

attachInterrupt(interruptNo, detectionAlarm, RISING);

İlk değişken yarıda kesmek Bizim durumumuzda istenen kesintiyi veya 0'ı içerir, çünkü Pin 2'deki değişiklikleri gözlemlemek istiyoruz. Tespit Alarmant () (İkinci parametre) Pin 2'nin büyüyen bir tarafı olduğunda (üçüncü bir parametre olarak artar) her zaman çağrılmalıdır. Bildiğimiz gibi, bu tam olarak PIR sensörünün bir hareketi ve bunun bas değişikliklerinin sonucunu algıladığı durumdur. Yöntemle Tespit Alarmant () Bu kez bir LED veya hoparlör kontrol etmiyoruz, ancak görünüşün süresi de dahil olmak üzere seri monitör aracılığıyla tanınan hareketi rapor ediyoruz (sistemin başlamasından sonraki son saniyelerde).

İşte eskiz kodu:

/*
Interrupt-basierte Sketch-Version zur Bewegungserkennung mit einem PIR-Sensor
*/
const int pirPin = 2; // Eingangspin PIR-Sensor
const int interruptNo = 0;// Interrupt für Pin 2
const int calibrationTime = 10;
void setup() {
pinMode(pirPin, INPUT); // PIR-Sensor als Eingang
Serial.begin(9600);
calibration(); // Sensorkalibrierung
// Interruptbehandlungsroutine anmelden
attachInterrupt(interruptNo, detectionAlarm, RISING);
}

void calibration() {
for (int i=0; i < calibrationTime; i++) {
Serial.print(".");
delay(1000); // 1 Sekunde Pause
}
Serial.println("PIR bereit!");
}

void detectionAlarm() {
Serial.print("Bewegung erkannt! Zeit = ");
Serial.print(millis()/1000);
Serial.println(" Sekunden nach Systemstart");
}
void loop(){} // absichtlich leerer Rumpf

Kesme ++


Kesmeler için başka önemli işlevler de vardır:

  • Kesme Ayrıntıları (Kısıtlı) VEYA Kesme Ayrıntıları (Dijital Pinterrup (Pinno))[/] İlgilenen kesinti için etkinliklerin yöneticisini bildirin.
  • Nointer Rupi (), daha fazla kesintiyi etkinleştirmenizi engeller. Bu, kesintiye uğramış tedavi rutinlerinde hassas ve zamansal eleştirel eylemler gerçekleştiren ilk çağrıdır. Ancak, iletişim gibi bazı işlevler artık mevcut değildir.
    [*]İle Yarıda kesmek () Kesmeler yeniden etkinleştirilebilir, bu yüzden bu işlev Noghtrupt () Başlatılan kritik bölüm bitti.

Johnny-Five ile Hareket


JavaScript'ten PIR sensörüyle yüzleşmek istiyorsak, Node.js ve Johnny-Five'ın olağan kombinasyonuna ihtiyacımız var. Hareketle ilgili olarak, ilgili ayrıntılı bilgi API'nın açıklamasında mevcuttur. Ayrıca PIR sensörü için pimi 7'den 2'ye değiştirmemiz gereken bir taslak da var:

// Programm: j5-motion.js
var

five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {

// PIR-Sensor an Pin 2:
var motion = new five.Motion(2);

// Eventhandler für Kalibrierungsende:
motion.on("calibrated", function() {
console.log("calibrated");
});

// Eventhandler für erkannte Bewegung:
motion.on("motionstart", function() {
console.log("motionstart");
});

// Eventhandler für abgeschlossene Bewegungserkennung:
motion.on("motionend", function() {
console.log("motionend");
});
});


Eskiz'i her zamanki gibi aktarın Standart şirket Arduino masanızda. Böylece taslağımız tavsiyelerle iletişim kurabilir. Eskizle başlıyorsunuz:

node j5-motion.js

Bu nedenle olayların ilişkileri konsolda verilir.

Çözüm


Bu kısım, PIR sensörlerinin nasıl çalıştığı, yararlı oldukları ve devrelerde etkili bir şekilde nasıl kullanılacağı karşı karşıya kaldı. Bir nesnenin yakınında hareketler varsa, uygun uzantılar da internet üzerinden belirlenir. Hayal gücünün sınırları yoktur.

Bir sonraki bölümde, dronlar veya robotlar gibi mobil IoT nesneleri için gerekli olan ultrason sensörleri ile ilgileniyoruz.


()
 
Üst