Mục lục:

La bàn kỹ thuật số và công cụ tìm tiêu đề: 6 bước
La bàn kỹ thuật số và công cụ tìm tiêu đề: 6 bước

Video: La bàn kỹ thuật số và công cụ tìm tiêu đề: 6 bước

Video: La bàn kỹ thuật số và công cụ tìm tiêu đề: 6 bước
Video: Hướng Dẫn Đặt Mục Tiêu 😎 Chất Miễn Bàn - Bài Học Kinh Doanh 2024, Tháng mười một
Anonim
La bàn kỹ thuật số và công cụ tìm tiêu đề
La bàn kỹ thuật số và công cụ tìm tiêu đề

Các tác giả:

Cullan Whelan

Andrew Luft

Blake Johnson

Sự nhìn nhận:

Học viện Hàng hải California

Evan Chang-Siu

Giới thiệu:

Cơ sở của dự án này là một la bàn kỹ thuật số với chức năng theo dõi hướng. Điều này cho phép người dùng theo dõi một tiêu đề trên một khoảng cách xa bằng cách sử dụng thiết bị kỹ thuật số. Nói một cách thông thường, tiêu đề là một góc được đo theo chiều kim đồng hồ từ hướng bắc, được coi là 0 độ, như được chỉ ra bởi la bàn. Thiết bị có hai chức năng chính: chức năng thứ nhất là hiển thị tiêu đề hiện tại của thiết bị trên tham chiếu màn hình kỹ thuật số và chức năng thứ hai là khả năng nhập tiêu đề người dùng yêu cầu, tiêu đề này sẽ được hiển thị trên một vòng đèn LED trên đầu nhà ở la bàn. Sau đó, người dùng sẽ điều chỉnh hướng của thiết bị liên quan đến đèn LED được chiếu sáng. Khi hướng của thiết bị được thay đổi, đèn LED sẽ di chuyển đến đèn LED trung tâm, do đó cho biết rằng tiêu đề chính xác đã được thiết lập.

Quân nhu:

- Mô-đun GPS DIYmall 6M

- HiLetgo MPU9250 / 6500 9-Axis 9 DOF 16 Bit

- Adafruit NeoPixel Ring 16

- MakerFocus 4 pin 3.7V Lithium có thể sạc lại

- Bo mạch ELEGOO MEGA 2560 R3

- Adafruit Mini Lipo w / Mini-B USB Jack - USB LiIon / LiPoly sạc - v1

- Màn hình LCD TFT 2,8 với Bảng đột phá màn hình cảm ứng w / Ổ cắm MicroSD

Bước 1: Thiết kế chức năng của dự án

Thiết kế chức năng của dự án
Thiết kế chức năng của dự án

Bước đầu tiên là hiểu logic và chức năng hoạt động cuối cùng. Sơ đồ logic này mô tả ba trạng thái thiết bị và hai trạng thái cảm biến.

Trạng thái 1: Trạng thái đang tải

Trạng thái tải được sử dụng để cho phép Arduino Mega lấy lại dữ liệu từ hai cảm biến khi khởi động. Thiết bị sẽ hiển thị tải trên màn hình, xóa tất cả các giá trị số trên màn hình và đèn LED trên vòng NeoPixel sẽ sáng theo hình tròn.

Trạng thái 2: Chế độ la bàn

Ở trạng thái này, thiết bị sẽ hoạt động giống như một la bàn kỹ thuật số. Vòng NeoPixel sẽ sáng lên để cho biết hướng Bắc so với hướng của thiết bị. Tiêu đề thiết bị thực sự cũng sẽ được hiển thị trên màn hình LCD cùng với Vĩ độ và Kinh độ của thiết bị. Nó cũng sẽ ở trong trạng thái này mà người dùng sẽ có thể nhập tiêu đề người dùng sẽ được hiển thị trong Trạng thái 3.

Trạng thái 3: Chế độ theo dõi tiêu đề

Ở trạng thái này, thiết bị sẽ giúp người dùng thiết lập được tiêu đề mong muốn của họ. Bây giờ thiết bị sẽ hiển thị tiêu đề thiết bị và người dùng đang hướng tới trên màn hình LCD cùng với dữ liệu kinh độ và vĩ độ. Vòng NeoPixel bây giờ sẽ sáng lên để cho biết người dùng đang hướng về hướng thiết bị.

Trong cả Trạng thái 2 và Trạng thái 3, có hai trạng thái cảm biến, các trạng thái cảm biến này cho phép thiết bị lấy dữ liệu từ cảm biến cung cấp dữ liệu chính xác nhất tùy thuộc vào điều kiện hoạt động của thiết bị.

Trạng thái cảm biến 1: MPU

Nếu thiết bị không di chuyển, dữ liệu tiêu đề sẽ được lấy từ MPU vì đây là dữ liệu chính xác nhất khi thiết bị không di chuyển.

Trạng thái cảm biến 2: GPS

Nếu thiết bị đang di chuyển, dữ liệu tiêu đề sẽ được lấy từ chip GPS vì đây là dữ liệu chính xác nhất trong điều kiện này.

Thiết bị có thể chuyển đổi giữa các trạng thái này sang trạng thái cảm biến bất kỳ lúc nào để giải thích các điều kiện sử dụng của thiết bị thay đổi. Điều này rất quan trọng đối với hoạt động của thiết bị vì cả hai cảm biến được sử dụng trong thiết bị đều có các điều kiện ảnh hưởng đến độ chính xác của dữ liệu mà chúng cung cấp. Trong trường hợp của MPU, chip có thể dễ dàng bị ảnh hưởng bởi từ trường cục bộ do ô tô và vật liệu xây dựng bằng kim loại trong các tòa nhà gây ra. Do đó, một chip GPS được sử dụng có thể cung cấp tiêu đề chính xác hơn nhiều mà không bị ảnh hưởng bởi các ảnh hưởng tương tự. Tuy nhiên, GPS chỉ có thể cung cấp dữ liệu tiêu đề khi di chuyển vì nó tính toán tiêu đề bằng cách sử dụng sự thay đổi dữ liệu kinh độ và vĩ độ. Do đó, các chip bổ sung cho nhau và bằng cách sử dụng hai trạng thái cảm biến cung cấp chức năng thiết bị chính xác và đáng tin cậy nhất.

Bước 2: Thiết lập và Sơ đồ dây

Sơ đồ thiết lập và dây
Sơ đồ thiết lập và dây
Sơ đồ thiết lập và dây
Sơ đồ thiết lập và dây
Sơ đồ thiết lập và dây
Sơ đồ thiết lập và dây

Dự án sử dụng và board sao chép Arduino Mega tương tự như board ở trên. Tất cả các thành phần trong dự án sẽ được kết nối với bo mạch này. Trên đây là sơ đồ chi tiết cách đấu dây các thành phần cho công trình này. Các nút không có mạch chi tiết vì chúng có thể được thiết lập theo nhiều cách. Trong dự án này, họ sử dụng một điện trở kéo xuống 100K và một nút đơn giản để gửi tín hiệu 3 volt đến chân được chỉ định của nó.

Bước 3: Kiểm tra các thành phần và mã cơ bản

Dự án sẽ lấy dữ liệu từ cả MPU và chip GPS như đã mô tả trước đó. Đính kèm là ba mã cho phép kiểm tra dữ liệu từ MPU, GPS và MPU với màn hình để xác minh chức năng của các bộ phận. Điều quan trọng là phải vận hành các thành phần trong giai đoạn này vì mã riêng biệt cho từng chip và mọi vấn đề có thể được giải quyết mà không sợ gây ra lỗi không lường trước được trong mã cuối cùng.

Thư viện bắt buộc:

Adafruit_ILI9341_Albert.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++. H

Adafruit_NeoPixel.h

MPU9250.h

Tất cả những điều này có thể được tìm thấy bằng cách tìm kiếm các tiêu đề ở trên. Tôi sẽ không đăng các liên kết vì có nhiều bản sao của những thư viện này từ nhiều nguồn và tuân theo tiêu chuẩn cộng đồng là chỉ liên kết đến bản gốc, tôi sẽ để bạn tự tìm những thứ này.

Bước 4: Hiệu chuẩn MPU

Hiệu chuẩn MPU
Hiệu chuẩn MPU

Tiêu đề được tìm thấy qua MPU ở Trạng thái 2 và Trạng thái 3 được chia thành bốn góc phần tư. Điều này là cần thiết vì phương pháp hiệu chuẩn của chúng tôi yêu cầu tìm các cường độ tối thiểu và lớn nhất từ từ kế dọc theo trục x và y của nó. Điều này được thực hiện thông qua việc xoay thiết bị một cách ngẫu nhiên theo ba trục của nó, không bị ảnh hưởng bởi bất kỳ trường điện từ quan trọng nào khác ngoài trường của Trái đất. Sau đó, chúng tôi lấy các giá trị tối thiểu và lớn nhất dọc theo trục x và y và cắm chúng vào một phương trình tỷ lệ để hạn chế độ lớn giữa các giá trị âm một và một. Trong hình trên, BigX và BigY lần lượt là giá trị lớn nhất của dữ liệu từ kế dọc theo trục x và y, LittleX và LittleY lần lượt là giá trị nhỏ nhất của dữ liệu từ kế dọc theo trục x và y, IMU.getMagX_uT () và IMU.getMagY_uT () là các giá trị được kéo từ từ kế bất kỳ lúc nào dọc theo trục x và y tương ứng, và Mx và My là các giá trị được chia tỷ lệ mới được sử dụng để tính toán tiêu đề.

Bước 5: Mã cuối cùng

Mã cuối cùng
Mã cuối cùng
Mã cuối cùng
Mã cuối cùng
Mã cuối cùng
Mã cuối cùng
Mã cuối cùng
Mã cuối cùng

Bước cuối cùng là tạo mã cuối cùng. Tôi đã đính kèm một bản sao của mã cuối cùng của dự án. Trong các ghi chú đã được thực hiện để giúp điều hướng mã. Thách thức lớn nhất của phần này là làm cho các góc phần tư hoạt động chính xác. Việc thực hiện các góc phần tư được chứng minh là tẻ nhạt và bất chấp logic hơn chúng ta có thể dự đoán. Ban đầu chúng tôi triển khai một arctan cơ bản (My / Mx) và sau đó chuyển đổi từ radian sang độ, vì Arduino đầu ra bằng radian theo mặc định. Tuy nhiên, góc phần tư duy nhất này hoạt động là từ 90 độ đến 180 độ, cho chúng tôi đầu ra âm và cuối cùng trở thành Góc phần tư III. Giải pháp cho điều này là lấy giá trị tuyệt đối, vì nó vẫn tăng một cách chính xác. Giá trị này sau đó được trừ đi 360 để làm sáng đúng đèn LED NeoPixel ở trạng thái 2 và một phép toán tương tự được sử dụng ở trạng thái 3 dựa trên việc tiêu đề lớn hơn hay nhỏ hơn tiêu đề đầu vào của người dùng, cả hai đều có thể được nhìn thấy trong mã trên. Trong các hình trên, Heading tương ứng với đèn NeoPixel sẽ sáng lên dựa trên sự khác biệt giữa tiêu đề thiết bị và độ lệch so với hướng bắc trong trường hợp trạng thái 2 và so với tiêu đề của người dùng. Trong trường hợp này, 90 đến 180 độ tương ứng với Quadrant III. Trong cả hai trường hợp, tft.print khiến màn hình đọc hướng thiết bị từ phía bắc.

Đối với ba góc phần tư khác, việc triển khai arctan (My / Mx) dẫn đến sự đảo ngược của tăng khi thiết bị được xoay, tức là góc tiêu đề sẽ đếm ngược khi nó được cho là đếm lên và ngược lại. Giải pháp cho vấn đề này là chuyển arctangent về dạng arctan (Mx / My). Trong khi điều này giải quyết được sự đảo ngược tăng dần, nó không cung cấp tiêu đề thiết bị chính xác, đó là nơi các góc phần tư phát huy tác dụng. Cách khắc phục đơn giản cho điều này là thêm một sự thay đổi dựa trên góc phần tư tương ứng. Điều này có thể được nhìn thấy trong các hình sau, chúng một lần nữa là các đoạn mã từ Trạng thái 2 và 3 của mỗi góc phần tư.

Câu lệnh if đầu tiên được thực hiện nếu tiêu đề được tính bằng phương trình MPU lớn hơn tiêu đề người dùng. Trong điều kiện này, tiêu đề đầu vào của người dùng được thêm vào tiêu đề thiết bị và giá trị tương ứng bị trừ đi 360. Nếu câu lệnh else được thực hiện, phương trình tiêu đề MPU sẽ bị trừ khỏi tiêu đề đầu vào của người dùng. Các điều kiện này được thực hiện để không chỉ nhận được giá trị chính xác cho NeoPixel mà còn để tránh nhận được giá trị nằm ngoài phạm vi có thể chấp nhận được, đó là từ 0 đến 359 độ.

Đề xuất: