Mục lục:

UCL Embedded - B0B the Linefollower: 9 bước
UCL Embedded - B0B the Linefollower: 9 bước

Video: UCL Embedded - B0B the Linefollower: 9 bước

Video: UCL Embedded - B0B the Linefollower: 9 bước
Video: Human vs Robot | Artificial Intelligence 2024, Tháng bảy
Anonim
UCL Embedded - B0B the Linefollower
UCL Embedded - B0B the Linefollower

Đây là B0B. *

B0B là một chiếc xe ô tô Điều khiển bằng sóng vô tuyến chung, tạm thời phục vụ trên cơ sở một rô bốt chạy theo dòng.

Giống như rất nhiều robot đi theo đường trước anh ta, anh ta sẽ cố gắng hết sức để duy trì một đường dây do sự chuyển tiếp giữa sàn và vật liệu tương phản, trong trường hợp của chúng tôi là băng keo.

Không giống như rất nhiều robot theo dòng khác, B0B cũng thu thập dữ liệu và gửi nó qua WiFi.

Hoàn toàn quá mức cần thiết cho một dự án sở thích, nó liên quan đến một số chủ đề bạn có thể thấy thú vị. Hướng dẫn này mô tả ngày sinh của anh ấy, chức năng của anh ấy và cách bạn có thể làm cho một người giống như anh ấy.

Nó cũng liên quan đến việc tức giận với các thiết bị điện tử khác nhau vì không hoạt động như chúng tôi muốn và các bước chúng tôi đã thực hiện để vượt qua những khó khăn đó, (Tôi đang xem xét bạn ESP 8266-01).

Có 2 mã để làm cho dự án hoạt động. Mã đầu tiên dành cho mô-đun ESP8266 mà chúng tôi sử dụng Arduino làm lập trình viên và mã thứ hai sẽ chạy trên Arduino.

Bước 1: Các thành phần

Đối với dự án này, bạn sẽ cần:

Phần cứng:

• Xe điều khiển vô tuyến 1x, (phải có ESC và trợ lực lái).

Chúng tôi đã sử dụng hầu hết là Traxxas 1/16 E-Revo VXL, chủ yếu là vì đó là những gì chúng tôi có và khá tự tin rằng chúng tôi có thể điều khiển nó bằng Arduino. Cũng bởi vì nó sẽ mang theo một lượng phần cứng bổ sung không đáng kể, chúng tôi tin rằng đây sẽ không phải là vấn đề đối với 1/16 E-Revo.

Tuy nhiên, hầu hết ô tô điều khiển bằng sóng radio (có thể dễ dàng tháo rời) có thể được sử dụng để thay thế và quy trình sẽ rất giống nhau.

• Một tấn băng keo.

Màu sắc nên tương phản với sàn nhà càng nhiều càng tốt. Trong môi trường thử nghiệm của chúng tôi, chúng tôi đã sử dụng băng trắng trên nền tối.

• 1x Arduino Mega 2560.

Các Arduino nhỏ hơn có lẽ cũng tốt, nhưng bạn sẽ bị ép buộc.

• 1x bảng bánh mì lớn.

Một cái là đủ, nhưng chúng tôi cũng có một cái nhỏ hơn để tách các đường dây điện áp khác ra để giảm rủi ro lỗi cho người dùng.

• Cảm biến tương tự 1x TCRT5000 IR (dùng để tránh va chạm).

Thương hiệu / mô hình chính xác không quan trọng nếu nó tương thích với Arduino và đo khoảng cách. Tìm kiếm các từ khóa như cảm biến “Khoảng cách”, “chướng ngại vật”. Về mặt kỹ thuật, cảm biến kỹ thuật số sẽ hoạt động tốt với những thay đổi nhỏ về mã, nhưng chúng tôi đang sử dụng cảm biến tương tự.

• Trọng lực 1x hoặc 2x: Cảm biến thang độ xám tương tự v2

Một là cần thiết cho người theo dòng. Mô hình chính xác không quan trọng, miễn là nó đang xem xét cường độ ánh sáng phản xạ và xuất ra tín hiệu tương tự. Thứ hai để phát hiện "phòng" không hoạt động tốt như mong đợi và có thể bị bỏ qua hoặc có thể tìm thấy một giải pháp thay thế, chẳng hạn như cảm biến màu RGB, có lẽ để có hiệu ứng tốt hơn. Chúng tôi vẫn chưa kiểm tra điều này.

• 1 x ESP 8266-01.

Có rất nhiều phiên bản của ESP 8266. Chúng tôi chỉ có kinh nghiệm với 8266-01 và không thể đảm bảo mã ESP sẽ hoạt động với một phiên bản khác.

• 1 x tấm chắn Wi-Fi ESP8266-01.

Về mặt kỹ thuật là tùy chọn, nhưng nếu bạn không sử dụng điều này, mọi thứ liên quan đến mô-đun Wi-Fi sẽ phức tạp hơn rất nhiều. Tuy nhiên, hướng dẫn sẽ cho rằng bạn có điều này, (nếu không, hãy tìm hướng dẫn trực tuyến để đấu dây chính xác ESP-01 vào Arduino), vì làm điều này không chính xác có thể và có thể sẽ làm hỏng mô-đun.

• Pin cho chính chiếc xe và pin để cung cấp năng lượng cho thiết bị điện tử bổ sung.

Chúng tôi đã sử dụng song song một cặp pin Lipo dung lượng 2,2 AH, 7,4V để cung cấp năng lượng cho mọi thứ. Bạn sẽ có thể sử dụng bất kỳ loại pin nào bạn thường sử dụng cho chiếc xe bạn chọn. Nếu bạn đang ở trên 5V nhưng dưới 20V, công suất quan trọng hơn điện áp danh định.

• Rất nhiều loại cáp nhảy.

Tôi đã từ bỏ việc đếm số lượng chính xác trong số này. Nếu bạn nghĩ rằng bạn có đủ, bạn có thể không.

• Cuối cùng, để gắn mọi thứ, bạn sẽ cần gắn Arduino, các cảm biến, (các) bảng mạch và mô-đun Wi-Fi vào phương tiện bạn chọn. Kết quả của bạn sẽ khác nhau tùy thuộc vào những gì bạn đang sử dụng làm cơ sở và những vật liệu có sẵn.

Chúng tôi đã sử dụng:

• Dây buộc Zip.

• Một số loại keo siêu dính.

• Những mẩu giấy vụn / ống nhựa nhỏ mà chúng tôi đã có với đường kính phù hợp.

• Một tấm nền Masonite cũ từ khung ảnh, được cắt theo kích thước.

• Thêm một ít băng keo.

• Bất kỳ công cụ nào cần thiết để làm việc trên chiếc ô tô điều khiển bằng sóng vô tuyến mà bạn chọn.

Chúng tôi chủ yếu sử dụng một bộ tua vít nhỏ với nhiều bit, nhưng đôi khi phải rút bộ công cụ đi kèm theo xe.

Phần mềm:

• Nút đỏ

Một phần quan trọng của việc thu thập dữ liệu.

• Một máy chủ MQTT.

Người đi giữa xe của chúng ta và Node-red. Ban đầu, để thử nghiệm, chúng tôi sử dụng test.mosquitto.org

Sau đó chúng tôi sử dụng:

• CloudMQTT.com

Điều này đáng tin cậy hơn rất nhiều so với việc thiết lập phức tạp hơn một chút.

• WampServer.

Phần cuối cùng của việc thu thập dữ liệu. Cụ thể, chúng tôi sẽ sử dụng cơ sở dữ liệu SQL của nó để lưu trữ dữ liệu đã thu thập của chúng tôi.

Bước 2: Sơ đồ điện

Sơ đồ mạch điện
Sơ đồ mạch điện

Bước 3: Xây dựng vật lý

Xây dựng vật chất
Xây dựng vật chất
Xây dựng vật chất
Xây dựng vật chất
Xây dựng vật chất
Xây dựng vật chất

Giải pháp của chúng tôi có một cách tiếp cận thẳng đến lắp ráp vật lý.

Đầu thu nguyên bản và vỏ chống thấm nước của nó đã được tháo ra khỏi xe RC, vì nó không cần thiết.

Chúng tôi nhận thấy rằng có một vị trí thích hợp giữa các bánh trước cho cảm biến theo dõi đường của chúng tôi, vì vậy chúng tôi đã giữ nó đúng vị trí bằng cách vòng một chiếc ziptie phía trên tấm trượt phía trước.

Cảm biến chúng tôi sử dụng để chống va chạm được đặt ở phía sau cản trước. Nó vẫn được bảo vệ khỏi các tác động và ma sát của nó vừa vặn. Nó kết thúc ở phía trước ở một góc hướng lên rất nhẹ. Đây là hoàn hảo.

Tấm Masonite, (tấm nền từ khung ảnh cũ), phía trên có các đoạn nhỏ bằng giấy / ống nhựa được cắt theo kích thước và dán vào phía dưới. Những thứ này căn chỉnh với các giá đỡ cho các trụ thân và chỉ cần ngồi trên đỉnh, giữ mọi thứ một cách an toàn. Giả sử keo dán đường ống vào tấm giữ và nó không nghiêng quá mức, điều này sẽ giữ nguyên vị trí. Cũng cần lưu ý rằng tấm này nằm trong phạm vi bảo vệ của bánh xe và các tấm cản. Arduino Mega và hai breadboard đã được dán vào tấm bằng băng keo hai mặt hoặc bằng một vòng băng keo vòng quanh, keo ra.

Không có biện pháp đặc biệt nào được thực hiện để bảo vệ mô-đun WiFi. Nó không phải của chúng ta, vì vậy việc dán hoặc dán nó xuống được coi là không cần thiết vì nó rất nhẹ nên nó sẽ không di chuyển nhiều và dây đủ để giữ nó tại chỗ.

Cuối cùng, chúng tôi có một cảm biến để phát hiện 'phòng' này đã được nén vào các thành phần hệ thống treo bằng một trong những bánh sau. Trong quá trình vận hành, cần tránh xa vạch đánh dấu mà xe sử dụng để điều hướng.

Bước 4: Mô-đun ESP8266

Mô-đun ESP8266
Mô-đun ESP8266
Mô-đun ESP8266
Mô-đun ESP8266

Mô-đun WiFi, ESP8266, yêu cầu thiết lập hai chân khác nhau. Một thiết lập sẽ được sử dụng khi cài đặt mô-đun bằng một chương trình mới và sử dụng Arduino Mega 2560 làm lập trình viên. Thiết lập khác dành cho mô-đun khi nó đang được sử dụng và gửi thông tin đến Nhà môi giới MQTT.

Sử dụng Arduino IDE để tải mã lên mô-đun ESP8266, bạn sẽ cần cài đặt trình quản lý bo mạch và trình quản lý bo mạch bổ sung

Dưới quản lý hội đồng quản trị cài đặt trình quản lý hội đồng quản trị esp8266. Nó sẽ dễ dàng được tìm thấy bằng cách tìm kiếm "esp". Điều quan trọng là bạn phải cài đặt phiên bản 2.5.0, không cũ hơn, không mới hơn.

Trong cài đặt trong URL trình quản lý bảng bổ sung, hãy sao chép vào dòng này:

arduino.esp8266.com/stable/package_esp8266c…

Để có thể tải bất kỳ thứ gì lên mô-đun ESP8266, bạn sẽ cần sử dụng thiết lập chân cụ thể để có thể flash mô-đun. Điều này cần được thực hiện mỗi khi bạn muốn thực hiện thay đổi đối với mã hiện tại đang chạy trên mô-đun. Đừng quên chọn đúng mô-đun ESP8266 từ trình quản lý bảng trước khi nhấp nháy mô-đun. Trong dự án này, chúng tôi chọn bảng ESP8266 chung. Thiết lập pin để nhấp nháy mô-đun được tìm thấy trên hình ảnh đầu tiên trong phân đoạn này.

Sau khi đã flash mô-đun ESP8266, bạn cần chuyển đổi cài đặt chân. Bạn cũng có thể chọn sử dụng bộ điều hợp để giúp bạn thiết lập dễ dàng hơn. Trong dự án này, chúng tôi đã chọn có một bộ điều hợp bất cứ khi nào chúng tôi có mô-đun đang chạy. Thiết lập chân với bộ điều hợp được tìm thấy trên hình thứ hai trong phân đoạn này.

Mã sẽ được chiếu vào mô-đun ESP8266 thiết lập kết nối với WiFi và MQTT Broker, trong trường hợp này là bằng tên người dùng và mật khẩu, nhưng có thể được thực hiện mà không cần nếu bạn thực hiện các thay đổi cần thiết được mô tả trong nhận xét của mã. Đối với dự án này Nhà môi giới của chúng tôi yêu cầu tên người dùng và mật khẩu để hoạt động. Mô-đun đọc các tin nhắn đến từ cổng nối tiếp mà nó được kết nối. Nó sẽ đọc mọi dòng mới được tạo bởi mã Arduino, giải mã thông điệp và tạo lại thông điệp. Sau đó, nó sẽ gửi tin nhắn đến Nhà môi giới MQTT đã được chỉ định trong mã. Mã cho Mô-đun ESP8266:

Bước 5: Arduino

Sau khi đã định cấu hình mô-đun WiFi, chúng tôi xem xét chương trình sẽ được sử dụng để điều khiển động cơ và servo trên ô tô RC. Chiếc xe sẽ phản ứng theo thông tin thang màu xám từ cảm biến trung tâm, còn được gọi là "Máy dò đường" trong dự án này. Thông thường, nó nhằm mục đích giữ cho thông tin từ Bộ phát hiện dòng gần một giá trị đặt trước, bằng với thông tin được ghi lại ở sự thay đổi giữa sáng và tối hoặc trong dự án này, trắng và đen. Vì vậy, nếu giá trị chênh lệch quá nhiều, đầu ra tương ứng với servo sẽ điều khiển xe về gần giá trị đặt trước của dòng.

Chương trình có hai nút có chức năng như nút khởi động và nút dừng cho xe RC. Về mặt kỹ thuật, nút "stop" là một nút "arming", về mặt kỹ thuật, nó tương đương với giá trị PWM được gửi đến động cơ khiến xe RC dừng lại. Nút khởi động gửi một giá trị PWM tương đương với chiếc xe RC gần như không di chuyển về phía trước vì nó sẽ lái quá nhanh nếu lấy quá nhiều động lượng.

Một thiết bị phát hiện tránh va chạm được thêm vào phần đầu xe RC để phát hiện xem đường phía trước có thông thoáng hay bị chặn hay không. Nếu nó bị chặn, xe RC sẽ dừng lại cho đến khi hết / loại bỏ chướng ngại vật. Tín hiệu tương tự từ máy dò được sử dụng để xác định xem có thứ gì đó cản đường hay không và được coi là tiêu chí để có thể tiến lên cũng như dừng lại.

Một cảm biến thang màu xám thứ cấp, "Room Detector", được sử dụng để phát hiện chiếc xe RC đã vào phòng nào. Nó hoạt động theo nguyên tắc tương tự như Line Detector, nhưng nó không tìm kiếm sự thay đổi giữa ánh sáng và bóng tối, mà là tìm kiếm các giá trị trong một phạm vi cụ thể tương ứng với các phòng khác nhau tùy thuộc vào giá trị được nhìn thấy từ Room Detector.

Cuối cùng, chương trình tạo một dòng thông tin từ các cảm biến để mô-đun WiFi đọc và sau đó gửi đến MQTT Broker. Dòng thông tin được tạo dưới dạng chuỗi và được ghi vào chuỗi tương ứng mà mô-đun WiFi được kết nối. Điều quan trọng là việc ghi vào nối tiếp chỉ xảy ra thường xuyên khi mô-đun WiFi có thể đọc tin nhắn đến, nhưng hãy nhớ không sử dụng bất kỳ độ trễ nào trong mã này vì nó sẽ cản trở khả năng theo dõi dòng của xe RC. Thay vào đó, hãy sử dụng "mili" vì nó sẽ cho phép chương trình chạy mà không có độ trễ nhưng sau khi một lượng mili xác định được truyền qua kể từ khi Arduino được bật, sẽ viết một thông báo vào nối tiếp mà không chặn mã giống như cách trì hoãn.

Mã cho Arduino Mega 2560:

Bước 6: Cơ sở dữ liệu MySQL

WampServer là một môi trường phát triển web cho Windows cho phép chúng ta tạo các ứng dụng với PHP và cơ sở dữ liệu MySQL. PhpMyAdmin cho phép chúng tôi quản lý cơ sở dữ liệu của mình một cách dễ dàng.

Để bắt đầu, hãy truy cập:

Trong dự án này, chúng tôi sử dụng phiên bản 3,17 x64 bit cho Windows. Sau khi cài đặt, hãy đảm bảo rằng tất cả các dịch vụ đang chạy, điều này có nghĩa là biểu tượng nhỏ chuyển sang màu xanh lá cây thay vì màu đỏ hoặc màu cam. Nếu biểu tượng có màu xanh lục thì bạn có thể truy cập PhpMyAdmin để quản lý cơ sở dữ liệu MySQL của mình.

Truy cập MySQL bằng PhpMyAdmin và tạo cơ sở dữ liệu mới. Đặt tên cho nó một cái gì đó thích hợp mà bạn có thể nhớ, trong dự án này, nó được gọi là “line_follow_log”. Sau khi tạo cơ sở dữ liệu, bạn nên tạo một bảng trong cơ sở dữ liệu. Đảm bảo số lượng cột phù hợp. Trong dự án chúng tôi sử dụng 4 cột. Một cột dành cho dấu thời gian và ba cột cuối cùng được sử dụng để lưu trữ dữ liệu từ xe. Sử dụng một kiểu dữ liệu thích hợp cho mỗi cột. Chúng tôi đã sử dụng “longtext” cho cột dấu thời gian và “mediumtext” cho phần còn lại.

Đó là tất cả những gì bạn phải làm trong PhpMyAdmin và MySQL. Hãy nhớ cơ sở dữ liệu của bạn và bảng cho phần về Node-Red.

Bước 7: Node-Red

Để xử lý việc thu thập dữ liệu, chúng tôi sẽ sử dụng một quy trình khá đơn giản trong Node-red. Nó kết nối với máy chủ MQTT của chúng tôi và ghi vào cơ sở dữ liệu MYSQL của chúng tôi.

Để làm điều này, chúng tôi cần một vài bảng màu để các chức năng khác nhau hoạt động và chúng tôi cần một số mã thực tế để nó chạy.

Những điều đầu tiên trước tiên. Chúng tôi sẽ cần các pallet sau đây.

Node-red-Contrib-mqtt-broker: Đây là kết nối với nhà môi giới MQTT của chúng tôi.

Node-red-dashboard: Trang tổng quan của chúng tôi, cần để trình bày trực quan dữ liệu được thu thập.

Node-red-node-mysql: Kết nối của chúng tôi với cơ sở dữ liệu SQL.

Đây không phải là một hướng dẫn đầy đủ về Node-red, nhưng tôi sẽ giải thích những gì mà luồng Node-red thực hiện.

Ngay từ đầu, chúng tôi đã gặp vấn đề với việc máy chủ MQTT của chúng tôi bị chết / ngắt kết nối, dường như là ngẫu nhiên, điều này khiến việc thực hiện bất kỳ thay đổi nào trở thành một nỗ lực khó chịu vì không rõ liệu những thay đổi có mang lại lợi ích hay không khi chúng tôi không thể thấy kết quả. Vì vậy, nút 'Máy chủ có chết không?' chèn 'Không' khối sau sẽ đưa nó vào máy chủ MQTT của chúng tôi. Nếu nó chưa chết, 'Không' sẽ xuất hiện trong cửa sổ Gỡ lỗi. Điều này được thực hiện không chỉ để kiểm tra mà còn để buộc Node-red cố gắng kết nối lại với máy chủ MQTT.

'Chuỗi kiểm tra' gửi một chuỗi chi phí đến nhà môi giới MQTT. Chúng tôi đã định dạng chuỗi này tương tự như những gì chúng tôi sẽ nhận được từ Arduino. Điều này là để có thời gian dễ dàng hơn trong việc cấu hình mạng giải mã các thông điệp, mà không cần dự án đang chạy, thu thập dữ liệu.

Luồng cuối cùng trong không gian làm việc có thể được chia thành hai phân đoạn. Nhánh dưới cùng chỉ đơn giản là đọc các tin nhắn đến, đăng chúng lên cửa sổ gỡ lỗi và lưu chúng vào máy chủ SQL.

Mạng lưới lớn các thiết bị chuyển mạch được kết nối sau một nút chức năng nếu điều 'kỳ diệu' thực sự xảy ra.

Hàm tiếp tục đọc chuỗi đến, tách chuỗi đó ra bằng mỗi dấu chấm phẩy và chuyển các phần ra trên mỗi đầu ra. Các công tắc sau đây tìm kiếm một trong hai phần thông tin đến khác nhau. Một phần thông tin cụ thể luôn được chuyển qua một đầu ra, tùy chọn còn lại sẽ rời khỏi đầu ra thứ hai. Theo sau đó, là một nhóm khối chuyển mạch thứ hai. Chúng sẽ chỉ kích hoạt với một đầu vào cụ thể và xuất ra một thứ gì đó khác.

Một ví dụ, 'chướng ngại vật', giống như tất cả những thứ khác là một lựa chọn nhị phân, rõ ràng là có thể lái xe hoặc là không. Vì vậy, nó sẽ nhận được 0, hoặc 1. Số 0 sẽ được gửi đến nhánh 'rõ ràng', 1 sẽ được gửi đến nhánh 'Bị cản trở'. Các công tắc 'Xóa', 'Bị cản trở', nếu được kích hoạt sẽ xuất ra một thứ gì đó cụ thể, Xóa hoặc bị cản trở, tương ứng. Các khối tiếp tục màu xanh lá cây sẽ đăng trong cửa sổ gỡ lỗi, màu xanh lam sẽ ghi vào bảng điều khiển của chúng tôi.

Các nhánh "trạng thái" và "vị trí" hoạt động hoàn toàn giống nhau.

Bước 8: Nhà môi giới MQTT

Nhà môi giới là một máy chủ định tuyến các thông điệp từ máy khách đến máy khách đích phê duyệt. Nhà môi giới MQTT là nơi khách hàng sử dụng Thư viện MQTT để kết nối với nhà môi giới qua mạng.

Đối với dự án này, chúng tôi đã tạo Nhà môi giới MQTT bằng dịch vụ CloudMQTT với đăng ký miễn phí phiên bản "Mèo dễ thương". Nó có giới hạn nhưng chúng tôi không vượt quá những giới hạn trong dự án này. Mô-đun WiFi có thể kết nối với nhà môi giới và nhà môi giới sau đó định tuyến các thông báo đến một máy khách đích phù hợp. Trong trường hợp này, khách hàng là Node-Red của chúng tôi. Dịch vụ CloudMQTT thiết lập tên người dùng và mật khẩu cho máy chủ của họ, vì vậy chúng tôi được đảm bảo tính bảo mật cao hơn. Về cơ bản có nghĩa là chỉ những người có tên người dùng và mật khẩu mới có thể truy cập dịch vụ CloudMQTT cụ thể này. Tên người dùng và mật khẩu rất quan trọng khi thiết lập kết nối trên mã ESP8266 cũng như Node-Red.

Số liệu thống kê đang diễn ra cho các tin nhắn mà Nhà môi giới nhận được là một tính năng thú vị, có thể được sử dụng để xem gói đăng ký của bạn đang xử lý thông tin mà nó định tuyến tốt như thế nào.

Một tính năng thú vị là khả năng gửi tin nhắn từ Nhà môi giới tới mô-đun WiFi nhưng chúng tôi đã không sử dụng chúng trong dự án này.

Bước 9: Sở thích đồ điện tử

Trước khi bắt đầu, chúng tôi đã biết từ một dự án trước đây rằng servo điều khiển cổ phiếu có thể được điều khiển từ Arduino với tín hiệu PWM, có hệ thống dây điện tương tự và cắm vào các kênh khác nhau trên cùng một bộ thu vô tuyến cổ phiếu, chúng tôi giả định Điều khiển tốc độ điện tử, (ESC từ bây giờ), điều khiển động cơ, tương tự có thể được điều khiển thông qua PWM từ Arduino.

Để kiểm tra lý thuyết này, chúng tôi thiết bị một bản phác thảo Arduino nhỏ. Bản phác thảo đọc đầu vào tương tự từ một chiết áp, sửa lại giá trị từ 0, 1024 thành 0, 255 và xuất giá trị kết quả đến chân PWM, sử dụng analogWrite () trong khi có ô tô R / C trên một hộp nhỏ và có bánh xe bị loại bỏ.

Sau khi quét qua phạm vi trên đồng hồ đo nồi, ESC dường như 'thức dậy' và chúng tôi có thể điều chỉnh nó lên và xuống, chúng tôi cũng có Arduino in các giá trị vào kết nối nối tiếp để chúng tôi có thể theo dõi chúng.

ESC dường như không thích các giá trị dưới một ngưỡng nhất định, trong trường hợp này là 128. Nó thấy tín hiệu 191 là ga trung tính và 255 là ga tối đa.

Chúng tôi không cần phải thay đổi tốc độ của chiếc xe và hoàn toàn để nó chạy ở tốc độ chậm nhất có thể khiến nó di chuyển. 192 là giá trị thấp nhất có thể làm quay động cơ, tuy nhiên chúng tôi vẫn chưa lắp ráp mọi thứ và không chắc liệu sản lượng này có đủ để di chuyển chiếc xe sau khi lắp ráp cuối cùng hay không, tuy nhiên việc nhập một giá trị lớn hơn một chút sẽ là không đáng kể.

Tuy nhiên, việc ngắt chiết áp và nhập giá trị cố định vào mã đã không hoạt động. ESC cổ phiếu chỉ nhấp nháy và sẽ không quay động cơ, 'điều chỉnh van tiết lưu' theo hướng dẫn sử dụng.

Khó khăn dữ dội khi chụp, ném các giá trị khác nhau vào nó, sử dụng các dây khác nhau và thậm chí thử nghiệm thay đổi tần số PWM mà Arduino sử dụng đều dẫn đến nhiều điều kỳ lạ hơn.

Nó dường như là một vấn đề không liên tục, đôi khi nó sẽ chạy, những lần khác nó từ chối làm bất cứ điều gì. Nó chỉ tiếp tục nhấp nháy. Một thử nghiệm với bộ điều khiển và bộ thu ban đầu xác nhận rằng ESC vẫn hoạt động chính xác như dự kiến, điều này làm cho các vấn đề trở nên kỳ lạ hơn. Các giá trị cao hơn, nó bỏ qua và tiếp tục nhấp nháy, các giá trị thấp hơn ESC quay trở lại sáng màu xanh lá cây hạnh phúc, nhưng vẫn không chuyển.

Điều gì khác biệt so với thiết lập với chiết áp hoặc bộ phát và bộ thu cổ phiếu và phiên bản cung cấp các giá trị cố định?

Đôi khi làm việc như dự định và làm việc như mong đợi không thực sự trùng lặp nhiều trên biểu đồ Venn. Trong trường hợp này, là một món đồ chơi, không nên để xảy ra trường hợp mô hình bị đứt tay hoặc đứt ngón tay hoặc bị tóc vướng vào bánh xe hoặc xe lửa khi mô hình đang bật, ngay cả khi thứ gì đó giống như đang giữ máy phát một cách kỳ lạ đã vặn ga. bất kỳ vị trí nào khác ngoài vị trí trung lập.

'Điều chỉnh van tiết lưu', đó chính xác là điều đó có nghĩa là. ESC đang mong đợi một tín hiệu trung lập khi nó bật nguồn, trước khi nhận được rằng nó sẽ không làm gì cả. Thông thường máy phát sẽ luôn ở trạng thái trung tính khi ESC được bật và từ đó sẽ hoạt động vui vẻ. Trong trường hợp không, nó có thể trở lại trung lập ít nhất một lần vào thời điểm mô hình đã vững chắc trên mặt đất và người điều khiển cảm thấy sẵn sàng để đua.

Trong khi sử dụng chiết áp, chúng tôi đã 'quét' qua các dải, và sau đó nó sẽ bắt đầu hoạt động. Nó chỉ đơn giản được trang bị khi chiết áp quét qua vị trí trung tính, và sau đó nó hoạt động.

Tuy nhiên, phạm vi thấp hơn dường như vẫn khiến ESC không hài lòng. Điều này hóa ra là một sản phẩm của các chu kỳ nhiệm vụ PWM.

Do thiết kế hoặc được thực hiện vì lý do kỹ thuật, cả servo lái và ESC đều bỏ qua các tín hiệu dưới 50% chu kỳ làm việc. Điều này có thể xảy ra trong trường hợp máy thu / máy phát ngừng hoạt động hoặc hết điện, mô hình sẽ trở về trạng thái trung tính và không cất cánh trong khoảng cách với van tiết lưu ngược hoàn toàn. Tương tự, servo chỉ xoay 180 độ và không cần toàn bộ phạm vi.

Với kiến thức mới này trong tay, một bản phác thảo Arduino mới đã được tạo ra. Phiên bản ban đầu chấp nhận các chuỗi được nhập vào Serial monitor, chuyển nó thành một số nguyên và chuyển nó đến chân PWM, sử dụng thư viện servo và ghi () *. Nếu một giá trị mới được nhập vào màn hình nối tiếp, giá trị write () sẽ được cập nhật.

Trong quá trình thử nghiệm, cổ phiếu Traxxas ESC đã được thay thế bằng Mtroniks G2 Micro, tuy nhiên chúng sẽ hoạt động như nhau, mặc dù giá trị chính xác có thể hơi khác một chút.

Thư viện này coi ESC như một servo, điều này rõ ràng là tốt. Hàm write () từ thư viện Servo.h đi từ 0 đến 180, tín hiệu trang bị dự kiến sẽ ở khoảng giữa.

G2 Micro hoạt động ở mức write () trong một phạm vi giá trị gần 90 tuy nhiên rất khó xác định vì nó có vẻ như 'nhớ' đã được trang bị.

Traxxas VXL-s3 dự kiến sẽ cung cấp giá trị write () là 91.

Sau khi có tín hiệu vũ khí, hoặc ESC vui vẻ chấp nhận các tín hiệu PWM, bất kể các chức năng Arduino được gọi để tạo ra chúng và điều khiển động cơ tương ứng.

Phát biểu về chức năng; analogWrite tiêu chuẩn (), cũng như write () và writeMicroseconds () từ thư viện Servo.h đều có thể được sử dụng thay thế cho nhau, chỉ cần lưu ý những gì thực hiện những gì và cuối cùng không có gì khác ngoài chu kỳ nhiệm vụ quan trọng. WriteMicroseconds () có thể được sử dụng nếu yêu cầu độ chi tiết lớn hơn, chỉ cần lưu ý rằng phạm vi ở đây là từ 1000 đến 2000, với arming hoặc 'trung tính' dự kiến là 1500. Với analogWrite () tiêu chuẩn, phạm vi có thể sử dụng được mong đợi là từ 128 đến 255 với khoảng 191 là trung tính.

Đề xuất: