- Thành phần bắt buộc
- Mô-đun cảm biến MPU6050 - Giới thiệu tóm tắt
- Sơ đồ mạch đếm bước Attiny85
- Chế tạo PCB cho Attiny85 Step Counter
- Đặt hàng PCB từ PCBWay
- Lắp ráp PCB của bộ đếm bước ATtiny85
- Giải thích mã bộ đếm bước ATtiny85
- Hãy cùng đếm bước Arduino của chúng tôi để đi dạo
Trong hướng dẫn này, chúng ta sẽ chế tạo một Máy đếm bước đi dễ dàng và rẻ tiền sử dụng IC ATtiny85, Máy đo gia tốc & con quay hồi chuyển MPU6050 và Mô-đun màn hình OLED. Bộ đếm bước đơn giản dựa trên Arduino này được cung cấp năng lượng bởi một ô đồng xu 3V, giúp bạn dễ dàng mang theo khi đi dạo hoặc chạy bộ. Nó cũng yêu cầu rất ít thành phần để xây dựng và mã cũng tương đối đơn giản. Chương trình trong dự án này sử dụng MPU6050 để đo độ lớn của gia tốc dọc theo 3 trục (X, Y và Z). Sau đó, nó tính toán sự khác biệt của độ lớn gia tốc giữa các giá trị trước đó và hiện tại. Nếu sự khác biệt lớn hơn một ngưỡng nhất định (Đối với đi bộ lớn hơn 6 và chạy trên 10), thì nó sẽ tăng số bước tương ứng. Sau đó, tổng số bước đã thực hiện được hiển thị trên Màn hình OLED.
Để xây dựng bộ đếm bước di động này trên PCB, chúng tôi đã chế tạo bảng PCB của mình từ PCBWay và chúng tôi sẽ lắp ráp và kiểm tra tương tự trong dự án này. Nếu bạn muốn thêm nhiều tính năng hơn, bạn cũng có thể thêm màn hình Nhịp tim vào thiết lập này và trước đây chúng tôi cũng đã xây dựng bộ đếm bước gia tốc kế Arduino sử dụng ADXL335, hãy xem chúng nếu bạn quan tâm.
Thành phần bắt buộc
Để xây dựng máy đếm bước chân này bằng Arduino, bạn sẽ cần các thành phần sau.
- Attiny85 IC
- MPU6050
- Mô-đun màn hình OLED
- 2 × Nút đẩy
- Điện trở 5 × 10KΩ (SMD)
Mô-đun cảm biến MPU6050 - Giới thiệu tóm tắt
MPU6050 dựa trên công nghệ Hệ thống vi cơ (MEMS). Cảm biến này có gia tốc kế 3 trục, con quay hồi chuyển 3 trục và cảm biến nhiệt độ được tích hợp sẵn. Nó có thể được sử dụng để đo các thông số như Gia tốc, Vận tốc, Định hướng, Độ dịch chuyển, v.v. Trước đây, chúng tôi đã giao tiếp MPU6050 với Arduino và Raspberry pi và cũng đã xây dựng một vài dự án sử dụng nó như robot Tự cân bằng, Thước đo kỹ thuật số Arduino và Máy đo độ nghiêng Arduino.
Mô-đun MPU6050 có kích thước nhỏ và tiêu thụ điện năng thấp, độ lặp lại cao, khả năng chịu sốc cao và giá người dùng thấp. MPU6050 đi kèm với giao diện bus I2C và bus I2C phụ trợ và có thể dễ dàng can thiệp vào các cảm biến khác như từ kế và vi điều khiển.
Sơ đồ mạch đếm bước Attiny85
Sơ đồ cho Bộ đếm bước MPU6050 được đưa ra dưới đây:
Hình ảnh trên cho thấy sơ đồ mạch để giao tiếp MPU6050 và Màn hình OLED với IC Attiny85. Giao diện giữa MPU6050, Màn hình OLED và Arduino phải được triển khai bằng Giao thức I2C. Do đó, SCLPin (PB2) của ATtiny85 được kết nối với SCLPin của MPU6050 và Màn hình OLED tương ứng. Tương tự, SDAPin (PB0) của ATtiny85 được kết nối với SDAPin của MPU6050 và Màn hình OLED. Hai nút bấm cũng được kết nối với chân PB3 & PB4 của IC ATtiny85. Các nút này có thể được sử dụng để cuộn văn bản hoặc thay đổi văn bản trên màn hình.
Lưu ý: Thực hiện theo hướng dẫn trước của chúng tôi Lập trình IC ATtiny85 trực tiếp qua USB bằng Digispark Bootloader để lập trình IC ATtiny85 thông qua USB và Digispark Boot-loader.
Chế tạo PCB cho Attiny85 Step Counter
Sơ đồ đã xong và chúng ta có thể tiến hành lắp đặt PCB. Bạn có thể thiết kế PCB bằng bất kỳ phần mềm PCB nào bạn chọn. Chúng tôi đã sử dụng EasyEDA để chế tạo PCB cho dự án này.
Dưới đây là các chế độ xem mô hình 3D của lớp trên cùng và lớp dưới cùng của PCB Bộ đếm bước:
Bố cục PCB cho mạch trên cũng có sẵn để tải xuống dưới dạng Gerber từ liên kết dưới đây:
- Tệp Gerber cho ATtiny85 Step Counter
Đặt hàng PCB từ PCBWay
Bây giờ sau khi hoàn thiện thiết kế, bạn có thể tiến hành đặt hàng PCB:
Bước 1: Truy cập https://www.pcbway.com/, đăng ký nếu đây là lần đầu tiên của bạn. Sau đó, trong tab PCB Prototype, nhập kích thước PCB của bạn, số lớp và số lượng PCB bạn yêu cầu.
Bước 2: Tiến hành bằng cách nhấp vào nút 'Báo giá ngay'. Bạn sẽ được đưa đến một trang để đặt một vài thông số bổ sung như loại bảng, Lớp, Vật liệu cho PCB, Độ dày và hơn thế nữa, hầu hết chúng được chọn theo mặc định, nếu bạn đang chọn bất kỳ thông số cụ thể nào, bạn có thể chọn nó ở đây.
Bước 3: Bước cuối cùng bạn tải file Gerber lên và tiến hành thanh toán. Để đảm bảo quá trình diễn ra suôn sẻ, PCBWAY xác minh xem tệp Gerber của bạn có hợp lệ hay không trước khi tiến hành thanh toán. Bằng cách này, bạn có thể chắc chắn rằng PCB của bạn được chế tạo thân thiện và sẽ đến tay bạn theo cam kết.
Lắp ráp PCB của bộ đếm bước ATtiny85
Sau một vài ngày, chúng tôi đã nhận được PCB của mình trong một gói hàng gọn gàng và chất lượng PCB vẫn tốt như mọi khi. Lớp trên cùng và lớp dưới cùng của bảng được hiển thị bên dưới:
Sau khi chắc chắn rằng đường đi và dấu chân đã chính xác. Tôi đã tiến hành lắp ráp PCB. Bảng được hàn hoàn toàn trông giống như bên dưới:
Giải thích mã bộ đếm bước ATtiny85
Mã bộ đếm bước Arduino hoàn chỉnh được đưa ra ở cuối tài liệu. Ở đây chúng tôi đang giải thích một số phần quan trọng của mã.
Mã sử dụng các thư viện TinyWireM.h & TinyOzOLED.h. Thư viện TinyWireM có thể được tải xuống từ Trình quản lý Thư viện trong Arduino IDE và cài đặt từ đó. Để làm điều đó, hãy mở Arduino IDE và đi tới Sketch <Bao gồm Thư viện <Quản lý Thư viện . Bây giờ hãy tìm kiếm TinyWireM.h và cài đặt thư viện TinyWireM của Adafruit.
Trong khi thư viện TinyOzOLED.h có thể được tải xuống từ các liên kết nhất định.
Sau khi cài đặt các thư viện vào Arduino IDE, hãy bắt đầu mã bằng cách bao gồm các tệp thư viện cần thiết.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Sau khi bao gồm các thư viện, hãy xác định các biến để lưu trữ các bài đọc Gia tốc kế.
intaccelX, accelY, accelZ;
Bên trong vòng lặp setup () , khởi tạo thư viện dây và đặt lại cảm biến thông qua thanh ghi quản lý nguồn cũng khởi tạo giao tiếp I2C cho Màn hình OLED. Sau đó, trong các dòng tiếp theo, thiết lập hướng hiển thị và nhập địa chỉ đăng ký cho các giá trị gia tốc kế và con quay hồi chuyển.
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);
Trong hàm getAccel () , hãy bắt đầu bằng cách đọc dữ liệu gia tốc kế. Dữ liệu cho mỗi trục được lưu trữ trong hai byte (Trên & Dưới) hoặc thanh ghi. Để đọc tất cả chúng, hãy bắt đầu với thanh ghi đầu tiên và sử dụng hàm DemestFrom () , chúng tôi yêu cầu đọc tất cả 6 thanh ghi cho các trục X, Y và Z. Sau đó, chúng tôi đọc dữ liệu từ mỗi thanh ghi và vì đầu ra là phần bổ sung của hai, nên kết hợp chúng một cách thích hợp để có được các giá trị gia tốc kế hoàn chỉnh.
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 (); }
Bây giờ bên trong hàm vòng lặp, trước tiên hãy đọc các giá trị trục X, Y và Z và sau khi nhận các giá trị 3 trục, hãy tính tổng vectơ gia tốc bằng cách lấy căn bậc hai của các giá trị trục X, Y và Z. Sau đó, tính toán sự khác biệt giữa vectơ hiện tại và vectơ trước đó và nếu sự khác biệt lớn hơn 6, sau đó tăng số bước.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Bước ++; } OzOled.printString ("Các bước", 0, 4); OzOled.printNumber (Bước, 0, 8, 4); vectorprevious = véc tơ; chậm trễ (600);
Hãy cùng đếm bước Arduino của chúng tôi để đi dạo
Sau khi bạn lắp ráp xong PCB, hãy kết nối ATtiny85 với bảng lập trình và tải lên mã. Bây giờ, hãy cầm thiết lập bộ đếm bước trên tay của bạn và bắt đầu đi từng bước, nó sẽ hiển thị số bước trên OLED. Đôi khi nó làm tăng số bước khi thiết lập rung rất nhanh hoặc rất chậm.
Đây là cách bạn có thể tạo Bộ đếm bước của riêng mình bằng ATtiny85 và MPU6050. Hoạt động hoàn chỉnh của dự án cũng có thể được tìm thấy trong video được liên kết bên dưới. Hy vọng bạn thích dự án và cảm thấy thú vị khi xây dựng của riêng bạn. Mọi thắc mắc vui lòng để lại trong phần bình luận bên dưới.