Mục lục:
- Bước 1: Thiết kế chức năng của dự án
- Bước 2: Thiết lập và Sơ đồ dây
- Bước 3: Kiểm tra các thành phần và mã cơ bản
- Bước 4: Hiệu chuẩn MPU
- Bước 5: Mã cuối cùng
Video: La bàn kỹ thuật số và công cụ tìm tiêu đề: 6 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
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
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
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
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
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:
Sử dụng phần mở rộng lồng ngực của Hope để tìm Công việc chưa hoàn chỉnh của Sắc lệnh đền thờ trong cây gia đình của bạn về Tìm kiếm gia đình: 11 bước
Sử dụng phần mở rộng Rương của Hope để Tìm công việc pháp lệnh đền thờ chưa hoàn chỉnh trong cây gia đình của bạn trên Tìm kiếm gia đình: Mục đích của tài liệu hướng dẫn này là để trình bày cách tìm kiếm gia phả của bạn trong Tìm kiếm gia đình cho tổ tiên có công việc pháp lệnh đền thờ chưa hoàn thành bằng cách sử dụng phần mở rộng Rương của hy vọng. Sử dụng Hope's Chest có thể tăng tốc đáng kể tìm kiếm của bạn cho
Tiêu chuẩn, Điểm chuẩn và Mục tiêu học tập: 5 bước
Tiêu chuẩn, Điểm chuẩn và Mục tiêu Học tập: Tài liệu hướng dẫn này sẽ hướng dẫn học sinh xây dựng cảm biến đỗ xe bằng arduino. Cụ thể, tôi sẽ có một cảm biến siêu âm liên tục dò tìm khoảng cách và cùng với một mã nhỏ lấy khoảng cách này và đặt nó
Phát hiện chuyển động và tiêu diệt mục tiêu! Dự án DIY Autonomous: 5 bước
Phát hiện chuyển động và tiêu diệt mục tiêu! Dự án tự làm tự động: Phát hiện chuyển động và tiêu diệt mục tiêu! Trong video này, tôi hướng dẫn bạn cách xây dựng dự án theo dõi chuyển động tự làm với Raspberry Pi 3. Dự án tự động nên nó di chuyển và bắn súng khi phát hiện chuyển động. Tôi đã sử dụng mô-đun laser cho dự án này, nhưng bạn
Làm thế nào để đo chính xác mức tiêu thụ điện năng của các mô-đun truyền thông không dây trong kỷ nguyên tiêu thụ điện năng thấp ?: 6 bước
Làm thế nào để đo chính xác mức tiêu thụ điện năng của các mô-đun truyền thông không dây trong kỷ nguyên tiêu thụ điện năng thấp ?: Tiêu thụ điện năng thấp là một khái niệm cực kỳ quan trọng trong Internet of Things. Hầu hết các nút IoT cần được cung cấp năng lượng bằng pin. Chỉ bằng cách đo chính xác mức tiêu thụ điện năng của mô-đun không dây, chúng tôi mới có thể ước tính chính xác lượng pin mà tôi
Chuyển đổi tiêu đề thẳng thành tiêu đề góc phải (trong một chụm): 4 bước
Chuyển đổi tiêu đề thẳng sang tiêu đề góc phải (trong một lần chụm): Sau khi nhìn thấy thông báo về cuộc thi arduino, tôi đã nói, tại sao không thử. ra ngoài và nhận bộ arduino trần trụi, với mục đích " làm cho nó theo cách của tôi ". Một trong những thay đổi đó là một trong những điều đầu tiên bạn