Arduino_Hướng dẫn chế thuyền không người lái

Dưới đây là cách tạo chế độ lái tự động có thể điều khiển một chiếc thuyền RC đến các điểm tham chiếu! Thật dễ dàng để xây dựng, dựa trên nền tảng Arduino phổ biến và tuyệt vời cho những người yêu thích! Với chế độ lái tự động này, một chiếc thuyền RC có thể đi được quãng đường dài mà không cần bất kỳ sự can thiệp nào của con người, giống như một máy bay không người lái. Ý tưởng ban đầu là bắt chước những chiếc thuyền robot như UBC sailbot và Scout (gần như đã hoàn thành thành công hành trình xuyên đại dương của nó!)

Dự án này đã được thực hiện trong hơn một năm nay và đã dạy tôi rất nhiều về lý thuyết tự động và thiết kế mạch. Hy vọng rằng, một ngày nào đó, tôi sẽ có thể sử dụng các kỹ năng được sử dụng để thực hiện chế độ lái tự động này và áp dụng chúng để thực hiện chế độ lái tự động cho catamaran 38 feet của cha tôi!

Để đến phiên bản cuối cùng của chế độ lái tự động này, tôi đã trải qua ba nguyên mẫu chính. Mỗi nguyên mẫu ngày càng phức tạp hơn về mạch và code. Sau ba nguyên mẫu đó, tôi đã xây dựng mạch cuối cùng, có thể điều khiển một chiếc thuyền RC chạy quanh ao nhiều lần. Sơ đồ và hình ảnh rất chi tiết có sẵn nếu bạn muốn tạo một chiếc cho riêng bạn.

Phiên bản cuối cùng không có lỗi, nhưng vẫn còn chỗ để cải thiện. Về mặt code, tôi cần phải di chuyển thuyền theo một con đường, và không chỉ đơn giản là đi đến một điểm dừng (điều này chống lại sự trôi dạt sang một bên). Về mặt điện tử, tôi sẽ thêm một gia tốc kế giải quyết độ nghiêng cho la bàn của mình.

Bước 1: Tổng quan bằng video và Giải thích chế độ tự động

Đây là một đoạn video ngắn về dự án, các nguyên mẫu, một số lý thuyết và hơn thế nữa!

Bước 2: Nguyên mẫu # 1

 Hình ảnh nguyên mẫu số 1

Nguyên mẫu đầu tiên của chế độ lái tự động rất cơ bản. Mục tiêu là chế tạo một thiết bị có thể:

  • Đọc vị trí từ GPS
  • Đọc vị trí từ một la bàn
  • Điều khiển một bánh lái servo
  • Các công thức kiểm tra cần thiết để thực hiện chế độ lái tự động thực sự
  • Sử dụng bánh lái để giữ vị trí

Đối với nguyên mẫu ban đầu này, tôi quyết định sử dụng Arduino Uno cho bộ não; Tôi sẽ chuyển sang thiết kế Arduino barebones (AtMega328) trong phiên bản cuối cùng.

Đọc GPS

Đối với nguyên mẫu đầu tiên, tôi muốn dùng GPS rẻ nhất có thể có trong tay, vì vậy tôi đã dùng chiếc PCI-5s trị giá 8 đô la. Để kết nối GPS với Arduino, tất cả những gì tôi phải làm là hàn bốn dây vào mặt sau của module, kết nối chúng với Arduino, sau đó gắn ăng-ten. Tôi đã sử dụng thư viện TinyGPS ++ để phân tích dữ liệu nối tiếp, cho phép tôi có được vị trí, tốc độ, hướng hiện tại và hơn thế nữa! Tôi đã sử dụng GPS này cho đến nguyên mẫu thứ ba, nơi tôi đã thay thế nó bằng một mẫu khác.

Đọc một la bàn

La bàn tôi đã sử dụng là HMC5883L , kết nối với Arduino thông qua I2C. Bildr có một hướng dẫn rất hay về cách kết nối la bàn này với Arduino. Để đọc mang tôi đã sử dụng thư viện Arduino này.

Điều khiển một Servo

Điều khiển một servo với Arduino cực kỳ dễ dàng, nhưng không phải khi thư viện SoftwareSerial (cần thiết cho TinyGPS ++) can thiệp vào một trong các bộ định thời của Arduino! Khi SoftwareSerial đang chạy, nó sẽ can thiệp vào bất kỳ động cơ servo nào sử dụng thư viện servo tiêu chuẩn. Một giải pháp đơn giản là sử dụng thư viện Servo thay thế.

Áp dụng công thức Autopilot

Trong nguyên mẫu này, tôi đã thực hiện một số chức năng sẽ trở nên quan trọng sau này. Các hàm này sử dụng công thức haversin để tính toán những thứ như: khoảng cách giữa hai điểm tham chiếu, hướng từ điểm này đến điểm tiếp theo và vị trí thực từ vị trí từ tính.

Đặt tất cả chúng cùng nhau

Tôi quyết định làm một cái hộp gỗ để giữ mọi thứ lại với nhau (xem hình trên). Vì vậy, bây giờ tôi đã biết vị trí của máy lái tự động là gì, tôi đã có thể so sánh nó với một vị trí định sẵn và xoay bánh lái để giữ vị trí nhất định đó. Điều này sẽ trở nên cần thiết sau này để di chuyển đến tọa độ GPS.

Bước 3: Nguyên mẫu # 2

 Hình ảnh nguyên mẫu # 2

Tôi hài lòng với sự thành công của nguyên mẫu đầu tiên, vì vậy tôi quyết định tạo ra một chiếc nữa với ý định đưa nó lên thuyền. Hầu hết các thay đổi đối với hệ thống lái tự động này là dựa trên phần mềm. Mục tiêu của nguyên mẫu này là:

  • Di chuyển đến một bộ tọa độ GPS
  • Chạy chế độ lái tự động với pin
  • Kiểm tra và ghi lại dữ liệu tự động

Tôi đã thực hiện một vài thay đổi về cấu trúc vật lý của máy lái tự động. Tôi đã thêm một ProtoSheild, kết nối với Arduino và có breadboard trên đó. Tôi di chuyển la bàn ở đó. Tôi cũng gắn tất cả các bộ phận tự động vào một khung gỗ dán mới, và đặt khung gỗ đó bên trong một hộp đựng bánh sandwich.

Tôi cũng đã thử thêm một bộ thu RC vào chế độ lái tự động này, nhưng tôi đã không thành công do giới hạn không gian bên trong container đó.

Di chuyển theo tọa độ GPS

Tôi đã lập trình Arduino với một bản phác thảo xoay bánh lái để đi đến điểm tiếp theo. Bản phác thảo đã sử dụng GPS để tính toán ổ đỡ cho từng điểm, sau đó so sánh nó với la bàn và sự khác biệt giữa hai loại sẽ là lỗi. Nếu lỗi ở bên phải, 90 độ, thì bánh lái sẽ xoay sang 60 độ. Nếu lỗi ở bên trái, 270 độ, thì bánh lái sẽ xoay sang 120 độ. Nếu sai số nằm trong khoảng từ 330 đến 30 độ (thẳng về phía trước), thì bánh lái sẽ quay theo cấp số nhân để tiếp tục đi thẳng.

Tất cả điều này sẽ xảy ra trong một vòng lặp tương tự như vòng lặp này :

while(distanceInMeters(gpslat, gpslong, waypointlat, waypointlong) < 5) {

          int bearing = GetBearing();

          int heading = GetHeading(gpslat, gpslong, waypointlat, waypointlong);       

          bearing = RealBearing(gpslat, gpslong, bearing);

          RudderTurn(RudderAngle(bearing, heading));
}

Đây là một giải thích cho code ở trên: nếu khoảng cách giữa bạn và điểm tham chiếu là hơn năm mét, thì hãy tính toán giá trị của la bàn, mang đến điểm tham chiếu, lấy vị trí thực của la bàn, sau đó gửi qua hàm RudderTurn, tính toán lỗi và xoay bánh lái tương ứng.

Thêm pin

Thêm một pin để cung cấp năng lượng cho Arduino rất đơn giản. Có một chân Vin trên Arduino Uno. Nó chấp nhận nguồn lên đến 20 volt DC. Tôi có một pin 12,6v, 3 cell, pin lithium, vì vậy tôi chỉ cần tạo một đầu nối đi từ pin đến chân Vin.

Bước 4: Kiểm tra nguyên mẫu # 2

 Hình ảnh thử nghiệm mẫu thử nghiệm # 2

Để hỗ trợ thử nghiệm chế độ lái tự động, tôi đã thêm hai đèn LED. Một đèn LED sẽ bật khi có khóa GPS, đèn còn lại sẽ bật khi tôi đến điểm dừng.

Kiểm tra nguyên mẫu

Tôi đã sử dụng một hồ ở địa phương để thử nghiệm chế độ lái tự động của mình. Tôi sẽ mang máy tính xách tay của mình, kết nối nó với máy lái tự động, chạy màn hình nối tiếp (một phần của phần mềm Arduino) và để nó ghi lại tọa độ GPS, tất cả trong khi đi bộ đến các điểm tham chiếu được lập trình sẵn. Tôi đã sử dụng bánh lái để hướng dẫn tôi đến từng điểm, và tôi đã phản ứng với bánh lái bằng cách xoay như một chiếc thuyền.

Những hình ảnh bạn nhìn thấy ở trên chỉ là một số đường tôi đã ghi lại. Khi tôi nhận được trong vòng năm mét từ một điểm tham chiếu, hệ thống lái tự động sẽ chuyển đổi và bắt đầu điều hướng đến điểm tiếp theo. Tôi đã thực hiện nhiều thay đổi nhỏ cho code trong các thử nghiệm.

Để chuyển đổi văn bản nối tiếp thành bản nhạc Google Earth, tôi đã nhập văn bản vào Excel bằng cách nhập văn bản, sau đó lưu tệp, sau đó làm theo hướng dẫn tại Earthpoint để chuyển đổi tệp sang định dạng KML.

Bước 5: Lắp ráp thuyền đầu tiên

 Hình ảnh chiếc thuyền đầu tiên

Chiếc thuyền đầu tiên tôi làm cho dự án này là một thử nghiệm hơn là một nguyên mẫu thực sự. Tôi muốn xem liệu tôi có thể làm một chiếc máy bay hoạt động hay không thay vì phải đi và mua một chiếc.

Hầu hết các mảnh được cắt ra từ xốp, bao gồm cả boong, đó là bọt biển. Ban đầu tôi sử dụng một động cơ bình thường, nhưng sau đó tôi chuyển sang một động cơ không chổi than và một động cơ 5×3 cho lực đẩy tốt hơn. Servo  9 gram đó được gắn ở mặt sau và hộp đựng bánh sandwich có một số lỗ được khoan vào đó để dây điện đi qua. Cuối cùng, chiếc thuyền này không bao giờ thực sự hoạt động. ESC tôi đã sử dụng bị cháy trong một tai nạn điện và GPS hoàn toàn từ chối hoạt động trên mặt ao.

Bước 6: Sửa chữa thuyền

 Hình ảnh sửa chữa chiếc thuyền

Được rồi, trở lại bảng vẽ với thuyền. Tôi đặt chiếc thuyền mới này từ eBay với giá $ 20,01; miễn phí vận chuyển! Nó đi kèm với pin NI-MH 7.4v, bộ sạc, bộ phát và mạch nhận. Tôi gặp một số khó khăn khi tìm số lượng pin AA phù hợp để lắp bộ phát (chính xác là 12) và tôi đã thất vọng khi thuyền không hoạt động. Nhưng tôi vẫn có thể làm cho nó hoạt động.

Tôi đã trục vớt hai MOSFET kênh N từ mạch thu; những thứ này có ích sau này Sau đó, tôi tiến hành cắt tất cả các dây còn lại, tôi có thể thấy kẽ hở và vết nứt tôi trên thuyền.

Hai động cơ có một hệ thống làm mát phức tạp: một cánh quạt rất ồn thổi khí qua các động cơ. Cũng có các tụ tách rời trên các động cơ. Cả hai điều này làm việc có lợi thế cho tôi. Ngoài ra còn có một công tắc nhỏ trên đầu thuyền. Tôi chưa tìm thấy cách sử dụng tốt cho nó.

Thứ tự tiếp theo là bảo đảm nguyên mẫu. Tôi có một mảnh gỗ vụn, dán một giá đỡ ngang (một thanh tre) gần các động cơ, và dán mảnh gỗ vào thuyền và hỗ trợ. Velcro có đủ lực giữ để giữ an toàn cho thuyền tự lái, ngay cả khi lộn ngược.

Bước 7: Nguyên mẫu # 3

 Hình ảnh của Nguyên mẫu # 3

Một vấn đề gây khó chịu cho các nguyên mẫu trước đó là tốc độ cập nhật chậm. Bánh lái đơn giản là không phản ứng đủ nhanh với vị trí thay đổi, vì vậy tôi đã đưa nó vào danh sách mục tiêu của mình:

  • Tăng tốc độ cập nhật của chế độ lái tự động
  • Thêm bộ điều khiển động cơ
  • Lập trình động cơ
  • Thêm một người nhận

Tăng tốc độ cập nhật

Vấn đề duy nhất với thư viện TinyGPS ++ là nó chậm. Vấn đề là, Arduino Uno không thể chạy hai thứ cùng một lúc (cũng có thể, nhưng không thực sự). Một giải pháp đơn giản là có một Arduino khác sử dụng thư viện TinyGPS ++ để phân tích dữ liệu GPS, sau đó gửi vị trí cho hệ thống lái tự động khác. Vấn đề là, tôi đã không có Arduino khác.

Một Arduino Uno về cơ bản là một chip AtMega328 và một số thành phần bổ sung. Thật dễ dàng để xây dựng “Arduino” của riêng bạn trên một breadboard, vì vậy đó chính xác là những gì tôi đã làm. Đây là một hướng dẫn thực sự tốt về cách làm điều đó. Sau khi tôi xây dựng board Arduino chủ của mình, tôi đã kết nối một mô-đun GPS Ublox NEO-6M hoàn toàn mới giống như cách tôi kết nối GPS trước đây của mình. Tôi đã lập trình Arduino mới này để sử dụng thư viện Easy Transfer của Bill Porter và tôi đã sử dụng một dây duy nhất để tạo kết nối nối tiếp một chiều giữa Arduino chính và bảng mạch chính. Với Arduino Breadboard mới này, tôi đã có thể tăng tốc độ cập nhật từ 4Hz, lên đến 50Hz!

Thêm bộ điều khiển động cơ

Tôi thực sự thích ProtoSheild cho Arduino Uno mà tôi đang sử dụng, nhưng tôi thấy rằng nó không có đủ không gian để chứa hai bộ điều khiển động cơ. Vì vậy, tôi đã dùng breadboard nhỏ, cũ và đặt vào một cái lớn hơn nhiều.

Mạch cho bộ điều khiển động cơ rất đơn giản, MOSFET, với sự trợ giúp của PWM, điều khiển điện áp trung bình đi đến động cơ. Điện trở 1k giới hạn dòng Arduino không bị cháy và điện trở 10k sẽ tắt MOSFET khi không có đầu vào.

Lập trình động cơ: Đi từ bánh lái đến động cơ

Chiếc thuyền này không có bánh lái, nhưng thay vào đó, nó sử dụng hai động cơ để điều khiển. Tôi muốn tận dụng hai động cơ thay vì dán một chiếc servo trên thuyền. Tôi đã xây dựng các bộ điều khiển động cơ, bây giờ tất cả những gì còn lại phải làm là lập trình Arduino để điều khiển các bộ điều khiển động cơ này.

Tôi bắt đầu bằng cách lập trình một chương trình mô phỏng trong Visual Studio. Tôi đã sử dụng các điểm dừng để gỡ lỗi code của mình và cuối cùng tôi đã có một bộ điều khiển động cơ. Bây giờ tất cả những gì còn lại phải làm là chuyển code từ VS sang Arduino, điều này không khó lắm, vì chúng là những ngôn ngữ rất giống nhau (C # và C ++).

Thêm một bộ thu RC

Tôi đã thêm một bộ thu RC vào nguyên mẫu này để ghi đè thủ công. Thật dễ dàng để đo các giá trị đến bằng hàm PulseIn và tự động lái phản ứng với các giá trị đó.

Kiểm tra nguyên mẫu

Tôi đặt nguyên mẫu này lên thuyền, kết nối các động cơ với MOSFET và lập trình sẵn một con đường trong ao địa phương. Chiếc thuyền đã có thể hoàn thành con đường tam giác một lần, sau đó nó ngừng hoạt động mãi mãi. Tôi đã phải giải cứu nó bằng một chiếc thuyền bơm hơi. Hóa ra, điện áp cao từ pin (12 v), làm hỏng các bộ điều chỉnh điện áp 5v.

Bước 8: Hàn (các) bảng mạch

 Hình ảnh của hàn các bảng mạch

Mạch cuối cùng gần như là một bản sao của nguyên mẫu thứ ba, ngoại trừ việc tôi đã sử dụng một chip AtMega328 khác thay vì Arduino Uno. Ngay phía trên bạn có thể tìm thấy sơ đồ mạch đầy đủ. Vì có hai AtMegas, tôi quyết định chia chúng thành hai mạch 5x7cm. Các sơ đồ được chia dọc giữa, tất cả mọi thứ ở hai bên thuộc về bảng tương ứng của nó. Điều này có nghĩa là có hai bộ điều chỉnh điện áp cho mỗi bảng phân tán nhiệt trên diện tích bề mặt lớn hơn. Thay vì hàn tất cả các bộ phận vào bảng mạch, tôi đã hàn các hàn rào cho các bộ phận có thể thay thế như GPS, la bàn, động cơ, FT 232, AtMegas. Tôi cũng đặt hai hang rào dọc theo mỗi AtMega trong trường hợp tôi muốn thêm một cái gì đó khác trong tương lai.

Hai AtMegas này rất đơn giản để lập trình, vì tất cả những gì họ cần là FT 232 và máy tính. Có hai đầu để FT 232 kết nối, vì vậy tất cả những gì bạn làm là cắm chúng vào đó, cắm chip FT232 vào máy tính của bạn thông qua cáp USB và lập trình với phần mềm Arduino như bạn làm với Arduino thông thường.

Có một số kết nối giữa hai chip AtMega. Một trong số đó là để chuyển vị trí GPS sang vị trí khác. Có một dây đi từ chân 3 từ một AtMega đến chân TX trên AtMega khác. Các mạch này cần được cung cấp bởi cùng một pin. Để kết nối chúng lại với nhau, tôi đã nối các đầu nối JST RCY với mỗi chip để cấp nguồn, sau đó tạo bộ chia Y để kết nối chúng với pin. Tôi thích đầu nối nguồn của pin, vì vậy tôi quyết định làm một bộ chuyển đổi cho nó thay vì cắt nó ra.

Đây là danh sách các bộ phận đầy đủ mà tôi đã đưa ra sau khi tôi xây dựng chế độ lái tự động. Tôi thực sự bị sốc với tổng chi phí của dự án này; nhưng sau đó một lần nữa, phần lớn chi phí đến từ GPS, thuyền RC, và bộ phát và bộ thu RC.

Danh sách các bộ phận

Điện trở:

  • 4x Điện trở 10k
  • 2x Điện trở 1k
  • 4x Điện trở 220 ohm

Bộ điều chỉnh điện:

  • 2x điều chỉnh LM7805
  • 2x bộ điều chỉnh L78L33ACZ

Bộ phận Arduino:

  • 2 chip AtMega328
  • 4x LED 5 mm
  • 2x thạch anh 16 MHz
  • 2x Nút nhấn
  • 4x Tụ gốm 30pf
  • 2x tụ gốm 0,1uf
  • 2x N-Channel Logic Level MOSFETs
  • 3x Đầu nối JST RCY nữ
  • 1x Đầu nối JST RCY Nam
  • 2x Điốt 1N5408
  • Rất nhiều dây đựcxcái
  • Ít nhất một breadboard

Linh kiện lớn:

  • Mô-đun GPS NEO-6M
  • 2x 5x7cm Perfboard
  • 1x Bộ phát và bộ thu HK-GT2B
  • La bàn 3 trục HMC5883L
  • 1x thuyền RC

Bước 9: Kết hợp Autopilot với RC Boat

 Hình ảnh kết hợp lái tự động với thuyền RC

Tôi đã sử dụng một mảnh gỗ vụn mà tôi có từ nguyên mẫu thứ ba để giữ chế độ lái tự độn. Tôi đã sử dụng các ốc vít nhỏ để gắn các tấm ván vào board. Tôi cũng khoan bốn lỗ và sử dụng dây rút để giữ pin. Một lần nữa, tôi đã sử dụng Velcro để gắn máy lái tự động lên thuyền.

Ăng-ten GPS cũng được gắn lên board và bộ thu GPS chỉ đơn giản được giữ bởi hang rào trên bảng mạch. Để gắn bộ thu RC vào mạch, tôi đã sử dụng một số dây dẫn được uốn trước, tôi đã hàn một số hàn rào và được bảo đảm bằng keo nóng. Các dây cho động cơ cũng được hàn vào một đầu nối, được cách điện bằng keo nóng và kết nối với bảng theo sơ đồ.

Bước 10: Lập trình AtMegas

 Hình ảnh lập trình AtMegas

Để lập trình AtMegas, tôi đã sử dụng chip FT 232 và tất cả những gì tôi phải làm là cắm nó vào từng mạch và tải lên bản phác thảo thích hợp bằng phần mềm Arduino (xem hình trên) giống như tôi làm với Arduino Uno. Sự khác biệt duy nhất là bạn cần chọn “Arduino Nano w / ATmega328” thay vì “Arduino Uno” trong Tool > Board. Code này rất giống với code được sử dụng trong nguyên mẫu thứ ba.

Bản phác thảo đầu tiên phân tích dữ liệu GPS và gửi nó đến GPS thứ hai thông qua kết nối nối tiếp. Bản phác thảo sẽ nháy LED trên chân 13 khi dữ liệu được gửi và LED sẽ phát sáng khi không có khóa GPS.

Bản phác thảo thứ hai tốt hơn nhiều. Nó lấy vị trí GPS hiện tại, tính toán khoảng cách từ vị trí đó đến điểm tiếp theo, so sánh vị trí với điểm tiếp theo với điểm mốc và điều khiển các động cơ đi đến đó. Ngoài ra còn có chức năng ghi đè, tạm dừng chế độ lái tự động trong khi có tín hiệu từ bộ thu RC. Tín hiệu đó sau đó được sử dụng để tính tốc độ của từng động cơ. Các điểm mốc mà hệ thống lái tự động đi đến được lập trình trực tiếp vào bản phác thảo này.

AtMega thứ hai cũng cần hiệu chỉnh la bàn trước khi sử dụng. Đây là nơi tôi chuyển sang thư viện la bàn của helscream để hiệu chỉnh cho tôi. Khi hiệu chỉnh xong, LED màu xanh sẽ sáng lên!

Bản phác thảo mà tôi đã tải lên mỗi chip về cơ bản là sự kết hợp của tất cả các bản phác thảo trước đây của tôi.

Bạn có thể tải xuống tất cả các code ở bước cuối cùng của Hướng dẫn này!

Bước 11: Tách La bàn

 Hình ảnh tách rời la bàn

Với nguyên mẫu thứ ba, bất cứ khi nào tôi bật động cơ, la bàn sẽ dịch chuyển lên mười độ về bên trái. Rõ ràng đã có một số can thiệp. Tôi nhận thấy rằng sự can thiệp này đã nhỏ hơn theo cấp số nhân khi tôi di chuyển máy lái tự động lên thuyền, vì vậy tôi quyết định chỉ đơn giản là di chuyển la bàn về phía trước.

Vì la bàn thực sự nhạy cảm với độ nghiêng, tôi đã quyết định xây dựng một khung hổ trợ cho la bàn. Tôi đã sử dụng băng dính hai mặt để dán giá đỡ này vào phía trước thuyền, sau đó tôi đặt la bàn bên trong giá đỡ. Một đầu của dây mở rộng này đi đến la bàn, trong khi đầu còn lại cắm vào chế độ lái tự động. Một lần nữa, tôi đã sử dụng keo nóng để cách nhiệt các kết nối này.

Bước 12: Kiểm tra Autopilot

 Hình ảnh thử nghiệm Autopilot

Sau khi thử nghiệm trong bồn tắm, cuối cùng đã đến lúc thử nghiệm trong thế giới thực! Một lần nữa, tôi mang thuyền đến ao, lập trình ba điểm tham chiếu trong một hình tam giác, sử dụng ghi đè thủ công để điều khiển thuyền rời khỏi đất liền và để nó bơi! Chế độ lái tự động đã có thể đi đến từng điểm theo thứ tự và khi hoàn thành, cả ba điểm tham chiếu sẽ lặp lại và đi đến điểm đầu tiên một lần nữa! Tôi đã thành công!

Máy lái tự động đã có thể di chuyển đến các điểm tham quan này với tốc độ khoảng 30%, đó là về tốc độ đi bộ. Tôi đặt tốc độ thấp đến mức này vì tôi không muốn các MOSFET quá nóng và tôi thường muốn chơi an toàn.

Sau thử nghiệm tam giác hoàn toàn thành công đầu tiên, tôi đã dành một tuần để thử nghiệm một con đường mới mỗi ngày. Tôi đã thử tất cả mọi thứ, từ hình tam giác, hình tròn, hình vuông, hình zig-zags và thuyền tự lái có thể đi trên những con đường giống như nó được yêu cầu!

Trong hai lần, dây được dùng làm kết nối nối tiếp một chiều giữa hai AtMegas bị lỏng. Rất may, tôi đã có thể sử dụng ghi đè thủ công để đưa thuyền vào bờ, kết nối dây một lần nữa và gửi thuyền trên đường đi. Tín hiệu GPS không bao giờ bị mất trong quá trình thử nghiệm và pin dùng khoảng mười phút mỗi lần sạc.

Bước 13: Bước tiếp theo, tải xuống thư viện và code

Cải tiến:

Chiếc thuyền này về cơ bản đã hoàn thành, nhưng luôn có chỗ để cải tiến. Trong khi thực hiện một vài thử nghiệm cuối cùng, tôi nhận thấy rằng đôi khi con thuyền sẽ bắt đầu dao động sau một lượt. Hóa ra, vì la bàn không được bù độ nghiêng, nên có đủ độ lệch sau một lượt để bắt đầu dao động này. Để bù độ nghiêng cho la bàn, bạn cần thêm gia tốc kế, nhưng tôi nghĩ một cách dễ dàng hơn để thực hiện là mua GY-511, đó là la bàn và gia tốc kế, và nó sử dụng cùng giao thức I2C như hiện tại của tôi la bàn! Khi con chip mới được dùng, tất cả những gì tôi sẽ phải làm là nối lại một số chân và thế là xong!

Ngoài ra còn có vấn đề về đường dẫn. Chương trình tôi đã viết cho chế độ lái tự động này rất đơn giản, vì vậy nó không đi theo một con đường, hoặc bù đắp cho sự trôi dạt. Bộ điều khiển PID được chế tạo đặc biệt để bù cho điều này, vì vậy tôi sẽ cố gắng thực hiện một bộ điều khiển trong phần mềm của mình.

Ngoài ra, tôi có sẵn đầu đọc thẻ SD. Tôi đã nghĩ đến việc thực hiện nó để ghi dữ liệu GPS, nhưng dường như nó chạy ở mức điện áp thấp hơn.

Tải xuống:

Ngay bên dưới bạn có thể tìm thấy code cho chế độ lái tự động của tôi. Tệp Autopilot_GPS dành cho chip AtMega được kết nối với GPS và Autopilot_Main dành cho AtMega. Các tệp khác chứa các phiên bản trước của chế độ lái tự động (hai nguyên mẫu đầu tiên). Một lần nữa, chỉ cần trích xuất tài liệu lưu trữ ở đâu đó, và bên trong là các tệp tương thích trực tiếp với phần mềm Arduino !

Tài liệu đính kèm

Link bài viết gốc tại dây.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Giỏ Hàng Item Removed. Undo
  • No products in the cart.