สารบัญ:
- ขั้นตอนที่ 1: สร้างโล่/เขียงหั่นขนม
- ขั้นตอนที่ 2: ตั้งโปรแกรม Arduino
- ขั้นตอนที่ 3: โหลดแอป Android จาก Google Play หรือแยก GitHub
- ขั้นตอนที่ 4: เชื่อมต่อกับ Arduino กับสิ่งที่น่าสนใจ (ฉันใช้รถ R/C)
- ขั้นตอนที่ 5: ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino
- ขั้นตอนที่ 6: รับและพล็อตข้อมูล
- ขั้นตอนที่ 7: นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม
![การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ) การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/001/image-1294-81-j.webp)
วีดีโอ: การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ)
![วีดีโอ: การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ) วีดีโอ: การบันทึกข้อมูลแบบเรียลไทม์ MPU-6050/A0 ด้วย Arduino และ Android: 7 ขั้นตอน (พร้อมรูปภาพ)](https://i.ytimg.com/vi/Ge8L9f6rzA0/hqdefault.jpg)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
![เรียลไทม์ MPU-6050/A0 การบันทึกข้อมูลด้วย Arduino และ Android เรียลไทม์ MPU-6050/A0 การบันทึกข้อมูลด้วย Arduino และ Android](https://i.howwhatproduce.com/images/001/image-1294-82-j.webp)
ฉันสนใจที่จะใช้ Arduino สำหรับการเรียนรู้ของเครื่อง ในขั้นแรก ฉันต้องการสร้างการแสดงข้อมูลแบบเรียลไทม์ (หรือใกล้เคียงกัน) และตัวบันทึกด้วยอุปกรณ์ Android ฉันต้องการเก็บข้อมูลมาตรความเร่งจาก MPU-6050 ดังนั้นฉันจึงออกแบบบิลด์เพื่อใช้ HC-05 ที่ 115200 บอด ด้วยการกำหนดค่านี้ ข้อมูล 4 ช่องสามารถส่งข้อมูลได้ 250 ตัวอย่างต่อวินาที
บิลด์มีไม่กี่ขั้นตอน:
- สร้างโล่หรือเขียงหั่นขนม
- โปรแกรม Arduino
- โหลดแอพ Android จาก Google Play หรือแยก GitHub แล้วคอมไพล์เอง
- เชื่อมต่อ MPU-6050 กับสิ่งที่น่าสนใจที่สั่นสะเทือน (ฉันใช้รถ R/C)
- ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino
- พล็อตข้อมูลบันทึกถ้าสนใจ
- นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่น) เพื่อใช้งานต่อไป
มาเริ่มกันเลย!
ขั้นตอนที่ 1: สร้างโล่/เขียงหั่นขนม
![สร้างโล่/เขียงหั่นขนม สร้างโล่/เขียงหั่นขนม](https://i.howwhatproduce.com/images/001/image-1294-83-j.webp)
![สร้างโล่/เขียงหั่นขนม สร้างโล่/เขียงหั่นขนม](https://i.howwhatproduce.com/images/001/image-1294-84-j.webp)
นี่คือแผนภาพการเดินสายไฟสำหรับ Arduino, HC-05 และ MPU-6050 นอกจาก MPU-6050 แล้ว ฉันยังมีอินพุตแบบอะนาล็อก A0 ที่ต่อกับเซ็นเซอร์วัดแสงเพื่อแสดงว่า ADC ทำงานอยู่ สามารถนำสัญญาณ 0-5 โวลต์เข้าสู่ A0 ADC ได้ นี่คือส่วนประกอบที่ฉันใช้ในการสร้าง:
- Arduino Uno
- HC-05 (HC-06 ควรใช้งานได้เช่นกัน แต่งานสร้างของฉันใช้กับ HC-05)
- MPU-6050
- โฟโต้รีซีสเตอร์ Sparkfun
- ตัวต้านทาน 10kOhm (น้ำตาล-ดำ-ส้ม)
โมดูลบลูทูธ HC-05 ส่วนใหญ่มีค่าเริ่มต้นเป็น 9600 บอด เพื่อให้ส่งข้อมูลได้สำเร็จ คุณจะต้องตั้งโปรแกรมใหม่ด้วยอัตรารับส่งข้อมูล 115200 มีคำสั่ง HC-05/HC-06 AT ที่ดีที่อธิบายวิธีการทำ
ขั้นตอนที่ 2: ตั้งโปรแกรม Arduino
![โปรแกรม Arduino โปรแกรม Arduino](https://i.howwhatproduce.com/images/001/image-1294-85-j.webp)
![โปรแกรม Arduino โปรแกรม Arduino](https://i.howwhatproduce.com/images/001/image-1294-86-j.webp)
ฉันใช้ Arduino IDE รีลีส 1.6.7 เพื่อตั้งโปรแกรม Arduino สามารถดาวน์โหลดรหัสได้จากลิงก์ในขั้นตอนนี้หรือจาก repo GitHub ฉันได้รวมสามเวอร์ชัน: Firmware125.ino เป็นเวอร์ชัน 125 เฮิรตซ์ Firmware250.ino เป็นเวอร์ชัน 250 เฮิรตซ์ และ Firmware500.ino เป็นเวอร์ชัน 500 เฮิรตซ์ เพื่อให้ Arduino หมุนรอบที่ 500 เฮิรตซ์ จะไม่มีการรวบรวม A0 ADC
เฟิร์มแวร์มีนาฬิกาบนพิน 9 ที่ฉันใช้ตรวจสอบเวลา การติดตามแสดงรอบเวลา 4 มิลลิวินาที (เทียบเท่า 1/250 เฮิรตซ์) ฉันพบว่าหากมีปัญหาการเชื่อมโยงแบบอนุกรม เวลาจะไม่เท่ากัน
รหัส Arduino ใช้การปิดบังบิตเพื่อเพิ่มหมายเลขช่องสัญญาณให้กับแต่ละแพ็กเก็ต เนื่องจากบางครั้งตัวอย่างจะส่งผ่าน Bluetooth ฉันใช้สามบิตที่สำคัญที่สุดในการจัดเก็บหมายเลขช่อง สำหรับจำนวนเต็มที่ลงนามแล้ว บิตที่สำคัญที่สุด (MSB) จะถูกสงวนไว้สำหรับเครื่องหมาย เนื่องจากฉันต้องการใช้ MSB สำหรับที่อยู่ของฉัน แทนที่จะใช้เครื่องหมายของจำนวนเต็ม ฉันจึงต้องแปลงค่ามาตรความเร่งที่ลงนามทั้งหมดให้เป็นจำนวนเต็มที่ไม่ได้ลงนาม ฉันทำได้โดยเพิ่ม 32768 ให้กับแต่ละค่า (จำนวน MPU accelerometer ADC คือ +32768 ถึง -32768) และแปลงเป็นจำนวนเต็มที่ไม่ได้ลงนาม:
(int ที่ไม่ได้ลงนาม)((long)iAccelData+32767);
หมายเลขช่องสัญญาณจะเหมือนกันสำหรับมาตรความเร่งแต่ละตัวและพอร์ต A0 เพื่อให้สามารถตรวจพบแพ็กเก็ตที่ตกหล่นได้หากหมายเลขช่องสัญญาณไม่เป็นระเบียบ สำหรับแพ็กเก็ตที่มาจาก Bluetooth บน Arduino รูปแบบไบนารีคือ (สัญญาณเป็นการขยับบิต):
(บิตที่อยู่ xacc 3 = 0x00, ไม่ได้ลงนาม 13 บิต) (บิตที่อยู่ yacc 3 = 0x01, ไม่ได้ลงชื่อ 13 บิต) (บิตที่อยู่ zacc 3 = 0x02, ไม่ได้ลงชื่อ 13 บิต) (บิตที่อยู่ 3 รายการ = 0x03, iadc13bit ไม่ได้ลงชื่อ)
(บิตที่อยู่ xacc 3 = 0x00, ไม่ได้ลงนาม 13 บิต) (บิตที่อยู่ yacc 3 = 0x01, ไม่ได้ลงชื่อ 13 บิต) (บิตที่อยู่ zacc 3 = 0x02, ไม่ได้ลงนาม 13 บิต) (บิตที่อยู่ 3 รายการ = 0x03, iadc13bit ไม่ได้ลงนาม) (บิตที่อยู่ xacc 3 = 0x00, 13 บิตที่ไม่ได้ลงนาม) (yacc 3 บิตที่อยู่ = 0x01, ไม่ได้ลงชื่อ 13 บิต) (บิตที่อยู่ zacc 3 = 0x02, ไม่ได้ลงนาม 13 บิต) (3 บิตที่อยู่ = 0x03, iadc13 บิตไม่ได้ลงนาม) …
หากใช้อย่างอื่นที่ไม่ใช่แอป Accel Plot Android เพื่ออ่านข้อมูล Bluetooth ต่อไปนี้เป็นขั้นตอนในการแยกที่อยู่ (ฉันกำลังใช้ชื่อตัวแปรจากไฟล์ Accel Plot Bluetooth.java จาก GitHub repo):
- อ่านใน int ที่ไม่ได้ลงนาม 16 อัน
- แยกไบต์สูงและบันทึกเป็น btHigh
- แยกไบต์ต่ำและบันทึกเป็น btLow
- ดึงที่อยู่จาก btHigh โดยใช้: (btHigh >> 5) & 0x07. คำสั่งนี้เลื่อน btHigh 5 บิตไปทางขวา โดยย้ายบิตแอดเดรสสามบิตไปยังรีจิสเตอร์สามตัวที่ต่ำที่สุด เครื่องหมาย & เป็นตรรกะและบังคับบิต 4 และสูงกว่าให้เป็นศูนย์ และสามบิตสุดท้ายตรงกับบิตที่อยู่ ผลลัพธ์ของข้อความนี้คือที่อยู่ของคุณ
คุณไม่ต้องกังวลกับการแยกที่อยู่หากคุณใช้ Accel Plot
ขั้นตอนที่ 3: โหลดแอป Android จาก Google Play หรือแยก GitHub
![โหลดแอพ Android จาก Google Play หรือแยก GitHub โหลดแอพ Android จาก Google Play หรือแยก GitHub](https://i.howwhatproduce.com/images/001/image-1294-87-j.webp)
คุณมีตัวเลือกสองทางในการโหลดแอป Android บนอุปกรณ์ของคุณ หากคุณต้องการหลีกเลี่ยงการเข้ารหัส คุณสามารถค้นหา "Accel Plot" และแอปควรปรากฏใน Google Play Store ทำตามคำแนะนำของร้านค้าสำหรับการติดตั้ง
ความปรารถนาของฉันกับ Instructable นี้คือการสนับสนุนให้ผู้อื่นสร้างโครงการ ดังนั้นฉันจึงได้เผยแพร่รหัสใน GitHub repo คุณควรจะสามารถแยกสาขา สร้าง และแก้ไขได้ตามที่เห็นสมควร ฉันเผยแพร่รหัสภายใต้ใบอนุญาต MIT ดังนั้นขอให้สนุก!
ขั้นตอนที่ 4: เชื่อมต่อกับ Arduino กับสิ่งที่น่าสนใจ (ฉันใช้รถ R/C)
![เชื่อมต่อกับ Arduino กับสิ่งที่น่าสนใจ (ฉันใช้รถ R/C) เชื่อมต่อกับ Arduino กับสิ่งที่น่าสนใจ (ฉันใช้รถ R/C)](https://i.howwhatproduce.com/images/001/image-1294-88-j.webp)
ฉันต้องการใช้อุปกรณ์นี้ในการตรวจจับพื้นผิวถนนในที่สุด ดังนั้นฉันจึงคิดว่ารถยนต์ที่มีการควบคุมระยะไกล (R/C) ขนาดเล็กน่าจะเหมาะสม ฉันคิดว่ามันจะช่วยในขั้นตอนต่อไปหากอัตราเร่งสามารถอยู่กับบางสิ่งที่เคลื่อนไหวหรือสั่นสะเทือน
ขั้นตอนที่ 5: ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino
![ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino](https://i.howwhatproduce.com/images/001/image-1294-89-j.webp)
![ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino](https://i.howwhatproduce.com/images/001/image-1294-90-j.webp)
![ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino ใช้อุปกรณ์ Android เพื่อเชื่อมต่อกับ Arduino](https://i.howwhatproduce.com/images/001/image-1294-91-j.webp)
หากคุณยังไม่ได้จับคู่ คุณจะต้องจับคู่ HC-05 กับอุปกรณ์ Android ของคุณก่อน ฉันเชื่อว่าในอุปกรณ์ส่วนใหญ่ คุณสามารถทำได้โดยไปที่การตั้งค่า พินเริ่มต้นสำหรับอุปกรณ์ HC-05 ส่วนใหญ่จะเป็น 1234 หรือ 1111
เปิดแอป AccelPlot บนอุปกรณ์ Android เมื่อแอปเปิดขึ้น และก่อนที่คุณจะเชื่อมต่อกับ HC-05 คุณสามารถเปลี่ยนอัตราการสุ่มตัวอย่าง (ซึ่งกำหนดไว้ในรหัส Arduino) มาตรวัดความเร่ง (ตั้งค่าในรหัส Arduino ด้วย) และจำนวนตัวอย่างที่จะบันทึก
เมื่อทำการตั้งค่าเหล่านี้แล้วให้คลิกที่ปุ่ม "เชื่อมต่อ" ควรเรียกอุปกรณ์ Bluetooth และอุปกรณ์ของคุณควรอยู่ในรายการ เลือกและเมื่อรหัสสร้างการเชื่อมต่อแล้ว คุณจะเห็นข้อความ "เชื่อมต่อแล้ว" ป๊อปอัป
ใช้ปุ่มลูกศรย้อนกลับเพื่อกลับไปยัง Accel Plot แตะปุ่ม "เริ่มสตรีม" เพื่อแสดงข้อมูลจากอุปกรณ์ HC-05 คุณควรมีปุ่มที่ใช้บันทึกข้อมูลหรือเล่นเนื้อหาที่มีการปรับความถี่ผ่านแจ็คเสียง
ขั้นตอนที่ 6: รับและพล็อตข้อมูล
![Image Image](https://i.howwhatproduce.com/images/001/image-1294-93-j.webp)
![](https://i.ytimg.com/vi/SGJY8Y921N0/hqdefault.jpg)
![นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม](https://i.howwhatproduce.com/images/001/image-1294-94-j.webp)
ควรเปิดใช้งานปุ่ม "เริ่มสตรีม" แตะเพื่อเริ่มสตรีมข้อมูลไปยังหน้าจอ
ปุ่ม "บันทึกข้อมูล" จะเปิดใช้งานด้วย แตะเพื่อเก็บข้อมูล
Accel Plot ยังมีตัวเลือกในการส่งสัญญาณที่มอดูเลตบนช่องสัญญาณเสียง 2 ช่องสัญญาณในแอป Accel Plot หมายถึงช่องสัญญาณซ้ายและขวาของแจ็คสัญญาณเสียงออกบนอุปกรณ์ Android สิ่งนี้มีประโยชน์หากคุณต้องการนำข้อมูล MPU-6050 มาไว้ในระบบบันทึกข้อมูลแยกต่างหาก เช่น National Instruments
วิดีโอแสดงตัวอย่างระบบการเก็บข้อมูลบนรถ R/C
ขั้นตอนที่ 7: นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม
![นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม นำเข้าไปยัง Python (หรือแพลตฟอร์มอื่นๆ) เพื่อการใช้งานเพิ่มเติม](https://i.howwhatproduce.com/images/001/image-1294-95-j.webp)
ไฟล์จะถูกบันทึกลงในอุปกรณ์ Android ไฟล์จะถูกเก็บไว้ในไดเรกทอรี "AccelPlot" สำหรับ Android API 18 และเก่ากว่า รหัสจะวางไฟล์.dat ไว้ในโฟลเดอร์ "\Tablet\Documents\AccelPlot" สำหรับ API 19 (KitKat 4.4) และสูงกว่า ฉันมีปัญหากับอุปกรณ์ Android บางตัวที่แสดงไฟล์เมื่อเชื่อมต่อผ่าน USB ในบางกรณี ฉันต้องรีบูตอุปกรณ์ Android เพื่อให้แสดง ไม่แน่ใจว่าเป็นเพราะเหตุใด แต่ควรมีสี่ไฟล์ หนึ่งไฟล์สำหรับแต่ละช่อง สามารถคัดลอกไปยังไดเร็กทอรีท้องถิ่นสำหรับงานเพิ่มเติม
ฉันใช้ Anaconda/Python 2.7 เพื่อเปิดไฟล์และแสดงข้อมูล ไฟล์ "ExploratoryAnalysis.ipynb" มีไฟล์ IPython Notebook ที่จะเปิดไฟล์ข้อมูลทั้งหมดและพล็อตข้อมูลตัวอย่าง ไฟล์ตัวอย่างจะรวมอยู่ใน GitHub repo ข้อมูลจะถูกบันทึกเป็น 4 ไบต์ขนาดใหญ่ ('>f') ดังนั้นโปรแกรมวิเคราะห์ใด ๆ ควรจะสามารถเปิดได้
ฉันได้รวมไฟล์ที่ง่ายกว่าที่เรียกว่า "ReadDataFiles.ipynb" ซึ่งแสดงวิธีการอ่านในไฟล์เดียวตามชื่อ
แนะนำ:
วิธีสร้าง Battlebot ด้วย Cardboard และ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)
![วิธีสร้าง Battlebot ด้วย Cardboard และ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ) วิธีสร้าง Battlebot ด้วย Cardboard และ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/001/image-1452-8-j.webp)
วิธีสร้าง Battlebot ด้วย Cardboard และ Arduino: ฉันสร้าง battlebots โดยใช้ Arduino UNO และใช้กระดาษแข็งเพื่อสร้างร่างกาย ฉันพยายามใช้อุปกรณ์ราคาไม่แพงและให้อิสระในการสร้างสรรค์แก่เด็กๆ ในการออกแบบบอทต่อสู้ของพวกเขา Battlebot ได้รับคำสั่งจากคอนโทรลเลอร์ไร้สาย
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
![Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ) Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/005/image-13651-j.webp)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
![DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน](https://i.howwhatproduce.com/images/009/image-24456-j.webp)
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
ควบคุม Arduino ด้วย Android และ USB: 5 ขั้นตอน
![ควบคุม Arduino ด้วย Android และ USB: 5 ขั้นตอน ควบคุม Arduino ด้วย Android และ USB: 5 ขั้นตอน](https://i.howwhatproduce.com/images/001/image-2528-40-j.webp)
ควบคุม Arduino ด้วย Android และ USB: คำแนะนำนี้เป็นเพียงการสาธิตอย่างรวดเร็วของ "Arduino USB Serial Extension" ที่สร้างขึ้นโดยนักพัฒนา Thunkable, Pavitra มันยังอยู่ระหว่างการพัฒนา ดังนั้นให้คิดว่านี่เป็นรุ่นเบต้า สรุปง่ายๆ ตอนนี้คุณสามารถค
RC Car Hack ด้วย Android และ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
![RC Car Hack ด้วย Android และ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ) RC Car Hack ด้วย Android และ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)](https://i.howwhatproduce.com/images/001/image-1369-74-j.webp)
RC Car Hack ด้วย Android และ Arduino: ในบทช่วยสอนนี้ เราจะให้ Android ควบคุม RC แบบเก่าธรรมดาของคุณ และมอบฟีเจอร์พิเศษบางอย่างให้กับมัน บทช่วยสอนนี้มีสองสิ่งที่ไม่เหมือนใครจากการแฮ็กรถอื่นๆ เรากำลังติดตั้งเซอร์โวเพื่อการควบคุมล้อที่ราบรื่น2 คือ