2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15
Xin chào! Trong hướng dẫn này, bạn sẽ thấy cách bạn có thể tạo một La bàn kỹ thuật số bằng cách sử dụng Arduino và IDE xử lý. Đây là Dự án Arduino khá đơn giản nhưng thú vị và trông rất ngầu.
Bạn có thể xem ví dụ demo của hướng dẫn này trên video ở trên. Bạn luôn có thể tìm thấy nhiều video thú vị hơn như thế này trên kênh YouTube của tôi cũng như tìm thấy rất nhiều dự án và hướng dẫn về điện tử trên trang web của tôi, HowToMechatronics.com
Bước 1: Các bộ phận cần thiết
Đối với dự án này, bạn sẽ chỉ cần một Bảng Arduino và một Từ kế MEMS, để đo từ trường trái đất. Tôi sẽ sử dụng bảng đột phá GY-80 có chứa MC5883L 3 - Axis Magnetometer.
Trước khi chúng ta tiếp tục với mã nguồn cho dự án Nếu bạn cần thêm chi tiết về cách hoạt động của từ kế MEMS cũng như cách kết nối và sử dụng bảng đột phá GY-80 qua Giao tiếp I2C, bạn có thể xem các hướng dẫn cụ thể của tôi về điều đó.
Bước 2: Mã nguồn Arduino
Những gì chúng ta cần làm trước tiên là tải một bản phác thảo lên Arduino Board, nó sẽ đọc dữ liệu từ từ kế và nó sẽ gửi nó đến IDE xử lý. Đây là mã nguồn Arduino:
/ * Arduino Compass * * của Dejan Nedelkovski, * www. HowToMechatronics.com * * /
#include // Thư viện Arduino I2C
#define Magnetometer_mX0 0x03
#define Magnetometer_mX1 0x04 #define Magnetometer_mZ0 0x05 #define Magnetometer_mZ1 0x06 #define Magnetometer_mY0 0x07 #define Magnetometer_mY1 0x08
int mX0, mX1, mX_out;
int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;
tiêu đề nổi, tiêu đềDegrees, tiêu đềFiltered, declination;
float Xm, Ym, Zm;
#define Magnetometer 0x1E // I2C 7bit địa chỉ của HMC5883
void setup () {
// Khởi tạo giao tiếp Serial và I2C Serial.begin (115200); Wire.begin (); chậm trễ (100); Wire.beginTransmission (Từ kế); Wire.write (0x02); // Chọn thanh ghi chế độ Wire.write (0x00); // Chế độ đo liên tục Wire.endTransmission (); }
void loop () {
// ---- X-Axis Wire.beginTransmission (Từ kế); // truyền tới thiết bị Wire.write (Magnetometer_mX1); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (Từ kế); // truyền đến thiết bị Wire.write (Magnetometer_mX0); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Trục Y
Wire.beginTransmission (Từ kế); // truyền tới thiết bị Wire.write (Magnetometer_mY1); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (Từ kế); // truyền đến thiết bị Wire.write (Magnetometer_mY0); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-Axis Wire.beginTransmission (Từ kế); // truyền đến thiết bị Wire.write (Magnetometer_mZ1); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (Từ kế); // truyền đến thiết bị Wire.write (Magnetometer_mZ0); Wire.endTransmission (); Wire.requestFrom (Từ kế, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- Trục X mX1 = mX1 << 8; mX_out = mX0 + mX1; // Dữ liệu thô // Từ biểu dữ liệu: 0,92 mG / digit Xm = mX_out * 0,00092; // Đơn vị Gauss // * Từ trường Trái đất nằm trong khoảng từ 0,25 đến 0,65 Gauss, vì vậy đây là những giá trị mà chúng ta cần lấy gần đúng.
// ---- Trục Y
mY1 = mY1 << 8; mY_out = mY0 + mY1; Ym = mY_out * 0,00092;
//---- Trục Z
mZ1 = mZ1 <0,073 độ nghiêng rad = 0,073; đề mục + = declination; // Sửa khi các dấu hiệu được gọi lại if (tiêu đề <0) tiêu đề + = 2 * PI;
// Điều chỉnh do thêm góc nghiêng
if (tiêu đề> 2 * PI) tiêu đề - = 2 * PI;
headerDegrees = tiêu đề * 180 / PI; // Tiêu đề trong đơn vị Độ
// Làm mịn góc đầu ra / Bộ lọc thông thấp
headerFiltered = tiêu đềFiltered * 0.85 + headerDegrees * 0.15;
// Gửi giá trị tiêu đề qua Cổng nối tiếp đến IDE xử lý
Serial.println (headerFiltered);
chậm trễ (50); }
Bước 3: Xử lý mã nguồn IDE
Sau khi chúng tôi đã tải lên bản phác thảo Arduino trước đó, chúng tôi cần nhận dữ liệu vào IDE xử lý và vẽ La bàn kỹ thuật số. La bàn bao gồm hình nền, hình ảnh cố định của mũi tên và hình ảnh xoay của thân la bàn. Vì vậy, các giá trị của từ trường eart được tính bằng Arduino được sử dụng để xoay la bàn.
Đây là mã nguồn của IDE xử lý:
/ * Arduino Compass * * của Dejan Nedelkovski, * www. HowToMechatronics.com * * / import processing.serial. *; nhập java.awt.event. KeyEvent; nhập java.io. IOException;
Nối tiếp myPort;
PImage imgCompass; PImage imgCompassArrow; Nền PImage;
Dữ liệu chuỗi = "";
tiêu đề nổi;
void setup () {
kích thước (1920, 1080, P3D); mịn màng(); imgCompass = loadImage ("La bàn.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = new Serial (this, "COM4", 115200); // bắt đầu giao tiếp nối tiếp myPort.bufferUntil ('\ n'); }
void draw () {
hình ảnh (nền, 0, 0); // Tải hình nền pushMatrix (); dịch (chiều rộng / 2, chiều cao / 2, 0); // Chuyển hệ tọa độ vào tâm màn hình, sao cho phép quay xảy ra ngay tại tâm xoayZ (radian (-heading)); // Xoay La bàn quanh hình ảnh Z - Axis (imgCompass, -960, -540); // Tải hình ảnh La bàn và khi hệ tọa độ được di chuyển, chúng ta cần đặt hình ảnh ở -960x, -540y (một nửa kích thước màn hình) popMatrix (); // Đưa hệ tọa độ về vị trí ban đầu 0, 0, 0 ảnh (imgCompassArrow, 0, 0); // Tải hình ảnh CompassArrow không bị ảnh hưởng bởi hàm xoayZ () vì hàm popMatrix () textSize (30); text ("Tiêu đề:" + tiêu đề, 40, 40); // In giá trị của tiêu đề trên màn hình
chậm trễ (40);
}
// bắt đầu đọc dữ liệu từ Cổng nối tiếp
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // đọc dữ liệu từ Serial Port và đưa nó vào biến String "data". header = float (dữ liệu); // Chuyển giá trị String thành giá trị Float}
Tôi hy vọng bạn sẽ thích dự án này. Nếu đúng như vậy, bạn cũng có thể truy cập trang web của tôi để biết thêm các dự án thú vị.
Đề xuất:
Cách xé một thước cặp kỹ thuật số và cách hoạt động của một thước cặp kỹ thuật số: 4 bước
Làm thế nào để xé một thước cặp kỹ thuật số và cách hoạt động của một thước cặp kỹ thuật số: Nhiều người biết cách sử dụng thước cặp để đo lường. Hướng dẫn này sẽ dạy bạn cách tháo thước cặp kỹ thuật số và giải thích cách hoạt động của thước cặp kỹ thuật số
Máy quét 3D cơ bản để lập bản đồ 3D kỹ thuật số: 5 bước
Máy quét 3D cơ bản để lập bản đồ 3D kỹ thuật số: Trong dự án này, tôi sẽ mô tả và giải thích nền tảng cơ bản của quét và tái tạo 3D được áp dụng chủ yếu để quét các vật thể bán phẳng nhỏ và hoạt động của nó có thể được mở rộng cho các hệ thống quét và tái tạo có thể NS
Thủ thuật chụp ảnh "ma thuật" Rabbit in a Hat: 7 bước (có hình ảnh)
Thủ thuật chụp ảnh "ma thuật" Rabbit in a Hat: Đây là " phép thuật " lừa. Một con thỏ làm bằng băng nằm trên đỉnh mũ của một ảo thuật gia. Con thỏ băng tan ra và biến mất vĩnh viễn … hay là vậy. Bởi vì bên trong chiếc mũ của nhà ảo thuật, nó được tiết lộ có một bức ảnh của con thỏ như thể nó có
Cho phép tạo ra một quả cầu pha lê ma thuật với phép thuật! ~ Arduino ~: 9 bước
Cho phép tạo ra một quả cầu pha lê ma thuật với phép thuật! ~ Arduino ~: Trong phần này, chúng tôi sẽ tạo một Magic Ball sử dụng cảm biến chuyển động và máy quét RFID để điều khiển hoạt ảnh của đèn LED bên trong
Lưu hành tinh và túi của bạn. $$ Chuyển đổi máy ảnh kỹ thuật số P&S giá rẻ của bạn thành có thể sạc lại: 4 bước (có hình ảnh)
Lưu hành tinh và túi của bạn. $$ Chuyển đổi Máy ảnh kỹ thuật số P&S giá rẻ của bạn thành Máy ảnh có thể sạc lại: Cách đây nhiều năm, tôi đã mua một Máy ảnh kỹ thuật số Dolphin Jazz 2.0 Megapixel. Nó có các tính năng và giá cả tốt. Nó cũng có cảm giác ngon miệng đối với các nhà hàng AAA. Không ai có thể tránh khỏi một thử thách, tôi nghĩ tôi sẽ sửa đổi nó để sử dụng pin có thể sạc lại để không lãng phí ba