Mục lục:

Hệ thống hỗ trợ đỗ xe dựa trên Pi: 9 bước
Hệ thống hỗ trợ đỗ xe dựa trên Pi: 9 bước

Video: Hệ thống hỗ trợ đỗ xe dựa trên Pi: 9 bước

Video: Hệ thống hỗ trợ đỗ xe dựa trên Pi: 9 bước
Video: Nên khởi động 1 phát ăn ngay hay kích hoạt hệ thống điện xong mới khởi động? | TIPCAR TV 2024, Tháng mười một
Anonim
Hệ thống hỗ trợ đỗ xe dựa trên Pi
Hệ thống hỗ trợ đỗ xe dựa trên Pi

Này đó! Đây là một dự án nhỏ thú vị mà bạn có thể thực hiện trong một buổi chiều và sau đó sử dụng nó hàng ngày. Nó dựa trên Raspberry Pi Zero W và sẽ giúp bạn đỗ xe hoàn hảo mọi lúc.

Dưới đây là danh sách đầy đủ các bộ phận bạn sẽ cần:

  • Raspberry Pi Zero W (chúng tôi sẽ gọi đây là 'rpi' hoặc 'pi' trong bài viết này)
  • Thẻ micro SD 4GB hoặc lớn hơn cho hệ điều hành pi
  • Hai mô-đun cảm biến khoảng cách thời gian bay LiDAR tí hon
  • Bảng điều khiển LED RGB 32x32 (có nhiều nhà sản xuất cho loại này với các cao độ chấm khác nhau, ví dụ: bạn có thể sử dụng Adafruit 1484 hoặc tương tự, chỉ cần tìm kiếm 'Ma trận LED 32x32' trên Google). Bảng điều khiển của chúng tôi có độ cao 6mm.
  • 25 feet của cáp CAT5
  • khoảng 22 dây nối ghim đầu nam sang nam có màu
  • Nguồn cung cấp 5v 2Amp microUSB (bộ sạc điện thoại di động) Đã sẵn sàng? Đi nào!

TL; DR Tóm tắt

  • Tải xuống hệ điều hành Raspbian Lite cho rpi
  • Định cấu hình pi để chạy không đầu qua WiFi với IP tĩnh
  • Thiết lập môi trường nhà phát triển PC của bạn với PuTTY, WinSCP và tùy chọn SublimeText w / FTP addon
  • Tải xuống, tạo và liên kết trình điều khiển bảng LED
  • Tải xuống và cài đặt pigpio
  • Tải xuống mã Python của chúng tôi
  • Kết nối bảng điều khiển màn hình LED 32x32
  • Tạo cáp mở rộng CAT5 cho cảm biến LiDAR nhỏ bên cạnh
  • Bước tùy chọn (nhưng chỉ dành cho người dùng nâng cao): nhảy nhanh vui vẻ khi tất cả đều hoạt động;)

Bước 1: Pi Zero W là gì?

Pi Zero W là gì?
Pi Zero W là gì?

Bạn chắc chắn đã nghe nói về Raspberry Pi nhưng pi 'Zero W' là cái quái gì?

Raspberry Pi Zero và Zero W là những bổ sung gần đây hơn cho gia đình Pi có nghĩa là nhiều hơn cho IoT và các ứng dụng nhúng chi phí thấp khác. Chúng là phiên bản rút gọn của bảng pi ban đầu nhưng vẫn sử dụng bộ vi xử lý 1GHz mạnh mẽ. Đây là một so sánh tốt của tất cả các mô hình.

Lợi ích cho chúng tôi khi chọn Pi Zero W ở đây so với các bảng điều khiển khác là chúng tôi có thể dễ dàng lập trình nó bằng ngôn ngữ Python cấp cao hơn trong khi vẫn sử dụng trình điều khiển bảng LED C / C ++ nhanh chóng. Nó cũng có giá hấp dẫn chỉ $ 10USD.

Hãy nhớ rằng vì bảng này là phiên bản rút gọn của một số pi đầy đủ - một số thứ đã thay đổi. Đặc biệt, giắc cắm ethernet đã bị loại bỏ, cổng kết nối HDMI đã thay đổi thành kích thước nhỏ và bốn cổng USB đã được đơn giản hóa xuống chỉ còn một loại micro USB. Có một đầu nối micro USB khác trên bo mạch, nhưng nó chỉ để cấp nguồn cho bo mạch. Việc loại bỏ tất cả các đầu nối USB kích thước đầy đủ dẫn đến một số phức tạp. Cụ thể, làm thế nào bạn có thể kết nối bàn phím và chuột? Thiết bị ngoại vi và bộ chia USB tiêu chuẩn sử dụng đầu nối Loại A không phải loại micro.

Vậy chúng ta có thể làm gì?

Chúng ta có thể đi không đầu!

Không, chúng tôi không có ý điên rồ mà sử dụng một giải pháp thay thế cho thiết lập có dây trực tiếp thông thường. Headless có nghĩa là "đường hầm" vào pi từ xa bằng cách sử dụng kết nối mạng bảo mật (SSH). Đối với dự án này, chúng tôi sẽ sử dụng cách tiếp cận không đầu qua WiFi. Do đó, lý do để chúng tôi chọn phiên bản W của số pi 0 thay vì số pi 0 thậm chí còn thấp hơn.

Lưu ý rằng cũng có một cách khác để chạy số pi ở chế độ không đầu bằng cách sử dụng một thứ gọi là VNC. Nó cần phần mềm VNC đặc biệt chạy trên PC của bạn vì nó cung cấp một màn hình đồ họa ảo đầy đủ trên PC của bạn. Chúng tôi không yêu cầu (và thực sự không muốn) máy tính để bàn cho dự án của mình, vì vậy chúng tôi sẽ sử dụng phương pháp SSH đơn giản hơn.

Bước 2: Scotty, chúng ta cần thêm sức mạnh

Scotty, chúng ta cần thêm sức mạnh!
Scotty, chúng ta cần thêm sức mạnh!

Bảng điều khiển ma trận LED 32x32 có thể, tự nó, có một vài ampe hiện tại. Không đua đâu! Đó là lý do tại sao hầu hết các bảng này bao gồm một số dây cáp điện trông rất lớn để cung cấp năng lượng cho nó. May mắn thay cho chúng tôi mặc dù chúng tôi sẽ không cần phải có một nguồn cung cấp điện lớn cho dự án này. Chúng tôi đã có thể cấp nguồn cho toàn bộ hệ thống này chỉ từ một bộ sạc điện thoại di động microUSB 5v / 2amp dự phòng mà chúng tôi đã đặt xung quanh. Lý do cho dòng điện thấp hơn là do chúng tôi sử dụng đồ họa tương đối đơn giản và do đó không bật hầu hết các đèn LED. Nếu bạn đang nghĩ đến việc tạo hoạt ảnh hoặc sử dụng video / đồ họa tươi sáng thì bạn chắc chắn nên cân nhắc cấp nguồn cho bảng điều khiển từ nguồn điện riêng.

Bước 3: Vị trí và phần mềm cảm biến

Vị trí cảm biến và phần mềm
Vị trí cảm biến và phần mềm
Vị trí cảm biến và phần mềm
Vị trí cảm biến và phần mềm

Bạn có nhận thấy rằng chúng tôi đang sử dụng hai tinyLiDAR trong hệ thống này thay vì chỉ một? Như trong sơ đồ thiết lập nhà để xe, một chiếc được đặt ở phía trước của chiếc xe và chiếc còn lại được đặt dọc theo một bên của chiếc xe.

Cảm biến bên sẽ phát hiện nếu bạn lệch tâm khi bạn đỗ xe và tất nhiên cảm biến phía trước sẽ cho bạn biết khi nào cần dừng lại.

Màn hình LED 32x32 sẽ hỗ trợ bạn bằng cách hiển thị các mũi tên để di chuyển về phía trước, trái hoặc phải và màn hình đếm ngược với các góc màu để cho biết bạn còn phải lái bao xa. Hãy xem video ngắn của chúng tôi để biết tất cả các trạng thái hiển thị.

Kế hoạch trò chơi

Tóm lại, chúng tôi đang sử dụng thư viện hzeller C phổ biến chưa từng có cho trình điều khiển LED, Python cho mã điều khiển và thư viện pipgpio C để kiểm soát I2C thích hợp đối với các cảm biến của chúng tôi.

Python là một ngôn ngữ cấp cao siêu dễ dàng mà bạn có thể dễ dàng chỉnh sửa trên bất kỳ trình soạn thảo văn bản nào. Chúng tôi thường sử dụng SublimeText và đối với dự án này, chúng tôi cũng sử dụng một plugin FTP rất hữu ích cho phép chúng tôi chỉnh sửa các tệp script trực tiếp trên pi. Đây là bước tùy chọn vì nó chỉ cần thiết nếu bạn muốn chỉnh sửa mã. Thông tin chi tiết có ở cuối bài viết này.

Tất cả các bo mạch rpi, như bạn có thể biết, tự nhiên không hỗ trợ giãn đồng hồ I2C. Vì vậy, chúng tôi đã sử dụng lại thư viện pigpio cho dự án này để điều khiển các cảm biếnLiDAR tí hon nhưng lần này với một chút thay đổi…

Nhiều LiDAR nhỏ

Khi bạn mua tinyLiDAR, nó luôn được đặt thành địa chỉ nô lệ mặc định là 0x10. Điều này là tốt khi bạn đang sử dụng một cảm biến duy nhất nhưng nếu bạn có nhiều cảm biến trên bus thì có thể là một vấn đề nếu bạn viết một lệnh thành 0x10 và tất cả chúng đều trả lời lại!

Vì vậy, chúng tôi có 3 tùy chọn ở đây:

Đầu tiên, chúng ta có thể sử dụng lệnh (tinyLiDAR) "R" để viết một địa chỉ phụ mới cho một cảm biến được kết nối với bus I2C. Sau đó lặp lại điều này cho từng cảm biến. Gắn, ghi và tháo từng cảm biến một cách vật lý cho quy trình này. tinyLiDAR sẽ lưu trữ địa chỉ đã cho trong bộ nhớ không bay hơi trên bo mạch của nó. Địa chỉ sẽ tồn tại ngay cả sau khi bật nguồn cho đến khi bạn xóa nó bằng cách ra lệnh ĐẶT LẠI.

Tùy chọn thứ hai là sử dụng tính năng Tự động chỉ định tiện lợi mà chúng tôi đã tạo làm mục tiêu kéo dài trong chiến dịch IGG. Điều này liên quan đến việc gửi lệnh "AR" và sau đó chỉ ngón tay của bạn vào từng cảm biến riêng lẻ để tự động gán địa chỉ I2C tuần tự cho từng cảm biến tương tự như tùy chọn đầu tiên nhưng bạn không phải ngắt kết nối vật lý từng cảm biến để thực hiện việc này.

Tùy chọn thứ ba là tùy chọn mà chúng tôi đang sử dụng ở đây trong dự án này và nó có thể thực hiện được nhờ thư viện pigpio. Để triển khai đúng tiêu chuẩn I2C, hãy tạo bitbang cho GPIO. Do đó, chúng ta có thể dễ dàng tạo các bus I2C riêng biệt trên bất kỳ cặp chân GPIO dự phòng nào.

Do đó, không cần phải lập trình lại các địa chỉ phụ cho nhiều cảm biến LiDAR. Chúng tôi chỉ có thể sử dụng một xe buýt riêng cho mỗi cái:)

Lưu ý rằng bus I2C chạy ở tốc độ 100Kbps thực sự khá mạnh mẽ. Chúng tôi đang sử dụng cáp ethernet CAT5 cũ đơn giản để chạy bus I2C ra cảm biến tinyLiDAR bên cạnh, cách đó 25 feet mà không có bất kỳ bộ phận lặp hoạt động nào! Chi tiết hệ thống dây cảm biến được hiển thị ở trên.

Được rồi, đủ jabber jibber, chúng ta hãy bắt đầu tải xuống mã!

Bước 4: Thiết lập Pi

Thiết lập Pi
Thiết lập Pi
Thiết lập Pi
Thiết lập Pi

Thận trọng: Pi sử dụng hệ thống tệp Linux, vì vậy tốt nhất bạn nên thực hiện các bước sau trên hệ thống dựa trên Linux. Bạn có thể kết thúc việc định dạng lại thẻ SD của mình nếu bạn thực hiện việc này trên Windows. Chúng tôi đã sử dụng máy tính để bàn Ubuntu 18.04 tuyệt vời và miễn phí chạy trong môi trường ảo trên PC chạy Windows 10 nhưng bạn có thể thử một cái gì đó tương tự.

Trước tiên, bạn sẽ cần tải xuống hệ điều hành từ raspberrypi.org và sau đó ghi nó vào thẻ nhớ microSD của mình. Vì vậy, hãy làm theo các bước sau:

(1) Trong Ubuntu, hãy vào đây và lấy hình ảnh Raspbian Lite. Lưu nó vào thư mục tải xuống của bạn.

(2) Tiếp theo tải xuống tiện ích ghi thẻ SD Etcher. FYI - liên kết tải xuống Etcher chính thức cho phiên bản Linux trên trang chủ của họ không hoạt động với chúng tôi, vì vậy chúng tôi đã sử dụng phương pháp được mô tả ở đây để thay thế:

Tóm lại, các bước được mô tả trong liên kết là:

Thêm kho lưu trữ debian Etcher:

echo "deb https://dl.bintray.com/resin-io/debian stable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list

Tin tưởng khóa GPG của Bintray.com:

sudo apt-key adv --keyserver keyerver.ubuntu.com --recv-key 379CE192D401AB61

Cập nhật và cài đặt:

sudo apt-get cập nhật

sudo apt-get install etcher-electron

Sau khi hoàn tất, bạn có thể tiếp tục và khởi chạy Etcher từ màn hình Ubuntu của mình. Nó sẽ yêu cầu bạn cung cấp tệp nguồn (mà bạn đặt trong thư mục tải xuống). Bước tiếp theo trong Etcher là chọn mục tiêu chính xác. Etcher thực hiện tốt công việc phát hiện thẻ micro SD của bạn nhưng bạn nên hoang tưởng ở đây. Để xác minh rằng nó đang tìm đúng điểm đến - hãy thử mở thẻ microSD bằng cách nhấp vào đẩy ra trong cửa sổ trình khám phá tệp Ubuntu và xác minh rằng nó biến mất dưới dạng tùy chọn đích bên trong Etcher. Sau đó, bật lại và tiếp tục bước cuối cùng, đó là ghi tệp vào thẻ nhớ microSD này.

Chờ một lúc cho đến khi hoàn thành và sau đó tiếp tục trở đi.

Bước 5: Thời gian WiFi

Thời gian WiFi
Thời gian WiFi
Thời gian WiFi
Thời gian WiFi

Được rồi, bây giờ là lúc nhập chi tiết WiFi của bạn.

Mẹo: bạn luôn có thể sao chép (Ctrl + C) và dán (Nhấp chuột phải, Dán) thông tin từ bài viết này vào màn hình đầu cuối PuTTY thay vì nhập các lệnh. Kiểm tra phần cuối của bài viết này để biết một số lệnh Linux hữu ích.

Khi Etcher ghi xong vào thẻ micro SD sẽ có 2 ổ hiện lên như hình trên. Một cái được gọi là khởi động cái kia được gọi là rootfs

Chúng tôi cần sử dụng trình quản lý tệp để đi vào thư mục khởi động và tạo tệp có tên wpa_supplicant.conf.

Để thực hiện bước này, bạn chỉ cần nhấp vào bên trái nơi nó thông báo khởi động và sau đó ở bên phải của màn hình, bạn có thể nhấp chuột phải vào backgroud màu trắng và chọn Mở trong Thiết bị đầu cuối.

Thao tác này sẽ mở ra một cửa sổ đầu cuối (tương tự như CMD trong Windows), nơi bạn có thể nhập như sau:

sudo nano wpa_supplicant.conf Mẹo: Bạn sẽ cần nhập mật khẩu hệ thống Linux của mình để nó có thể chạy với tư cách Người dùng cấp cao. Điều này là bắt buộc, nếu không, bạn sẽ không thể lưu tệp khi chỉnh sửa xong

Sau đó, lệnh trên sẽ khởi chạy trình soạn thảo văn bản "nano", nơi bạn có thể nhập các thông tin sau:

country = US

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}

Lưu ý: Hãy nhớ thay WiFi_SSID và WiFi_Password bằng tên và mật khẩu mạng WiFi của riêng bạn.

Khi bạn hoàn tất, chỉ cần nhấp vào Ctrl + X để thoát và trả lời Có để ghi tệp khi thoát.

Bước tiếp theo của chúng ta là tạo một tệp trống có tên ssh. Để thực hiện việc này, chúng ta chỉ cần nhập dòng lệnh sau vào cửa sổ dòng lệnh:

chạm vào ssh

Bây giờ chúng ta cần cung cấp cho pi của mình một địa chỉ IP tĩnh để chúng ta biết vị trí của nó mỗi khi chúng ta muốn kết nối với nó. Nhập nội dung sau vào cửa sổ dòng lệnh:

sudo nano /etc/dhcpcd.conf

Thao tác này sẽ mở lại trình soạn thảo văn bản nano và chúng tôi có thể thêm văn bản này vào cuối tệp:

giao diện wlan0

static ip_address = 192.168.0.static routers = 192.168.0.1 static domain_name_servers = 192.168.0.1 8.8.8.8

Lưu ý: Điều này giả sử tiền tố mạng của bạn là 192.168.0. Nếu bạn có 192.168.1, v.v. thì hãy sử dụng mạng của bạn để thay thế. Máy chủ tên miền 8.8.8.8 dành cho Google và tùy chọn của nó tại đây.

Nhập 'exit' trong Terminal để đóng nó. Sau đó nhấp chuột phải vào tên khởi động ở phía bên trái của cửa sổ Trình quản lý tệp và chọn Đẩy ra.

Giờ đây, bạn có thể cắm thẻ microSD này vào số pi của mình và cắm cáp nguồn microUSB để cấp nguồn cho số pi của bạn.

Nếu mọi việc suôn sẻ, đèn LED màu xanh lục sẽ nhấp nháy một lúc giống như nó đang truy cập vào ổ đĩa cứng và nó sẽ đăng nhập bạn vào mạng WiFi của mình. Chờ khoảng một phút để lắng xuống và đợi đèn LED chuyển sang màu xanh lục đồng nhất.

Để xác minh rằng tất cả đều hoạt động, chúng tôi có thể thử ping nó.

Vì vậy, chỉ cần nhập dòng bên dưới và kiểm tra phản hồi.

ping 192.168.0.200

Trong Ubuntu, bạn sẽ nhận được một cái gì đó tương tự như sau:

ping 192.168.0.200

PING 192.168.0.200 (192.168.0.200) 56 (84) byte dữ liệu. 64 byte từ 192.168.0.200: icmp_seq = 1 ttl = 128 time = 752 ms 64 byte từ 192.168.0.200: icmp_seq = 2 ttl = 128 time = 5,77 ms 64 byte từ 192.168.0.200: icmp_seq = 3 ttl = 128 time = 7.33 ms ^ C --- 192.168.0.200 thống kê ping --- 3 gói được truyền, 3 gói nhận được, 0% mất gói, thời gian 2001ms rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 ms

Lưu ý rằng ping tiếp tục hoạt động cho đến khi bạn nhấn Ctrl + C để thoát.

Trong Windows, bạn sẽ nhận được một cái gì đó như sau:

ping 192.168.0.200

Ping 192.168.0.200 với 32 byte dữ liệu: Trả lời từ 192.168.0.200: byte = 32 thời gian = 4ms TTL = 64 Trả lời từ 192.168.0.200: byte = 32 thời gian = 5ms TTL = 64 Trả lời từ 192.168.0.200: byte = 32 thời gian = 6ms TTL = 64 Trả lời từ 192.168.0.200: byte = 32 time = 5ms TTL = 64 Thống kê ping cho 192.168.0.200: Các gói: Đã gửi = 4, Đã nhận = 4, Mất = 0 (mất 0%), Thời gian khứ hồi gần đúng tính bằng mili giây: Tối thiểu = 4ms, Tối đa = 6ms, Trung bình = 5ms

Tất cả đều tốt? Về sau…

Bước 6: Đăng nhập

Đăng nhập
Đăng nhập

Bây giờ chúng ta có kết nối với pi, chúng ta muốn gửi lệnh cho nó. Nhưng làm thế nào? Tất nhiên là PuTTY! Bạn có thể tải xuống PuTTY từ đây Thiết lập PuTTY Sau khi tải xuống phần mềm PuTTY, hãy tạo hồ sơ cho số pi của bạn với các thông tin sau:

Tên máy chủ (hoặc địa chỉ IP): 192.168.0.200 Loại kết nối: SSH Đặt tên cho cấu hình này trong Phiên đã lưu và nhấn Lưu. Bạn có thể sử dụng bất kỳ tên nào bạn thích, ví dụ: "rpizw_200"

Để đăng nhập, chỉ cần chọn nó từ danh sách và nhấn Tải. Sau đó nhấn Mở. Nhập tên người dùng và mật khẩu để đăng nhập:

tên đăng nhập: pi

Mật khẩu Defalt: raspberry

Đây là một phiên mẫu được hiển thị trong PuTTY khi bạn đăng nhập:

đăng nhập bằng: pi

Mật khẩu của [email protected]: Linux raspberrypi 4.14.34+ # 1110 Thứ Hai ngày 16 tháng 4 14:51:42 BST 2018 armv6l Các chương trình đi kèm với hệ thống Debian GNU / Linux là phần mềm miễn phí; các điều khoản phân phối chính xác cho mỗi chương trình được mô tả trong các tệp riêng lẻ trong / usr / share / doc / * / copyright. Debian GNU / Linux đi kèm với TUYỆT ĐỐI KHÔNG CÓ BẢO HÀNH, trong phạm vi luật hiện hành cho phép. Lần đăng nhập cuối cùng: [ngày và giờ] từ 192.168.0. [Địa chỉ ip] SSH được bật và mật khẩu mặc định cho người dùng 'pi' không được thay đổi. Đây là một rủi ro bảo mật - vui lòng đăng nhập với tư cách người dùng 'pi' và nhập 'passwd' để đặt mật khẩu mới.

Trong lần đăng nhập đầu tiên, nó sẽ cảnh báo rằng bạn chưa thay đổi mật khẩu. Bạn nên thay đổi nó thành một cái gì đó mạnh mẽ nhưng đơn giản để nhớ, vì vậy hãy tiếp tục và thay đổi nó bằng cách nhập passwd và làm theo lời nhắc.

Tiếp theo, chúng ta nên cập nhật phần mềm trên pi bằng cách nhập vào:

sudo apt-get update && sudo apt-get nâng cấp

Thao tác này sẽ tải xuống bất kỳ bản cập nhật nào mà nó cần từ kết nối internet của bạn. Trả lời CÓ nếu được nhắc cho phép nó tiếp tục và sau đó cho nó một thời gian để cập nhật.

Tại thời điểm này, chúng ta có lẽ cũng nên tắt âm thanh trên pi vì nó có một số tiếng xấu với thư viện trình điều khiển LED. Sao chép, dán lần lượt các dòng sau và nhấn enter sau mỗi dòng:

cd ~

con mèo << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u

Đầu ra sẽ như thế này:

pi @ raspberrypi: ~ $ cd ~

pi @ raspberrypi: ~ $ cat <> blacklist snd_bcm2835>> EOF blacklist snd_bcm2835 pi @ raspberrypi: ~ $ sudo update-initramfs -u pi @ raspberrypi: ~ $

Sau đó, chúng tôi phải khởi động lại pi để các thay đổi có hiệu lực, vì vậy hãy nhập như sau:

sudo khởi động lại ngay bây giờ

Tất nhiên, kết nối sẽ bị ngắt khi pi đang khởi động lại, vì vậy bạn có thể đóng PuTTY. Hãy thử đăng nhập lại sau một phút.

Bây giờ đã đến lúc tải xuống một trình quản lý tệp FTP đồ họa có tên là WinSCP. Bạn có thể tải xuống WinSCP từ đây

WinSCP rất giống với trình quản lý tệp trên Windows và Ubuntu. Nó cho phép chúng ta dễ dàng kéo và thả các tập tin đến & từ pi và tạo các lệnh chỉ với một cú nhấp chuột phải.

Sau khi tải xuống, bạn sẽ cần thiết lập cấu hình cho số pi của mình.

Thiết lập WinSCP Tại cửa sổ bật lên Đăng nhập, chọn Trang web mới. Sử dụng các cài đặt sau cho phiên:

Giao thức tệp: SFTP Tên máy chủ: 192.168.0.200 Tên người dùng: pi Mật khẩu: {bất kỳ mật khẩu nào bạn đã thay đổi mật khẩu mặc định trong bước PuTTY ở trên}

Trong Cài đặt trang nâng cao, hãy chuyển đến Môi trường | Thư mục và nhập / home / pi cho thư mục Từ xa và bất cứ thứ gì bạn thích cho cài đặt Thư mục cục bộ.

Trong Cài đặt trang web nâng cao, hãy chuyển đến Môi trường | Shell và chọn sudo su - trong danh sách thả xuống Shell.

Sau đó nhấn Lưu.

Giữ cả WinSCP và PuTTY mở trong khi thực hiện các bước sau

Đi tới thiết bị đầu cuối PuTTY và nhập thông tin sau:

cd ~

Điều này sẽ đưa chúng tôi đến thư mục chính của chúng tôi bên trong số pi.

Bây giờ chúng ta có thể lấy thư viện trình điều khiển LED từ github. Để sử dụng mã mới nhất, chúng ta sẽ cần kéo repo, vì vậy chúng ta cần cài đặt tiện ích git.

Nhập cái này vào PuTTY:

sudo apt-get install git

trả lời Y để tiếp tục và sẽ mất vài giây để cài đặt git cho chúng tôi từ internet.

Đầu ra sẽ giống như sau:

pi @ raspberrypi: ~ $ sudo apt-get install git

Đọc danh sách gói… Xong Xây dựng cây phụ thuộc Đọc thông tin trạng thái… Xong Các gói bổ sung sau sẽ được cài đặt: git-man liberror-perl Các gói đề xuất: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-Arch git-cvs git-mediawiki git-svn Các gói MỚI sau sẽ được cài đặt: git git-man liberror-perl 0 đã nâng cấp, 3 mới được cài đặt, 0 để xóa và 0 chưa nâng cấp. Cần lấy 4, 848 kB kho lưu trữ. Sau thao tác này, 26,4 MB dung lượng đĩa bổ sung sẽ được sử dụng. Bạn có muốn tiếp tục? [Y / n] y Nhận: 1 https://muug.ca/mirror/raspbian/raspbian Stret / main armhf liberror-perl tất cả 0,17024-1 [26,9 kB] Nhận: 2 https://muug.ca/mirror/ raspbian / raspbian Stret / main armhf git-man all 1: 2.11.0-3 + deb9u3 [1, 433 kB] Get: 3 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf git armhf 1: 2.11.0-3 + deb9u3 [3, 388 kB] Tìm nạp 4, 848 kB trong 5 giây (878 kB / s) Chọn gói liberror-perl chưa được chọn trước đó.(Đang đọc cơ sở dữ liệu… 34363 tệp và thư mục hiện được cài đặt.) Đang chuẩn bị giải nén… / liberror-perl_0.17024-1_all.deb… Giải nén liberror-perl (0.17024-1)… Chọn gói git-man chưa được chọn trước đó. Đang chuẩn bị giải nén… / git-man_1% 3a2.11.0-3 + deb9u3_all.deb… Đang giải nén git-man (1: 2.11.0-3 + deb9u3)… Chọn gói git đã bỏ chọn trước đó. Đang chuẩn bị giải nén… / git_1% 3a2.11.0-3 + deb9u3_armhf.deb… Đang giải nén git (1: 2.11.0-3 + deb9u3)… Thiết lập git-man (1: 2.11.0-3 + deb9u3)… Thiết lập liberror-perl (0.17024-1)… Trình kích hoạt xử lý cho man-db (2.7.6.1-2)… Thiết lập git (1: 2.11.0-3 + deb9u3)…

Bây giờ quay lại WinSCP và điều hướng đến thư mục / home / pi. Sau đó, ở phía bên phải của cửa sổ WinScp này, nhấp chuột phải và chọn tạo một Thư mục mới có tên là "bãi đậu xe"

Quay lại màn hình PuTTY, bạn có thể nhập ls để xác nhận rằng bạn vừa tạo một thư mục mới trong pi. Sau đó nhập vào:

cd p [TAB]Mẹo: Nhấn phím TAB sẽ tự động điền tên từng phần cho bạn

Nhấn phím enter để vào thư mục này.

pi @ raspberrypi: ~ $ cd đậu xe /

pi @ raspberrypi: ~ / đậu $ ls

Bây giờ chúng ta có thể lấy các tệp trình điều khiển bằng cách nhập thông tin sau vào PuTTY:

git clone

Đầu ra sẽ giống như sau:

pi @ raspberrypi: ~ / đậu $ git clone

Nhân bản thành 'rpi-rgb-led-matrix'… từ xa: Đếm đối tượng: 3740, đã xong. từ xa: Tổng 3740 (delta 0), sử dụng lại 0 (delta 0), gói tái sử dụng 3740 Đối tượng nhận: 100% (3740/3740), 20,61 MiB | 1,32 MiB / s, đã xong. Giải quyết các delta: 100% (2550/2550), đã xong.

Bây giờ biên dịch các tệp trình điều khiển LED bằng cách đi vào thư mục 'rpi-rgb-led-matrix' mới này và gõ lệnh make:

cd r [TAB]

chế tạo Và đây là những gì nó trông như thế nào trên bảng của chúng tôi

pi @ raspberrypi: ~ / đậu xe $ cd rpi-rgb-led-matrix /

pi @ raspberrypi: ~ / Parking / rpi-rgb-led-matrix $ make make -C./lib make [1]: Nhập thư mục '/ home / pi / Parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal"' -Wextra -Wno-used-parameter -fno-exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"normal"' -Wextra -Wno-used-parameter -fno-exceptions -c -o led-matrix.o led-matrix.cc g ++ -I../ bao gồm - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o tùy chọn-khởi tạo.o tùy chọn-initialize.cc g ++ -I../ bao gồm-Tường -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o bộ đệm khung.o bộ đệm khung.cc g ++ -I../ gồm-Tường -O3 -g - fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "thông thường" '-Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o bdf-font.o bdf-fon t.cc g ++ -I../ bao gồm -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Wno-used-parameter -fno-exceptions -c -o graphics.o graphics.cc g ++ - I../ bao gồm -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Wno-used-information -fno-exceptions -c -o biến áp.o biến áp.cc g ++ -I../ bao gồm -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Wno-used-parameter -fno-exceptions -c -o led-matrix-co led-matrix-c.cc cc -I../ bao gồm -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Wno-used-parameter -c -o hardware-mapping.o hardware-mapping.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o nội dung-streamer.o nội dung-streamer.cc g ++ -I../ gồm-Tường-3 - g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không sử dụng-tham số -fno-ngoại lệ -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ gồm-Tường -O3 -g -fPIC -DDEFAULT_HARDWARE = '"thông thường"' -Wextra -Không-không-dùng-tham-số -fno-ngoại-trừ tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.oformers.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.o g ++ -shared -Wl, -soname, librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led -matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o pencil.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Rời khỏi thư mục '/ home / pi / Parking / rpi-rgb-led-matrix / lib' make -C example-api-use make [1]: Đang nhập thư mục ' / home / pi / Parking / rpi-rgb-led-matrix /amples-api-use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno-used-parameter -c -o demo-main. o demo-main.cc make -C../lib make [2]: Nhập thư mục '/ home / pi / Parking / rpi-rgb-led-matrix / lib' make [2]: Rời khỏi thư mục '/ home / pi / Parking / rpi-rgb-led-matrix / lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Không-không sử dụng-tham số -c -o tối thiểu-ví dụ.o tối thiểu-example.cc g ++ tối thiểu-ví dụ.o - o Minim-example -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ include -Wall -O3 -g -Wextra -Không-dùng-tham số -c -o c-example.o c- example.c cc c-example.o -o c-example -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-used- tham số -c -o text-example.o text-example.cc g ++ text-example.o -o text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Không-không sử dụng-tham số -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o scrolling-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ gồm -Wall -O3 -g -Wextra -Không-không sử dụng-tham số -c -o clock.o clock.cc g ++ clock.o -o clock -L.. / lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Không-dùng-tham-số -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Rời khỏi thư mục '/ home / pi / Parking / rpi-rgb-led-matrix /amples-api-use' pi @raspberrypi: ~ / Parking / rpi-rgb-led-matrix $

Bước tiếp theo của chúng ta sẽ là liên kết thư viện ma trận RGB với Python. Chúng tôi đã sử dụng Python 2 mặc định cho dự án này. Vì vậy, để thực hiện ràng buộc này, chúng ta nhập từng dòng sau vào một thời điểm như trước:

sudo apt-get update && sudo apt-get install python2.7-dev python-gối -y

make build-python sudo make install-python

Lưu ý: Bạn có thể bỏ qua một cách an toàn cảnh báo về '-Wstrict-prototype' hiển thị khi chạy hai câu lệnh. Các lệnh thực hiện mất vài phút để chạy và chúng không nói bất cứ điều gì khi đang bận. Vì vậy, đừng sợ - số pi của bạn sẽ sớm quay trở lại;)

Đây là một phần đầu ra của câu lệnh đầu tiên:

xây dựng tiện ích mở rộng 'đồ họa'

arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-precision-aliasing -Wdate-time -D_FORTIFY_SOURCE = 2-g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protectionor-strong -Wformat -Werror = format-security -fPIC -I../../ include -I / usr / include / python2.7 -c rgbmatrix / graphics.cpp -o build / temp.linux- armv6l-2.7 / rgbmatrix / graphics.o -O3 -Tall cc1plus: warning: tùy chọn dòng lệnh '-Wstrict-prototypes' hợp lệ với C / ObjC nhưng không hợp lệ với C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-precision-aliasing -DNDEBUG -g -fwrapv -O2 -all -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix -map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protectionor-strong -Wformat -Werror = format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7 -2,7,13 =. -fstack-protector-strong -Wformat -Werror = format-security build / temp.linux-armv6l-2.7 / rgbmatrix / graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: Rời khỏi thư mục '/ home / pi / Parking / rpi-rgb-led-matrix / bindings / python' pi @ raspberrypi: ~ / Parking / rpi-rgb-led-matrix $

Tiếp theo, chúng tôi sẽ cài đặt thư viện pigpio C. Để thực hiện việc này đúng cách, chúng ta cần tạo nó từ nguồn, vì vậy chỉ cần nhập các dòng sau:

cd ~

sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip unzip pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip

Quá trình cài đặt trên mất khoảng 3 phút.

Bây giờ đã đến lúc lấy các tệp dự án Python của chúng tôi. Nhập theo chỉ dẫn:

cd ~

cd / home / pi / Parking / rpi-rgb-led-matrix / bindings / python / samples wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip giải nén -j tinyL_parking.zip rm tinyL_parking.zip

Sau đó, để thực thi nó, hãy nhập như sau:

sudo python Parking.py

Nhưng bạn không cần phải làm điều này ngay bây giờ vì chúng tôi vẫn phải kết nối tất cả…

Bước 7: Dây

Dây điện
Dây điện
Dây điện
Dây điện
Dây điện
Dây điện
Dây điện
Dây điện

Như đã đề cập trước đó, chúng tôi đã cấp nguồn cho bảng LED từ cùng một bộ đổi nguồn cấp nguồn cho pi. Để làm điều này, bạn sẽ phải nối các dây màu đỏ và đen khổng lồ vào các chân tiêu đề nam để chúng có thể được cắm vào chân 2 và 9 của đầu nối pi 40pin.

Rút phích cắm nguồn vào pi ngay bây giờ và đấu dây bảng LED như sơ đồ hình trên. Giữ ngắt kết nối pin 2 ngay bây giờ.

LƯU Ý: Bảng ma trận LED đôi khi có thể bật nguồn ở trạng thái sôi động. Nếu điều này xảy ra, nó có thể làm giảm nguồn điện của bạn nghiêm trọng bất kể công suất hiện tại của nó là bao nhiêu. Chúng tôi nhận thấy điều này trong quá trình phát triển nguồn cung cấp băng ghế dự bị của chúng tôi có thể cung cấp trên 4 ampe. Giải pháp cho việc này là chạy mã pi trước rồi cắm vào chân 2 để cấp nguồn cho bảng LED. Bằng cách này, bảng điều khiển sẽ xuất hiện ở trạng thái năng lượng thấp vì nó loại bỏ các trạng thái LED ngẫu nhiên. Dòng điện tĩnh (tất cả các đèn LED tắt) cho bảng điều khiển LED của chúng tôi chỉ là 50mA ở 5v.

CAT5

Chúng tôi đã sử dụng cáp ethernet CAT5 25 chân và sửa đổi nó để cắm vào các chân tiêu đề pi ở một đầu và chấp nhận các chân kết nối GROVE ở phía bên kia để chúng tôi có thể mở rộng khoảng cách đặt cảm biến tinyLiDAR bên cạnh. Các bức ảnh trên cho thấy loại cáp này trước và sau khi sửa đổi. Bỏ qua màu sắc của dây ghim tiêu đề vì chúng không tương quan với sơ đồ. Chỉ cần đảm bảo rằng bạn kết nối hệ thống của mình như được hiển thị trong sơ đồ kết nối bằng hình ảnh được hiển thị trước đó trong bước 3.

Bước 8: Thắp sáng

Image
Image
Bước tùy chọn và các lệnh hữu ích
Bước tùy chọn và các lệnh hữu ích

Trình tự khởi động nguồn ban đầu thích hợp là cắm bộ sạc microUSB vào pi và đợi các đèn LED màu xanh lam trên các cảm biến LiDAR nhỏ nhấp nháy nhanh chóng cho thấy rằng chúng đang thực hiện các phép đo. Điều này chứng tỏ mã đang hoạt động bình thường.

Sau đó, bạn có thể kết nối chậm nhưng chắc chắn chân 2 cho nguồn cung cấp bảng LED. Hãy cẩn thận để không gặp trục trặc trong khi làm việc này! Nếu bảng điều khiển LED hiển thị một vài đèn LED sáng bị đóng băng thì có thể nó đã bị trục trặc, vì vậy hãy tháo nguồn microUSB khỏi pi và đợi vài giây để thử lại trình tự tăng nguồn.

Để chạy mã, hãy nhập như sau:

cd / home / pi / Parking / rpi-rgb-led-matrix / bindings / python / samples

sudo python Parking.py

Nếu mọi việc suôn sẻ, bạn sẽ nhận được một màn hình tương tự như màn hình hiển thị trong video.

Hãy xem nhanh mã đậu xe.py để hiểu chúng tôi đã sử dụng những giới hạn nào. Mặc định cho cảm biến phía trước là 200mm. Vì phạm vi cảm biến từ 11mm đến 2m, nên giữ khoảng cách nom_parked_Front ở 200mm hoặc cao hơn. Cảm biến bên nom_parked_Side được đặt thành 600mm. Xem hình trên để biết mã Python hiển thị các tùy chọn cấu hình này.

Nếu tất cả đều hoạt động, bạn có thể tiếp tục lắp hệ thống vào ga ra của mình và điều chỉnh các thông số trên nếu cần. Vì pi được kết nối với Wi-Fi, bạn luôn có thể truy cập và chỉnh sửa cài đặt khoảng cách khi bạn cần cho thiết lập ga ra cụ thể của mình trong khi nó vẫn được gắn kết.

"Bây giờ là cái này sao?"

Tại sao có, có nó là như vậy! - thời gian để thực hiện điệu nhảy vui vẻ của bạn:)

Cảm ơn đã đọc và tận hưởng trợ lý đỗ xe mới của bạn!

Bước 9: Bước tùy chọn và các lệnh hữu ích

Bước tùy chọn - FTP addon cho Sublime Text

Để chỉnh sửa các tệp script Python trực tiếp trên pi, chúng ta có thể cài đặt addon FTP có tên Sublime SFTP by Wbond. Bạn có thể tải addon này bằng cách làm theo hướng dẫn tại đây

Để thiết lập addon này, chúng ta cần cấu hình thông tin đăng nhập FTP trong File | SFTP / FTP | Trang Thiết lập Máy chủ….

Đối với thiết lập của chúng tôi, chúng tôi đã sử dụng:

"type": "sftp", "sync_down_on_open": true, "sync_same_age": true, "host": "192.168.0.200", "user": "pi", "password": "YOUR_RPI_PASSWORD_HERE", "port": "22", "remote_path": "/ home / pi /", "file_permissions": "664", "dir_permissions": "775",

Sử dụng Ctrl + S hoặc Tệp | Lưu để lưu thông tin này. Bạn sẽ được nhắc nhập tên để gọi cấu hình này. Chúng tôi chỉ đơn giản gọi nó là "rpizw_0_200"

Bây giờ để đăng nhập vào pi từ SublimeText, hãy truy cập File | SFTP / FTP | Duyệt máy chủ…

Chọn từ danh sách các tùy chọn bật lên. Bạn sẽ muốn chọn cấu hình với tên bạn đã chỉ định ở trên;) Làm theo lời nhắc để điều hướng các thư mục và chỉnh sửa tệp mong muốn.

Các tính năng bổ sung hữu ích

Các lệnh Linux hữu ích để sử dụng trên pi.

Trước khi rút pi, LUÔN LUÔN đảm bảo tắt nó để bạn không bị hỏng tệp trên thẻ nhớ microSD của mình. Nhập lệnh này:

sudo tắt ngay bây giờ

và đợi đèn led xanh tắt trước khi rút nguồn. Tương tự để khởi động lại nó, bạn có thể nhập:

sudo khởi động lại ngay bây giờ

Để liệt kê các tệp trong một thư mục, hãy sử dụng điều này:

ls

Bạn có thể tìm thấy các lệnh Linux hữu ích khác tại đây

Đề xuất: