- ส่วนประกอบที่จำเป็น
- MPU6050 Sensor Module - แนะนำสั้น ๆ
- Attiny85 Step Counter Circuit Diagram
- การผลิต PCB สำหรับ Attiny85 Step Counter
- สั่งซื้อ PCB จาก PCBWay
- การประกอบ PCB ตัวนับขั้นตอน ATtiny85
- ATtiny85 Step Counter Code คำอธิบาย
- ลองใช้ Arduino Step Counter เพื่อเดินเล่น
ในบทช่วยสอนนี้เราจะสร้าง Pedometer ที่ง่ายและราคาถูกโดยใช้ ATtiny85 IC, MPU6050 Accelerometer & Gyroscope และโมดูลแสดงผล OLED ตัวนับก้าวที่ใช้ Arduino อย่างง่ายนี้ใช้พลังงานจากเซลล์เหรียญ 3V ทำให้ง่ายต่อการพกพาเมื่อคุณออกไปเดินเล่นหรือวิ่งเหยาะๆ นอกจากนี้ยังต้องใช้ส่วนประกอบน้อยมากในการสร้างและโค้ดก็ค่อนข้างง่าย โปรแกรมในโครงการนี้ใช้ MPU6050 เพื่อวัดขนาดของความเร่งตามแกน 3 แกน (X, Y และ Z) จากนั้นจะคำนวณความแตกต่างของขนาดความเร่งระหว่างค่าก่อนหน้าและค่าปัจจุบัน หากความแตกต่างมากกว่าเกณฑ์ที่กำหนด (สำหรับการเดินมากกว่า 6 และสำหรับการวิ่งมากกว่า 10) ก็จะเพิ่มจำนวนก้าวตามนั้น จากนั้นขั้นตอนทั้งหมดที่ดำเนินการจะแสดงบนจอแสดงผล OLED
ในการสร้างตัวนับขั้นตอนแบบพกพาบน PCB เราได้ประดิษฐ์บอร์ด PCB ของเราจาก PCBWay และเราจะประกอบและทดสอบสิ่งเดียวกันในโครงการนี้ หากคุณต้องการเพิ่มคุณสมบัติเพิ่มเติมคุณสามารถเพิ่มจอภาพ Heartbeat ในการตั้งค่านี้และก่อนหน้านี้เราได้สร้างตัวนับขั้นตอน Arduino accelerometer โดยใช้ ADXL335 ตรวจสอบพวกเขาหากคุณสนใจ
ส่วนประกอบที่จำเป็น
ในการสร้าง เครื่องนับก้าวโดยใช้ Arduino คุณจะต้องมีส่วนประกอบต่อไปนี้
- ไอซี Attiny85
- MPU6050
- โมดูลแสดงผล OLED
- ปุ่มกด 2 ×
- 5 ×10KΩตัวต้านทาน (SMD)
MPU6050 Sensor Module - แนะนำสั้น ๆ
MPU6050 ใช้เทคโนโลยี Micro-Mechanical Systems (MEMS) เซ็นเซอร์นี้มี เครื่องวัดความเร่งแบบ 3 แกนไจโรสโคปแบบ 3 แกนและเซ็นเซอร์อุณหภูมิในตัว สามารถใช้ในการวัดพารามิเตอร์เช่น Acceleration, Velocity, Orientation, Displacement เป็นต้นก่อนหน้านี้เราได้เชื่อมต่อ MPU6050 กับ Arduino และ Raspberry pi แล้วและยังสร้างโครงการอีกสองสามโครงการโดยใช้หุ่นยนต์ Self Balancing, Arduino Digital Protractor และ Arduino Inclinometer
โมดูล MPU6050 มีขนาดเล็กและใช้พลังงานต่ำมีการทำซ้ำสูงทนต่อแรงกระแทกสูงและราคาผู้ใช้ต่ำ MPU6050 มาพร้อมกับบัส I2C และอินเตอร์เฟสบัสเสริม I2C และสามารถรบกวนเซ็นเซอร์อื่น ๆ เช่นแมกนีโตมิเตอร์และไมโครคอนโทรลเลอร์ได้อย่างง่ายดาย
Attiny85 Step Counter Circuit Diagram
แผนผังสำหรับ MPU6050 Step Counter มีดังต่อไปนี้:
ภาพด้านบนแสดงแผนภาพวงจรสำหรับการเชื่อมต่อ MPU6050 และ OLED Display กับ Attiny85 IC ต้องใช้อินเทอร์เฟซระหว่าง MPU6050, OLED Display และ Arduino โดยใช้ I2C Protocol ดังนั้น SCLPin (PB2) ของ ATtiny85 จึงเชื่อมต่อกับ SCLPin ของ MPU6050 และ OLED Display ตามลำดับ ในทำนองเดียวกัน SDAPin (PB0) ของ ATtiny85 นั้นเชื่อมต่อกับ SDAPin ของ MPU6050 และ OLED Display ปุ่มกดสองปุ่มยังเชื่อมต่อกับพิน PB3 และ PB4 ของ ATtiny85 IC ปุ่มเหล่านี้สามารถใช้เพื่อเลื่อนข้อความหรือเปลี่ยนข้อความที่แสดงได้
หมายเหตุ: ทำตามบทช่วยสอนก่อนหน้าของเราการเขียนโปรแกรม ATtiny85 IC โดยตรงผ่าน USB โดยใช้ Digispark Bootloader เพื่อตั้งโปรแกรม ATtiny85 IC ผ่าน USB และ Digispark Boot-loader
การผลิต PCB สำหรับ Attiny85 Step Counter
แผนผังเสร็จสิ้นและเราสามารถดำเนินการจัดวาง PCB ได้ คุณสามารถออกแบบ PCB โดยใช้ซอฟต์แวร์ PCB ที่คุณเลือกได้ เราได้ใช้ EasyEDA เพื่อสร้าง PCB สำหรับโครงการนี้
ด้านล่างนี้คือมุมมองโมเดล 3 มิติของเลเยอร์บนสุดและชั้นล่างสุดของ Step Counter PCB:
เค้าโครง PCB สำหรับวงจรด้านบนสามารถดาวน์โหลดได้ในชื่อ Gerber จากลิงค์ด้านล่าง:
- ไฟล์ Gerber สำหรับ ATtiny85 Step Counter
สั่งซื้อ PCB จาก PCBWay
หลังจากเสร็จสิ้นการออกแบบแล้วคุณสามารถดำเนินการสั่งซื้อ PCB ได้:
ขั้นตอนที่ 1: เข้าสู่ https://www.pcbway.com/ ลงทะเบียนหากนี่เป็นครั้งแรกของคุณ จากนั้นในแท็บ PCB Prototype ให้ป้อนขนาดของ PCB จำนวนเลเยอร์และจำนวน PCB ที่คุณต้องการ
ขั้นตอนที่ 2: ดำเนินการต่อโดยคลิกที่ปุ่ม 'อ้างสิทธิ์ทันที' คุณจะเข้าสู่หน้าที่ตั้งค่าพารามิเตอร์เพิ่มเติมบางอย่างเช่นประเภทบอร์ด, เลเยอร์, วัสดุสำหรับ PCB, ความหนาและอื่น ๆ โดยส่วนใหญ่จะถูกเลือกโดยค่าเริ่มต้นหากคุณเลือกพารามิเตอร์เฉพาะใด ๆ คุณสามารถเลือกได้ ที่นี่
ขั้นตอนที่ 3: ขั้นตอนสุดท้ายคือการอัปโหลดไฟล์ Gerber และดำเนินการชำระเงิน เพื่อให้แน่ใจว่ากระบวนการนี้ราบรื่น PCBWAY จะตรวจสอบว่าไฟล์ Gerber ของคุณถูกต้องหรือไม่ก่อนดำเนินการชำระเงิน ด้วยวิธีนี้คุณจะมั่นใจได้ว่า PCB ของคุณเป็นมิตรต่อการผลิตและจะไปถึงคุณอย่างมุ่งมั่น
การประกอบ PCB ตัวนับขั้นตอน ATtiny85
หลังจากนั้นไม่กี่วันเราได้รับ PCB ของเราในแพ็คเกจที่เรียบร้อยและคุณภาพของ PCB ก็ดีเช่นเคย ชั้นบนสุดและชั้นล่างสุดของกระดานแสดงอยู่ด้านล่าง:
หลังจากตรวจสอบให้แน่ใจว่าแทร็กและรอยเท้าถูกต้อง ฉันดำเนินการประกอบ PCB บอร์ดบัดกรีทั้งหมดมีลักษณะดังนี้:
ATtiny85 Step Counter Code คำอธิบาย
รหัสตัวนับขั้นตอน Arduino ที่สมบูรณ์ จะได้รับที่ส่วนท้ายของเอกสาร เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ด
โค้ดนี้ใช้ไลบรารี TinyWireM.h & TinyOzOLED.h คุณสามารถดาวน์โหลดไลบรารี TinyWireM ได้จาก Library Manager ใน Arduino IDE และติดตั้งจากที่นั่น สำหรับที่เปิด Arduino IDE และไปที่ ร่าง < ได้แก่ ห้องสมุด <จัดการห้องสมุด ตอนนี้ค้นหา TinyWireM.h และติดตั้ง ห้องสมุด TinyWireM โดย Adafruit
ในขณะที่ไลบรารี TinyOzOLED.h สามารถดาวน์โหลดได้จากลิงก์ที่กำหนด
หลังจากติดตั้งไลบรารีไปยัง Arduino IDE แล้วให้เริ่มโค้ดโดยรวมไฟล์ไลบรารีที่จำเป็น
# รวม "TinyWireM.h" # รวม "TinyOzOLED.h"
หลังจากรวมไลบรารีแล้วให้กำหนดตัวแปรเพื่อจัดเก็บการอ่านค่า Accelerometer
intaccelX, accelY, accelZ;
ภายใน ลูปการ ตั้งค่า () เริ่มต้นไลบรารีลวดและรีเซ็ตเซ็นเซอร์ผ่านทะเบียนการจัดการพลังงานและเริ่มต้นการสื่อสาร I2C สำหรับจอแสดงผล OLED จากนั้นในบรรทัดถัดไปตั้งค่าการวางแนวการแสดงผลและป้อนที่อยู่ลงทะเบียนสำหรับค่ามาตรความเร่งและค่าไจโรสโคป
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
ใน ฟังก์ชัน getAccel () เริ่มต้นด้วยการอ่านข้อมูลมาตรความเร่ง ข้อมูลสำหรับแต่ละแกนจะถูกจัดเก็บเป็นสองไบต์ (บนและล่าง) หรือรีจิสเตอร์ ในการอ่านทั้งหมดให้เริ่มต้นด้วยการลงทะเบียนแรกและใช้ ฟังก์ชัน requiestFrom () เราขอให้อ่านการลงทะเบียนทั้ง 6 รายการสำหรับแกน X, Y และ Z จากนั้นเราจะอ่านข้อมูลจากแต่ละรีจิสเตอร์และเนื่องจากผลลัพธ์เป็นส่วนเสริมของสองอย่างให้รวมเข้าด้วยกันอย่างเหมาะสมเพื่อให้ได้ค่ามาตรความเร่งที่สมบูรณ์
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
ตอนนี้อยู่ในฟังก์ชันลูปก่อนอื่นให้อ่านค่าแกน X, Y และ Z และหลังจากได้ค่า 3 แกนแล้วให้คำนวณเวกเตอร์ความเร่งทั้งหมดโดยหาค่ารากที่สองของค่าแกน X, Y และ Z จากนั้นคำนวณความแตกต่างระหว่างเวกเตอร์ปัจจุบันและเวกเตอร์ก่อนหน้าและถ้าความแตกต่างมีค่ามากกว่า 6 ให้เพิ่มจำนวนก้าว
getAccel (); เวกเตอร์ = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; ถ้า (totalvector> 6) {ขั้นตอน ++; } OzOled.printString ("ขั้นตอน", 0, 4); OzOled.printNumber (ขั้นตอน, 0, 8, 4); vectorprevious = เวกเตอร์; ล่าช้า (600);
ลองใช้ Arduino Step Counter เพื่อเดินเล่น
เมื่อคุณประกอบ PCB เสร็จแล้วให้เชื่อมต่อ ATtiny85 เข้ากับบอร์ดโปรแกรมเมอร์และอัปโหลดรหัส ตอนนี้ใช้การตั้งค่าตัวนับขั้นตอนในมือของคุณและเริ่มเดินทีละขั้นตอนควรแสดงจำนวนก้าวบน OLED บางครั้งอาจเพิ่มจำนวนขั้นตอนเมื่อการตั้งค่าสั่นเร็วมากหรือช้ามาก
นี่คือวิธีสร้างตัวนับก้าวของคุณเอง โดยใช้ ATtiny85 และ MPU6050 นอกจากนี้คุณยังสามารถดูการทำงานทั้งหมดของโครงการได้ในวิดีโอที่ลิงก์ด้านล่าง หวังว่าคุณจะสนุกกับโครงการและพบว่ามันน่าสนใจที่จะสร้างของคุณเอง หากคุณมีคำถามใด ๆ โปรดทิ้งไว้ในส่วนความคิดเห็นด้านล่าง