Mục lục:
- Bước 1: GIỚI THIỆU VỀ DỰ ÁN NÀY
- Bước 2: Yêu cầu phần cứng
- Bước 3: Mạch & Kết nối
- Bước 4: LÀM VIỆC
- Bước 5: MÃ
- Bước 6: XEM VIDEO
Video: Điều khiển Servo bằng MPU6050 giữa Arduino và ESP8266 với HC-12: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong dự án này, chúng tôi đang điều khiển vị trí của động cơ servo sử dụng mpu6050 và HC-12 để giao tiếp giữa Arduino UNO và ESP8266 NodeMCU.
Bước 1: GIỚI THIỆU VỀ DỰ ÁN NÀY
Đây là một dự án IoT khác dựa trên HC-12 RF-module. Ở đây, dữ liệu imu (mpu6050) từ arduino được sử dụng để điều khiển động cơ servo (kết nối với Nodemcu). Ở đây, trực quan hóa dữ liệu cũng được thực hiện ở phía arduino, nơi dữ liệu cao độ mpu6050 (xoay quanh trục x) được hiển thị bằng một bản phác thảo xử lý (sẽ thảo luận ở phần sau). Về cơ bản, dự án này chỉ là một chút khởi động để ghi nhớ các khía cạnh khác nhau của điều khiển Imu & Servo với Arduino và ESP8266 gật gù.
MỤC TIÊU
Mục tiêu của điều này khá rõ ràng, Chúng tôi đang điều khiển vị trí của động cơ Servo bằng cách sử dụng giá trị cao độ của IMU. Và tất cả cùng cao độ và vị trí động cơ đồng bộ này được hiển thị bằng Xử lý.
Bước 2: Yêu cầu phần cứng
Mô-đun Wifi NodeMCU ESP8266 12E
Breadboard không hàn
Dây nhảy
MPU6050 accelo + con quay hồi chuyển
Mô-đun RF HC-12 (cặp)
Động cơ Servo SG90
Bước 3: Mạch & Kết nối
Kết nối là thẳng về phía trước. Bạn có thể cấp nguồn cho servo với 3.3V của Nodemcu. Bạn cũng có thể sử dụng Vin để cấp nguồn cho servo nếu nút của bạn có nhiều điện áp trên chân đó. Nhưng hầu hết các bo mạch Lolin không có 5V tại Vin (phụ thuộc vào nhà sản xuất).
Các sơ đồ mạch này được tạo bằng EasyADA.
Bước 4: LÀM VIỆC
Ngay sau khi bản phác thảo arduino bắt đầu, nó sẽ gửi góc cao độ (trong khoảng từ -45 đến 45) tới bộ thu hc12 của Nodemcu, nơi được ánh xạ với vị trí Servo từ 0 đến 180 độ. Ở đây chúng tôi đã sử dụng góc độ từ -45 đến +45 độ để chúng tôi có thể dễ dàng ánh xạ nó đến vị trí Servo.
Bây giờ, bạn đang nghĩ tại sao chúng ta có thể đơn giản sử dụng phương pháp bản đồ như sau: -
int pos = map (val, -45, 45, 0, 180);
Bởi vì góc âm do máy phát hc12 gửi đi nhận được là:
Hiệp 1: (T) 0 đến 45 => 0 đến 45 (R)
Hiệp 2: (T) -45 đến -1 => 255 đến 210 (R)
Vì vậy, bạn phải ánh xạ nó thành 0 đến 180 như
if (val> = 0 && val <= 45) pos = (val * 2) +90; khác pos = (val-210) * 2;
Tôi đang tránh phương pháp bản đồ do một số lỗi không liên quan. Bạn có thể thử nó và nhận xét nó hoạt động với bạn
if (val> = 0 && val <= 45) pos = map (val, 0, 45, 90, 180); else pos = map (val, 255, 210, 0, 90); // Đối số thứ 4 có thể là 2 (bạn có thể kiểm tra)
Tính toán góc Pitch MPU6050
Tôi đang sử dụng thư viện MPU6050_tockn dựa trên việc cung cấp dữ liệu thô từ IMU.
int pitchAngle = mpu6050.getAngleX ()
Điều này sẽ cho chúng ta góc quay về trục x. Như bạn thấy trong hình, imu của tôi được đặt theo chiều dọc trên breadboard, vì vậy đừng nhầm lẫn với cao độ và cuộn. Trên thực tế, bạn sẽ luôn nhìn thấy trục được in trên bảng đột phá.
Thông qua thư viện này, bạn không phải bận tâm về thiết bị điện tử bên trong của việc đọc các thanh ghi cụ thể cho hoạt động cụ thể. bạn chỉ xác định công việc và bạn đã hoàn thành!
Btw nếu bạn muốn tự mình tính toán góc. Bạn có thể dễ dàng thực hiện như sau:
#bao gồm
const int MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; void setup () {Wire.begin (); Wire.beginTransmission (MPU6050_addr); Wire.write (0x6B); Wire.write (0); Wire.endTransmission (true); Serial.begin (9600); } void loop () {Wire.beginTransmission (MPU6050_addr); Wire.write (0x3B); Wire.endTransmission (sai); Wire.requestFrom (MPU6050_addr, 14, true); AcX = Wire.read () << 8 | Wire.read (); AcY = Wire.read () << 8 | Wire.read (); AcZ = Wire.read () << 8 | Wire.read (); Temp = Wire.read () << 8 | Wire.read (); GyroX = Wire.read () << 8 | Wire.read (); GyroY = Wire.read () << 8 | Wire.read (); GyroZ = Wire.read () << 8 | Wire.read ();
int xAng = map (AcX, minVal, maxVal, -90, 90); int yAng = map (AcY, minVal, maxVal, -90, 90); int zAng = map (AcZ, minVal, maxVal, -90, 90); x = RAD_TO_DEG * (atan2 (-yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 (-yAng, -xAng) + PI); Serial.print ("AngleX ="); // Pitch Serial.println (x); Serial.print ("AngleY ="); // Cuộn Serial.println (y); Serial.print ("AngleZ ="); // Yaw Serial.println (z); }
Tuy nhiên, không nhất thiết bạn phải viết nhiều mã này để có được góc. Bạn nên biết sự thật đằng sau hiện trường nhưng việc sử dụng thư viện của người khác rất hiệu quả trong nhiều dự án. Bạn có thể đọc về imu này và các phê duyệt khác để nhận thêm dữ liệu đã lọc từ liên kết sau: Explore-mpu6050.
Mã arduino của tôi ở đầu truyền chỉ có 30 dòng với sự trợ giúp của thư viện MPU6050_tockn vì vậy việc sử dụng thư viện là tốt trừ khi bạn không cần một số thay đổi cốt lõi đối với chức năng của IMU. Một thư viện có tên I2Cdev của Jeff Rowberg rất hữu ích nếu bạn muốn một số dữ liệu được lọc bằng DMP (Bộ xử lý chuyển động kỹ thuật số) của IMU.
Tích hợp với Xử lý
Ở đây, Xử lý được sử dụng để hiển thị dữ liệu quay về trục x của IMU như được tính toán bởi dữ liệu thô đến từ MPU6050. Chúng tôi nhận dữ liệu thô đến trong SerialEvent theo cách sau:
void serialEvent (Serial myPort) {
inString = myPort.readString (); try {// Phân tích cú pháp dữ liệu // println (inString); String dataStrings = split (inString, ':'); if (dataStrings.length == 2) {if (dataStrings [0].equals ("RAW")) {for (int i = 0; i <dataStrings.length - 1; i ++) {raw = float (dataStrings [i + 1]); }} else {println (inString); }}} catch (Exception e) {println ("Caught Exception"); }}
Ở đây bạn có thể thấy trực quan trong hình ảnh đính kèm trong bước này. Dữ liệu vị trí nhận được ở đầu nút cũng được nhìn thấy trên màn hình nối tiếp như trong hình ảnh.
Bước 5: MÃ
Tôi đã đính kèm kho lưu trữ github. Bạn có thể sao chép và phân nhánh nó để sử dụng trong các dự án của mình.
mã của tôi
Repo bao gồm 2 bản phác thảo arduino cho máy phát (arduino + IMU) & máy thu (Nodemcu + Servo).
Và một bản phác thảo xử lý. Gắn dấu sao repo nếu điều này giúp ích cho dự án của bạn.
Trong hướng dẫn này, R- Máy thu & T- Máy phát
Bước 6: XEM VIDEO
Tôi sẽ đính kèm video vào ngày mai. Theo dõi tôi để nhận thông báo.
Cảm ơn tất cả!
Đề xuất:
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: 5 bước
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: Đây là các hướng dẫn để tạo ô tô được điều khiển từ xa của riêng bạn, được điều khiển bằng bộ điều khiển Xbox 360 không dây
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Điều khiển vô tuyến RF 433MHZ bằng HT12D HT12E - Tạo điều khiển từ xa Rf bằng HT12E & HT12D với 433mhz: 5 bước
Điều khiển vô tuyến RF 433MHZ bằng HT12D HT12E | Tạo điều khiển từ xa Rf bằng HT12E & HT12D với 433mhz: Trong phần hướng dẫn này, tôi sẽ chỉ cho bạn cách tạo điều khiển từ xa RADIO bằng cách sử dụng mô-đun bộ thu phát 433mhz với mã hóa HT12E & IC giải mã HT12D.Trong hướng dẫn này, bạn có thể gửi và nhận dữ liệu bằng các LINH KIỆN rất rẻ như: HT
Servo điều khiển bằng cần điều khiển bằng Arduino (có lập trình): 4 bước
Servo điều khiển cần điều khiển sử dụng Arduino (có lập trình): Trong hướng dẫn này, chúng tôi sẽ tạo một servo điều khiển cần điều khiển bằng cách sử dụng Arduino Uno .ervo sẽ di chuyển theo chuyển động của cần điều khiển
Điều khiển các thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) với Màn hình nhiệt độ và độ ẩm: 9 bước
Điều khiển thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) Có Hiển thị nhiệt độ và độ ẩm: xin chào, tôi là Abhay và đây là blog đầu tiên của tôi về Các thiết bị điện và hôm nay tôi sẽ hướng dẫn bạn cách điều khiển các thiết bị điện bằng điều khiển từ xa bằng cách xây dựng cái này dự án đơn giản. cảm ơn atl lab đã hỗ trợ và cung cấp tài liệu