İçindekiler:

ESP32 ile Bluetooth(BLE) Nasıl Kullanılır: 3 Adım
ESP32 ile Bluetooth(BLE) Nasıl Kullanılır: 3 Adım

Video: ESP32 ile Bluetooth(BLE) Nasıl Kullanılır: 3 Adım

Video: ESP32 ile Bluetooth(BLE) Nasıl Kullanılır: 3 Adım
Video: ESP32 ile Bluetooth Low Energy Kullanımı 2024, Eylül
Anonim

#####NOT#####

Bu Talimatlarda gösterilen yöntem eski ve modası geçmiş. En son yöntem için bu videoyu izleyin.

###############

ESP32, kapsamlı bir özellik listesine (Wikipedia) sahip olmakla birlikte, göze çarpan en büyük özelliği, BLE destekli yerleşik bluetooth v4.2'dir. Ancak bu ifade yanıltıcı olabilir, donanım varken Bluetooth kullanımı için yazılım desteği eksik. (Geliştirme aşamasındadır)

BLE'nin ne olduğunu bilmeyenler için Bluetooth Low Energy anlamına gelir. "Klasik" Bluetooth'a kıyasla önemli ölçüde daha düşük güç tüketimini artıran bir bluetooth protokolüdür.

Bu Talimatlarda, bir ESP32 kartından BLE üzerinden telefonunuza veri göndermek için sınırlı (yazılım) kaynaklarını nasıl kullanabileceğinizi göstereceğim.

Birkaç Feragatname…

Bu kılavuza devam etmeden önce bahsetmem gereken birkaç not var.

Not 1: Bluetooth desteği henüz yok derken arduino geliştirme ortamından bahsediyorum.

Destek, resmi SDK'nın yanı sıra IDF'de de mevcut olabilir, ancak bunlar için herhangi bir yetkin talimat bulamadım.

Not 2: Kullandığım yöntem, BLE'nin ideal olarak nasıl çalışması gerektiği değil, bir geçici çözümdür. BLE'de hizmet oluşturmaya yönelik kütüphane destekleri, arduino ortamı için burada değil.

Güvenilir bir şekilde yapabileceğiniz tek şey, adını duyuran bir Beacon oluşturmaktır. Bir YouTube yorumu bunu çok zarif bir şekilde ifade etti: "LOL, acımasız bir hack. Ama ne yapabilirsin?"

Not 3: Gönderebileceğiniz tek veri türü string'dir.

Diğer türden verileri dizeye ve dizeden kodlamaya ve kodunu çözmeye çok iyi karar verebilirsiniz, ancak bu, bu kılavuzun kapsamı dışındadır.

Adım 1: Örnek Yapı

Image
Image
Örnek Yapı
Örnek Yapı
Örnek Yapı
Örnek Yapı
Örnek Yapı
Örnek Yapı

Sadece açıklama için buradaysanız, bu adımı atlayabilirsiniz, ancak üzerinden geçmek size biraz daha netlik kazandırabilir..

İlk önce örnek bir proje oluşturacağım ve ardından nasıl çalıştığını ve Bluetooth iletişimini nasıl çoğaltabileceğinizi açıklamaya çalışacağım. Akıllı telefonunuza canlı yayın gönderen taşınabilir bir sıcaklık sensörü oluşturacağız. Derleme, tek bir li-po üzerinde günlerce çalışabilir ve BLE'nin faydalarını kolayca gösterir.

Modülü bardak altlığı olarak kullanarak içeceklerinizi izole edebilir ve içeceğiniz optimum sıcaklığa ulaştığında bildirim alabilirsiniz. Çünkü 40 derecenin üzerinde bir çay içmek zorunda kalsaydınız bu bir gülünç olurdu.

İhtiyacınız olan tek donanım bir ESP32 kartı ve bir dijital sıcaklık sensörüdür. Kartım harici pili destekliyor, bu yüzden bu projeyi taşınabilir hale getirmek için eski bir cihazdan kurtardığım bir 3.7v li-po kullanıyorum.

Donanım

Sıcaklık sensörünün bağlantıları basittir. Kırmızı kablo 3.3v'ye, siyah toprağa (gnd), sarı ise kartımda D9 olarak işaretlenen GPIO 2'ye bağlanır. Kırmızı ve sarı kablo arasına 4.7k ohm'luk bir direnç bağlayın. Direnci kullanmıyorum, bunun yerine sensörümle birlikte gelen 3 pinli takılabilir bir terminal kullanıyorum. Yerleşik bir yukarı çekme direncine sahiptir.

Li-po gerçekten bir JST konektörü kullanılarak bağlanmalıdır, ancak bir tane satın almaktan rahatsız olmadım, bu yüzden konektöre bazı (dişiden dişiye) atlama kablolarını bağladım ve akü terminallerine başka bir çift lehimledim. Bu, güvenilir bir bağlantı ve geçici bir güç anahtarı sağlar.

Şimdi bir proje muhafazası olarak, daha büyük bir tabakadan kesilmiş bir Strafor disk kullanıyorum. Bu harika bir yalıtkan yapar. Çok daha küçük başka bir disk üstte ama biraz yana sıkışmış. Bu, ekstra uzunluktaki kabloları sarmak içindir, böylece her yere sarkmazlar. Yapıştırıcınızı bolca kullandıktan ve sensör probu için küçük bir delikten sonra, yazılıma geçmeye hazırsınız.

Yazılım

Henüz arduino IDE kurulu değilse, indirmek için bu bağlantıya gidin. Arduino yazılımı varsayılan olarak çeşitli ESP32 kartları için kart tanımlarıyla birlikte gelmez. Bu bağlantıya gitmelerini ve dosyaları bir zip halinde indirmelerini sağlamak için. Bunları şu konuma açmanız gerekir:

C:/Kullanıcılar//Belgeler/Arduino/donanım/espserrif/ESP32

Kullanıcı adınız PC'nizde nerede. Çeşitli dosyaların ESP32 klasörü altında bulunduğundan ve başka bir klasör altında olmadığından emin olun.

Şimdi arduino yazılımını başlatırsanız ve araçlar->panolara giderseniz, aşağı kaydırdığınızda çeşitli ESP32 panoları görmelisiniz.

Çoğu dijital sıcaklık sensörü, mikro denetleyicilerle iletişim kurmak için OneWire protokolünü kullanır, bu nedenle kitaplığı almamız gerekir. Sketch->include library->manage library'e gidin ve onewire için arama yapın ve çok fazla yazar içeren kütüphaneyi kurun. Tek kablolu hub'a ihtiyacınız yok. Boşver.

Şimdi bu adıma ekli kodu indirebilir ve açabilirsiniz (sıcaklık-example.ino).

Benden farklı bir sensör kullanıyorsanız, kodu buna göre değiştirmeniz gerekecektir. getTemp() altındaki kodu değiştirin. Sadece son sıcaklığı şeklinde döndürün

Dönüş;

Sıcaklığı içeren şamandıra nerede.

Kartı takın, araçların altından doğru kartı ve bağlantı noktasını seçin ve yükle düğmesine basın.

Kod yüklenmeyi reddederse sensörün bağlantısını kesin ve GPIO 0'ı toprağa bağlayın. Yüklemeden sonra bağlantıları geri yükleyin.

ESP'niz artık kahvenizin sıcaklığını dünyaya haykırıyor olmalı ama sizin onu anlayabilecek birine ihtiyacınız var.

Android Uygulaması

Üzgünüm iPhone kullanıcıları (…gerçekten değil).

Apk'yı buradan indirin ve kurun. Uygulamayı başlattığınızda çok basit bir arayüz ile karşılaşacaksınız.

'Reklam desteklenmiyor' diyen bir hata mesajı alırsanız, Tamam'ı tıklayın ve yok sayın, ancak 'BLE desteklenmiyor' mesajını alırsanız, telefonunuzda Bluetooth 4.0 veya üstü yoktur ve çalışamaz. uygulama.

Telefonunuzdaki Bluetooth'un açık olduğundan emin olun ve esp kapsama alanında olduğu ve açık olduğu sürece 'Taramayı Başlat'ı tıklayın, bir miktar sıcaklık değeri alıyor olmalısınız.

Olası hatalar:

  • -1000:: Bu, cihazınızın ESP'yi bulamadığı anlamına gelir. Bluetooth'un açık olduğundan emin olun ve ESP'yi yeniden başlatmayı deneyin.
  • SNA:: Bu, telefonunuzun ESP'den veri aldığı, ancak ESP'nin GPIO 2'de bir sıcaklık sensörü bulamadığı anlamına gelir. Bağlantıların güvenli olduğundan emin olun, doğru değerde bir direnç kullanıp kullanmadığınıza bakın. Pano şemalarınızla GPIO 2'ye bağlı olduğunuzu ve D2 olarak işaretlenmiş bir pime bağlı olmadığınızı iki kez kontrol edin.

2. Adım: Açıklama

BLE normalde nasıl çalışır, bir cihazın adını bir işaret gibi tanıtması, bu adın herkes tarafından görülebilmesi ve cihazı tanımlamak için kullanılmasıdır. Ardından cihaz, bağlandıklarında başkaları tarafından görülen çeşitli hizmetler oluşturabilir. Bu hizmetler farklı veri akışlarına sahip olabilir.

Örn. 'Weather Station' adlı bir cihaz, altında 'Sıcaklık', 'Nem' ve 'Rüzgar' gibi servis vermiş olabilir. Akıllı telefonunuz gibi başka bir BLE cihazı cihazları taradığında, Hava İstasyonunu görecek ve ona bağlandığında, farklı servislere karşılık gelen veri akışlarını alabilecektir.

Şu anda bizim için mevcut olan kütüphaneler (ESP32 için), başkalarının keşfedebileceği bir işaret yaratmamıza izin veriyor, ancak bunun kapsamı bu. Hizmetler oluşturamayız veya herhangi bir cihaz buna bağlanamaz.

Yani servis oluşturmadan nasıl veri gönderiyorum, Beacon Stuffing adlı WiFi protokolüne benzer bir teknik kullanarak. Bu, işaret adının kendisine gönderilecek verileri dahil ettiğim anlamına gelir. Bu, diğer cihazların beacon'a bağlanmasını gerektirmeden verilerin reklamını yapmamı sağlıyor.

ble.begin(beaconMsg); //beaconMsg, reklamı yapılan addır

SimpleBLE kitaplığını, ESP formatında kendi adıyla bir işaret oluşturmak için kullanıyoruz. "ESP"nin adın başında her zaman değişmeden kaldığı ve her 100 milisaniyede bir getValue() işlevi tarafından döndürülen en son verilerle değiştirildiği yer.

float getValue(){dönüş sensörüValue;}

Android uygulaması, 'ESP' ile başlayan BLE cihaz adlarını arar, bulunduğunda adı böler ve yalnızca sondaki verileri görüntüler.

İletişim tek yönlüdür, uygulama hiçbir şeyi geri göndermez.

3. Adım: Sonuç

Günün sonunda, bu yöntem düzgün bir şekilde uygulanmış bir BLE kitaplığının yerini almaz, ancak Arduino'ya tam BLE desteği gelene kadar bazı projeleri devretmek yeterli olabilir. Umarım bu Eğitilebilirler size biraz yardımcı olmuştur.

BÜYÜK DFRobot.com'a bana şu ürünleri gönderdiği için teşekkürler:

  • ESP32 FireBeetle Kurulu
  • FireBeetle Genişleme Kalkanı
  • DS18B20 Sıcaklık Sensörü

Geçenlerde bu kütüphaneyi buldum. ReadME, veri almak için diğer BLE cihazlarına bağlanabileceğinizi iddia ediyor (Kendinizin reklamını yapamazsınız). Denemedim ama ilginizi çekerse bakabilirsiniz.

Proje videosunu şu adresten kontrol edebilirsiniz: YouTube

Önerilen: