Akıllı Termostat AHMT v10.-2 W ve Ultrasonic HC SR04

Nasıl yani Eksi 2. versiyon?
ve
Önceki gün daha yeni adını koymuştun ne ara 10. versiyona geldin?

sorularını yanıtlayayım önce 😉

Önceki yazıda Hareket/PIR sensörü sorunundan bahsetmiştim hatırlarsanız. Geçici çözümyolarak Ses’in yankılanması sırasında, önünden geçen olursa, yankı mesafesinin kısalmasını yakalayarak hareketi algıladığımız HCSR-04 Ultrasonic ses sensörünü kullanmıştık. Hem donanım olarak hem de yazılım olarak bu parçalar ilerideki adımlarda yer almayacağı için, bu haline 1 sonraki haline 2 demeye içim elvermedi ben de Eski yaptım 🙂

Versiyon 10 meselesi yine kişisel. Windows 7 demek ile Windows 8 demek arasında algılama olarak çok bariz farklar var. Ancak Firefox 15.27 demek ile Firefox 15.29 demek arasında algı olarak çok fark yok.

“Evet, tam da bu yüzden Köklü değişimlerde 15’den 16’ya geçiliyor.” diyecek bazı arkadaşlar. Ve belki de benim 15-20 satır değiştirip, versiyon 6’dan version 7’ye geçmeme itiraz edecekler. Haklı olabilirler ama böyle olması sadece bir adetten ibaret. Alan Turing nasıl yapıyordu acaba?.

Öyle binlerce satır ya da çok yazarlı kodlar da olmadığı için,
v7.98 sonrası v8.12‘ye geçmek yerine
v7 sonrasında v8‘e sonrasında da v9‘a geçmek istiyorum müsaade ederseniz. w ise working manasında.
Bu şekilde elbet yüksek rakamlar çıkabilir. Ama sonsuz+1 diye tam sayı var malum 😉

 

Bazen, geri dönmek gerekebiliyor. Günlük hayatta “hani şu halde idi, şunu yaptıktan sonraki zamana geri dönmek lazım” gibi konuşulduğu için, ondalık yazmak yerine mevcut durumu belirtmek çok daha pratik olabiliyor.

Bir zamanlar Subversion’daki yöntemler adet iken, şimdi GitHub’daki yöntemler gelenek oldu. Ticket’ler Pull request oldu..
Bkz: https://core.trac.wordpress.org/tickets/latest
Bkz: https://github.com/steemit/steem
Bir dönem

while {
}

yazmak moda iken bir dönem

while
{
}

şeklinde yazmak moda olabilir. Böyle detayları vazgeçilmez kurallarmış gibi gören arkadaşlar için, hayatlarında kolaylık ve sabır diliyorum. Evet detaylar bazen Çok önemlidir, ama bazen de Hiç önemli değildir. Rahat olun 😉

HC-SR04 Çalışmıyor, Donuyor, HC-SR04 Serial’e bilgi göndermiyor

Sanırım “Çalışmıyor” adında bir arama motoru olsa ve forumlardan ve bloglardan, sorunlara ait çözümleri listeliyor olsa, paralı bile olsa kullanılabilirdi 😉
// Özellikle böyle ara başlık atıyorum ki, hata-çözüm arayan başkaları da basit bir sorun için saatlerce/günlerce uğraşmasın.

Eksi 2) Mekanın duvarlarına çarpmadan kendi halinde takılan robotlar yapmak HC-SR04 popüler bir modül. Bununla birlikte, HC-SR04 ya da diğer kankaları HY-SRF05 ve US-015  ile “hassas” işler yapmak pek iyi sonuçlar vermeyebilir. Zira olayın temelinde SES var ve sesin kendisi zaten saniye de ~340 metre ancak gidebiliyor. -Devrimsel bir şeyler söz konusu değilse- Atıyorum alarm için ya da ne bilim metal levhayı  görünce vidalama yapacak bir cihaz için; Lazer kullanan bir sistem ile ses kullanan bir sistemin atışmasından bahseden birisi ancak fıkra anlatıyor olabilir 🙂

 

HC-SR04  , HY-SRF05 ve US-015 ‘in kendi aralarındaki kıyaslaması ise şöyle;

 

Şayet, HC-SR04 ‘ten bir tepki alamıyorsanız şunları kontrol edin;

Trigger ve Echo pinleri doğru mu?
Arduino kodlarına sesver=2 ; sesal =3 yazıp sonra 2 nolu pini Echo‘ya bağlarsanız olmaz.
Trigger: Tetikleyen yani sesi gönderen, yani hoparlör
Echo: Yankıyı alan, yani mikrofon

Güç girişleri doğru mu?
Cihaz 5 Volt ile çalışıyor. 3.3 ile değil.

Sinyal aralıkları uygun mu?
Daha önce yüksek bir aralık kullanırken, yanıt alamamıştık. Kablolardan başlayıp, taşırken sensörü bozmuş olabileceğimize dair pek çok ihtimali düşündük. Ancak tetikleme ve yankı süreleriyle oynayınca bilgi gelmeye başladı.

Ayrıca kütüphane gerektirmeyen pulseIn fonksiyonunu kullanırken HIGH durumuna bakıyorsanız,
ses göndermeden önce ve sonra her ikisin de
Trigger’ı / Sesver pinini LOW yapmanız daha sağlıklı olabilir.

Tabi baştaki tanımlamalarımız ve Setup kısmındaki kodlarımızı da unutmamak lazım. (Steemit üzerinde düzgün görünmüyorsa buraya tıklayın)

 
const byte sesver = 3, sesal = 4;
int sure;
float mesafe;


void setup()
{
Serial.begin(9600);
pinMode(sesver, OUTPUT); pinMode(sesal, INPUT);    
}


void mesafeOlc() {
  digitalWrite(sesver, LOW);
  delayMicroseconds(2);
  digitalWrite(sesver, HIGH);
  delayMicroseconds(10);
  digitalWrite(sesver, LOW);
  sure = pulseIn(sesal, HIGH);
  mesafe = sure / 2 / 29.1;
  Serial.print("uzaklik: "); Serial.println(mesafe); }

 

Ayrı bir mevzu olduğu için şu an detaylarına girmeyeceğim anacak tanımlama yaparken, internetteki çoğu örneğin aksine
int sesver = 3;
yerine
cost byte sesver =3;
kullanmış olduğumuza dikkat edin 😉


görsel
Burada anılanlar bir yazılım tavsiyedir. Yapacak olduğunuz işlerde kullanmanız size zaman kazandırabilir.
Anladın sen 😉