Სარჩევი:

ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: 6 ნაბიჯი (სურათებით)
ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: 6 ნაბიჯი (სურათებით)

ვიდეო: ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: 6 ნაბიჯი (სურათებით)

ვიდეო: ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ: 6 ნაბიჯი (სურათებით)
ვიდეო: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, ნოემბერი
Anonim
Image
Image
ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ
ESP32 Xiaomi Hack - მიიღეთ მონაცემები უსადენოდ

ძვირფასო მეგობრებო, კეთილი იყოს თქვენი მობრძანება სხვა ინსტრუქციებში! დღეს ჩვენ ვისწავლით თუ როგორ უნდა მივიღოთ მონაცემები, რომელსაც ეს Xiaomi ტემპერატურისა და ტენიანობის მონიტორი გადასცემს ESP32 დაფის Bluetooth ფუნქციონირების გამოყენებით.

როგორც ხედავთ, მე ვიყენებ ESP32 დაფას და 2.8 დიუმიანი ფერადი TFT დისპლეით. ეკრანზე ჩვენ ვაჩვენებთ ტემპერატურასა და ტენიანობას. მაგარი ის არის, რომ მე არ მაქვს დაკავშირებული სენსორები ESP32 დაფაზე. მე ვიღებ ტემპერატურასა და ტენიანობას უსადენოდ ამ კომერციული Xiaomi ტემპერატურისა და ტენიანობის მონიტორისგან. Რამდენად მაგარია! ეკრანი Xiaomi მოწყობილობაზე განახლდება ყოველ წამს, მაგრამ მე ვაახლებ ეკრანს, რომელიც დაკავშირებულია ESP32 დაფასთან ყოველ 10 წამში ერთხელ, რათა დაზოგოს ენერგია Xiaomi მოწყობილობაზე.

ეს მაგარი Xiaomi ტემპერატურის და ტენიანობის სენსორი აჩვენებს ტემპერატურასა და ტენიანობას მის LCD ეკრანზე და მას ასევე შეუძლია მონაცემების გადაცემა სხვა Xiaomi მოწყობილობებსა თუ პროგრამებში Bluetooth პროტოკოლის გამოყენებით. მოწყობილობები იყენებენ ერთ AAA ბატარეას და რადგან ეს არის კომერციული პროდუქტი, მოწყობილობის ბატარეა შესანიშნავია. ის შეიძლება გაგრძელდეს ერთ AAA ბატარეაზე თვეების განმავლობაში, რასაც ჩვენ ვერ მივაღწევთ ჩვენს ხელნაკეთ პროექტებზე. რამდენიმე კვირის წინ აღმოვაჩინე, რომ ზოგიერთმა ჭკვიანმა ბიჭმა მოახერხა შეცვალოს პროტოკოლი, რომელსაც Xiaomi იყენებს სენსორიდან მონაცემების გადასაცემად და მოახერხა ამ მონაცემების მიღება ESP32 დაფის გამოყენებით. ამიტომ ვცადე და როგორც ხედავთ მუშაობს!

ნაბიჯი 1: მიიღეთ ყველა ნაწილი

მიიღეთ ყველა ნაწილი
მიიღეთ ყველა ნაწილი

ახლა ვნახოთ, როგორ ავაშენოთ ეს პროექტი. ჩვენ გვჭირდება ESP32 დაფა, 2.8 დიუმიანი ILI9341 დისპლეი, Xiaomi ტემპერატურისა და ტენიანობის სენსორი, პურის დაფა და რამდენიმე მავთული.

აქ არის რამოდენიმე ბმული იმ ნაწილების მიმართ, რომელთა გამოყენებასაც ვაპირებ ამ ინსტრუქციულში.

  • ESP32 ▶
  • 2.8 "ჩვენება ▶
  • Xiaomi სენსორი ▶
  • პურის დაფა ▶
  • მავთულები ▶
  • USB მეტრი ▶
  • Powerbank ▶

ნაბიჯი 2: ESP32 დაფა

Image
Image
ESP32 დაფა
ESP32 დაფა

თუ თქვენ არ იცნობთ მას, ESP32 ჩიპი არის პოპულარული ESP8266 ჩიპის მემკვიდრე, რომელიც ჩვენ ბევრჯერ გამოვიყენეთ წარსულში. ESP32 არის მხეცი! ის გთავაზობთ ორ 32 პროცესორის ბირთვს, რომლებიც მუშაობენ 160 MHz– ზე, მასიური მეხსიერება, WiFi, Bluetooth და მრავალი სხვა ფუნქცია, რომლის ღირებულებაა დაახლოებით 7 $! საოცარი პერსონალი!

გთხოვთ იხილოთ დეტალური მიმოხილვა, რომელიც მე მოვამზადე ამ დაფისთვის. მე დავამატე ვიდეო ამ ინსტრუქციულზე. ეს გვეხმარება იმის გაგებაში, თუ რატომ ცვლის ეს ჩიპი სამუდამოდ ნივთებს! ESP32– ის ერთ – ერთი ყველაზე ამაღელვებელი ის არის, რომ მიუხედავად იმისა, რომ ის ისეთი ძლიერია, ის გთავაზობთ ღრმა ძილის რეჟიმს, რომელიც მოითხოვს მხოლოდ 10μΑ დენს. ეს ხდის ESP32 იდეალურ ჩიპს დაბალი სიმძლავრის პროგრამებისთვის.

ნაბიჯი 3: 2.8 "TFT ჩვენება Arduino და ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

ეკრანი დიდია და მას აქვს გარჩევადობა 320x240 პიქსელი. ჩემს ერთ -ერთ ფავორიტ ეკრანთან შედარებით, 1.8 დიუმიანი ფერადი TFT დისპლეით თქვენ შეგიძლიათ ნახოთ იგი ბევრად უფრო დიდი. ეკრანი ასევე გთავაზობთ შეხების ფუნქციონირებას, რომელიც არის დამატებითი ბონუსი და SD ბარათის სლოტი უკანა მხარეს. ის იყენებს SPI ინტერფეისს, ამიტომ Arduino– სთან ან ESP32 დაფასთან კავშირი ძალიან მარტივია. ჩვენების ღირებულება შედარებით დაბალია; ღირს დაახლოებით $ 11, რაც, ჩემი აზრით, სამართლიანი ფასია იმისთვის, რასაც ეს ჩვენება გვთავაზობს.

ამ დისპლეის კიდევ ერთი რამ არის ის, რომ ის არ არის ფარი, როგორც სენსორული ეკრანი, რომელსაც აქამდე ვიყენებდით. ამ გზით ჩვენ შეგვიძლია დავუკავშიროთ ჩვენება ნებისმიერ დაფაზე, Arduino Pro mini- ს, STM32- ს, ESP8266- ს და ESP32- ს. ეს ძალიან მნიშვნელოვანია, რადგან ჩვენ ახლა გვაქვს დაბალფასიანი დისპლეი, რომელიც შეგვიძლია გამოვიყენოთ ყველა დაფაზე. აქამდე, ერთადერთი სენსორული ეკრანი, რომლის გამოყენებაც ჩვენ შეგვეძლო ამ დაფებით, იყო Nextion ეკრანები, რომლებიც უფრო ძვირი ღირს და სიმართლე გითხრათ, მიუხედავად იმისა, რომ მე მათ დროდადრო ვიყენებ, მე ნამდვილად არ მომწონს.

ნაბიჯი 4: ჩვენების დაკავშირება

ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება
ჩვენების დაკავშირება

პირველ რიგში, ჩვენ უნდა დავუკავშიროთ ESP32 დაფა 2.8 დიუმიან ეკრანს. თქვენ შეგიძლიათ იპოვოთ სქემა, რომელიც ერთვის Instructable– ს. მე ვიყენებ ამ DOIT ESP32 დაფას, რომელიც გამოვიდა დაახლოებით ორი წლის წინ. დაფის ეს ვერსია აღარ არის ხელმისაწვდომი, რადგან ახლა არის მისი ახალი ვერსია, რომელიც გთავაზობთ მეტ ქინძისთავებს, ამ ერთს. ერთადერთი მიზეზი, რის გამოც მე ვიყენებ დაფის ძველ ვერსიას, არის ის, რომ დაფის GND ბუდე მოთავსებულია SPI ქინძისთავების გვერდით, დაფის იმავე მხარეს, რაც მას პურის დაფაზე მეგობრულს ხდის.

ეკრანის დაფასთან დაკავშირების შემდეგ ჩვენ შეგვიძლია გავაძლიეროთ პროექტი. რამდენიმე წამის შემდეგ, ჩვენ ვიღებთ პირდაპირ მონაცემებს ახლომდებარე Xiaomi მოწყობილობიდან. ვინაიდან მოწყობილობა იყენებს Bluetooth 4 -ს, მისი დიაპაზონი საკმაოდ კარგია. ჩვენ შეგვიძლია მარტივად მივიღოთ მონაცემები ამ მოწყობილობის მიერ გადაცემული მანძილიდან 10 მეტრამდე ან მეტი! ჩვენ ასევე შეგვიძლია მივიღოთ Xiaomi მოწყობილობის ბატარეის დონე, მაგრამ მე არ ვაჩვენებ ამ მნიშვნელობას ეკრანზე.

თუ ჩვენ ვიყენებთ ამ USB მრიცხველს, ჩვენ ვხედავთ, რომ ამ პროექტის მიმდინარე გათამაშება არის დაახლოებით 120-150 mA ამ დიდი ეკრანის გამოყენებით. თუ ჩვენ ვიყენებთ ელექტრონული ქაღალდის ეკრანს, ჩავდოთ ESP32 დაფა ღრმა ძილის რეჟიმში და მივიღოთ მონაცემები სენსორიდან ყოველ რამდენიმე წუთში, ჩვენ შეგვიძლია ამ პროექტის ბატარეა მეგობრული გავხადოთ. შევეცდები ამას მომავალ ვიდეოში. ეს პროექტი მხოლოდ იმის დემონსტრირებაა, რომ ჩვენ შეგვიძლია მივიღოთ მონაცემები ამ მოწყობილობიდან უსადენოდ.

ნაბიჯი 5: პროექტის კოდი

პროექტის კოდექსი
პროექტის კოდექსი

ახლა ვნახოთ პროექტის პროგრამული მხარე.

პროექტის კოდი ემყარება ამ პროექტს:

მე გამოვიყენე კოდი, რომელიც იღებს ამ მონაცემებს Xiaomi მოწყობილობიდან და შევქმენი დამოუკიდებელი პროექტი.

ამ ცვლადში ჩვენ ვაცხადებთ, რომ ჩვენ უნდა მივიღოთ ახალი მონაცემები ყოველ 10 წამში.

#განსაზღვრეთ SCAN_TIME 10 // წამი

აქ ჩვენ ვაცხადებთ, რომ ჩვენ გვსურს ტემპერატურის ჩვენება ცელსიუს გრადუსში. თუ გსურთ გამოიყენოთ იმპერიული სისტემა, უბრალოდ დააყენეთ ეს ცვლადი ყალბი.

ლოგიკური METRIC = ჭეშმარიტი; // მითითებული true მეტრული სისტემისათვის; ყალბი იმპერიისთვის

დაყენების ფუნქციისას ჩვენ ვიწყებთ ინიციალიზაციას ეკრანზე და ESP32 დაფის Bluetooth მოდულს და შემდეგ ვხატავთ მომხმარებლის ინტერფეისს ეკრანზე.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // გამორთეთ brownout დეტექტორი

tft. დაწყება ();

Serial.begin (115200);

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

drawUI ();

}

შემდეგი, ჩვენ ვეძებთ Bluetooth მოწყობილობებს სიახლოვეს ყოველ 10 წამში. ჩვენ არ ვაკავშირებთ Xiaomi მოწყობილობას, რადგან ის არ არის საჭირო. ჩვენ ვამოწმებთ მხოლოდ ახლომდებარე Bluetooth დაბალი ენერგიის პერიფერიულ მოწყობილობებს და ვამოწმებთ სამაუწყებლო სარეკლამო პაკეტებს.

void loop () {char printLog [256]; Serial.printf ("BLE სკანირების დაწყება %d წამში… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> დაწყება (SCAN_TIME); int რაოდენობა = foundDevices.getCount (); printf ("ნაპოვნი მოწყობილობების რაოდენობა: %d / n", რაოდენობა);

დაგვიანება (100);

}

ტენიანობის და ტემპერატურის მნიშვნელობები ინახება ამ პაკეტებში, ამიტომ ჩვენ მხოლოდ მათი წაკითხვა გვჭირდება. მას შემდეგ რაც ვკითხულობთ მნიშვნელობებს ჩვენ ვაჩვენებთ მათ ეკრანზე. როგორც ყოველთვის, თქვენ შეგიძლიათ ნახოთ ამ პროექტის კოდის ბმული აღწერილობაში თანდართულ აღწერილობაში.

ნაბიჯი 6: საბოლოო შედეგები და გაუმჯობესებები

საბოლოო წარმატებები და გაუმჯობესებები
საბოლოო წარმატებები და გაუმჯობესებები
საბოლოო წარმატებები და გაუმჯობესებები
საბოლოო წარმატებები და გაუმჯობესებები

ახლა, როდესაც ჩვენ ვიცით, როგორ მივიღოთ მონაცემები უსადენოდ ამ სენსორიდან, ჩვენ შეგვიძლია ავაშენოთ სრული ბატარეაზე მომუშავე ამინდის სადგური. ვინაიდან ეს Xiaomi მოწყობილობა არის კომერციული პროდუქტი, ის გთავაზობთ დიდ ბატარეას. სამწუხაროდ, ჩვენ ჯერ არ შეგვიძლია მივაღწიოთ ბატარეის ანალოგიურ მოხმარებას ჩვენს პროექტებზე. ამრიგად, მე ვგეგმავ გამოვიყენო ეს სენსორი, როგორც გარე სენსორი ამინდის სადგურის პროექტისთვის, რომელიც გამოიყენებს ელექტრონული ქაღალდის დიდ ეკრანს. მაგარი იქნება. ასევე, მე ვაპირებ სხვა Xiaomi Bluetooth ჩართული მოწყობილობების ძებნას, რომელთაც ჩვენ შეგვიძლია ანალოგიურად გავტეხოთ. Ადევნეთ თვალყური.

მე მინდა ვიცოდე თქვენი აზრი ამ პროექტის შესახებ. მიგაჩნიათ თუ არა სასარგებლოდ, რომ ჩვენ შეგვიძლია მივიღოთ მონაცემები ზოგიერთი კომერციული Bluetooth მოწყობილობიდან? რას აპირებთ ამ ფუნქციის გამოყენებით? მსურს თქვენი იდეების წაკითხვა, ასე რომ გთხოვთ განათავსოთ ისინი ქვემოთ მოცემულ კომენტარებში. მადლობა!

გირჩევთ: