สารบัญ:
- ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
- ขั้นตอนที่ 2: บอร์ด ESP32
- ขั้นตอนที่ 3: จอแสดงผล TFT 2.8" สำหรับ Arduino และ ESP32
- ขั้นตอนที่ 4: เชื่อมต่อจอแสดงผล
- ขั้นตอนที่ 5: รหัสของโครงการ
- ขั้นตอนที่ 6: ความคิดและการปรับปรุงขั้นสุดท้าย
วีดีโอ: ESP32 Xiaomi Hack - รับข้อมูลแบบไร้สาย: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เพื่อน ๆ ที่รักยินดีต้อนรับสู่ Instructable อื่น! วันนี้เราจะมาเรียนรู้วิธีรับข้อมูลที่เครื่องตรวจสอบอุณหภูมิและความชื้น Xiaomi นี้ส่งโดยใช้ฟังก์ชัน Bluetooth ของบอร์ด ESP32
อย่างที่คุณเห็น ฉันใช้บอร์ด ESP32 และจอแสดงผล TFT สีขนาด 2.8 นิ้ว บนจอแสดงผล เราแสดงอุณหภูมิและความชื้น สิ่งที่ยอดเยี่ยมคือฉันไม่ได้เชื่อมต่อเซ็นเซอร์ใดๆ กับบอร์ด ESP32 ฉันได้รับอุณหภูมิและความชื้นแบบไร้สายจากเครื่องวัดอุณหภูมิและความชื้น Xiaomi เชิงพาณิชย์นี้ เจ๋งแค่ไหน! จอแสดงผลบนอุปกรณ์ Xiaomi อัปเดตทุก ๆ วินาที แต่ฉันอัปเดตจอแสดงผลที่เชื่อมต่อกับบอร์ด ESP32 ทุก 10 วินาทีเพื่อประหยัดพลังงานบนอุปกรณ์ Xiaomi
เซ็นเซอร์อุณหภูมิและความชื้น Xiaomi สุดเจ๋งนี้แสดงอุณหภูมิและความชื้นบนจอ LCD และยังสามารถส่งข้อมูลไปยังอุปกรณ์ Xiaomi หรือแอพอื่น ๆ โดยใช้โปรโตคอล Bluetooth อุปกรณ์ใช้แบตเตอรี่ AAA ก้อนเดียว และเนื่องจากเป็นผลิตภัณฑ์เชิงพาณิชย์ อายุการใช้งานแบตเตอรี่ของอุปกรณ์จึงดีเยี่ยม สามารถใช้แบตเตอรี่ AAA เพียงก้อนเดียวได้นานหลายเดือน ซึ่งเป็นสิ่งที่เราไม่สามารถทำได้ในโครงการ DIY ของเรา เมื่อไม่กี่สัปดาห์ก่อน ฉันค้นพบว่าคนฉลาดบางคนสามารถทำวิศวกรรมย้อนกลับโปรโตคอลที่ Xiaomi ใช้ในการส่งข้อมูลจากเซ็นเซอร์และจัดการเพื่อให้ได้ข้อมูลนั้นโดยใช้บอร์ด ESP32 ดังนั้นฉันจึงลองและอย่างที่คุณเห็นมันใช้งานได้!
ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
ตอนนี้เรามาดูวิธีการสร้างโครงการนี้ เราต้องการบอร์ด ESP32, จอแสดงผล ILI9341 ขนาด 2.8”, เซ็นเซอร์อุณหภูมิและความชื้น Xiaomi, เขียงหั่นขนมและสายไฟ
นี่คือลิงก์บางส่วนไปยังส่วนที่ฉันจะใช้ในคำแนะนำนี้
- ESP32 ▶
- จอแสดงผล 2.8" ▶
- Xiaomi เซนเซอร์ ▶
- เขียงหั่นขนม ▶
- สายไฟ ▶
- เครื่องวัด USB ▶
- พาวเวอร์แบงค์ ▶
ขั้นตอนที่ 2: บอร์ด ESP32
หากคุณไม่คุ้นเคย ชิป ESP32 เป็นตัวตายตัวแทนของชิป ESP8266 ยอดนิยมที่เราเคยใช้มาหลายครั้งแล้ว ESP32 เป็นสัตว์ร้าย! มันมีแกนประมวลผล 32 คอร์สองตัวที่ทำงานที่ 160MHz หน่วยความจำจำนวนมาก WiFi บลูทู ธ และคุณสมบัติอื่น ๆ อีกมากมายด้วยราคาประมาณ 7 $! ของวิเศษ!
โปรดดูบทวิจารณ์โดยละเอียดที่ฉันเตรียมไว้สำหรับบอร์ดนี้ ฉันได้แนบวิดีโอในคำแนะนำนี้ จะช่วยให้เข้าใจว่าทำไมชิปตัวนี้จะเปลี่ยนวิธีที่เราทำสิ่งต่างๆ ไปตลอดกาล! สิ่งที่น่าตื่นเต้นที่สุดอย่างหนึ่งเกี่ยวกับ ESP32 คือถึงแม้จะทรงพลังมาก แต่ก็มีโหมดหลับลึกซึ่งต้องการกระแสไฟเพียง 10μΑs ทำให้ ESP32 เป็นชิปในอุดมคติสำหรับการใช้งานที่ใช้พลังงานต่ำ
ขั้นตอนที่ 3: จอแสดงผล TFT 2.8" สำหรับ Arduino และ ESP32
จอแสดงผลมีขนาดใหญ่และมีความละเอียด 320x240 พิกเซล เมื่อเทียบกับจอแสดงผลโปรดของฉัน จอแสดงผลสี TFT ขนาด 1.8 นิ้ว คุณจะเห็นว่ามีขนาดใหญ่กว่ามาก หน้าจอยังมีฟังก์ชั่นสัมผัสซึ่งเป็นโบนัสเพิ่มเติมและช่องเสียบการ์ด 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 โดยใช้จอแสดงผลขนาดใหญ่นี้ หากเราใช้จอแสดงผล e-paper ให้ตั้งค่าบอร์ด ESP32 ในโหมดดีปสลีป และรับข้อมูลจากเซ็นเซอร์ทุกๆ สองสามนาที เราจะทำให้โปรเจ็กต์นี้เป็นมิตรกับแบตเตอรี่ ฉันจะลองสิ่งนี้ในวิดีโอหน้า โครงการนี้เป็นเพียงการสาธิตว่าเราสามารถรับข้อมูลจากอุปกรณ์นี้แบบไร้สายได้
ขั้นตอนที่ 5: รหัสของโครงการ
มาดูด้านซอฟต์แวร์ของโครงการกัน
รหัสของโครงการขึ้นอยู่กับโครงการนี้:
ฉันใช้รหัสที่ได้รับข้อมูลนั้นจากอุปกรณ์ Xiaomi และสร้างโครงการแบบสแตนด์อโลนด้วย
ในตัวแปรนี้ เราประกาศว่าเราจำเป็นต้องรับข้อมูลใหม่ทุกๆ 10 วินาที
#define SCAN_TIME 10 // วินาที
ที่นี่เราประกาศว่าเราต้องการแสดงอุณหภูมิเป็นองศาเซลเซียส หากคุณต้องการใช้ระบบอิมพีเรียล ให้ตั้งค่าตัวแปรนี้เป็นเท็จ
บูลีน METRIC = จริง; //ตั้งค่าจริงสำหรับระบบเมตริก เท็จสำหรับจักรพรรดิ
ที่ฟังก์ชั่นการตั้งค่า เราเริ่มต้นการแสดงผลและโมดูล Bluetooth ของบอร์ด ESP32 จากนั้นเราวาดส่วนต่อประสานผู้ใช้บนหน้าจอ
การตั้งค่าเป็นโมฆะ () {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //ปิดการใช้งานเครื่องตรวจจับไฟดับ
tft.begin();
Serial.begin(115200);
Serial.println ("แสดง ESP32 XIAOMI"); initBluetooth();
drawUI();
}
ต่อไป เราจะค้นหาอุปกรณ์บลูทูธที่อยู่ใกล้เคียงทุกๆ 10 วินาที เราไม่ทำการเชื่อมต่อกับอุปกรณ์ Xiaomi เนื่องจากไม่จำเป็น เราสแกนหาอุปกรณ์ต่อพ่วงบลูทูธพลังงานต่ำที่อยู่ใกล้เคียงเท่านั้น และตรวจสอบแพ็กเก็ตโฆษณาการออกอากาศ
วงเป็นโมฆะ () { ถ่าน printLog[256]; Serial.printf("เริ่มการสแกน BLE เป็นเวลา %d วินาที…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); จำนวน int = foundDevices.getCount(); printf("พบจำนวนอุปกรณ์: %d\n", นับ);
ล่าช้า (100);
}
ค่าความชื้นและอุณหภูมิจะถูกเก็บไว้ในแพ็กเก็ตเหล่านั้น ดังนั้นเราจึงจำเป็นต้องอ่านเท่านั้น หลังจากที่เราอ่านค่าที่เราแสดงบนหน้าจอ และเช่นเคย คุณจะพบลิงก์ไปยังรหัสของโครงการนี้ในคำอธิบายที่แนบมากับคำแนะนำนี้
ขั้นตอนที่ 6: ความคิดและการปรับปรุงขั้นสุดท้าย
ตอนนี้เรารู้วิธีรับข้อมูลแบบไร้สายจากเซ็นเซอร์นี้แล้ว เราก็สามารถสร้างสถานีตรวจอากาศที่ใช้พลังงานแบตเตอรี่ได้อย่างสมบูรณ์ เนื่องจากอุปกรณ์ Xiaomi นี้เป็นผลิตภัณฑ์เชิงพาณิชย์ จึงมีอายุการใช้งานแบตเตอรี่ที่ยาวนาน ขออภัย เรายังใช้แบตเตอรี่ไม่เท่ากันในโครงการของเรา ดังนั้นฉันจึงวางแผนที่จะใช้เซ็นเซอร์นี้เป็นเซ็นเซอร์กลางแจ้งสำหรับโครงการสถานีตรวจอากาศซึ่งจะใช้จอแสดงผล e-paper ขนาดใหญ่ มันจะเย็น นอกจากนี้ ฉันจะค้นหาอุปกรณ์ที่เปิดใช้งาน Xiaomi Bluetooth อื่น ๆ ที่เราสามารถแฮ็คได้ในลักษณะเดียวกัน คอยติดตาม.
ฉันชอบที่จะทราบความคิดเห็นของคุณเกี่ยวกับโครงการนี้ คุณคิดว่ามันมีประโยชน์หรือไม่ที่เราสามารถรับข้อมูลจากอุปกรณ์ Bluetooth เชิงพาณิชย์บางตัว? คุณจะสร้างอะไรโดยใช้ฟังก์ชันนี้ ฉันต้องการอ่านความคิดของคุณ ดังนั้นโปรดโพสต์ไว้ในส่วนความคิดเห็นด้านล่าง ขอบคุณ!
แนะนำ:
Floppy Disk IR Camera Hack: 8 ขั้นตอน (พร้อมรูปภาพ)
Floppy Disk IR Camera Hack: ในช่วงเจ็ดปีที่ผ่านมา ฉันมีกล้องดิจิตอลที่พังอยู่รอบๆ มันยังสามารถถ่ายภาพได้ แต่แทบจะเป็นไปไม่ได้เลยที่จะใช้เพราะหน้าจอแตก ปัญหาพื้นฐานคือบางครั้งเมนูอาจโดนโดยไม่ตั้งใจ
XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: 5 ขั้นตอน (พร้อมรูปภาพ)
XiaoMi Vacuum + ปุ่ม Amazon = การทำความสะอาด Dash: คำแนะนำนี้จะอธิบายวิธีใช้ปุ่ม Amazon Dash สำรองของคุณเพื่อควบคุม XiaoMi Vacuum ฉันมีปุ่ม Amazon จำนวนมากวางอยู่รอบ ๆ จากตอนที่มีราคา 1 เหรียญและฉันไม่ได้ใช้มัน แต่เมื่อได้รับ Robot Vacuum ใหม่ ฉันตัดสินใจ
เริ่มต้นใช้งาน ESP32 - การติดตั้งบอร์ด ESP32 ใน Arduino IDE - ESP32 Blink Code: 3 ขั้นตอน
เริ่มต้นใช้งาน ESP32 | การติดตั้งบอร์ด ESP32 ใน Arduino IDE | รหัสการกะพริบของ ESP32: ในคำแนะนำนี้ เราจะดูวิธีการเริ่มทำงานกับ esp32 และวิธีการติดตั้งบอร์ด esp32 ลงใน Arduino IDE และเราจะตั้งโปรแกรม esp 32 เพื่อเรียกใช้โค้ดกะพริบโดยใช้ arduino ide
Gimbal มือถือที่ขยายได้สำหรับ GoPro/SJ4000/Xiaomi Yi/iLook: 9 ขั้นตอน (พร้อมรูปภาพ)
Extendable Handheld Gimbal สำหรับ GoPro/SJ4000/Xiaomi Yi/iLook: บทช่วยสอนนี้จะแนะนำวิธีการแฮ็กไม้เซลฟี่และ 2D Gimbal เพื่อสร้าง gimbal แบบใช้มือถือที่ขยายได้ ซึ่งสามารถติดตั้งกล้องได้ เช่น GoPro SJ4000/5000/6000 Xiaomi Yi Walkera iLook Gimbal เป็นกลไกการทรงตัวที่จำ
วิธีแก้ไขปัญหาการเลื่อนเมาส์ Xiaomi: 6 ขั้นตอน (พร้อมรูปภาพ)
วิธีแก้ไขปัญหา Xiaomi Mouse Scroll: เช่นเดียวกับเครื่องมืออื่น ๆ เมาส์คอมพิวเตอร์จะต้องมีการบำรุงรักษาในที่สุดเนื่องจากการใช้งานอย่างต่อเนื่อง การสึกหรอโดยทั่วไปของผลิตภัณฑ์ช่วยให้ทำงานได้อย่างมีประสิทธิภาพน้อยกว่าที่เคยเป็นมาในช่วงเวลาที่ครั้งหนึ่งเคยเป็นข