Arama butonu
Bu konudaki kullanıcılar: 1 misafir
23
Cevap
5933
Tıklama
3
Öne Çıkarma
RASPBERRY Pİ VE ARDUİNO İLE AKILLI EV OTOMASYONU
T
10 yıl
Yüzbaşı
Konu Sahibi

Evet arkadaşlar raspi ve Arduino kullanarak ev otomasyonu yapmaya hazır mıyız ?Aslında otomasyon demek biraz garip ama biz genede öyle analım.
Öncelikle yazı yazmayı veya konu anlatmaktan pek anlamam o yüzden kelime ve anlatım hatalarından dolayı şimdiden af oluna.
Elimden geldiği kadar basit anlatmaya çalışacağım,o yüzden takılan arkadaşlar olursa müsait olduğum müddetçe yardımcı olmaya çalışırım.

Raspberry pi olarak B+ modeli kullandım,zannedersem raspi 2 de sıkıntı çıkarmaz.
Öncelikle Raspi mize server yazılımını kurmamız gerekmekte.Normalde raspiye Rasbian imajı atıp üzerine EasyIoT Server kurmamız gerekir ama biz bunu yapmak yerine hem rasbian,hemde server yazılımının olduğu hazır imaj dosyasını yüklemek daha kolay olur.Bunun için aşağıdaki linkten imaj dosyasını indirip Win32 Disk Imager programı ile raspiye atıyoruz.
Hazır imaj dosyası :http://iot-playground.com/swdownload/EasyIoT_server_v0_8.rar

Raspi ilk çalıştırmada ekrana takıp bazı ayarla yapmamız gerekmektedir.
Öncelikle karşımıza raspi-config gelmeli gelmezse raspiye bağlı klavyeden
sudo raspi-config
yazıp gelen konfigürasyon menüsünden SSH ve SPI yı aktif ediniz.SSH uzaktan raspiye bağlanmamız için gereken servis,SPI haberleşme için gerekli servistir.
ayarlamadan sonra raspi yeniden başlayacaktır isterseniz klavye ve ekranı çıkartabilir bilgisayarınızla SSH üzerinden bağlayabilirsiniz.
raspi yeniden başladığında ilk yapmamız gereken raspimizin güncellemelerini yüklemek olsun bunu için şu komutları kullanın

sudo apt-get update
sudo apt-get upgrade

bu işlemler internet hızınıza göre biraz zaman alabilir,yüklemeler devam ederken bence kendinize bir kahve koyun

şimdi sıra mono kurmaya geldi(mono servermızı raspi üzerinden izlemek için gerekli)

sudo apt-get install mono-complete

şimdi sıra kablosuz iletişim için raspiye ekleyeceğimiz donanıma geldi.Ucuz olması ve çekim performansı iyi olmasından dolayı NRF24L01+ modülünü kullanacağız.Aşağıdaki bağlantıya göre Mysensör driver (ileride anlatılacak) için
bağlantımızı yapıyoruz.

< Resime gitmek için tıklayın >

Raspide şu komutu çalıştıralım
sudo mono EasyIoT.exe
donanım kurulumunu düzgün yapmışsak raspiye şu komutu verdiğimizde
aşağıdakine benzer bir ekranla karşılaşmamız gerekir.
Eğer komut dizin ve dosya bulunamadı gibi bir hata verirse easyiot dizininde değilsiniz demektir bunun için cd /home/easyiot komutu ile dizine giriniz



< Resime gitmek için tıklayın >

Pc ekranında serverın çalışıp çalışmadığını kontrol edelim raspinin adresini tarayıcımıza girince karşımıza şifre ekranı gelecek kullanıcı adı admin şifre ise test tir,Artık karşımıza şöyle bir ekran gelmesi gerekiyor.

< Resime gitmek için tıklayın >

Bu ekrandan istersek şifremizi değiştirebiliriz.
Şimdi her şey yolunda ise salonumuza koyacağımız sıcaklık ve nem sensör verilerini görebileceğimiz bir çalışma yapalım.
Bunun için gerekli malzemeler

1 adet NRF24L01+

1-DHT11

1Adet Arduino pro (3.3V olanı tavsiye ederim)

1 adet LM1117 3.3V 1A regulator (NRF24 wifi adaptörümüz 3.3v ile çalışacağı için gereklidir,aşağıdaki resimde regülatörün radio arası bağlantı gösterilmektedir)

Gelelim bağlantılara önce NRF24 wifi adaptörümüzü Arduinoya şu şekilde bağlıyoruz.

Renklere bakarak rahatlıkla yapabilirsiniz.

Arduino NRF24...
GND GND
5V Reg
3.3V VCC
9 CE
10 CSN/CS
13 SCK
11 MOSI
12 MISO
2 IRQ

< Resime gitmek için tıklayın > < Resime gitmek için tıklayın >

Şimdi de DHT sensörümüzü bağlıyoruz

< Resime gitmek için tıklayın > < Resime gitmek için tıklayın >

Arduinomuzu programlamadan önce bazı libraryleri indirmemiz gerek yoksa programlama esnasında hata verecektir.
https://github.com/mysensors/Arduino/archive/master.zip mysensör library dosyalarını indiriyoruz.
inen zip dosyasının içindeki dosyaları arduino dizinine atın,burada bize lazım olan libraries dizinin arduino library klasörümüzün içine kopyalıyoruz.

Şimdi arduinoya yükleyeceğimiz programa geldi bilgisayarımızdan arduino programını çalıştırıyoruz ve aşağıdaki programı arduinoya yüklüyoruz..

#include <SPI.h> 
#include <MySensor.h>
#include <DHT.h>

#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
#define HUMIDITY_SENSOR_DIGITAL_PIN 3
unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds)

MySensor gw;
DHT dht;
float lastTemp;
float lastHum;
boolean metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);


void setup()
{
gw.begin();
dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);

// Send the Sketch Version Information to the Gateway
gw.sendSketchInfo("Humidity", "1.0");

// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID_HUM, S_HUM);
gw.present(CHILD_ID_TEMP, S_TEMP);

metric = gw.getConfig().isMetric;
}

void loop()
{
delay(dht.getMinimumSamplingPeriod());

float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT");
} else if (temperature != lastTemp) {
lastTemp = temperature;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
gw.send(msgTemp.set(temperature, 1));
Serial.print("T: ");
Serial.println(temperature);
}

float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum) {
lastHum = humidity;
gw.send(msgHum.set(humidity, 1));
Serial.print("H: ");
Serial.println(humidity);
}

gw.sleep(SLEEP_TIME); //sleep a bit
}


Yükleme işlemi bittikten sonra raspide çalışan server a kurmuş olduğumuz sensörü tanıtmamız gerekiyor.
Bunun için raspinin aldığı ip adresimizi tarayıcımıza yazıp gelen ekranda kullanıcı adımızı admin şifremizi test dedikten sonra sol altta configure/drivers/MySensors Driver ekranına geliyoruz. sağ tarafta enable butonunun aktif olduğunu kontrol ettikten sonra altta add node butonuna tıklıyoruz.burada 30 saniye bize arduinoyu çalıştırmamız için zaman sayıyor, dht sensör ve nrf24 adaptörü bağlı arduinomuza besleme veriyoruz zaten çalışıyorsa arduino üzerindeki reset butonuna basıyoruz(ben genelde reset kullanıyorum),bu sırada raspiye bağlı nrf24 ve arduinoya bağlı nrf24 arasında iletişim kurulmaya çalışıyor.Herşey yolunda ise add N1S1 gibi bir ekleme yapıldığına dair mesaj alacağız(çıkan ekrandaki eklenen N1S1 gibi node numarasını aklımızda tutalım).Eğer bağlantı sağlanamazsa TIME OUT mesajı alınır bu durumda add node butonuna tekrar basıp arduinomuzu hemen resetleyip tekrar deneyebilirsiniz.Hala hata mesajı alıyorsak nrf24 ün arduino ve raspi bağlantılarını kontrol ediyoruz. şimdi ana sayfaya geri dönerek eklenen sensörümüzü sayfada görüntüleyelim.
configure/group and modules/Living room ekranına gelelim burada isterseniz Living room ismini değiştirebilirsiniz ben salon yazdım.sensörleri eklemek için sağ altta more butonuna tıklayalım ve add module diyelim gelen pencerede otomatik olarak eklenen sensörlerimizin kodu yazar(node numarası) kontrol ettikten sonra add deyip onaylayalım artık sensörlerimiz eklendi.Ana sayfadan ilgili oda ismine(Living room) tıklayarak sensör değerlerini görebiliriz.

DIŞARIDAN SİSTEMİMİZE ERİŞİM NASIL YAPARIZ ?
Arkadaşlar sistemimize lokal ip den erişebiliyoruz peki başka bir yerden nasıl erişim sağlarız.Hemen girelim konuya

Bunun için ücretsiz DNS hizmeti veren sitelere başvurmamız gerekiyor.Ben önceden no-ip gibi siteleri kullanıyordum ama bunlarda zamanla ücretli olmaya başladı.Bu konuyu araştırırken karşıma DUCKDNS çıktı.Kurulumun pratik olması ve raspberry pi yi desteklemesi üstelik ücretsiz hizmet vermesi sebebiyle tercihim bu yönde oldu.
Başlayalım...
Önceliklehttps://www.duckdns.org/ ye gidelim.Açılan sayfada üst tarafta Twitter, Facebook, Reddit ve Google+ ile giriş yapabileceğimizi gösteren ikonlardan size uygun olanını seçin.Mesela facebook la giriş yapabilirsiniz.< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >

Giriş yaptıktan sonra alttahttp://****.duckdns.org yıldızların olduğu boşluğa siteniz için bir isim verin ve yanında bulunan add domain yazan butona tıklayın.Domain ekledik şimdi raspiye kurmaya geldi.

duckdns sitesinde yukarıda install butonuna tıklıyoruz.

Operating Systems kısmından pi yazana tıklıyoruz.

Hemen altta first step - choose a domain yazan yerden az önce eklemiş olduğumuz domain ismini seçiyoruz.

Raspiye ssh üzerinden uzak erişim yapıp kullanıcı adımızı ve şifremizi girdikten sonra alttaki kodları(yeşil ile belirtilen) sırayla raspberry pi de yapıyoruz.

Duckdns.org sitesine gidip giriş yaptıktan sonra alt kısımda ip adresimiz,site ismi ve en son ne zaman güncellendiğine dair bilgiler görüntülenir.

Sistemimize dışarıdan erişmek için ayrıca modemimizi raspi nin kullandığı ip ye yönlendirmemiz gerektiğini unutmayalım.

Şimdi başka bir ortamdaki bilgisayardan veya akıllı telefonumuzun tarayıcısından siteismi.duckdns.org yazdığımızda otomasyon kontrol sayfamız olan easyiot sayfasına erişebilirsiniz.

ESP8266 İLE KABLOSUZ KONTROL

Daha önce NRF24L01+ ile yaptığımız bağlantımızı bir başka modül olan ESP8266 modülüyle yapacağız.Öncelikleelimizde bulunan ESP8266 modülümüze firmware güncellemesi yapmamız gerekiyor,ESP yi bilgisayarımıza bağlamak için FDTI adaptörü kullanıyoruz.Bağlantımız şu şekilde olmalı

< Resime gitmek için tıklayın >

Burada dikkat etmemiz gereken nokta ESP 3.3V ile çalışıyor ve kullandığımız FDTI adaptörümüzün 3.3V bağlantısı varsa VCC yi direk bağlayabilirsiniz eğer yoksa 3.3V regüle kullanmalısınız.

Bağlantımız tamamsa şuradan xtcom utulity programını indiriyoruz.Program çalıştırdıktan sonra Tools->Config device dan FDTI adaptörünün kullandığı com portu seçiyoruz. ve connect diyoruz.Program com 1-6 portlarını desteklediği için eğer bunların dışında bir com numarası varsa denetim masasından com 1-6 arası olacak şeklinde değişiklik yapmamız gerekiyor.

< Resime gitmek için tıklayın >


Daha sonra API TEST den Flash image download seçim aşağıda linkini verdiğim en son ESP firmware ini yüklüyoruz.
http://iot-playground.com/swdownload/ESPfirmware/v0.9.5.2%20AT%20Firmware.bin

< Resime gitmek için tıklayın >

ESP nin default ayarında baudrate ayarı 115200 dür herhangi bir terminal programıyla baudrate ini 9600 olarak ayarlamak için AT+CIOBAUD=9600 komutunu kullanabilirsiniz.


ESP8266 ile wifi sıcaklık ve nem ölçmek


Donanım gereksinimi:

ESP8266 module
Arduino Pro Mini 8Mzh 3.3V
3.3V power supplay
DHT22 temperature and humidity sensor(DHT11 e göre daha doğru sonuç verir)
EasyIoT server yüklü Raspberry Pi
WiFi modem

Bağlantı şu şekilde olmalı (3.3V arduino ya göre)

ESP8266 module Arduino pro mini module Power supply
VCC......................VCC............................. 3.3V VCC power supply
GND.....................GND.............................. GND power suppy
RST.......................3
UTXD .....................10
URXD.....................11
CH_PHD............................................................3.3V VCC power supply

< Resime gitmek için tıklayın >

SHT22 nin data pinini Arduinonun 2 nolu pinine bağlıyoruz.VCC 3.3V a GND ise GND ye bağlayacağız.

< Resime gitmek için tıklayın >

Aşağıdaki programı Arduinoya yükleyelim

 /* 
V1.0 - first version

Created by Igor Jarc <igor.jarc1@gmail.com>
Seehttp://iot-playground.com for details

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/
#include <Esp8266EasyIoT.h>
#include <SoftwareSerial.h>
#include <DHT.h>

#define CHILD_ID_HUM 0
#define CHILD_ID_TEMP 1
#define HUMIDITY_SENSOR_DIGITAL_PIN 2


Esp8266EasyIoT esp;

SoftwareSerial serialEsp(10, 11);


DHT dht;
float lastTemp;
float lastHum;

Esp8266EasyIoTMsg msgHum(CHILD_ID_HUM, V_HUM);
Esp8266EasyIoTMsg msgTemp(CHILD_ID_TEMP, V_TEMP);


void setup()
{
serialEsp.begin(9600);
Serial.begin(115200);

Serial.println("EasyIoTEsp init");


esp.begin(NULL, 3, &serialEsp, &Serial);
//esp.begin(NULL, &serialEsp);
dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);

pinMode(13, OUTPUT);

// Serial.println("present S_HUM");
esp.present(CHILD_ID_HUM, S_HUM);

// Serial.println("present S_TEMP");
esp.present(CHILD_ID_TEMP, S_TEMP);

}

void loop()
{
while(!esp.process());

delay(dht.getMinimumSamplingPeriod());

while(!esp.process());

float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT");
}
else if (temperature != lastTemp)
{
lastTemp = temperature;
esp.send(msgTemp.set(temperature, 1));
Serial.print("T: ");
Serial.println(temperature);
}

float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
}
else if (humidity != lastHum)
{
lastHum = humidity;
esp.send(msgHum.set(humidity, 1));
Serial.print("H: ");
Serial.println(humidity);
}
}






Yeni sensörümüzü eklemek için Easyiot server da
Configure->Drivers->ESP8266 EasyIoT driver ini enable yapıyoruz ve add node diyoruz.

< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >

< Resime gitmek için tıklayın >

Geri gelip Groups and modules ten add new group diyelim karşımıza gelen grup ismi kısmına resimde olduğu gibi ESP8266 yerine mekan ismi(oda,mutfak vb.)yazabilirsiniz.

< Resime gitmek için tıklayın >

Daha sonra add module diyelim

< Resime gitmek için tıklayın >

Burada ESP8266 nın hemen altında eklenmiş sensörler var(S_HUM,S_TEMP) onları tek tek tanıtalım

< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >

Yeni sensörümüz hayırlı olasun





Devam edecek.............

EASYIOT server yazılımı CC BY-NC 3.0 lisansın da belirtilen şartlarda kullanılmakta olup TİCARİ amaçlar için kullanılılamaz.

NOT:Bu yazının hazırlamasındahttp://iot-playground.com/ vehttp://www.mysensors.org/ sitelerinden yararlanılmıştır.Daha fazla bilgi için siteyi ziyaret edebilirsiniz.





< Bu mesaj bu kişi tarafından değiştirildi tecman -- 29 Ağustos 2015; 15:29:23 >

A
10 yıl
Yüzbaşı

Hocam ipnizi nasıl halettiniz ?



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

takip
Hocam peki bunu web hosting uzerinden yapabiliriyiz yada baglandigimiz ip illa ayni modemmi olmasi lazim





< Bu mesaj bu kişi tarafından değiştirildi Guest-1B9CEBC50 -- 31 Temmuz 2015; 15:47:56 >

< Bu ileti tablet sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
T
10 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Apollon

Hocam ipnizi nasıl halettiniz ?

Localden erişim ip sinden bahsediyorsanız onu raspi den sabitledim.Eğer uzaktan erişimden bahsediyorsanız şimdilik bir şey yapmadım bu konuda önerisi olan varsa beraber değerlendirebiliriz.


Bu mesaja 1 cevap geldi.
T
10 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Majardoma

takip
Hocam peki bunu web hosting uzerinden yapabiliriyiz yada baglandigimiz ip illa ayni modemmi olmasi lazim

Raspinin almış olduğu ip yi yayın yapabilirsek tabiki olur.şu an ben sadece lokalden aynı modeme bağlı telefon veya laptopdan erişiyorum.Modem servis sağlayıcıdan almış olduğu ip yi bilirsem uzaktan web üzerinden erişebiliyorum zaten.



C
10 yıl
Yüzbaşı

quote:

Orijinalden alıntı: tecman

quote:

Orijinalden alıntı: Apollon

Hocam ipnizi nasıl halettiniz ?

Localden erişim ip sinden bahsediyorsanız onu raspi den sabitledim.Eğer uzaktan erişimden bahsediyorsanız şimdilik bir şey yapmadım bu konuda önerisi olan varsa beraber değerlendirebiliriz.

En basiti port açmak ancak güvenlik sıkıntı. Onun dışında vpn ya da hamachi denenebilir





< Bu mesaj bu kişi tarafından değiştirildi CarnageTR -- 31 Temmuz 2015; 16:59:59 >

< Bu ileti mini sürüm kullanılarak atıldı >

&
10 yıl
Teğmen

güzel konu



< Bu ileti tablet sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
O
10 yıl
Yüzbaşı

güzel konu seneye bende böyle bir sistem yapıcam inş üni sınavından sonra takipteyim


Bu mesaja 1 cevap geldi.
D
10 yıl
Binbaşı

Hocam takiple devamını bekliyoruz. Saygılar


Bu mesaja 1 cevap geldi.
T
10 yıl
Yüzbaşı

güzel bir çalışma ustam başarılarının devamını diliyorum daha iyilerine hep birlikte


Bu mesaja 1 cevap geldi.
R
10 yıl
Teğmen

Benim elimde dht11 var ama hassasiyetini hiç beğenmedim, +-2C de nedir ? Bu sıcaklarda bizim için 0,1C nin bile ehemmiyeti var.


Bu mesaja 2 cevap geldi.
F
10 yıl
Yarbay

Sanırım iss den statik ip almak gerekli. Fiyatları cüzi bir miktardı, yanlış hatırlamıyorsam aylık 3 lira gibi bir ücret alıyorlardı.





< Bu mesaj bu kişi tarafından değiştirildi fbkaya -- 4 Ağustos 2015; 7:22:05 >

T
10 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: KaraXan

Benim elimde dht11 var ama hassasiyetini hiç beğenmedim, +-2C de nedir ? Bu sıcaklarda bizim için 0,1C nin bile ehemmiyeti var.

Evet dht11 pek hassas değil dht22 biraz daha hassa diyorlar oda biraz pahalı.





< Bu mesaj bu kişi tarafından değiştirildi tecman -- 4 Ağustos 2015; 8:39:53 >
Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

T
10 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Majardoma

devamı yokmu hocam

Biraz yoğunluk vardı,Bugün yarın konuya yeni eklemeler yapabilirim sanırım.


Bu mesaja 1 cevap geldi.
T
10 yıl
Yüzbaşı
Konu Sahibi

Güncelleme....Sisteme dışarıdan erişim konusu eklenmiştir


Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

quote:

Orijinalden alıntı: tecman

Güncelleme....Sisteme dışarıdan erişim konusu eklenmiştir

Takip elinize saglık hocam


Bu mesaja 1 cevap geldi.
G
10 yıl
Yüzbaşı

T
10 yıl
Yüzbaşı
Konu Sahibi

Güncelleme ESP8266 İLE KABLOSUZ KONTROL konusu eklenmiştir.



İ
8 yıl
Er

Arkadaşlar Raspberry Pi ile proje geliştirmek istiyorum ancak kafama takılan bir soru var. Yaptığım sistemi sürekli olarak ben değil tekniğinden anlamayan bir vatandaş kullanacak. Dolayısıyla herhangi bir elektrik kesintisinde, sistem yeniden başladığında v.s. daha önceki kurguda çalışmasına kendi kendine devam eder mi? Yoksa böyle bir durumda ilk başta yapılan ayarları ve işlemleri tekrar mı yapmamız gerekir?





< Bu mesaj bu kişi tarafından değiştirildi ikinumara -- 7 Eylül 2017; 12:46:35 >
Bu mesaja 1 cevap geldi.