İçindekiler:
- Gereçler
- Adım 1: Özellikler
- Adım 2: PCB
- Adım 3: Montaj
- Adım 4: Programlamaya Genel Bakış
- Adım 5: Girişler
- Adım 6: Çıktılar
- 7. Adım: Günlüğe Kaydetme
- Adım 8: Zil
- 9. Adım: Harici IoT Entegrasyonları
- Adım 10: Kullanım
- Adım 11: Gelecek Planları
Video: ESP32 Akıllı Ev Merkezi: 11 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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
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 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
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ş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
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
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
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ı
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
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:
Akıllı Masa LED Işık - Arduino ile Akıllı Aydınlatma - Neopiksel Çalışma Alanı: 10 Adım (Resimlerle)
Akıllı Masa LED Işık | Arduino ile Akıllı Aydınlatma | Neopixels Çalışma Alanı: Artık evde çok fazla zaman geçirdiğimiz, sanal olarak çalıştığımız ve çalıştığımız bir gün, öyleyse neden çalışma alanımızı özel ve akıllı bir aydınlatma sistemi Arduino ve Ws2812b LED'leri ile büyütmeyelim. Burada size Smart'ınızı nasıl oluşturacağınızı gösteriyorum. Masa LED Işık o
Kullanılmayan Akıllı Telefonu Akıllı Ekrana Dönüştürün: 6 Adım (Resimlerle)
Kullanılmayan bir Akıllı Telefonu Akıllı Ekrana Dönüştürün: Deze öğreticisi, Hollanda'da çok iyi. Kullanılmayan (eski) bir akıllı telefonunuz var mı? Bu kolay adım adım öğreticiyi izleyerek Google E-Tablolar ve biraz kağıt kalem kullanarak akıllı bir ekrana dönüştürün. Bitirdiğinizde
Akıllı Merkezi Kilit: 6 Adım (Resimli)
Akıllı Merkezi Kilit: Bir şeyleri uzaktan kontrol etme gücüne sahip olduğunuzda harika bir his. Motosiklet (bisiklet) için akıllı merkezi kilit cihazı. Bu cihazı kullanarak bisikletinizin kontak kilidini kontrol edebilirsiniz. uzaktan Kilitleyebilir/kilidini açabilirsiniz. Ayrıca motoru çalıştırabilir ve durdurabilir
SONOFF Akıllı Anahtarlarla Akıllı Stor Perdeler Nasıl Kendin Yapılır?: 14 Adım
SONOFF Akıllı Anahtarlarla Akıllı Stor Perde Kendin Yap Nasıl Yapılır?: Sıradan stor perdelerinizi/panjurlarınızı akıllı hale getirmek için SONOFF akıllı anahtarlarında Kilitleme Modundan yararlanın Çoğunuz bunun sabahları storları/panjurları çekmenizin bir angarya olduğunu kabul edecek mi? ve akşam aşağı çekmek? Her neyse, ben
ESP32 Kullanan IoT Tabanlı Akıllı Bahçecilik ve Akıllı Tarım: 7 Adım
IoT Tabanlı Akıllı Bahçecilik ve ESP32 Kullanan Akıllı Tarım: Dünya zaman ve dolayısıyla tarım olarak değişiyor. Günümüzde insanlar elektroniği her alana entegre ediyor ve tarım da bunun için bir istisna değil. Elektroniklerin tarımda bu şekilde birleştirilmesi çiftçilere ve bahçeleri yöneten insanlara yardımcı oluyor.Bunda