semaver
New member
Yarasalar için arduino
Pipistrelli'nin kör olduğu bilinmektedir. Bunun yerine, Echo -solid (Sonar) ile nesneleri tanıyın. Robotlar veya dronlar gibi Nesnelerin İnterneti'ndeki Mobric şeyler bu nedenle yarasalardan öğrenebilir.
Son bölümde hareketin tespiti için kızılötesi sensörlerle karşılaştık. Bunun için kullanılan PIR sensörü genellikle hastanedir ve belirli bir yarıçaptaki hareketleri tanır. Şimdi senaryoyu çeviriyoruz: sistemimiz mobil ve sadece çevredeki sabit (ve açıkça mobilya) nesneleri tanımalıyız, aynı zamanda mesafelerini de belirlemeliyiz. Bu, örneğin çarpışmalardan kaçınılabilir. Arabadaki aralayıcı sensörler bu kavramın kullanımının yaygın bir örneğidir. Aynı şekilde, açıkça mobil robot.
Fonksiyonel prensip
Bahsedilen amaç için ultrason sensörlerine (İngilizce: ultrason sensörleri) ihtiyacımız var. Bu sensörün temel işlevini aşağıdaki resimde bulabilirsiniz:

Ultrason sensörlerinin fonksiyonel prensibi
(Resim: http://wikipedia.org)
- Sensör bir ultrason dalgaları dürtüsü gönderir.
- Bir nesne elindeyse, dalgaları yansıtır.
- Sensördeki bir alıcı bu yankıyı tanır.
- Zaman Tdelta Dürtü gönderilmesinden alıcının gelişine ve ultrasonların hızında CBİZ (340 m/sn) bir mesafeye neden olur D = 0.5 * (cBİZ / Tdelta))). 0.5 faktör, gerçekte ölçülen sürenin hem harici oku (kırmızı ok) hem de geri dönüş yolunu (yeşil ok) içerdiği gerçeğini dikkate alır.
Arduino (ve diğer kartlar) için, HC-SR04 modülü seçim aracıdır. Bunun fiyatları eBay'de 2 ila 5 Euro arasındadır. Çinli tedarikçiler zaten sensöre 1 Euro sunuyor. Bu inşaat bloğunun 4 pim var: VCCGND, Eco, Trig. Onların anlamlarını aşağıda biliyoruz.
Ayrıca, HC-SR04'ü takip eden ve adla beşinci bir pime sahip olan HY-SRF05 adına sahip bir ekonomik sensör de vardır. Bu çıkış pimi görmezden gelirseniz, programlarda değişmek zorunda kalmadan aşağıdaki örneklerde HC-SR04 yerine Hy-SRF05 sensörünü kullanabilirsiniz. Bununla birlikte, pim GND'ye yerleştirilirse, triga pimi tüm aktiviteleri (tetikleme dürtü + yankı) varsayar ve paralaks ping gibi davranır.
Paralaks ping 20-30 Euro'nun üzerindedir. Üç pimi V varCCPing ve gnd. Pahalı fiyatı nedeniyle, ping gibi davranabilecek HC-SR04 kullanıyorum. Aşağıda açıkladığım gibi.

HC-SR04 ultrason sensörü
(Resim: http://wikipedia.org)
Fotoğrafta, HC-SR04 pimi açıkça görüntülenebilir. Voltaj güç kaynağını bıraktı (vCC), sağ arazide (GND), yarım solak, sinyali (trig) kontrol etmek için tetikleyici, alınan yankı (echo) için pimi sağa doğru sağlayın.
Devre
Devrenin çabası sınırlıdır. Bir Arduino UNO'ya ek olarak, kabloları, bir HC-SR04 ve bir ekmek tahtası, sadece sensör için “tripod” dan hareket eden bağlanmamız gerekir.
Devremizde bağlanıyoruz:
- Kırmızı İplik: V ile 5V (Arduino)CC (HC-SR04)
- Siyah tel: GND ile GND (Arduino) (HC-SR04)
- Sarı İplik: Trig ile Arduino DigitalPin 12 (HC-SR04)
- Yeşil Tel: Eko ile Arduino DigitalPin 13 (HC-SR04)

Deneylerimiz için devre
Tek ihtiyacın olan kod
Aşağıdaki eskiz
- Önce düşük tetiği koyun: digitalwrite (trigpin, bas)
- 2 mikrosaniye bekleyin
- Ardından tetiği üste koyun: DigitalWrite (Trigpin, Alto)
- 10 mikrosaniye bekliyor, çünkü bu zamandan sonra 8 döngüde 40 kHz'lik bir patlama sinyali göndermek için ultrason sensörü ayrıntılı olarak
- Ardından ECO'nun alım süresini okuyun: Süre = darbe (echopin, yüksek)))
- Bundan CM'deki mesafeyi hesaplayın
distance = (duration / 2) / 29 = duration / 58
340 m/sn ses hızından kaynaklanmaktadır. Ultrason, 1 cm mesafe için yaklaşık 29 mikrosaniye gerektirir. HC-SR04 tarafından iade edilen sürenin süresi mikrosaniye ünitesinde rapor edilir.
Yöntem
pulseIn(pin, value)
Bir dürtü ile yankı alımı arasındaki süreyi ölçer.
VAlue = uzun boyluBelirtilen pim üzerindeki işlev, yukarıdaki sinyal değişene kadar bekler, bu nedenle sinyal dibe inene kadar süreyi ölçerek.
VE değer = basÖlçüm, pim alttan düşer düştüğü anda başlar ve bir sonraki sinyalin maksimuma kadar geçene kadar zamanı ölçer.
#define trigPin 12 // über diesen Pin senden wir Ultraschall-Pulse
#define echoPin 13 // über diesen Pin empfangen wir das Echo
const int SENSORRANGE = 300; // Reichweite
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT); // Zum Auslösen des Ultraschalls-Puls
pinMode(echoPin, INPUT); // Zum Einlesen der Dauer
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW); // Signal auf LOW setzen
delayMicroseconds(2); // Kleine Wartezeit
digitalWrite(trigPin, HIGH); // Signal auf HIGH setzen
delayMicroseconds(10); // Kleine Wartezeit
duration = pulseIn(echoPin, HIGH); // Zeitdauer bis Empfang des Echo
distance = duration/58; // Distanz berechnen
Serial.print("Gemessene Distanz = ");
Serial.println(distance);
if (distance >= SENSORRANGE || distance <= 0){
Serial.println("Außerhalb der Reichweite");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(500); // Zeit für eine kleine Verschnaufpause
}
Elinizi ultrason sensörünün önünde ileri geri hareket ettirin. Veya sensörü nesneler üzerinde hareket ettirin ve seri monitörde yayılan ölçülen değerleri gözlemleyin.
Yeni başlama
Şimdiye kadar Arduino fikrinin standart işlevselliğini ultrason sensörüne doğru yönlendirmek için kullandık. Tim Eckel konuyu yoğun bir şekilde ele aldı ve bazı eksiklikler keşfetti. Sonuç olarak, yeni kütüphane oluşturuldu. Burada Newping web sitesini alakalı bulacaksınız. Web sitesinde daha fazla Dokunma Kütüphanesi için indirme bağlantısını bulacaksınız.
Hangi yetersizliklerle daha fazla ilgileniyorsanız, Tim web sitesinden bazı bilgileri listelemek istiyorum. Örneğin
- Bazı ultrason sensörlerinin artık bir saniye sinyal almamaları durumunda “uyanmak” için zamana ihtiyaçları vardır,
- Mesafenin daha kesin bir hesaplamasını yenilemeyi uygular,
- Hatayı kullanmıyor -prone ve yanlış Dürtü (),,
- Kapıların arkasındaki değerleri okumak için performans nedenleriyle dahili kayıtları kullanın,
- Kütüphane bir dizi sensör türünü destekler.
Notlar:
- Her zaman olduğu gibi, Arduino fikrine Newping Tmping kütüphanesini Sketch menü öğesinin altına eklemelisiniz/Kütüphane ekleyin/Kütüphane Ekle .zip.
- Arduino'nun “karakter israfına” yüklendikten sonra seri monitörde görüntüleniyorsanız, seri monitör alımının inşaat hızı doğru değildir. Eskiz vericisinin hızında senkronize Synchronic Baud Hız 115200'i seçin. Bu yüzden makul masrafları tekrar almalısınız.
#define trigPin 12 // Trigger Pin an Arduino Pin 12
#define echoPin 13 // Echo Pin an Arduino Pin 13
#define SENSORRANGE 200 // Reichweite für den Sketch < maximale Reichweite
NewPing sonar(trigPin, echoPin, SENSORRANGE); // NewPing-Instanz kreieren
void setup() {
Serial.begin(115200); // Ausgabe über seriellen Monitor: 115200 Baud
}
void loop() {
delay(50); // 50 msecs zwischen Pings. Muss > 29 sein
// Ping senden, Echo empfangen, Distanz zurückerhalten:
unsigned int result = sonar.ping();
Serial.print("Echo empfangen: ");
Serial.print(sonar.convert_cm(result)); // Entfernung in cm
// Rückgabe von 0 => außerhalb Reichweite
Serial.println("cm");
}
HC-SR04'ten bir parallasses ping yapın
Menüdeki Arduino IDE'nin Dosya | Örnekler | Sensörler | Ping En pahalı paraling pingini kullanan, ancak HC-SR04 ile karşılaşmayan bir taslak getirin. Paralaks Ping 3 pin, bir VCCBir GND ve bir ping bağlantısı. Dolayısıyla, trig ve eche'de HC-SR04 gibi bir ayrılık yoktur.
İnternette, HC-SR04'ün nasıl bir paralaks ping gibi davranabileceğine dair çeşitli öneriler bulacaksınız. Bazı örnekler sadece trig ve yankı bağlantısını bağlar ve her ikisi de Arduino'nun dijital bir pivotuna katılır: trig + echo = ping.
Güvenli tarafta olmak ve bozukluklardan kaçınmak istiyorsanız, TRIG'in girişindeki 10K-Ohm çekme direnciini HC-SR04 ile sökün ve bunun yerine HC-SR04'ün TRIG ve eko'sunu 10 k ohm dirençle birleştirin. 3 pinli ping klonu hazırdır.
Başlangıçta belirtilen Hy-SRF05 ile bunların hiçbiri gerekli değildir. Pin'i GND'ye bağlamanız gerekir, böylece paralaks hareketlerinin ping gibi trig pimi.
Başka bir şey
Her zaman olduğu gibi, bu sefer HC-SR04'e dayalı mesafe sayacını kontrol etmek için JavaScript'i kullanmak istiyoruz. Ortaklarımız bir kez daha Node.js ve Johnny-Five. Johnny-Five yakınlık arılarında aşağıdaki belgesel içeriyor. Tüm diğer ultrason sensörleri serisi, UVAM kızılötesi sensörler bile orada destek buluyor.
JavaScript'i kullanmak için, açıklanan ping'in davranışını destekleyen Arduino için şirkete dayalı bir mala ihtiyacımız var. Ne yazık ki, bu sefer şirketin karanlığını yapılandırılmış kitaplık ile birlikte kullanmak yeterli değildir.
Bunun yerine, Ping Company aracılığıyla hantal yolu takip etmeliyiz. Bu, ETRSE Mario'nun Node.js.
npm install nodebots-interchange
Yani tam olarak nerede arıyorsun değişme Sistem dosyasında gizlenir (kurulum aşağıda ./node_modules/.bin bulunacak).
Ve sonra ararlar:
interchange install hc-sr04 -a uno -p <port>
Mac, PC, Linux-PC'nize Arduino kartını bağladığınız USB çıkışının adı anlamına gelir. Araç/kapı menüsünde Arduino kimliğindeki karşılık gelen kapıların adlarını tanımlayarak adı bulabilirsiniz. Bir sonraki sayfada daha fazla bilgi edinin.
Nihai rapor, şirketin eskizinin Arduino IDE'yi kullanarak tavsiyesine doğrudan yüklenmesidir. Eskiz kodunda bir burun alın.
Johnny-Five'ın kullanımı için, HC-SR04'ün TRIG ve eko pimini birbirine bağlamalısınız ve bu nedenle her ikisi de her ikisini de Arduino'nun dijital pimiyle birleştirmelisiniz.
İşte J5 örneği:
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var proximity = new five.Proximity({
controller: "HCSR04",
pin: 13
});
proximity.on("data", function() {
console.log("cm: ", this.cm);
});
});
Dijital giriş 13 yerine bir analog da kullanabilirsiniz, ancak PIN kodunda 13'ü “A0” ile değiştirmeniz gerekir.
Backpacker
Sözde bir HC-SR04 sensörünüz varsa.2Connect C-Backpack, şirketin özel bir versiyonu gerekli değildir. Bir i2C-Backpack, Ping Company ile oynayan ve HC-SR04 sensörünü bağladığı ekstra otomatik {Nano, A, Pro Mini }'dir. Mevcut Arduino ana bilgisayarı kartı, ardından sırt çantasına bağlanın. Burada daha fazla bilgi bulabilirsiniz: i2c sırt çantası. Sonra sensör ve arduino arasında bir bağlantı olarak ek bir arduino kullanın ve daha sonra ultrason sensörünü i aracılığıyla kullanabilirsiniz.2C. Adres Protokolü
Yukarıdaki kodda, yalnızca değişkenlerin anlaşması bunu yapar yakınlık Değişim:
var proximity = new five.Proximity({
controller: ""HCSR04I2CBACKPACK"
});
Özet
Bu bölümde HC-SR04 mesafe bıçağıyla yüzleşebildik. Devreler ve kodla bir şeyler deneyimleyin. Sonraki üç bölümde motorlarla ilgileniyoruz. O zamana kadar size deney yapmanızı diliyorum.
()