Arduino, MySensors ve OpenHAB ile DIY Akıllı Ev Sensörleri

  • Joseph Goodman
  • 0
  • 2944
  • 669
reklâm

Akıllı ev sensörleri çok paraya mal oluyor. Sadece bir hareket algılayıcı ya da nem sensörü için 60-100 dolar arasında, bütün bir evin döşenmesi aptalca harcanabilir geliri olanların alanı haline gelir. Kendi kendimizi inşa edelim.

Neyse ki, sıkı çalışma zaten MySensors.org'un arkasındaki iyi insanlar tarafından yapıldı. Bugün size, bir OpenHAB kurulumuna beslenebilecek ucuz bir dizi akıllı ev sensörü oluşturmak için MySensors çerçevesini nasıl kullanacağınızı göstereceğim (bkz. Ahududu Pi'de OpenHAB ile Başlarken kılavuzumuza bakın) Ahududu'da OpenHAB Ev Otomasyonu ile Başlarken Pi Ahududu'da OpenHAB Ev Otomasyonu ile Başlarken Pi OpenHAB, çeşitli donanımlarda çalışan ve protokolü kullanan ve bugün piyasadaki hemen hemen tüm ev otomasyonu donanımlarına bağlanabileceği olgun ve açık kaynaklı bir ev otomasyon platformudur. . Zaten çalışan bir MQTT sunucunuz olduğunu ve MQTT mesajlaşma biçiminin temellerini anladığınızı farz ediyorum; değilse, bir MQTT sunucusu OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu açık kaynaklı ev otomasyon yazılımı, piyasadaki diğer ev otomasyon sistemlerinin yeteneklerini çok aşmaktadır - ancak kurulumu kolay değildir. Aslında, düpedüz sinir bozucu olabilir. .

Özellikle MySensors verilerini bir Arduinos ağından, MQTT kullanarak bir OpenHAB kurulumuna iletmekle uğraşıyor olmama rağmen, MySensors çerçevesinin bir dizi farklı ev otomasyon kontrol cihazı ile beslenebileceğini belirtmeliyim. Bunu burada benim için çalışan eksiksiz bir çözüm olarak sundum, ancak MySensors sitesine bakın, benzer amaç için de uygun olduğunu ancak biraz farklı donanım veya farklı bir mesajlaşma protokolü kullanarak bulabilirsiniz. İnanılmaz derecede çok yönlü.

Kurulumum için donanım maliyeti düğüm başına 10 dolardan azdır (ağ geçidi için biraz daha fazla), ancak çok azına ek sensörler ve aktüatörler eklenebilir (DHT11 nem ve sıcaklık sensörü her biri yaklaşık 1 dolar; yüksek voltaj rölesi; yaklaşık 3 $).

Ne Yapıyoruz?

Temel fikir şu ki, mevcut kalabalık yerel ağımıza güvenilmez Wi-Fi veya pahalı Ethernet kalkanları kullanarak eklemek yerine, sadece Arduinos için tamamen ayrı bir ağ özellikli ağ oluşturduk; sonra onu hem Ethernet bağlantısı hem de diğer Arduino'lara telsiz bağlantısı olan tek bir ağ geçidi düğümü kullanarak yerel ağa köprüleyin. Böylece veri toplayan birkaç sensör düğümü yapıyoruz; ve bu verileri OpenHAB sunucusuna aktaran bir ağ geçidi düğümü..

Yine, bu benim için işe yarıyor, çünkü Wi-Fi resepsiyonum çok korkunç ve gereksiz verilerle uğraşmak istemiyorum. Wi-Fi’den memnunsanız, düşük maliyetli ESP8266 Arduino uyumlu kullanın Arduino Killer ile tanışın: ESP8266 Arduino Killer ile tanışın: ESP8266 Peki ya size yerleşik bir Wi-Fi içeren Arduino uyumlu bir dev kart olduğunu söylersem - 10 dolardan daha az bir fiyata mı? Eh, var. yerleşik Wi-Fi panolarıyla - MySensors bunları da destekliyor.

El Capitan Kullanıcıları ve Arduino Klonları için Önemli Not: Apple, yeni güvenlik önlemleri sayesinde El Capitan'ın en son sürümünde bir dizi Arduino klon kartıyla iletişim kurmak için kullanılan seri sürücüleri kırmayı başardı. Etkilenip etkilenmediğinizi görmek için kartınıza ve USB portuna en yakın olan yongaya bakın. CH340 yazıyorsa, bundan etkileneceksiniz. Sürücü kext imzalarını devre dışı bırakmak için buradaki talimatları izleyin, CH340 seri sürücüleri tekrar kurun.

Gerekli Bileşenler

Ağ geçidi için ihtiyacınız olacak:

  • Arduino Uno
  • Ethernet Kalkanı (W5100 tabanlı)
  • NRF24L01 modülü - Ben kullandım +PA + LNA 1km'ye kadar artan menzile sahip versiyonlar. Kablolama, hangisini seçerseniz seçin.

Her sensör düğümü için:

  • Arduino Uno
  • NRF24L01 modülü
  • Sensörler (başlangıç ​​olarak, DHT11 veya DHT22 modülü ile bir sıcaklık ve nem önerebilirim)

Ek / İsteğe bağlı:

  • Sahip olduğunuz her RF modülü için bir tane olan 10uF kondansatörler (bağlantı 50'lik paket içindir!)
  • 5v ve 3.3v çıkışlı Güç Kaynağı (YwRobot MB102 iyi çalışıyor ve her biri 1 dolar) - Bir klon Arduino kullanıyorsanız gereklidir. Bunun için 9-12V DC güç kaynağına da ihtiyacınız olacak.
  • Prototipleme Kalkanları veya kısa erkek-dişi buji telleri.

NRF24L01 Modülleriyle Çalışma

NRF24L01 modülleri ile başlayalım, çünkü onlar projenin en karmaşık parçası. Bunların daha pahalı, daha uzun menzilli versiyonuna gittim: teknik olarak NRF24L01 + PA + LNA. Dahili sinyal amplifikasyon devresi ve anten bağlantısı ile gelirler, yine de normal duvar tipi bir duvardan değil, normal duvarlara sahip normal bir eviniz varsa, modüllerin daha ucuz olmayan anten versiyonlarını denemenizi öneririm. Ben yaparım. Bunların iddia edilen aralığı, bir kilometreye yakın, bahçeye girmem için fazlasıyla yeterli..

Ancak, bunlar Gerçekten mi çalışmak zor; önce bu ipuçlarını okumadan devam edip her şeyi takarsanız, hayal kırıklığına uğrayacaksınız.

  • Modül VCC pimine 3,3v giriş gücüne ihtiyaç duyar - 5v değil. 5v koyarsanız, kızartırsınız.
  • VCC / GND terminalleri üzerinden 10 uF'luk bir kapasitör lehimleyin. Kondansatördeki kesintisiz gri çizgi negatif / GND tarafını gösterir.
  • Kısa, kaliteli atlama kabloları kullanın; ya da daha iyisi, kablo uzunluğunu minimum ve sağlam bir bağlantıda tutmak için doğrudan bir prototipleme kalkanına lehimleyin.
  • Bir Arduino klonu kullanıyorsanız, voltaj regülatörü 3.3V pininde yeterince sağlamıyor - her birine yaklaşık 1 dolarlık bir harici güç kaynağı kartı kullanmanız gerekecek (yukarıda bağlantılı). Bunlar kararlı bir 3.3v sağlar. Kullanıyorsanız orijinal Arduino markası Uno, bu bir sorun olarak görünmüyor.

Sadece telsizinizin çalıştığını belirlemek için ilk önce bazı temel testleri yapmanızı şiddetle tavsiye ediyorum. MySensors sayfasında gösterildiği gibi iki telsiz bağlayın. Şemalarının Arduino Micro kartlarını göstermesi önemli değil - aynı pin numaraları kullanılıyor. Diyagramın gelen NRF24L01’i gösterdiğini unutmayın. üst; aslında bir şeyleri takacaksın alttan. Zihinsel olarak buna göre ayarlayın. Gri IRQ pinini yoksay, şu anda kullanılmıyor. Özetle:

  • VCC, harici güç kaynağınızdaki 3.3v değerine gider
  • GND ortak karayoluna gidiyor
  • 9 numaralı pime CE
  • CSN / CS 10'a pin
  • MOSI'den 11'e
  • MISO'dan 12'ye pin
  • 13 numaraya SCK

Test etmek için tamamen kablolu iki düğüme ihtiyacınız olacak. RF24 kütüphanesini indirin ve en basit olanı yükleyin Başlamak örnek. Her iki modülü de açın, ancak birini USB üzerinden bağlı bırakın ve seri konsolu açın. tip “T” ve gönder, gönderim moduna geçirmek için hangi noktada hata ayıklama iletilerini almanız gerektiğini, bunun diğer düğüme başarıyla mesaj gönderdiğini.

MySensors MQTT İstemci Ağ Geçidini Oluşturma

Tamam, artık RF24 telsizlerinin kabloyla bağlandığını ve doğru çalıştığını biliyoruz, devam edin ve MySensors Arduino paketinin geliştirme kolunu indirin. Bu eğitimde sürüm 1.5 kullanılarak yazılmış, ancak sonraki sürümlerde de iyi olması gerekir. Geliştirme şubesini kullanıyoruz, çünkü yazı yazarken, MQTT müşteri ağ geçidi henüz ana paketin bir parçası değil.

Ana branşta MQTTGateway bulunmasına rağmen, bizim de istemiyoruz çünkü bu bizim istemiyoruz çünkü Raspberry Pi'de çalışan kararlı bir MQTT sunucumuz var. Sadece MySensors verilerini bunun üzerine iletmek istiyoruz. Yine, istediğin bu değilse - MQTT'yi hiç kullanmayı istemiyorsan - ikisi de OpenHAB ile uyumlu olan EthernetGateway veya SerialGateway'e bak..

İndirme paketinin sadece temel MySensors dosyalarını içermediğini, ayrıca her olası sensör için gereken uyumlu kitaplıkları da içerdiğini belirtmek gerekir. Çatışmalardan kaçınmak için mevcut tüm kitaplıklar klasörünüzü yedeklemenizi ve hepsini indirme paketindekilerle değiştirmenizi öneririm.

Ağ geçidi için kablolama biraz farklıdır; Ethernet kalkanınıza sahipseniz, radyo modülü için aşağıdaki pimleri kullanın:

  • 5 numaralı CE'ye
  • CSN'den pin 6'ya
  • A0 pinine SCK
  • MOSI'den A1'e pin
  • MISO A2'ye pin vermek için

Ayrıca, etkinleştirmeniz gerekir. #define SOFTSPI içindeki çizgi kütüphaneler / mySensors / MyConfig.h dosya. Bunu / şeyleri kaldırmak için // kaldırarak yapın, benim satırım 309 civarında..

Bunu yapmamız gerekiyor, çünkü hem radyo modülü hem de ağ koruması SPI kullanıyor ve uyumsuz; bu yüzden sadece SPI radyo modülünü diğer bazı pinlere kaydırır ve bunun yerine yazılımda SPI iletişimi gerçekleştiririz (dolayısıyla, yumuşak SPI).

Yüklemek MySensors / GatewayW5100MQTTClient eskiz. Bunu MySensors menüsü altında göremiyorsanız, gelişme şubesi Kurulmuş. Kütüphanenin tamamını yeniden indirmek için yukarıda verilen bağlantıyı kullanın..

Denetleyici için statik bir IP adresi, ağ yönlendiricinizin ve alt ağınızın IP'sini ve mevcut MQTT sunucunuzun IP adresini tanımlamanız gerekir. İsterseniz konu öneklerini de değiştirmekten çekinmeyin. Yükle ve o şeyi ağa bağla. MQTT sunucunuza bağlanamama gibi göze batan hatalar için Seri konsolunu kısaca kontrol edin, aksi halde bir kenara koyun (ancak açık bırakın).

Sensör Düğümlerini Kurma

İlk önce, bunu yorumla #define SOFTSPI içindeki çizgi MyConfig.h Dosyayı tekrar // başına koyarak dosya. Sadece ağ geçidi için gereklidir - donanım SPI kullanan sensör düğümleri için standart NRF24L01 kablolarını kullanıyoruz. Hatırlatmanız gerekirse:

  • VCC, harici güç kaynağınızdaki 3.3v değerine gider (veya eğer orijinal ve klon değilse, Arduino'nun kendisinde)
  • GND ortak karayoluna gidiyor
  • 9 numaralı pime CE
  • CSN / CS 10'a pin
  • MOSI'den 11'e
  • MISO'dan 12'ye pin
  • 13 numaraya SCK

Ardından, seçtiğiniz sensör seçimini yapın; Test için DHT11 nem ve sıcaklık sensörünü kullanıyorum, ancak MySensors sayfasının kenar çubuğundaki sensörler ve aktüatörler listesine doğru ilerlerseniz, başka seçenekler arasından seçim yapabilirsiniz: kapılar, yağmur göstergesi, ışık, hareket, hatta RFID - ve daha fazlasını yükler. Gördüğüm gibi aşağıda gösterilen düğüme bir röle de ekledim, fakat daha sonraları.

Sonunda, yük Nem sensörü MySensors menüsünden bir örnek seçin ve yorumlardan hemen sonra aşağıdaki satırı ekleyin..

#define MY_NODE_ID 2

Her şeyi kendi MQTT sunucumuza yönlendiren, denetleyicinin özel bir sürümünü kullandığımızdan, her yeni düğüme otomatik olarak düğüm kimlikleri atayacak standart denetleyici özelliğine sahip değildir. Bunun yerine sadece her seferinde elle tanımlayacağız. Bu numarayı kendi kayıtlarınız için bir yere not edin ve her düğüm için değiştirin.

Hata ayıklama çıktısını da etkinleştir:

#define MY_DEBUG

Son olarak, DHT11 sensörünüzün veri pininin doğru olduğunu kontrol edin..

#define HUMIDITY_SENSOR_DIGITAL_PIN 7

Ardından, yükle!

Bir göz atmak için seri konsolu açmaya değer. Bakılması çok önemli bir şey st =, mesajın durumu hangisi. st = başarısız mesajın gönderilmediği anlamına gelir. Benzersiz bir düğüm kimliği tanımlamamış olabilirsiniz veya ağ geçidiniz çevrimdışı olabilir. Bu arızaları basitçe ağ geçidini sökerek taklit ettim:

Her şey çalışıyorsa, MQTT sunucunuza bazı veri okumalarının geldiğini görmeye başlamalısınız. Bunları OpenHAB'a koymak, bu eğitimin kapsamı dışındadır, ancak OpenHAB kılavuzu OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu Bölüm 2: ZWave, MQTT, Kurallar ve Grafik Açma OpenHAB Başlangıç ​​Kılavuzu Açık kaynaklı ev otomasyon yazılımı, piyasadaki diğer ev otomasyon sistemlerinin yeteneklerini çok aşmaktadır - ancak kurulumu kolay değildir. Aslında, düpedüz sinir bozucu olabilir. yani oraya başvurabilirsin.

Sensör Kodunu Birleştirmek

Tek bir sensör düğümü kurmak ve çalıştırmak nispeten basit olsa da, her bir düğüme birden fazla sensör eklemek istediğinizde biraz daha zor olur. Temel olarak, kod parçacıklarını iki farklı örnekten bir araya getireceksiniz. Size bunu göstermenin en kolay yolu bir video ile örnek! Burada temel nem sensörümüzü bir röle ile birleştiriyorum.

Videoda bahsettiğim gibi engelleyici olmayan bir döngü ile değiştirilmiş olan nem sensörü ve röle kodunu burada bulabilirsiniz. Röleyi etkinleştirmek için gereken MQTT komut yapısı hakkında daha fazla bilgi edinmek için, Seri API'yi kontrol edin - ancak aşağıdaki kanalın verdiğim koddaki ilk röleyi kontrol ettiğini söylemek için yeterli (0 veya 1 mesaj gövdesiyle):

mysensors-in / 9/1/1/0/2

Şimdi tek sınırlamanız Arduino'daki hafıza miktarı ve bunu söyleyeceğim - akıllı evimdeki en güvenilir sensörler 80 $ 'a mal olan ticari Z-Wave modülleri değil, MySensors müşterileri.

Bugün burada sonlandıracağım, ancak eğer sorunlarınız varsa MySensors'ın yorumlarına veya aktif kullanıcı forumlarına sorabilirsiniz.. Kendi ucuz sensör düğümlerinizi bir araya getirecek misiniz? Akıllı evin nasıl geliyor??




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.