İçindekiler:

Varlık Sensörü: 12 Adım
Varlık Sensörü: 12 Adım

Video: Varlık Sensörü: 12 Adım

Video: Varlık Sensörü: 12 Adım
Video: SADECE 1 TRANSİSTÖR KULLANRAK YAKINLIK SENSÖRÜ DEVRESİ / ÜSTELİK HASSASİYET AYARLI 2024, Kasım
Anonim
Varlık Sensörü
Varlık Sensörü

Giyilebilir cihazlar genellikle BLE özellikli cihazlardır. MAC adresi boyunca bazı verilerin periyodik olarak reklamını yapmaları yaygındır. Bu verileri taramak için bir ESP kullanıyoruz ve belirli bir MAC adresi bulduğunda internet üzerinden bir olayı tetikliyoruz. Bu özel uygulama, bir lambaya bağlı bir akıllı fiş üzerinde tek bir kullanıcı içindir. Ancak, herhangi bir tür IOT özellikli cihazla birlikte bir dizi kayıtlı cihazla da kullanılabilir.

Gereçler

  1. ESP32
  2. (opsiyonel) TECKIN WiFi Duvar Prizi S10
  3. Her türden BLE özellikli cihaz

Adım 1: Senaryonuzu Tanımlayın

Senaryonuzu Tanımlayın
Senaryonuzu Tanımlayın

Tetik için modern giyilebilir cihazların çoğunu kullanabilirsiniz. Bu bir Apple Watch, mi fit bir bant, bir telefon veya hatta bir ESP32'ye dayalı kendi DIY giyilebilir cihazınız olabilir.

Muhtemelen en önemli adımlardan biri. 3 şeyde ileriyi düşünmelisiniz:

1. Yakınlık sensörünü hangi giyilebilir cihaz veya cihaz tetikleyecek.

2. Sensörü ne tetikleyecek (bu, IFTTT aracılığıyla yapılır).

3. Sensör ne zaman tetiklenecek

Bu örnekte, masamda oturduğumda bir lambayı açmak için akıllı bir fişi tetiklemek için Apple Watch'ımı kullanacağım.

Bu eğitimde TECKIN'in akıllı fişini inceleyeceğiz. Amazon'da uygun fiyata bulabilirsiniz. Ayrıca Alexa ve google Home ile uyumludur. Büyük bir değer!

2. Adım: (Giriş) Tetikleyiciyi Ayarlayın - Birden Çok Kullanıcı

Sensörünüze yeterince yakın bir BLE özellikli cihaza sahip herhangi bir kişinin çalışması için yapılandırmak istiyorsanız, bir sonraki adımı atlayın. Bu oldukça kullanışlı, kişisel olarak kullandığım ayar. Bu sensörün kolayca saldırıya uğrayabileceğini veya tetiklemek için istismar edilebileceğini unutmayın, bu nedenle bir güvenlik standından çok fazla güvenmem; sadece pratik olanı için (yani, her zaman sensörün yanında olacağı için bilgisayarım tarafından tetiklenmesini istemiyorum).

3. Adım: (Giriş) Tetikleyiciyi Ayarlayın - Sınırlı Kullanıcılar

Bu adım, kurulumunuza göre büyük ölçüde değişir. Sensörü hangi cihazların tetikleyebileceğini sınırlamak için sınırlamanız gereken birçok yol vardır:

- BLE MAC adresi (wifi ağındaki IP adresine eşdeğerdir. Modülün gerçek MAC adresi olmadığı için güvenliği garanti etmemesinin nedeni. iOS cihazlarda bluetooth'u her yeniden başlattığınızda değişir, çok eğlenceli değil)

- Üretici Kodu (daha iyi bir seçenek, ancak aynı üretici/modele ait belirli cihazları sınırlamanın bir yolu yok)

- Ad, Hizmet UIDD (nadir ama en iyi seçenek, çoğunlukla DIY giyilebilir ürünler veya belki bir android uygulaması)

Bazı notlar:

1. Bir iOS aygıtıysa:

- Bazı önemli artılarınız ve eksileriniz var. Pro, reklam verisinin olduğu güç seviyesini iletirler. Bu kalibrasyon aşamasında faydalıdır, 24 db, iPhone'lar ve çoğu cihaz 12 db'de yayın yaptığı için bir Apple Watch kullanmanın yararlı olduğunu göreceksiniz.

CON, geçici çözümler bulmanız gerekecek. Reklamı yapılan MAC adresi (ana tanımlama yöntemi), bluetooth sinyali her yeniden başlatıldığında değişir, yani her seferinde kodu yüklemeniz gerekecek… eğlenceli değil. Modeller arasında farklılık gösterebilen üretici verilerini kullanabilirsiniz. Bu, "tüm iPhone 8'i" algılaması için sınırlayabileceğiniz anlamına gelir.

2. Bir Android cihaz ise:

- Şahsen bir android cihazım yok. Ancak, MAC adresini düzeltebilecek ve hatta kişiselleştirilmiş bir ad ekleyebilecek (eğer gitmek istediğiniz yol buysa) muhtemelen birçok uygulama vardır. iOS cihazlarda bunu yapabilen bir "nrf connect" uygulaması vardır. Ancak kalıcı değildir, yani ekranı kilitlerseniz veya uygulamaları değiştirirseniz yapılandırma birkaç saniye içinde kapanır.

3. Başka bir ESP32. (en iyi bahsiniz)

- Bunun gibi basit bir kod, bunun gibi bir cihazda uygulanabilir; esp32 destekli bir akıllı bant. Kod aslında ESP BLE kitaplığı BLE_IBeacon.ino'dan bir örnektir. Akıllı bandım yolda olduğu için çok fazla test etmedim, muhtemelen yakında güncellemeler yayınlayacağım.

Adım 4: (Kurulum) - IFTTT

(Kurulum) - IFTTT
(Kurulum) - IFTTT

Tamam, bu aşamada muhtemelen iş akışınızın tüm kararlarını almalısınız. Tetikleme cihazınız var, kablosuz bağlantı ile ESP'yi internete bağlayabileceğiniz bir yeriniz var ve aklınızda IFTTT'nin otomatikleştirebileceği bir eylem var.

IFTTT güçlüdür; Sadece cihazınıza basit bir bildirim göndermek için olsun, bir tweet gönderilmesini veya akıllı fişli bir ampulü açmasını istiyorsunuz. Bu derste, IFTTT ile uyumlu TECKIN akıllı fişlerle sonuncusunu uygulayacağız. Her iki durumda da IFTTT uygulamasını indirin veya IFTTT.com web sitesine gidin ve bir hesap oluşturun.

Şimdilik bu kadar!

Smart Life fişi dışında bir bildirim veya başka bir şey göndermek istiyorsanız bir sonraki adımı atlayabilirsiniz.

Adım 5: (Kurulum) IOT Cihazı *isteğe bağlı*

PlayStore'dan (android) veya AppStore'dan (iOS) "Smart Life" uygulamasını indirin. İşlem biraz zor olsa da, talimatlar oldukça basittir. Tarama aşamasında (mavi düğme yanıp sönerken) bir noktada durduğunu öğrendim, ardından birkaç kez açıp kapatmak için manuel olarak bastım. Bu bana yardımcı oldu. Neyse; Bu fişin kurulumu bizim uygulamamızdan farklı değildir, bu nedenle zaten bir fişiniz varsa ve uygulamanıza bağlıysa, kullanıma hazır olmalısınız.

DİKKAT EDİN: Bu adıma geçmeden önce uygulamadan anahtarı açıp kapatabiliyor olmanız gerekir. Bu, akıllı fişi doğru şekilde yapılandırdığınız anlamına gelir.

IFTTT uygulaması, "Akıllı Yaşam" uygulamasıyla sorunsuz bir şekilde senkronize olmalı ve muhtemelen bir sonraki adımda bir etkinlik oluştururken bir kimlik doğrulama istemelidir.

6. Adım: (Kurulum) IFTTT Webhook Api *Deneyimli Kullanıcılar*

(Kurulum) IFTTT Webhook Api *Deneyimli Kullanıcılar*
(Kurulum) IFTTT Webhook Api *Deneyimli Kullanıcılar*

IFTTT uygulamasını daha önce kullanmadıysanız ve bazı teknik terimlere aşina değilseniz, bir sonraki adımda Ayrıntılı Kılavuz (fotoğraflı) için bu adımı atlayın.

1. Yeni bir etkinlik oluşturun.

2. "this"i bir webhook api'si olarak ayarlayın. Etkinliğe belirlediğiniz adı yazın.

3. "o"yu istediğiniz davranışa ayarlayın. Akıllı fiş için akıllı yaşamı arayın ve 'aç'ı seçin.

4. Akıllı fişinizi seçin ve bitir'e basın.

5. Ana ekranda 'web kancaları' kartını arayın. Bastıktan sonra, alttaki "daha fazlasını al" a basın.

6. Belgelere basın. Bu size bir URL oluşturucu ve test cihazı ile birlikte API anahtarınızı gösterecektir.

7. URL oluşturucuyu #2'de yazdığınız adla kullanın. Bunu kopyala ve yaz.

8. Varlık sensörü artık etkin olmadığında bir davranışın tetiklenmesini istiyorsanız tekrarlayın. Bizim durumumuzda #3'ü tekrarlayın, ancak 'kapat'ı seçin. Ayrıca, #2'deki isim de bu sefer farklı olmalı.

Bitirdiyseniz bir sonraki adımı atlayın.

7. Adım: (Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*

(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*
(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*
(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*
(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*
(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*
(Kurulum) IFTTT Webhook Api *Fotoğraflarla Yeni Başlayanlar İçin*

Ayrıntılı Kılavuz *fotoğraf kılavuzu android ve web'de benzer olmalıdır*

IFTTT basit bir iş akışıdır, eğer "bu olursa" o zaman "bu olur". Yeni bir tane oluşturmalısın, 1. uygulamada "daha fazlasını al"a basın ve bir liste görünecektir.

2. Arama çubuğunun hemen altında "sıfırdan kendi uygulamalarınızı yapın" yazıyor, Artı işaretine basın.

3. "Bu" artı işaretine basın

Bizim durumumuzda "bu" internet üzerinden bir api çağrısı olacak. Bir API çağrısı, bir google araması yazdığınızda ve url google.com/(uzun bir karakter dizisi) olduğunda olduğu gibi, bir URL'ye danışmadır. API'yi oluşturmak için: ("bu"ya bastıktan sonra)

4. "Web kancalarını" arayın

5. Tek seçeneği seçin

6. Etkinliğinize bir ad verin (bu örnekte "Sit" kullanacağız). Bu ismi yazın, çok önemli.

7. Tetik Oluştur'a basın

Tamam! Şimdi "o" kısmına daha yakınız. Bu eğitimde, Akıllı fişi açmak için "o" ayarını yapacağız. Ancak IFTTT'den herhangi bir şey seçebilirsiniz. Kurulumu test etmenin iyi bir yolu, sensör her tetiklendiğinde (veya bir web tarayıcısından bile API çağrıldığında) telefonunuza bir bildirim gönderecek olan "bildirimleri" seçmektir: test için kullanışlıdır!

8. "O" artı işaretine basın

9. "Akıllı Yaşam" (veya "bildirimler") arayın

10. 'Aç' düğmesine basın (ayrıldığınızda kapatmak üzere başka bir etkinlik oluşturmak için bu adımları tekrarlamanız gerekir)

11. Her iki uygulamanız da varsa ve fiş doğru şekilde yapılandırılmışsa, 'hangi cihaz/grup' açılır listesinde fişinizi görmelisiniz.

12. Eylem Oluştur'u seçin ve bitirin.

Şimdi olayın bağlı olduğunu görmelisiniz. Şimdi api URL'sini almamız gerekiyor. Bunun için:

13. IFTTT Ana Ekranına gidin

14. Web kancaları kartını bulun

15. "Daha Fazlasını Al"ı seçin

16. Belgeler düğmesine dokunun. Anahtarınızı içeren bir web sayfası görmelisiniz.

17. "{event}" yer tutucularında etkinliğinizin adını girin (6. Maddeyi unutmayın)

18. Sayfanın en altına gidin ve "Test Et"e dokunun

Muhtemelen görmeniz gereken yeşil bir "olay tetiklendi" başlığıdır ve işe yarayıp yaramadığını görmelisiniz. Bizim durumumuzda fiş açılmalıdır. Veya o yola gitmeye karar verdiyseniz bir bildirim görmelisiniz. Biraz zaman alabilir, ancak yapıp yapmadığınızı görmek bir dakikadan fazla sürmez. Muhtemelen büyük/küçük harf duyarlı olduğunu unutmayın.

19. Sonunda. Etkinliğinizin adını değiştirdiğiniz url'yi (17'de) kopyalayın ve güvenli bir yere kaydedin. Yakında buna ihtiyacınız olacak.

20. 1-12'yi tekrarlayın. Saat 6'da bu sefer "Stand" kullanacağız. 10'da bunun yerine 'kapat'ı seçin.

21. İsterseniz 13-18 tekrarlayın ama 19'da kopyaladığınız url ile kurtulabilirsiniz ama şimdi "Otur" yazdığınız yeri değiştirin ve "Dur" ile değiştirin. Bunu bir web tarayıcısında test edebilirsiniz. 'Tebrikler! Stand olayını başlattınız'. O zaman fiş kapatılmış olmalıdır.

Adım 8: (Kod) ESP32'nin Programlanması

(Kod) ESP32'nin Programlanması
(Kod) ESP32'nin Programlanması

Arduino IDE'den ESP32 Board'unuza eskizleri yüklemekte kendinizi rahat hissediyorsanız bu adımı atlayabilirsiniz. Çizim ağırlıkları normal 1,2mb sınırından biraz fazla olduğundan, uygulama için yalnızca 2mb'lik bir bölüm ayarlamayı unutmayın.

Dışarıda pek çok harika öğretici var, işte bunlardan bazılarını öneriyorum:

circuitdigest.com/microcontroller-projects…

Ama yine de, o kadar kaybolmamak için birkaç önemli noktayı açıklayacağım.

- ESP32 bir Arduino kartı değildir, ancak yine de Arduino IDE tarafından programlanabilir. Basit Arduino kodu ile. Ancak yine de IDE'yi ESP32 ile çalışacak şekilde yapılandırmanız gerekecek.

- Tercihlerdeki 'Ek pano yöneticisi' aracılığıyla bazı kitaplıkları yüklemeniz gerekecek. Bu, yapıştırmanız gereken URL'dir:

- (isteğe bağlı, yardımcı olabilir) Araçlar->Kütüphaneleri Yönet'te -> (esp BLE kitaplığını bulun)

- Araçlar'da artık uzun bir ESP cihazları listesine sahip olmalısınız, ESP32 dev modülünü öneririm

- (ÖNEMLİ) Bölüm yöneticisinde (Ota 2mb uygulama/2mb spif yok) öğesini seçin. Bu adım, uygulama hem wifi/http bağlantılarını hem de bir BLE tarayıcıyı kullanmanın bir ürünü olarak oldukça ağır hale geldiğinden önemlidir.

Her şeyi doğru yaptıysanız, ESP32'yi programlayabilmelisiniz. Şimdi bunu yapma süreci bazı panolardaki arduinoya benzer. Takın, eşleşen kartı, USB bağlantı noktasını seçin ve işiniz bitti. Ancak, diğer birçok durumda devam etmeniz gerekecek

Adım 9: (Kod) Kodu ESP32'ye Yükleyin

(Kod) Kodu ESP32'ye Yükleyin
(Kod) Kodu ESP32'ye Yükleyin

Tamam, buradaysanız, bu, ESP32 panosuna, tercihen yanıp sönen.ino çizimini başarıyla bir çizim yüklediğiniz anlamına gelir.

Şimdi, ekli ana kod burada, onu GitHub deposunda da bulabilirsiniz. Aşağıdakileri değiştirmeniz gerekir:

SSID - Wi-Fi Adınız

PSK - Wi-Fi Şifreniz

sit - Daha önce yazdığınız IFTTT API'sinden "Sit" içeren URL

stand - Daha önce yazdığınız IFTTT API'sinden "Stand" içeren URL

Şimdi tetik cihazınızı tahtaya yaklaştırın ve ardından kodu yükleyin. Ardından, kodu başarıyla yükledikten sonra Seri Monitörü (baud 115200) açın.

Bunu herhangi bir BLE özellikli cihazla kullanmayı planlıyorsanız, bir sonraki adımı atlayın.

NOT: bellek hata mesajları alırsanız, bunun nedeni varsayılan ayarların ESP ham kodu için yalnızca 1 mB bellek (mevcut 4 mB'nin dışında) bırakmasıdır. Havadan programlama seçeneği olarak birkaç şey için bir kısım bırakır. Genelde şunları yaparım:

- Araçlar'da, artık uzun bir ESP cihazları listesine sahip olmalısınız, ESP32 dev modülünü öneririm-Bölüm yöneticisinde 'Ota 2mb uygulama/2mb spif yok' seçeneğini seçin.

Bu bana bu uygulama için gerekli olan çift hafıza alanı sağlıyor.

Adım 10: (Kod) Kodu ESP32'ye yükleyin *isteğe bağlı*

(Kod) Kodu ESP32'ye yükleyin *isteğe bağlı*
(Kod) Kodu ESP32'ye yükleyin *isteğe bağlı*

İşte "Tetiği ayarla" Adımında bahsedilen zor kısım. Monitör MAC adresini (##:##:##:##:## gibi görünmelidir, burada # bir sayı veya a'dan f'ye bir harftir), Üretici Kodu ve RSSI (negatif bir sayı)). Burada cihazınızın hangisi olduğunu bulmak için biraz oynamanız gerekiyor. Hangisinin en küçük sayı olduğunu açıkça görebilmek için genellikle tahtanın yanına koyarım. Değerleri kopyalayabilmek için 'otomatik kaydırma' kutusunun işaretini kaldırıyorum.

  • Mac Adresi ise, 'myDevice' alanını onunla doldurun. Ardından #96 numaralı yorum satırı ve #95 numaralı yorum satırı
  • Ad ise, 'myDevice' öğesini onunla doldurun. Ardından #97 nolu yorum satırı ve #95 nolu yorum satırı
  • MaufactureData ise, şimdilik şansınız yok, o kısmı hala geliştiriyorum.

May cihazlarına destek eklemek için, koşullu ifadeyi #96 veya #97'de kopyalayabilmeli ve bu sözdiziminde yan yana yerleştirebilmelisiniz:

if((koşul1) || (durum2) || (koşul3)){

Buna göre daha fazla değişken (myDevice1, myDevice2, myDevice3) ekleyin.

Adım 11: ESP'yi Yerleştirin ve Kalibre Edin

ESP'yi yerleştirin ve kalibre edin
ESP'yi yerleştirin ve kalibre edin

Bu, kurulumun en önemli kısmıdır. Bu süreçten dikkatli bir şekilde geçmek, sihir gibi çalışması veya sadece size güçlü baş ağrıları vermesi açısından fark yaratacaktır.

Bu noktada yüklediğiniz kod, şahsen test ettiğim ve masamda telefonumla günlük olarak kullandığım parametrelerle çalışıyor; sizin için de işe yarayacağı anlamına gelmez. Bu yüzden kalibrasyonu kendiniz yapmanız gerekir.

1. ESP32 Kartını son SABİT konumuna yerleştirin. ESP32'nizin konumunu herhangi bir nedenle hareket ettirirseniz, muhtemelen bunu tekrar yapmalısınız. Bu size genel olarak iyi bir deneyim sağlayacaktır.

1. (ekstra) Bunu yaparken PC'nize bağlanabilmeniz gerekeceğini unutmayın. Masaüstünde olduğunuz için yapamıyorsanız, her denemenin konumlandırma, tetikleme cihazı ve saymak için gelebilecek diğer faktörlerin neredeyse aynı olması gerektiğini aklınızda tutarak deneme yanılma yapmanız gerekecektir.

2. Kod çalışırken Seri Monitörü açın.

Varsayılan olarak kod, bulunan her bluetooth cihazının (veya sadece parametrelerinizle eşleşen cihaz(lar)ın) RSSI'sini (Alınan sinyal gücü göstergesi) Seri Monitör aracılığıyla gönderir. Ana eylem cihazınızla (tetikleme cihazı) biraz oynayın. Kullanmak istediğiniz eşiklerin ne olduğunu belirlemelisiniz. Bu konfigürasyonun dikkatli bir şekilde ayarlanması

3. Eşikleri belirlediğinizde bunları burada değiştirin:

  • yakın_thrsh
  • far_thrsh

4. Kodu yeniden yükleyin, test edin ve en uygun performansı bulana kadar tekrarlayın.

Dikkate alınması gereken birkaç şey:

1. Eşikler arasında yaklaşık 20 db fark istiyorsunuz. near_thrsh 50'ye ayarlanmışsa, far_thrsh'ın 70 veya daha fazla olması istenir. Fark çok kısaysa, kartın durmadan açılıp kapandığı bazı mesafeler veya yerler bulabilirsiniz. Bu farkı artırmak, bu istenmeyen davranıştan kaçınmanızı sağlayacaktır. Şahsen 20db marjın yeterince iyi olduğunu buldum.

2. Kalibrasyon testinde mümkün olduğunca gerçek hayat senaryoları, bu en iyi performansın belirlenmesine yardımcı olacaktır.

3. Kodun 82. satırındaki sınıfı inceleyin; tüm mantığın yapıldığı yer burasıdır. Kod iyi yorumlanmış olsa da. GitHub'da sormaktan çekinmeyin!

Adım 12: Tebrikler! Bitirdiniz

Herhangi bir önerinin yorumlarında veya sorun yaşıyorsanız bana bildirin. Sorununuz zaten çözüldüyse GitHub'ı kontrol etmeyi unutmayın!

Önerilen: