Mục lục:

TinyLiDAR trên Pi ?: 9 bước (có Hình ảnh)
TinyLiDAR trên Pi ?: 9 bước (có Hình ảnh)

Video: TinyLiDAR trên Pi ?: 9 bước (có Hình ảnh)

Video: TinyLiDAR trên Pi ?: 9 bước (có Hình ảnh)
Video: Lesson 80: How to measure distance with VL53L0X GY-530 laser distance meter for Arduino 2024, Tháng mười một
Anonim
TinyLiDAR trên Pi?
TinyLiDAR trên Pi?

Xin chào lần nữa!

Giờ thì bạn đã dành một khoảng thời gian chất lượng với tinyLiDAR và Arduino - Raspberry Pi của bạn có thể cảm thấy hơi cô đơn;)

Pi có một cổng I2C phải không? Vậy tại sao không nối nó lên và thử nó ở đó?! Kế hoạch tốt, nhưng nếu bạn đã thử - bạn có thể nhận thấy dữ liệu trông hơi lạ.

Có, pi đã tích hợp sẵn các thanh kéo 1,8K nên bạn sẽ phải cắt các miếng đệm I2C trên tinyLiDAR để lấy các thanh kéo 4,7K ra khỏi mạch - xem hướng dẫn tham khảo để biết chi tiết. Nhưng đây không phải là lý do cho dữ liệu kỳ lạ.

Đó là bởi vì bus I2C của pi không chính xác theo thông số kỹ thuật. Nó đã như vậy kể từ khi pi lần đầu tiên được giới thiệu do bộ chip Broadcom. Ngay từ đầu họ đã không hỗ trợ thích hợp một tính năng I2C được gọi là "kéo dài đồng hồ".

Bạn có thể đọc thêm về lỗi h / w này tại đây.

Bước 1: Đồng hồ kéo giãn là gì?

Đồng hồ kéo dài là gì?
Đồng hồ kéo dài là gì?

Như bạn có thể biết, bus I2C bao gồm 3 dây. Chúng dành cho xung nhịp (SCL), dữ liệu (SDA) và điểm chung. Đồng hồ và các đường dữ liệu thuộc loại bộ thu mở / bộ thoát hở có nghĩa là chúng cần các điện trở kéo lên được kết nối với đường ray cung cấp tích cực để cung cấp cho chúng mức logic cao. Để mức logic thấp, bất kỳ thiết bị nào trên bus đều có thể kéo đường dây xuống mức chung.

Theo tiêu chuẩn I2C, thiết bị Master là thiết bị cung cấp tín hiệu đồng hồ trên đường SCL nhưng nếu tốc độ này quá nhanh thì thiết bị Slave được phép làm chậm nó bằng cách chỉ cần giữ dòng đồng hồ cho đến khi nó sẵn sàng xử lý với thông tin. Đây là những gì chúng tôi gọi là "đồng hồ kéo dài".

Chính thức, giãn đồng hồ được liệt kê là một tính năng tùy chọn trong tiêu chuẩn I2C nhưng đây là một tính năng rất phổ biến cần thiết cho hầu hết các nô lệ "thông minh" cần thêm thời gian để cung cấp dữ liệu cảm biến, v.v.

Bước 2: Một chút giúp đỡ từ những con lợn bay

Để đối phó với lỗi I2C h / w này, chúng tôi đã tìm thấy một thư viện miễn phí nhỏ xinh có tên "pigpio". Đây là một thư viện rất phổ biến, nhanh và nhẹ được viết bằng C. Nó chạy như một daemon nền cho Raspberry Pi và cho phép chúng tôi điều khiển I2C cũng như bất kỳ GPIO nào một cách dễ dàng từ python. Thư viện xử lý các cổng I2C giống GPIO hơn và do đó đã vượt qua lỗi kéo giãn đồng hồ I2C. Giống như tất cả các phần mềm trên pi, thư viện pigpio chỉ là một "bao gồm" đơn giản, vì vậy hãy bắt đầu!

Bước 3: Phiên bản TL; DR

Thiết lập PiEnable SSH để đăng nhập với thư viện PuttyInstall pigpio Nhận tệp zip tinyLiDARUnzip và chạy từ Putty

Không bắt buộc:

Thiết lập SublimeText với WinSCP

Bước 4: Cài đặt

Cài đặt
Cài đặt

Đối với Raspberry Pi 3 của chúng tôi, chúng tôi đã sử dụng hệ điều hành New Out Of the Box Software (NOOBS Lite v2.4) tiêu chuẩn. Nó chứa một phiên bản Python mặc định đã được cài đặt sẵn để chúng tôi sẵn sàng viết mã. Bạn có thể tải xuống hệ điều hành từ đây.

Sau khi được cài đặt trên thẻ micro SD, bạn phải kết nối bàn phím và màn hình để có thể đăng nhập vào pi lần đầu tiên:

Tên người dùng: pi Mật khẩu: mâm xôi

Sau đó, bạn có thể khởi động một máy chủ shell an toàn (SSH) bằng các lệnh sau:

sudo systemctl kích hoạt sshsudo systemctl start ssh

Tiếp theo, chúng tôi sẽ cần địa chỉ IP của số pi trên mạng của bạn để chúng tôi có thể đăng nhập bằng PuTTY. Để có được điều này, chỉ cần nhập:

tên máy tôi

Và tìm kiếm địa chỉ định dạng IPv4 (Đối với thiết lập của chúng tôi, đó là: 192.168.0.27)

Các bước trên sẽ cho phép pi chạy "không đầu", nghĩa là bạn sẽ không cần gõ lại bàn phím này và cũng không cần màn hình video nữa. Chúng tôi sẽ đăng nhập qua mạng thông qua kết nối SSH an toàn trong tương lai. Lệnh trên khiến máy chủ SSH tự động khởi chạy mỗi khi pi được bật nguồn. Điều này thuận tiện cho chúng tôi khi chúng tôi viết mã nhưng nó có thể là một rủi ro bảo mật sau này (hoang tưởng là tốt) vì vậy khi bạn đã sẵn sàng, bạn có thể tắt tính năng SSH tự động khởi động này bằng lệnh sau:

sudo systemctl vô hiệu hóa ssh

Tất nhiên, lệnh này phải được gõ trên bàn phím kết nối với số pi.

PuTTY là một chương trình đầu cuối được yêu cầu để đưa ra các lệnh từ PC tới pi, vì vậy bạn nên lấy bản sao mới nhất từ đây.

Cài đặt và khởi động PuTTY. Bạn sẽ cần nhập địa chỉ IP từ trên vào mục Tên máy chủ lưu trữ và sử dụng cài đặt SSH mặc định. Đặt cho phiên bất kỳ tên nào bạn muốn và nhấn lưu. Sau đó nhấn tải và nhấp vào MỞ để bắt đầu phiên.

Nó sẽ đưa bạn đến màn hình đăng nhập cho số pi. Sử dụng cùng tên người dùng và mật khẩu mà bạn đã sử dụng trước đó.

Bước 5: Cài đặt Pigpio

Bây giờ, thứ duy nhất chúng ta cần cài đặt sau đó sẽ là thư viện pigpio và chúng ta có thể thực hiện việc này bằng cách sử dụng các lệnh sau.

Mẹo: Bạn có thể chỉ cần sao chép [ctrl + c] và dán [nhấp chuột phải vào chuột] các lệnh này và bất kỳ lệnh nào khác vào thiết bị đầu cuối PuTTY

sudo apt-get cập nhật

sudo apt-get install pigpio python-pigpio python3-pigpio

Bước 6: Tùy chọn: Thiết lập hệ thống Dev

Tùy chọn: Thiết lập hệ thống Dev
Tùy chọn: Thiết lập hệ thống Dev

Vì vậy, đây là một mẹo có thể giúp tiết kiệm thời gian trong thế giới phát triển mã của bạn. Chúng tôi thực sự ghét các trình soạn thảo văn bản dựa trên unix. Giao diện người dùng thường vụng về và phông chữ tệ. GNU nano gần như có thể chịu được nhưng không có gì được tinh chế như SublimeText mà bạn có thể tải xuống từ đây

Chúng tôi có một môi trường phát triển dựa trên windows và thích sử dụng trình soạn thảo văn bản này bất cứ khi nào có thể. Vì vậy, mẹo ở đây là thiết lập hệ thống của bạn để có thể sử dụng trình soạn thảo văn bản chuyên nghiệp này ngay trên màn hình nền windows của bạn để viết mã trực tiếp trên số pi không đầu của bạn.

Thế nào? Sử dụng một ứng dụng miễn phí có tên WinSCP mà bạn có thể tải xuống từ đây

Bước 7: Thiết lập WinSCP

Thiết lập WinSCP
Thiết lập WinSCP
Thiết lập WinSCP
Thiết lập WinSCP

WinSCP là một chương trình truyền tệp an toàn cung cấp một biểu diễn đồ họa của các tệp hiện diện trên rpi của bạn giống như những gì bạn thấy trong trình quản lý tệp trên máy tính chạy windows của bạn.

Vì vậy, hãy tiếp tục và cài đặt hai chương trình trên ngay bây giờ.

Tiếp theo, bạn sẽ phải thực hiện một vài điều chỉnh để làm cho tất cả chúng hoạt động bình thường.

Đối với WinSCP, bạn có thể nhấp vào Trang web MỚI. Chúng tôi sẽ sử dụng cài đặt SFTP mặc định và bạn chỉ cần nhập địa chỉ IP (đối với tên Máy chủ) của số pi và tên đăng nhập (đối với Tên người dùng). Bạn có thể chọn để trống mật khẩu nếu muốn - nó sẽ nhắc bạn nhập mật khẩu mỗi khi bạn đăng nhập.

Tiếp theo, nhấp vào nút Nâng cao và sau đó nhấp vào bên trái để cài đặt Vỏ môi trường. Ở phía bên phải thay đổi "Mặc định" kéo xuống tùy chọn "sudo su -". Điều này sẽ cho phép các thay đổi được ghi vào pi của bạn mà không bị lỗi quyền khi bạn nhấn lưu từ SublimeText.

Đặt SublimeText làm Trình chỉnh sửa mặc định trong WinSCP

Để thực hiện việc này, hãy nhấp vào nút Công cụ trên màn hình cài đặt Đăng nhập WinSCP nơi bạn bắt đầu hộp thoại Trang web mới của mình. Hai ảnh chụp màn hình cho thấy cách này được định cấu hình, nhưng về cơ bản bạn sẽ nhấp vào để định cấu hình tùy chọn Trình chỉnh sửa và Thêm Trình chỉnh sửa sẽ là Trình chỉnh sửa bên ngoài. Sau đó, bạn có thể duyệt tìm tệp.exe của nơi đặt trình chỉnh sửa này trên máy tính của bạn.

Bước 8: (w) lấy mã

(w) nhận mã
(w) nhận mã

Sau khi hoàn tất, hãy tiếp tục và đăng nhập bằng WinSCP và bằng PuTTY.

Bây giờ chúng ta đã sẵn sàng, chúng ta có thể bắt đầu mã LIDAR nhỏ của chúng ta.

Tạo một thư mục có tên tinyLiDAR trong thư mục home / pi của bạn.

Bạn có thể thực hiện việc này bằng cách nhấp chuột phải vào phía bên phải của màn hình WinSCP và chọn New / Directory.

Bây giờ tại thiết bị đầu cuối PuTTY, bạn có thể nhập

cd t

và nhấn tab để nó tự động hoàn thành lệnh của bạn để truy cập thư mục tinyLiDAR.

Khi ở đây, hãy nhập như sau:

wget

để lấy các tệp trực tiếp từ máy chủ của chúng tôi. Sau đó, chúng tôi có thể giải nén chúng bằng cách gõ

giải nén r

và nhấn tab để tự động điền lại tên

Để chạy nó, chỉ cần nhập

python tlgui.py

Và tinyLiDAR của bạn sẽ phản hồi mọi lệnh của bạn trên pi:)

Bước 9: Lưu ý cho các hacker sắp xuất hiện

Hãy tiếp tục và xem xét kỹ lưỡng bằng cách nhấp đúp vào bất kỳ tệp mã nào từ WinSCP. Chúng là những người có phần mở rộng.py. Các tệp sẽ được mở trong SublimeText trực tiếp trên PC của bạn. Thay đổi bất cứ điều gì bạn thích và sau đó nhấn lưu. Các thay đổi của bạn sẽ được lưu trực tiếp vào số pi của bạn.

Khi đã sẵn sàng, bạn chạy lại bằng cách sử dụng phím mũi tên lên cho lệnh đã nhập cuối cùng hoặc chỉ cần nhập lại và nhấn enter:

python tlgui.py

Bạn có thể nhận thấy bố cục Terminal GUI trông đẹp hơn một chút so với phiên bản Arduino. Đó là vì PuTTY hỗ trợ các ký tự unicode, vì vậy chúng tôi có thể sử dụng thêm một số ký tự điều khiển con trỏ để làm cho nó trông tinh tế hơn.

Ngoài ra còn có một lệnh được bổ sung ở đây (so với phiên bản Arduino) là "dc" cho chức năng Đọc liên tục. Hãy thử nó ra và xem những gì bạn nghĩ.

Đó là tất cả!

Cảm ơn vì đã đọc và tận hưởng hack trên pi:)

Đề xuất: