Mục lục:

Hệ thống radar đơn giản từ Magicbit: 6 bước
Hệ thống radar đơn giản từ Magicbit: 6 bước
Anonim

Hướng dẫn này chỉ ra cách tạo một hệ thống radar đơn giản bằng cách sử dụng cảm biến HC-SR04 và bảng phát triển Microbit có xử lý và Arduino IDE.

Quân nhu:

  • SG90 động cơ micro-servo
  • Dây nhảy (chung)
  • Breadboard (chung)
  • Magicbit
  • Cáp USB-A đến Micro-USB
  • Cảm biến siêu âm - HC-SR04 (Chung)

Bước 1: Câu chuyện

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về cách tạo một hệ thống radar đơn giản bằng cách sử dụng bảng nhà phát triển lõi Magicbit. Với mục đích này, chúng tôi sử dụng cảm biến siêu âm HC-SR04 và để hiển thị dữ liệu, chúng tôi sử dụng môi trường xử lý. Hãy bắt đầu.

Bước 2: Lý thuyết và Phương pháp luận

Đầu tiên, hãy thảo luận về cách thức hoạt động của điều này. Nguyên tắc rất dễ dàng. Đầu tiên, chúng tôi xoay cảm biến của mình xung quanh trục thẳng đứng trong phạm vi 180 độ liên tục. Trong quá trình chuyển động đó, chúng tôi lấy dữ liệu về khoảng cách đến vật thể gần nhất từ cảm biến siêu âm ở mọi góc độ. Đối với quá trình này, chúng tôi sử dụng bảng lõi Magicbit. Sau đó, chúng tôi phải thiết lập kết nối với môi trường xử lý để hiển thị dữ liệu của chúng tôi. Do đó, chúng tôi sử dụng giao thức truyền thông nối tiếp với tốc độ truyền phù hợp. Sau đó, chúng tôi thiết kế giao diện hệ thống radar của mình bằng cách sử dụng IDE xử lý. Trong IDE đó, chúng tôi định cấu hình giao tiếp nối tiếp của mình để nhận dữ liệu thời gian thực qua nối tiếp. Vì vậy, chúng tôi thực hiện giao tiếp thời gian thực với Magicbit và hiển thị dữ liệu gửi từ Magicbit đến IDE xử lý.

Bước 3: Thiết lập phần cứng

Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng

Đối với dự án này, chúng tôi chủ yếu sử dụng ba thành phần phần cứng. Đó là Magicbit, động cơ servo và cảm biến siêu âm. Kết nối giữa tất cả các bộ phận này được thể hiện trong Hình trên.

Cảm biến siêu âm được sử dụng 3,3 v để tăng sức mạnh. Do đó, chúng tôi đã sử dụng cổng dưới bên phải của bảng Magicbit để kết nối cảm biến siêu âm với Magicbit. Nhưng động cơ servo được sử dụng 5V để hoạt động bình thường, vì vậy chúng tôi đã sử dụng cổng bên trái phía dưới để kết nối động cơ servo với Magicbit. Trong trường hợp này, chúng tôi sử dụng mô-đun đầu nối servo Magic bit. Nhưng nếu bạn không có mô-đun đó, bạn có thể sử dụng ba dây jumper để kết nối 5V đến 5V, Gnd với Gnd và chân tín hiệu với chân 26 trên magicbit.

Sau khi xây dựng mạch, chúng tôi có một phần cơ khí nhỏ để xây dựng. đặt đầu nối servo một bên cho động cơ servo bằng cách sử dụng đai ốc nhỏ. Sau đó, cố định cảm biến trên đầu nối đó bằng cách sử dụng một số giá đỡ hình chữ L hoặc cách thích hợp. Sau khi toàn bộ hệ thống, chúng tôi đã cố định trên breadboard. Nhưng bạn có thể sử dụng bề mặt khác để gắn servo và Magicbit.

Bước 4: Thiết lập phần mềm

Thiết lập phần mềm
Thiết lập phần mềm
Thiết lập phần mềm
Thiết lập phần mềm

Mặt phần mềm là một chút phức tạp. Để hiểu đúng, bạn có thể tham khảo các liên kết sau trước khi chuyển sang phần tiếp theo.

magicbit-arduino.readthedocs.io/en/latest/

hello.processing.org/editor/

Hãy xem mã Arduino IDE và cách mã đó hoạt động.

Để điều khiển servo, chúng tôi sử dụng thư viện servo ESP32. Thư viện này gần như bao gồm trong trình quản lý bảng bit ma thuật trong Arduino IDE. Để đối phó với cảm biến siêu âm, chúng tôi sử dụng thư viện newPing. Điều này có thể được tải xuống từ liên kết sau.

bitbucket.org/teckel12/arduino-new-ping/do…

Tải xuống tệp zip và truy cập công cụ> bao gồm thư viện> thêm thư viện Zip trong Arduino. bây giờ hãy chọn tệp zip đã tải xuống của bạn của thư viện ghim mới. Để giao tiếp với quá trình xử lý, chúng tôi đã sử dụng giao tiếp nối tiếp với tốc độ truyền 115200. Đây là tần số thích hợp nhất cho ESP32. Ở mọi góc độ, chúng tôi gửi dữ liệu của mình tới máy tính bằng giao thức này. Khoảng cách đến đối tượng phía trước gần nhất từ cảm biến, hướng quay và góc xoay được bao gồm trong dữ liệu này. Sử dụng hai vòng lặp for, chúng tôi xoay servo theo hai hướng. Trong khi xoay một độ, chúng tôi đã gửi dữ liệu nối tiếp 4 lần. Lý do cho điều đó bạn có thể hiểu trong phần xử lý giải thích.

Bây giờ là lúc xem xét môi trường xử lý. Đây là phần mềm lập trình dựa trên java. Chúng ta có thể viết bản phác thảo chương trình của mình trong bản phác thảo này trong quá trình xử lý IDE. Chúng tôi cũng có thể tạo đầu ra trực quan từ việc chạy chương trình của mình. Ngoài ra, bạn có thể lấy đầu ra dưới dạng các đối tượng 2D và 3d. Không chỉ vậy, điều này có thể được sử dụng để xử lý hình ảnh và nhiều thứ khác.

Trong bản phác thảo xử lý đầu tiên, chúng tôi thiết kế giao diện hiển thị dữ liệu của chúng tôi bằng cách sử dụng các chức năng đồ họa đơn giản. Khi bắt đầu mã, chúng tôi thiết lập giao tiếp nối tiếp của mình bằng cách bao gồm các thư viện nối tiếp. Trong chức năng thiết lập, bạn phải thực hiện một số thay đổi tùy theo cổng USB mà bạn đã sử dụng để kết nối Magicbit với máy tính. bạn có thể kiểm tra cổng của mình bằng Arduino IDE khi bạn thiết lập Arduino IDE để tải lên mã. Sau đó, thay đổi tên cổng com trong phần thiết lập trong phác thảo xử lý. khi dữ liệu nối tiếp có sẵn, chức năng Serialevent sẽ tự động kích hoạt. Vì vậy, logic chính của mã được bao gồm trong sự kiện nối tiếp để ngăn chặn các góc và dữ liệu bị thiếu. Khi có dữ liệu mới, chúng tôi vẽ một đường thẳng trên màn hình theo góc của chúng tôi, lúc đó nếu không có đối tượng phát hiện thì toàn bộ đường thẳng có màu xanh lục. Nếu không thì một số phần của đường sẽ có màu đỏ theo khoảng cách từ cảm biến đến đối tượng. Cũng theo hướng quay, chúng ta vẽ thêm 200 đường gần đường thẳng đó với mức độ màu xanh lá cây giảm dần. giữa mỗi Main chúng ta có độ chênh lệch 0,25 độ. Vì vậy, chúng tôi nhận được 4 lần đọc cùng một lúc từ Magicbit trong mỗi vòng quay độ. Do đó, chúng tôi có thể tạo tìm kiếm đẹp mắt trên màn hình.

Sau khi tải lên mã thành công hoàn toàn để ma thuật và thiết lập phần cứng thành công mở IDE xử lý và chạy mã bằng cách nhấp vào nút chạy. Bây giờ bạn có hệ thống radar rất đơn giản.

Bạn có thể tùy chỉnh các mã như bạn muốn những gì bạn muốn hiển thị.

Bước 5: Khắc phục sự cố

Xử lý phác thảo không chạy.

  • Chờ một thời gian. Vì thời gian khởi động phụ thuộc vào hiệu suất PC và GPU của bạn.
  • Kiểm tra số cổng sê-ri có đúng trên bản phác thảo xử lý không.
  • Kiểm tra kết nối USB đã được cố định đúng chưa.
  • Kiểm tra kết nối giữa cảm biến siêu âm và Magicbit.
  • Mở màn hình nối tiếp và kiểm tra dữ liệu đến từ Arduino. Nếu không, thì vấn đề là do mã Arduino của bạn hoặc trên kết nối USB của bạn.

Servo không hoạt động.

  • Kiểm tra kết nối USB đã được cố định đúng chưa.
  • Kiểm tra hệ thống dây điện.
  • Kiểm tra servo ở tình trạng tốt.

Bước 6: Mã Arduino

#bao gồm

# xác định TRIGGER_PIN 21 # xác định ECHO_PIN 22 # xác định MAX_DISTANCE 200 sonar mớiPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); #include // bao gồm thư viện servo int distance; Servo RadarServo; void setup () {Serial.begin (115200); RadarServo.attach (26); // Xác định chân nào là độ trễ gắn động cơ servo (3000); } void loop () {// quay động cơ servo từ 15 đến 165 độ for (int i = 0; i <= 180; i ++) {RadarServo.write (i); chậm trễ (50); distance = sonar.ping_cm (); // Gọi hàm tính khoảng cách được đo bởi Cảm biến siêu âm cho từng độ for (int j = 0; j0) {break; } Serial.print (i); // Gửi mức độ hiện tại vào Serial Port Serial.print (","); // Gửi ký tự bổ sung ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE Xử lý để lập chỉ mục Serial.print (j); // Gửi mức độ hiện tại vào Serial Port Serial.print ("*"); Serial.print (1); // Gửi giá trị khoảng cách vào Serial Port Serial.print ("/"); // Gửi ký tự bổ sung ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE xử lý để lập chỉ mục Serial.print (distance); // Gửi giá trị khoảng cách vào Serial Port Serial.print ("."); // Gửi ký tự cộng ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE xử lý để lập chỉ mục}} // Lặp lại các dòng trước đó từ 165 đến 15 độ for (int i = 180; i> = 0; i -) {RadarServo.write (i); chậm trễ (50); khoảng cách = sonar.ping_cm (); for (int j = 75; j> = 0; j- = 25) {if (i == 180 && (j == 75 || j == 50 || j == 25)) {continue; } Serial.print (i); // Gửi mức độ hiện tại vào Serial Port Serial.print (","); // Gửi ký tự bổ sung ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE xử lý để lập chỉ mục Serial.print (j); // Gửi mức độ hiện tại vào Serial Port Serial.print ("*"); Serial.print (-1); // Gửi giá trị khoảng cách vào Serial Port Serial.print ("/"); // Gửi ký tự bổ sung ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE Xử lý để lập chỉ mục Serial.print (distance); // Gửi giá trị khoảng cách vào Serial Port Serial.print ("."); // Gửi ký tự bổ sung ngay bên cạnh giá trị trước đó cần thiết sau này trong IDE xử lý để lập chỉ mục}}

}

Đề xuất: