İçindekiler:

ESP32 Akıllı Ev Merkezi: 11 Adım
ESP32 Akıllı Ev Merkezi: 11 Adım

Video: ESP32 Akıllı Ev Merkezi: 11 Adım

Video: ESP32 Akıllı Ev Merkezi: 11 Adım
Video: Sıfırdan Akıllı Ev Kurulumu - Bölüm 1: ESP32 ve DHT11 ile sıcaklık ölçümü ve mysql e veri yazma 2024, Haziran
Anonim
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi
ESP32 Akıllı Ev Merkezi

Büyük miktarda sensör verisini işleyebilen, birden fazla çıktıya sahip olan ve internete veya yerel bir ağa bağlanabilen bir sistem oluşturmak uzun zaman alır ve büyük miktarda çaba gerektirir. Çoğu zaman, kendi akıllı ev ağlarını oluşturmak isteyen insanlar, özel bileşenleri bulup daha büyük bir sistemde bir araya getirebilmekte zorlanıyor. Bu nedenle, IoT bağlantılı sensörler ve çıkışlar oluşturmayı kolaylaştıracak modüler ve zengin özelliklere sahip bir platform yapmak istedim.

Bu projeye sponsor oldukları için DFRobot ve PCBGOGO.com'a teşekkürler!

Daha ayrıntılı bilgi için Github deposunu ziyaret edin:

Gereçler

  • DFRobot ESP32 FireBeetle

    www.dfrobot.com/product-1590.html

  • DHT22 Sensörü

    www.dfrobot.com/product-1102.html

  • APDS9960 Işık ve Hareket Sensörü

    www.dfrobot.com/product-1361.html

  • I2C 20x4 LCD Modülü

    www.dfrobot.com/product-590.html

  • Analog RGB LED Şerit

    www.dfrobot.com/product-1829.html

  • DRV8825 Step Motor Sürücüleri
  • SD Kart Okuyucu
  • NEMA17 Step Motorlar

Adım 1: Özellikler

Özellikleri
Özellikleri
Özellikleri
Özellikleri
Özellikleri
Özellikleri

Bu kartın ana özelliği, tüm iletişimi, sensör okumalarını ve çıkışları yöneten bir ESP32 FireBeetle Geliştirme Kartıdır. İki bipolar step motoru kontrol eden iki step motor sürücüsü vardır.

I2C veri yolu ayrıca APDS9960 veya LCD gibi bileşenlerle kullanım için ayrılmıştır. Sıcaklığı okumak için, bir DHT22 sensörüne bağlanmak için kırılmış pinler ve ayrıca ortam ışık seviyelerini okumak için bir fotodirenç vardır.

LED ışıkları sürmek için üzerinde üç MOSFET bulunan kart üzerinde bir analog ışık şeridi desteği vardır.

Adım 2: PCB

PCB
PCB
PCB
PCB
PCB
PCB
PCB
PCB

PCB tasarım sürecine ilk olarak Eagle'ta bir şema oluşturarak başladım. Bir ESP32 FireBeetle kitaplığı bulamadığım için bunun yerine iki pin 1x18 pin başlığı kullandım. Ardından, bir DC varil jakı üzerinden 12v kabul edebilen ve sensörlere ve ESP32'ye güç sağlamak için 5v'ye çevirebilen bir güç yönetim devresi oluşturdum.

Şematik tamamlandıktan sonra PCB'nin kendisini tasarlamaya geçtim.

DC varil fişinin kartın ön tarafına yakın olması gerektiğini ve 100 uF güç kaynağı yumuşatma kapasitörlerinin step motor sürücüsü güç girişlerine yakın olması gerektiğini biliyordum. Her şey düzene girdikten sonra izleri yönlendirmeye başladım.

Oshpark çok kaliteli PCB üretse de fiyatları oldukça yüksek. Neyse ki, PCBGOGO.com uygun fiyata harika PCB'ler de üretiyor. Oshpark.com'dan sadece üç kart için 52 dolar ödemek yerine sadece 5 dolara on PCB satın alabildim.

Adım 3: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Genel olarak, tahtanın montajı oldukça kolaydı. Yüzeye monte edilen bileşenleri lehimleyerek ve ardından namlu jakı konektörünü ve regülatörü takarak başladım. Ardından, motor sürücüleri ve FireBeetle gibi bileşenlerin pin başlıklarını lehimledim.

Lehimleme işlemi bittikten sonra multimetreyi direnç ölçme moduna alıp direncin belirli bir miktarın üzerinde olup olmadığına bakarak kartta kısa devre testi yaptım. Kart geçti, böylece her bir bileşeni takabildim.

Adım 4: Programlamaya Genel Bakış

Bu kartın kodunun modüler ve kullanımı kolay olmasını istedim. Bu, daha küçük olanları birleştiren daha büyük bir sarmalayıcı sınıfının yanı sıra belirli işlevleri işleyen birkaç sınıfa sahip olmak anlamına geliyordu.

Adım 5: Girişler

Girişler
Girişler
Girişler
Girişler
Girişler
Girişler

Girişleri işlemek için, ana hub'ın APDS9960 ile iletişim kurmasına ve ayrıca düğmeler ve kapasitif dokunmatik arayüzler oluşturmasına ve yönetmesine izin veren "Hub_Inputs" adlı bir sınıf oluşturdum. Aşağıdaki işlevleri içerir:

Oluştur düğmesi

Düğmeye basılırsa al

Düğmeye basma sayısını alın

En son hareketi al

Kapasitif dokunma değeri alın

Düğmeler, üç öznitelikle bir yapı olarak saklanır: is_pressed, numberPress ve pin. Oluşturulduğunda her düğme bir kesmeye eklenir. Bu kesme tetiklendiğinde, Kesinti Hizmeti Rutini (ISR), o düğmenin işaretçisinden (düğme dizisindeki bellek adresi olarak verilir) geçirilir ve is_pressed Boole değerini güncellemekle birlikte düğmeye basma sayısını artırır.

Kapasitif dokunma değerleri çok daha basittir. Dokunmatik pimi touchRead() işlevine geçirerek alınırlar.

En son hareket, APDS9960'ın yoklanması ve herhangi bir yeni hareketin algılanıp algılanmadığı kontrol edilerek güncellenir ve algılanmışsa, özel hareket değişkenini bu harekete ayarlayın.

Adım 6: Çıktılar

çıktılar
çıktılar
çıktılar
çıktılar
çıktılar
çıktılar

Akıllı ev hub'ı, bilgi vermek ve ışıkları değiştirmek için çeşitli yollar sunar. Kullanıcıların bir LCD'yi bağlamasına izin veren I2C veri yolunu kıran pinler vardır. Şimdiye kadar yalnızca bir LCD boyutu destekleniyor: 20 x 4. “hub.display_message()” işlevini kullanarak, kullanıcılar bir dize nesnesi ileterek LCD'de mesajları görüntüleyebilirler.

Bir dizi analog LED'i bağlamak için bir pin başlığı da vardır. “hub.set_led_strip(r, g, b)” fonksiyonunun çağrılması, şeridin rengini ayarlar.

İki kademeli motor, bir çift DRV8825 sürücü kartı kullanılarak çalıştırılır. Motor kontrolünü ele almak için BasicStepper kitaplığını kullanmaya karar verdim. Kart başlatıldığında, iki adım nesnesi oluşturulur ve her iki motor da etkinleştirilir. Her bir motoru adımlamak için, motor kimliğinin 0 veya 1 olduğu “hub.step_motor(motor_id,step)” işlevi kullanılır.

7. Adım: Günlüğe Kaydetme

Kerestecilik
Kerestecilik
Kerestecilik
Kerestecilik
Kerestecilik
Kerestecilik

Kartın birkaç sensörü olduğundan, yerel olarak veri toplama ve kaydetme yeteneği istedim.

Günlüğe kaydetmeye başlamak için, "hub.create_log(dosya adı, başlık)" ile yeni bir dosya oluşturulur; burada başlık, sütunları gösteren bir CSV dosyası satırı yapmak için kullanılır. İlk sütun her zaman Yıl Ay Gün Saat:Dk:Sn biçiminde bir zaman damgasıdır. Zamanı almak için hub.log_to_file() işlevi zamanı basic_functions.get_time() işleviyle alır. tm zaman yapısı daha sonra veri ve dosya adıyla birlikte günlük kaydı işlevine başvuru yoluyla iletilir.

Adım 8: Zil

zil
zil

Müzik çalamıyorsanız bir IoT panosu ne işe yarar? Bu yüzden sesleri çalma işlevine sahip bir buzzer ekledim. “hub.play_sounds(melodi, süre, uzunluk)” çağrısı, melodi nota frekansları dizisi, süre nota süreleri dizisi ve uzunluk nota sayısı olmak üzere bir şarkı çalmaya başlar.

9. Adım: Harici IoT Entegrasyonları

Harici IoT Entegrasyonları
Harici IoT Entegrasyonları
Harici IoT Entegrasyonları
Harici IoT Entegrasyonları
Harici IoT Entegrasyonları
Harici IoT Entegrasyonları

Hub şu anda IFTTT web kancalarını desteklemektedir. Hub_IoT.publish_webhook(url, data, event, key) veya Hub_IoT.publish_webhook(url, data) işlevi çağrılarak tetiklenebilirler. Bu, gerekirse bir olay adıyla birlikte, bu veriler eklenmiş olarak verilen URL'ye bir POST isteği gönderir. Örnek bir IFTTT entegrasyonu kurmak için önce yeni bir uygulama oluşturun. Ardından, bir istek alındığında tetiklenen web kancası hizmetini seçin.

Ardından, “high_temp” olayını çağırın ve kaydedin. Ardından “O” kısmı için Gmail hizmetini seçin ve “Kendime e-posta gönder” seçeneğini seçin. Servis kurulumuna “Sıcaklık yüksek!” yazın. konu için, ve sonra ölçülen sıcaklığı ve olayın tetiklendiği zamanı gösteren "{{Value1}} {{OccurredAt}}'da ölçülen sıcaklık" koydum.

Ayarladıktan sonra, IFTTT tarafından oluşturulan web kancası URL'sini yapıştırmanız ve etkinlik bölümüne "high_temp" koymanız yeterlidir.

Adım 10: Kullanım

kullanım
kullanım
kullanım
kullanım
kullanım
kullanım
kullanım
kullanım

Smart Home Hub'ı kullanmak için setup() veya loop() içinde gerekli tüm işlevleri çağırmanız yeterlidir. Geçerli saati yazdırma ve bir IFTTT olayı çağırma gibi örnek işlev çağrıları zaten koydum.

Adım 11: Gelecek Planları

Smart Home Hub sistemi, basit ev otomasyonu ve veri toplama görevleri için çok iyi çalışır. Bir LED şeridin rengini ayarlamak, bir odanın sıcaklığını izlemek, bir ışığın açık olup olmadığını kontrol etmek ve bir dizi başka potansiyel proje gibi hemen hemen her şey için kullanılabilir. Gelecekte, işlevselliği daha da genişletmek istiyorum. Bu, daha sağlam bir web sunucusu, yerel dosya barındırma ve hatta Bluetooth veya mqtt eklemeyi içerebilir.

Önerilen: