Mục lục:

UWB Localization Feather: 6 bước
UWB Localization Feather: 6 bước

Video: UWB Localization Feather: 6 bước

Video: UWB Localization Feather: 6 bước
Video: 2-Minute Tech: GPS For Buildings - Indoor Positioning System | Indoor Position Tracking 2024, Tháng bảy
Anonim
Lông vũ bản địa hóa UWB
Lông vũ bản địa hóa UWB

Ultra-WideBand Feather kết hợp mô-đun Decawave DWM1000 và ATSAMD21 ARM Cortex M0 vào kiểu dáng lông vũ Adafruit. Mô-đun DWM1000 là mô-đun không dây tuân thủ IEEE802.15.4-2011 UWB có khả năng định vị chính xác trong nhà và tốc độ dữ liệu cao, làm cho bo mạch này trở nên hoàn hảo cho các dự án rô bốt yêu cầu bản địa hóa.

Các tính năng: - Decawave DWM1000 để theo dõi chính xác– ARM Cortex M0 cho các ứng dụng nhanh và mạnh mẽ– Adafruit Feather tương thích để tích hợp với hệ sinh thái hiện có rộng rãi– Giao diện SWD để lập trình và gỡ lỗi các ứng dụng– Đầu nối USB-C– Bộ sạc pin LiPo tích hợp

Để có bản ghi và cập nhật dự án đầy đủ, hãy xem dự án này trên trang web của tôi Prototyping Corner tại prototypingcorner.io/projects/uwb-feather

Phần cứng và phần mềm nguồn cho dự án này có sẵn từ Kho lưu trữ GitHub.

Bước 1: Thiết kế phần cứng

Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng

Như đã đề cập trong phần giới thiệu, UWB Feather bao gồm ATSAMD21 ARM Cortext M0 + cho não và mô-đun Decawave DWM1000 cho không dây băng tần siêu rộng, ở dạng lông vũ. Thiết kế tương đối đơn giản bao gồm 20 mục BoM trên PCB 2 lớp. Pinout tương thích với Adafruit M0 Feather

Quá trình sạc LiPo được xử lý bởi bộ điều khiển quản lý sạc tích hợp đầy đủ MCP73831 đơn cell. Điện áp pin có thể được theo dõi trên D9, tuy nhiên, nếu cần có quyền truy cập vào tất cả IO, có thể cắt JP1 để giải phóng chân này. Điều chỉnh 3,3 volt được điều chỉnh trước bởi bộ điều chỉnh tuyến tính thả lỏng thấp AP2112K-3.3, cung cấp lên đến 600mA.

Pinout hoàn toàn tương thích với dòng lông vũ Adafruit M0 để dễ dàng di chuyển mã. Các dòng DWM1000 IO được kết nối với bus SPI và các chân kỹ thuật số 2, 3 & 4 cho RST, IRQ & SPI_CS tương ứng (không được tiếp xúc qua tiêu đề). D13 cũng được kết nối với đèn LED trên bo mạch, như là tiêu chuẩn trong số nhiều bo mạch tương thích với Arduino.

Lập trình có thể được định dạng trước qua tiêu đề SWD hoặc qua USB nếu được tải bằng bộ nạp khởi động tương ứng như uf2-samdx1 của Microsoft. Xem phần sụn để biết thêm.

Lưu ý trên V1.0

Đã xảy ra sự cố với đầu nối USB-C trên phiên bản 1 của bo mạch này. Dấu chân mà tôi đã sử dụng không bao gồm phần cắt cần thiết cho phương pháp lắp hình cắt của thành phần này.

Phiên bản 1.1 sẽ bao gồm một bản sửa lỗi cho điều này cũng như thêm một trình kết nối micro-b cho những người muốn nó. Xem các cân nhắc về phiên bản 1.1 bên dưới.

Để biết các cân nhắc về thiết kế của Bill of Materials and Hardware Version 1.1, hãy xem bản ghi của dự án.

Bước 2: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp

Chỉ với 20 mặt hàng BoM và hầu hết các thành phần không nhỏ hơn 0603 (2 tụ tinh thể là 0402), việc lắp ráp bằng tay bo mạch này rất dễ dàng. Tôi đã có PCB và stencil hàn do JLCPCB sản xuất với màu đen mờ với bề mặt hoàn thiện ENIG.

Tổng chi phí cho 5 tấm bảng (mặc dù 10 tấm không có chênh lệch giá) và stencil là $ 68 AUD, tuy nhiên $ 42 trong số đó là phí vận chuyển. Lần đầu tiên đặt hàng từ JLCPCB và bảng có chất lượng rất cao với độ hoàn thiện đẹp.

Bước 3: Phần mềm cơ sở: Lập trình Bộ nạp khởi động

Phần mềm cơ sở: Lập trình Bộ nạp khởi động
Phần mềm cơ sở: Lập trình Bộ nạp khởi động
Phần mềm cơ sở: Lập trình Bộ nạp khởi động
Phần mềm cơ sở: Lập trình Bộ nạp khởi động
Phần mềm cơ sở: Lập trình Bộ nạp khởi động
Phần mềm cơ sở: Lập trình Bộ nạp khởi động

Phần mềm cơ sở có thể được tải qua đầu nối SWD bằng cách sử dụng một lập trình viên chẳng hạn như J-Link từ Segger. Hình trên là J-Link EDU Mini. Để bắt đầu lập trình bo mạch, chúng ta cần tải bộ nạp khởi động sau đó thiết lập chuỗi công cụ của mình.

Tôi sẽ sử dụng Atmel Studio để cài đặt bộ nạp khởi động. Để làm như vậy, hãy cắm J-Link và mở Atmel Studio. Sau đó chọn Công cụ> Lập trình thiết bị. Trong Công cụ, chọn J-Link và đặt Thiết bị thành ATSAMD21G18A, sau đó nhấp vào Áp dụng.

Kết nối J-Link với đầu cắm SWD lông vũ và cấp nguồn qua USB hoặc qua pin. Sau khi kết nối, bên dưới Chữ ký thiết bị, hãy nhấp vào Đọc. Các hộp văn bản Chữ ký thiết bị và Điện áp mục tiêu sẽ phổ biến tương ứng. Nếu họ không kiểm tra các kết nối và thử lại.

Để flash bộ nạp khởi động, trước tiên chúng ta cần tắt cầu chì BOOTPROT. Để thực hiện việc này, hãy chọn Cầu chì> USER_WORD_0. NVMCTRL_BOOTPROT và thay đổi thành 0 Byte. Nhấp vào Chương trình để tải lên các thay đổi.

Bây giờ chúng ta có thể flash bootloader bằng cách chọn Memories> Flash và đặt vị trí của bootloader. Đảm bảo Xóa Flash trước khi lập trình được chọn và nhấp vào Chương trình. Nếu mọi việc suôn sẻ, D13 trên bảng sẽ bắt đầu hoạt động.

Bây giờ bạn sẽ cần đặt cầu chì BOOTPROT thành kích thước bộ nạp khởi động 8kB. Để thực hiện việc này, hãy chọn Cầu chì> USER_WORD_0. NVMCTRL_BOOTPROT và thay đổi thành 8192 Byte. Nhấp vào chương trình để tải lên các thay đổi.

Bây giờ bộ nạp khởi động đã được flash D13 sẽ hoạt động và nếu được cắm qua USB, một thiết bị lưu trữ chung sẽ xuất hiện. Đây là nơi các tệp UF2 có thể được tải lên để lập trình bo mạch.

Bước 4: Phần mềm cơ sở: Mã nhấp nháy với PlatformIO

Phần mềm cơ sở: Mã nhấp nháy với PlatformIO
Phần mềm cơ sở: Mã nhấp nháy với PlatformIO
Phần mềm cơ sở: Mã nhấp nháy với PlatformIO
Phần mềm cơ sở: Mã nhấp nháy với PlatformIO

Firmware có thể được tải lên qua giao thức UF2 hoặc trực tiếp qua giao diện SWD. Ở đây, chúng tôi sẽ sử dụng PlatformIO vì sự dễ dàng và đơn giản của nó. Để bắt đầu, hãy tạo một dự án PIO mới và chọn Adafruit Feather M0 làm bảng mục tiêu. Khi tải lên qua SWD bằng J-Link, hãy đặt upload_protocol trong platformio.ini như hình dưới đây.

[env: adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink

Bây giờ bạn có thể lập trình bảng với sự đơn giản của khung Arduino.

Bước 5: Phần mềm cơ sở: Nhấp nháy neo

Phần mềm cơ sở: Nhấp nháy Anchor
Phần mềm cơ sở: Nhấp nháy Anchor
Phần mềm cơ sở: Nhấp nháy Anchor
Phần mềm cơ sở: Nhấp nháy Anchor

Các mô-đun DWM1000 có thể được cấu hình để trở thành neo hoặc thẻ. Nói chung, các neo được giữ ở các vị trí tĩnh đã biết và các thẻ sử dụng các neo để có được một vị trí tương đối với chúng. Để kiểm tra mô-đun DWM1000, bạn có thể tải lên ví dụ DW1000-Anchor từ kho lưu trữ GitHub.

Để flash chương trình này với PlatformIO, từ PIO Home, chọn Open Project, sau đó tìm vị trí của thư mục DW1000-Anchor trong kho lưu trữ GitHub. Sau đó nhấp vào nút tải lên PIO và nó sẽ tự động tìm đầu dò gỡ lỗi đính kèm (đảm bảo nó được kết nối và bo mạch được cấp nguồn).

Phần sụn thẻ sẽ cần được tải lên bảng khác. Sau đó, kết quả có thể được xem trong một thiết bị đầu cuối nối tiếp.

Bước 6: Tiến xa hơn

Đi xa hơn
Đi xa hơn

Những cải tiến hơn nữa cho dự án này sẽ bao gồm phát triển thư viện DW1000 mới, bo mạch V1.1 thay đổi các dự án khác sử dụng công nghệ đa dạng này. Nếu có đủ tiền lãi, tôi sẽ cân nhắc việc sản xuất và bán các bảng này.

Cảm ơn vì đã đọc. Để lại bất kỳ suy nghĩ hoặc phê bình nào trong phần bình luận bên dưới và nhớ xem dự án trên Góc tạo mẫu

Đề xuất: