İçindekiler:

ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın: 6 Adım (Resimlerle)
ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın: 6 Adım (Resimlerle)

Video: ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın: 6 Adım (Resimlerle)

Video: ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın: 6 Adım (Resimlerle)
Video: TİKTOK DİLENCİLERİ PART 1 DAHA NELER DEDİRTEN Video #tiktok #tiktokvideo #tiktokvideo 2024, Temmuz
Anonim
Image
Image
ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın
ESP32 Xiaomi Hack - Verileri Kablosuz Olarak Alın

Sevgili arkadaşlar başka bir Eğitilebilirliğe hoş geldiniz! Bugün, bu Xiaomi Sıcaklık ve Nem monitörünün ESP32 kartının Bluetooth işlevini kullanarak ilettiği verileri nasıl alacağımızı öğreneceğiz.

Gördüğünüz gibi, bir ESP32 kartı ve 2.8” renkli TFT ekran kullanıyorum. Ekranda sıcaklık ve nemi gösteriyoruz. İşin güzel yanı, ESP32 kartına herhangi bir sensör bağlamamış olmam. Bu ticari Xiaomi Sıcaklık ve Nem monitöründen sıcaklığı ve nemi kablosuz olarak alıyorum. Ne kadar serin! Xiaomi cihazındaki ekran her saniye güncelleniyor ancak Xiaomi cihazındaki gücü korumak için ESP32 kartına bağlı ekranı her 10 saniyede bir güncelliyorum.

Bu harika Xiaomi sıcaklık ve nem sensörü, LCD ekranında sıcaklık ve nemi gösterir ve ayrıca verileri Bluetooth protokolünü kullanarak diğer Xiaomi Cihazlarına veya uygulamalarına iletebilir. Cihazlar tek AAA pil kullanıyor ve ticari bir ürün olduğu için cihazın pil ömrü mükemmel. Tek bir AAA pille aylarca dayanabilir, ki bu bizim kendin yap projelerimizde başaramadığımız bir şey. Birkaç hafta önce, bazı akıllı adamların, Xiaomi'nin verileri sensörden iletmek için kullandığı protokolü tersine mühendislik yapmayı başardığını ve bu verileri bir ESP32 kartı kullanarak almayı başardığını keşfettim. Ben de denedim ve gördüğünüz gibi işe yarıyor!

Adım 1: Tüm Parçaları Alın

Tüm Parçaları Alın
Tüm Parçaları Alın

Şimdi bu projenin nasıl oluşturulacağını görelim. Bir ESP32 kartına, 2,8” ILI9341 ekrana, Xiaomi sıcaklık ve nem sensörüne, bir devre tahtasına ve bazı kablolara ihtiyacımız var.

İşte bu Eğitilebilir Dosyada kullanacağım parçalara bazı bağlantılar.

  • ESP32 ▶
  • 2,8" Ekran ▶
  • Xiaomi Sensörü ▶
  • Breadboard ▶
  • Teller ▶
  • USB Metre ▶
  • Güç Bankası ▶

Adım 2: ESP32 Kartı

Image
Image
ESP32 Kartı
ESP32 Kartı

Eğer aşina değilseniz ESP32 çipi, geçmişte pek çok kez kullandığımız popüler ESP8266 çipinin halefidir. ESP32 bir canavar! 160MHz'de çalışan iki adet 32 işlemci çekirdeği, muazzam miktarda bellek, WiFi, Bluetooth ve diğer birçok özelliği yaklaşık 7$'lık bir maliyetle sunuyor! İnanılmaz şeyler!

Lütfen bu pano için hazırladığım detaylı incelemeyi izleyin. Videoyu bu Eğitilebilir Tabloya ekledim. Bu çipin, işleri sonsuza kadar yapma şeklimizi neden değiştireceğini anlamamıza yardımcı olacak! ESP32 ile ilgili en heyecan verici şeylerden biri, çok güçlü olmasına rağmen, yalnızca 10μΑs akım gerektiren bir derin uyku modu sunmasıdır. Bu, ESP32'yi düşük güç uygulamaları için ideal çip yapar.

Adım 3: Arduino ve ESP32 için 2.8" TFT Ekran

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Ekran büyük ve 320x240 piksel çözünürlük sunuyor. Favori ekranlarımdan birine kıyasla, 1.8” Renkli TFT ekranı çok daha büyük görebilirsiniz. Ekran ayrıca ek bir bonus olan dokunmatik işlevsellik ve arkada bir SD kart yuvası sunar. SPI arayüzünü kullanır, bu nedenle Arduino veya ESP32 kartı ile bağlantı çok basittir. Ekranın maliyeti nispeten düşüktür; 11$ civarında bir maliyeti var ki bu bence bu ekranın sunduğu şey için makul bir fiyat.

Bu ekranla ilgili bir başka şey de şu ana kadar kullandığımız dokunmatik ekran gibi bir kalkan olarak gelmemesi. Bu şekilde ekranı herhangi bir karta, Arduino Pro mini, STM32, ESP8266 ve ESP32'ye bağlayabiliriz. Bu çok önemli çünkü artık her panoda kullanabileceğimiz düşük maliyetli bir ekranımız var. Şimdiye kadar bu panolarla kullanabildiğimiz tek dokunmatik ekran, daha pahalı olan Nextion ekranlardı ve dürüst olmak gerekirse, zaman zaman kullansam da onları pek sevmiyorum.

4. Adım: Ekranı Bağlama

Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama
Ekranı Bağlama

Öncelikle ESP32 Board'u 2.8” ekrana bağlamamız gerekiyor. Instructable'a ekli şemayı bulabilirsiniz. Yaklaşık iki yıl önce piyasaya sürülen bu DOIT ESP32 kartını kullanıyorum. Tahtanın bu versiyonu artık mevcut değil çünkü artık daha fazla pin sunan daha yeni bir versiyonu mevcut, bu bir. Kartın eski versiyonunu kullanmamın tek nedeni, kartın GND pininin SPI pinlerinin yanına, board'un aynı tarafında yer alması, bu da onu breadboard dostu yapıyor.

Ekranı panoya bağladıktan sonra projeyi çalıştırabiliriz. Birkaç saniye sonra yakındaki Xiaomi Cihazından canlı veriler alıyoruz. Cihaz Bluetooth 4 kullandığı için menzili oldukça iyi. Bu cihazın ilettiği verileri 10 metre ve daha fazla mesafelerden kolayca alabiliyoruz! Xiaomi Cihazının pil seviyesini de alabiliyoruz ama bu değeri ekranda göstermiyorum.

Bu USB metreyi kullanırsak, bu büyük ekranı kullanarak bu projenin mevcut çekişinin 120-150 mA civarında olduğunu görebiliriz. Bir e-kağıt ekran kullanırsak, ESP32 kartını derin uyku moduna alırsak ve birkaç dakikada bir sensörden veri alırsak bu projeyi pil dostu hale getirebiliriz. Bunu bir sonraki videoda deneyeceğim. Bu proje sadece bu cihazdan kablosuz olarak veri alabileceğimizin bir gösterimidir.

Adım 5: Projenin Kodu

Proje Kodu
Proje Kodu

Şimdi projenin yazılım tarafına bakalım.

Projenin kodu bu projeye dayanmaktadır:

Bu verileri Xiaomi cihazından alan kodu kullandım ve onunla bağımsız bir proje oluşturdum.

Bu değişkende her 10 saniyede bir yeni veri almamız gerektiğini bildiriyoruz.

#define SCAN_TIME 10 // saniye

Burada sıcaklığı Santigrat derece cinsinden göstermek istediğimizi beyan ederiz. Imperial sistemini kullanmak istiyorsanız, bu değişkeni false olarak ayarlayın.

boolean METRIC = doğru; //Metrik sistem için doğru ayarla; emperyal için yanlış

Kurulum fonksiyonunda ESP32 kartının ekranını ve Bluetooth modülünü başlatıyoruz ve ardından ekrana kullanıcı arayüzünü çiziyoruz.

geçersiz kurulum() {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); // karartma dedektörünü devre dışı bırak

tft.begin();

Seri.başla(115200);

Serial.println("ESP32 XIAOMI EKRAN"); initBluetooth();

drawUI();

}

Ardından, her 10 saniyede bir yakındaki Bluetooth cihazlarını ararız. Gerekli olmadığı için Xiaomi Cihazı ile bağlantı kurmuyoruz. Yalnızca yakındaki Bluetooth düşük enerjili çevre birimlerini tarar ve yayınlanan reklam paketlerini kontrol ederiz.

void loop() { char printLog[256]; Serial.printf("%d saniye süreyle BLE taramasını başlat…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int sayı = bulunanDevices.getCount(); printf("Bulunan aygıt sayısı: %d\n", sayım);

gecikme(100);

}

Nem ve sıcaklık değerleri bu paketlerde saklanıyor, bu yüzden sadece okumamız yeterli. Değerleri okuduktan sonra ekranda gösteriyoruz. Her zaman olduğu gibi, bu Eğitilebilir Tabloya eklenen açıklamada bu projenin koduna bir bağlantı bulabilirsiniz.

Adım 6: Son Düşünceler ve İyileştirmeler

Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler
Son Düşünceler ve İyileştirmeler

Artık bu sensörden kablosuz olarak nasıl veri alacağımızı bildiğimize göre, pille çalışan eksiksiz bir hava durumu istasyonu inşa edebiliriz. Bu Xiaomi Cihazı ticari bir ürün olduğu için harika bir pil ömrü sunar. Maalesef henüz projelerimizde benzer pil tüketimini sağlayamıyoruz. Bu yüzden, bu sensörü büyük bir e-kağıt ekranı kullanacak bir hava durumu istasyonu projesi için bir dış mekan sensörü olarak kullanmayı planlıyorum. Serin olacak. Ayrıca, benzer şekilde hackleyebileceğimiz diğer Xiaomi Bluetooth özellikli cihazları da arayacağım. Bizi izlemeye devam edin.

Bu proje hakkındaki görüşlerinizi öğrenmek isterim. Bazı ticari Bluetooth cihazlarından veri alabilmemizi faydalı buluyor musunuz? Bu işlevi kullanarak ne inşa edeceksiniz? Fikirlerinizi okumak istiyorum, bu yüzden lütfen aşağıdaki yorumlar bölümüne gönderin. Teşekkürler!

Önerilen: