Akıllı Termostat AHMT v11: İstenen Fatura/Sıcaklık

##1, ##2, ##3


Hani şu bir şeylerin ayarını değiştirmek için çevirip durduğumuz düğmeler var ya, işte onların çoğu Potansiyometre. // görsel

Ve kendi içinde tahmin edilenden çok çeşidi ve isimlendirmesi var 🙂

Potansiyometre: Dışarıdan müdahale ile değeri değiştirilebilen direnç. (~carbon)
Reosta: Yüksek akım değerine sahip olanar (~nikel~krom)
Pot: Kısaca söylenişi
Lineer Potansiyometre: Her 1 birim hareket için, sabit oranlı direnç değişimi sunanlar


Logaritmik Potansiyometre: Her 1 birim hareket için, artan/azalan oranlı direnç değişimi sunanlar, genelde dairesel yapıda olup, piyasadaki çoğu örnek için, direnç değeri 180 dereceye kadar hafif hafif artarken 180 derece sonrası fazla fazla artar. (Bu yüzden kelimenin tam manası ile logaritmik denebilir mi tartışılır.) Azalan versiyonu anti-logaritmik potansiyometre adını alır.


Çok turlu/Sonsuz/Vidalı Potansiyometre
: Belli bir aralığı yoktur, defalarca dönebilecek şekilde hazırlanmıştır

Trimmer/Trimpot: Genelde ayarlanmış değere sahip olarak gelir, bir iki defa ayarlama sonrası yeniden değişime ihtiyaç duymaz (Örn, LCD ekranın arka aydınlatmasıdandaki trimpot’un, yazıların görünmesi için ortamdaki ışığa göre bi defa ayarlanması yeterlidir. Ama radyonun düğmesi her zaman değişebilir)

Meraklısı için daha detay mevcut #1, #2, #3

Bizim isteğimiz şu idi; istenen sıcaklığı ayarlayalım, fatura rakamını girelim 😉 Sistem ona göre ayarlasın.. Evet kulağa hoş geliyor değil mi?

Fatura benim istediğim tutarda gelsin

Bunun için her şeyi tersten düşünmek gerekiyor. 250 TL fatura geliyorsa ortalama olarak günde 8.3 TL’lik kullanım var demektir. Günün her saati farklı elbette ama şimdilik ortalama alırsak demek ki saate 0,34 TL’lik harcama söz konusu. AHMT evde hareketin olmadığı zamanlarda 5 saate karşılık gelen bir düşüş sağlayabilirse (8 saat değil, çünkü tümden kapatmıyor)  bu ayda 50 TL bir düşüşe denk geliyor demek.

Yazılım tarafında, istenen fatura ve istenen sıcaklığa bağlı olarak; tasarruf edilmesi gereken süreyi bulmamız ve bunu gün içi ve geceye yaymamız gerekiyor.

Bunları yapabilmek için de, kullanıcının İstediği ortam sıcaklığını girmesi gerektiği gibi, belirli bir fatura istediği için Fatura tutarını da girmesi gerekiyor. Ve bizim bunu hesaplatabilmemiz için de doğalgaz birim fiyatını bilmemiz gerekiyor. İlk kodlarken bunu girebiliriz elbet ama

Zam gelirse?

Zam gelirse birim fiyatın da değişebilmesi lazım. Şu an için, internet üzerinden cihazların yazılımını otomatik güncelleme gibi bir maceraya atılma niyetimiz olmadığı için, en pratik çözüm: Her bir paramatre için birer potansiyometre.

Biz de mevcut devremize, 3 tane potansiyometre ilave ettik.
Ve.. Bozuldu 

Serial ekrana hiç bir bilgi gelmedi. Bu kadar basit bir devre elemanı ile sorun yaşamış olmak komik. Bi çok sebebi inceledik ve kontrollü deneyle gördük ki 1 tane bile potansiyometre bağlayınca sistem çalışmıyordu. Demek ki komik olan, bizim Arduio’nun A1 A2 A3 bacaklarına direnç-potansiyometre bağladığımızda, direncin değerine göre devrenin tamanın nasıl etkileneceğini, toplam direnç/akım/volt değerlerinin ne olacağını hesaba katmamamızmış.

Elimizdeki potansiyometrler 10K’lık idi. Yani toplam 30.000 Ohm dahil olmuştu sisteme.

Hepsini 1K yapınca, AHMT yeniden uyandı 🙂

Kod tarafında tanımlar şunun gibi oldu;

Sıcaklık derken, Ortam sıcaklığını ölçtüğümüz LM35 sensörüyle ilgili şeyleri kast ediyorum.

ISI derken, kullanıcının istemiş olduğu değerle ilgili, ilk potansiyometre ile ilgili şeyleri kast ediyorum.

Bu tanımların kullanımı ise şöyle;

ve de

bir sonraki yazıda bu kısımların açıklamalarına da değinelim..

 

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 😉

Isı, hareket ve zamana duyarlı termostat yapalım: AHMT

Açılımı ve kılsatması imalı isimleri sevmişimdir. Nasipte böyle bir isim üretmek de varmış 😉
Advisable thermostat for Heat, Moving and Time = AHMT
Isı, Hareket ve Zaman’ı akıllıca kullanma termostatı.

Aynı zamanda çalışmayı beraber yaptığımız arkadaşım Ayhan’ın ve benim ismimden harfler var.
Ve de neredeyse AHMET diye okunabilir 😉

Parça kısmı, isim gibi yormayan bir şekilde olmadı. İki hafta önce, normalde çok basit bir şekilde çalışması gereken Hareket sensörü çok naz yaptı. Neredeyse 9 saatin sonunda elimizde bolca “şu yüzden olmamış olabilir” ihtimalleri birikmişti.

 

 

Geçtiğimiz haftaysa, hareket sensörü PIR yerine ultrasonik ses sensörü HC-SR05/04 kullanmaya karar verdik. Bu aslında 140 derecelik görme açısını, 5-15 derece sayılabilecek düz bir hatta düşürmek demekti. Odanın herhangi bir yerindeki hareket yerine, sensörün önünden geçilen hareketleri algılayacak demekti. Pek istediğimiz bir çözüm değildi ama “Mükemmel, iyiyi engeller. Hem iphone’dan toyota’ya herkes mevcut ile bir şeyler yapıyor zamanla geliştiriyor” düşünceleri eşliğinde kodlamaya başladık..

Dün itibariyle PIR / Hareket Sensörü olayını çözdük; teknik bi hatadanmış. Aynı model sensörden başka bi tane takınca hemen çalıştı.

Tabi, dün ve geçen hafta sonu arasında, ultrasonik mesafe sensörü de devreye girdiği için, kodlara o da misafir olacak 🙂 Zaten şu an very beta olduğu için, ilerledikçe mevcut kodlar adım adım değişecek.

Sıcaklık için gayet popüler olan LM35 kullandık.

 

Zaman içinde “gerçek zaman saati modülü” kullanacağız.


 

“Termostat diye bir şey var. Hatta şu anda kablosuz olarak bi kenarda duruyor. Kombinin sıcaklık ayarını oradan yapıyoruz, zaten.”

Sizin derdiniz ne?

diyebilirsiniz. Bir; Tekerleği KENDİMİZ yapmak istiyoruz. İki; Taş/Tahta/Metal/Kauçuk/Küre.. benzeri tekerleğin gelişerek yeniden icat edilmesi durumunun gelecekteki adımlarından birinde yer almak istiyoruz. Üç.. Dört..

Bu çerçeveden bu örneğin amacı şu;
Mevcut termostatlar, sıcaklığı istenen aralıkta tutmak üzere yapılmış. Isıyı ölçüyor, atıyorum 23 dereceden yüksekse kombiyi kapatıyor, 19 dereceden düşükse açıyor.

Biz ise bi tık daha ileri gitmek istiyoruz;
Oda sıcaklığı 22 derece gibi istenen bir aralıktaysa ama evde kimse yoksa sıcaklığın 22 olmasına gerek yok. Bir süre boyunca hareket olmazsa 21’e düşürsün, bir süre daha olmazsa 20’e düşürsün.. ta ki belirlenen minimum seviye neyse oraya kadar.

Ayrıca, isteğe bağlı olarak, gece zaten herkes yorganın altında iken dışarısı 1-2 derece düşük olabilir.
Ve de yine mevcutta bulunan, her peteği ayrı ayrı yöneten sistemlere ilave olarak; mutfak 1 derece düşükte 21 derecede, koridor 2 derece düşükte 20 derecede yanıyor olabilir ama yine aynı mantıkla, hareket yoksa 20 de yanmasına da gerek olmayabilir. Ayarlanan minimum sıcaklıkta yanabilir.

İyi ama böyle, İşten/okuldan gelince ev soğuk olur?

AHMT üzerindeki gerçek zaman saati modülü bu yüzden var.  18.30’da evde oluyorsanız, siz gelmeden önce,  18.00’da çalışmaya başlayıp sıcaklığı 22 derece olacak şekilde ayarlayabilir 😉

Normal kullanımdan termostata geçmekle bizim doğal gaz faturası ~%25-30 civarında düşmüştü. Kombiyi AHMT yönettiğinde daha da düşebilir 😉

// ..mi? göreceğiz.


görsel 1, görsel 2, görsel 3, görsel 4, görsel 5