Mục lục:

Pipboy được xây dựng từ phế liệu: 26 bước (có hình ảnh)
Pipboy được xây dựng từ phế liệu: 26 bước (có hình ảnh)

Video: Pipboy được xây dựng từ phế liệu: 26 bước (có hình ảnh)

Video: Pipboy được xây dựng từ phế liệu: 26 bước (có hình ảnh)
Video: Fallout 4 (PS4) - Modding Overview + 0kb Error combat tips 2024, Tháng bảy
Anonim
Image
Image
Xây dựng trái tim của chàng trai Pipboy
Xây dựng trái tim của chàng trai Pipboy

Đây là chiếc Pipboy đang làm việc của tôi, được chế tạo từ rác ngẫu nhiên từ nhà để xe và một cuộc đột kích kho linh kiện điện tử của tôi. Tôi thấy đây là một bản dựng đầy thử thách và tôi đã mất vài tháng làm việc, vì vậy tôi sẽ không phân loại đây là một dự án hoàn chỉnh dành cho người mới bắt đầu. Các kỹ năng cần thiết bao gồm làm việc bằng nhựa và gỗ, điện tử và mã hóa. Thân xe được làm từ nhiều mảnh nhựa phế liệu khác nhau được cắt và hàn lại với nhau. Tôi đã sử dụng Raspberry Pi 0 làm bộ điều khiển vi mô, với tiêu đề hiển thị được gắn vào một phần của các chân GPIO. Các chân còn lại được sử dụng để điều khiển đèn LED và kết nối các nút / điều khiển. Tôi đã viết giao diện người dùng theo phong cách "Pipboy" với một số màn hình demo bằng Python để hoàn thành dự án.

Mục tiêu của tôi cho dự án là:

  • Phải hoạt động - tức là cần phải thực sự có một màn hình hiển thị
  • Tôi muốn nó có "quay số" để chọn các màn hình khác nhau vì điều đó luôn nổi bật đối với tôi như một phần mang tính biểu tượng của giao diện người dùng trong Fallout
  • Toàn bộ công trình phải được hoàn thành bằng cách sử dụng những thứ tôi đã có trong nhà để xe hoặc trong văn phòng của mình (điều này không hoàn toàn đạt được, nhưng tôi đã đạt được gần - 90% trong số này là những vật dụng được tìm thấy hoặc những thứ tôi đã đặt xung quanh)
  • Cần thiết để có thể đeo được

Một mục tiêu mà tôi không có đó là biến nó thành một bản sao chính xác của một trong những mô hình trong trò chơi - tôi thích xây dựng nội dung "theo phong cách" của một thứ, vì nó cho tôi không gian để điều chỉnh những thứ vụn vặt ngẫu nhiên mà tôi tìm thấy, và hãy để tôi sáng tạo hơn một chút. Cuối cùng, vâng, tôi biết bạn có thể mua những thứ này nhưng đó cũng không phải là vấn đề;)

Quân nhu

Quân nhu

  • Ống khoan rộng (chẳng hạn như một đoạn ống thoát nước)
  • Phế liệu nhựa (cả để tạo ra cơ thể và cho mục đích trang trí)
  • Hộp đựng nhỏ
  • Tấm lót sàn xốp
  • Raspberry Pi
  • Màn hình 3,5"
  • Bộ mã hóa quay KY040
  • Đèn LED 3x
  • 2x nút ấn
  • Ngân hang năng lượng
  • Đấu dây
  • Vít, keo, sơn, chất độn, v.v.

Công cụ

  • Dremmel
  • Nhiều công cụ với các phần đính kèm máy cắt và chà nhám
  • Máy khoan
  • Các tập tin
  • Sắt hàn
  • Súng bắn keo nóng
  • (Các) trình điều khiển vít
  • Con dao bén
  • Nhìn thấy

Bước 1: Xây dựng Trái tim của Pipboy

Xây dựng trái tim của chàng trai Pipboy
Xây dựng trái tim của chàng trai Pipboy

Điều đầu tiên tôi cần làm là đảm bảo rằng tôi có thể có được một màn hình và bộ điều khiển vi mô trong một hệ số hình thức mà tôi có thể làm việc. Tôi đã tình cờ có một màn hình 3,5 hoạt động như một HAT trên các chân GPIO của Raspberry PI, vì vậy tôi quyết định sử dụng cái này. Tôi đã ghép nối nó với Raspberry Pi 0 và đảm bảo rằng nó hoạt động tốt, có một vài bước để Linux nhận ra màn hình mà bạn phải chạy qua.

Như bạn có thể thấy trong hình thứ hai, tôi đã thêm một tấm bìa cứng / xốp nhỏ mà tôi dán vào vỏ để hỗ trợ màn hình. Tôi đã làm điều này vì tôi biết rằng tôi sẽ phải xử lý phần này rất nhiều và không muốn làm gãy chân hoặc màn hình do thiếu hỗ trợ. Cuối cùng điều này đã được thay thế, nhưng nó là một phần bảo vệ bổ sung tốt trong quá trình xây dựng.

Nó cũng đáng lưu ý ở điểm này, rằng sau này trong bản dựng, tôi đã gặp phải các vấn đề về hiệu suất với thiết lập này - chủ yếu là tốc độ làm mới trên giao diện giữa Pi và màn hình, tôi sẽ đi sâu vào vấn đề này sau trong bản dựng nhưng nếu tôi đã làm điều này một lần nữa, tôi có thể xem xét phần cứng khác nhau ở đây.

Dưới đây là một số liên kết hữu ích cho việc này:

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?f…

learn.sparkfun.com/tutorials/serial-periph…

Tôi cũng sẽ đưa vào github được liên kết với điều này một số ghi chú cho những gì tôi thực sự đã làm để làm cho điều này hoạt động (mặc dù từ việc đọc chủ đề của tôi, có rất nhiều sự thay đổi trong cách hoạt động của điều này đối với các trường hợp / trình điều khiển cụ thể, vì vậy phần trăm của bạn có thể khác nhau).

Bước 2: Nguyên mẫu bìa cứng

Nguyên mẫu bìa cứng
Nguyên mẫu bìa cứng
Nguyên mẫu bìa cứng
Nguyên mẫu bìa cứng
Nguyên mẫu bìa cứng
Nguyên mẫu bìa cứng

Tôi đã tìm thấy một số máng xối / đường ống cũ mà tôi có thể sử dụng cho phần thân, nhưng tôi cần đưa ra thiết kế cho khu vực màn hình và bảng điều khiển thực tế. Đối với điều này, tôi chỉ làm mô phỏng bằng bìa cứng và sử dụng băng dính để cố định chúng vào đường ống. Đầu tiên là một "hộp" đơn giản nhưng cảm thấy quá đơn giản, vì vậy tôi đã sửa đổi nó để làm cho khu vực màn hình trở nên thú vị hơn và thêm một khu vực bảng điều khiển riêng biệt. Đây ít nhiều đã trở thành thiết kế cuối cùng (có một vài chỉnh sửa như bạn sẽ thấy, nhưng nó đã gần kết thúc).

Bước 3: Từ Nguyên mẫu sang Mẫu

Từ Nguyên mẫu đến Mẫu
Từ Nguyên mẫu đến Mẫu
Từ Nguyên mẫu đến Mẫu
Từ Nguyên mẫu đến Mẫu
Từ Nguyên mẫu đến Mẫu
Từ Nguyên mẫu đến Mẫu

Bây giờ tôi đã có một nguyên mẫu mà tôi hài lòng, tôi có thể làm phẳng tấm bìa cứng và biến nó thành một mẫu mà sau đó tôi chuyển sang một phần của vỏ PC cũ mà tôi đã ném xung quanh. Bất kỳ loại nhựa dẻo dai tương tự nào cũng sẽ hoạt động, tôi chỉ sử dụng đồ vụn mà tôi phải dùng tay. Sau khi đánh dấu xong, tôi có thể cắt các mảnh để có thể bắt đầu lắp ráp phần thân chính. Một mẹo hữu ích ở đây, để giúp dễ dàng hơn trong việc đánh dấu và sau đó cắt nhựa, trước tiên tôi đã che các khu vực mà tôi sẽ cần cắt bằng băng keo che, điều này cho tôi một cách dễ dàng hơn để vẽ mẫu lên nhựa, và một cái gì đó để giúp đĩa cắt không bị trượt khi tôi thực hiện những lần cắt đầu tiên.

Bước 4: Thêm trường hợp cho màn hình & Pi

Thêm trường hợp cho màn hình & Pi
Thêm trường hợp cho màn hình & Pi
Thêm trường hợp cho màn hình & Pi
Thêm trường hợp cho màn hình & Pi

Tôi muốn các góc của khu vực màn hình được làm cong và tôi cần một thứ gì đó để thực sự giữ Pi và hiển thị - giải pháp của tôi là sử dụng một hộp nhựa nhỏ mà tôi có. Tôi khoét một lỗ ở trên cùng của thân và dán hộp đựng qua chỗ này. Sau đó, tôi dán tất cả các mặt lại với nhau. Tôi đã sử dụng superglue ở đây với nhiều muối nở để giúp tăng cường các mối hàn. Sau đó, tôi lấp đầy và khai thác / chà nhám mọi thứ để dọn dẹp tất cả và tạo cho nó một cảm giác "khuôn đúc" hơn.

Bước 5: Lặp lại cho Control Panel

Lặp lại cho Bảng điều khiển
Lặp lại cho Bảng điều khiển
Lặp lại cho Bảng điều khiển
Lặp lại cho Bảng điều khiển
Lặp lại cho Bảng điều khiển
Lặp lại cho Bảng điều khiển

Tiếp theo, tôi đã thực hiện chính xác cùng một mẫu chuyển đổi, cắt và dán để tạo vỏ bảng điều khiển.

Bước 6: Cắt bỏ ống

Cắt bỏ ống
Cắt bỏ ống

Như bạn có thể thấy chiếc hộp đựng mà tôi đang định sử dụng để chứa các linh kiện điện tử chính hiện đang nằm kiêu hãnh bên trong lớp nhựa đen bao quanh, điều này có nghĩa là tôi cần tạo một lỗ mở trong đường ống để nó có thể lọt vào. Tôi lại dùng băng dính che lại chỗ muốn cắt và cắt một hình vuông của đường ống sao cho các bộ phận vừa khít.

Bước 7: Bezel

Bezel
Bezel
Bezel
Bezel

Một thách thức mà tôi vô tình mắc phải là cố gắng tạo ra một khung bezel có thể lấp đầy khu vực xung quanh màn hình cho đến các cạnh của hộp đựng. Thật không may, cách thức chế tạo màn hình, nó cũng không có gì hữu ích trong thiết kế (như lỗ hoặc bất cứ thứ gì) để giúp gắn kết nó, vì vậy khung bezel cũng phải giữ màn hình ở đúng vị trí. Nỗ lực đầu tiên của tôi (xem ở đây) là hỗn hợp nhựa và bọt. Cuối cùng tôi đã lặp đi lặp lại điều này nhiều lần và nó trở thành một trong những phần khó khăn hơn của quá trình xây dựng. Còn tệ hơn do dung sai nhỏ và tính chất tinh tế của cả khung bezel và màn hình.

Bước 8: Kiểm tra pin

Kiểm tra pin
Kiểm tra pin
Kiểm tra pin
Kiểm tra pin
Kiểm tra pin
Kiểm tra pin

Tại thời điểm này, tôi đã chuyển ý định làm thế nào để làm cho nó chạy độc lập với một USB được cung cấp chính. Tôi đã thử nghiệm các loại pin khác nhau và nhận thấy rằng màn hình Raspberry Pi + không thực sự tiêu thụ nhiều năng lượng như vậy và nó hoàn toàn hạnh phúc khi chạy trên một trong những bộ pin nhỏ hơn của tôi (một người chơi miễn phí từ một triển lãm thương mại). Điều này thực sự may mắn vì gói vừa vặn hoàn toàn vào một khoảng trống bên trong bản dựng (ảnh sau). Bây giờ chúng ta có thể tạm thời dán các thành phần cơ thể chính lại với nhau và chạy thử nghiệm đầu tiên của chúng tôi về nó được cung cấp năng lượng trên cánh tay của tôi!

Bước 9: Kiểm tra độ vừa vặn

Kiểm tra sự phù hợp
Kiểm tra sự phù hợp
Kiểm tra sự phù hợp
Kiểm tra sự phù hợp
Kiểm tra sự phù hợp
Kiểm tra sự phù hợp

Tại đây, bạn có thể thấy nơi tôi đã sửa đổi thêm đường ống lõi để cho phép truy cập vào mặt dưới của các thành phần. Bạn cũng có thể thấy tôi đã may mắn như thế nào với viên pin nằm gọn trong một cái hốc ở một bên của hộp đựng Pi. Cuối cùng bắt đầu quá trình làm sạch các liên kết, trám, chà nhám và làm một lớp sơn lót thử để có cảm giác về vẻ ngoài đã hoàn thiện (tôi biết ở giai đoạn này tôi sẽ chà nhám thêm nhiều lần nữa và gần như toàn bộ lớp sơn lót đó sẽ trôi đi, nhưng tôi muốn cảm nhận xem nó sẽ trông như thế nào).

Bước 10: Thêm điều khiển và chi tiết

Thêm điều khiển và chi tiết
Thêm điều khiển và chi tiết
Thêm điều khiển và chi tiết
Thêm điều khiển và chi tiết
Thêm điều khiển và chi tiết
Thêm điều khiển và chi tiết

Tôi muốn một loạt đèn LED màu đỏ / vàng / xanh lá cây để tạo thành một thước đo, cũng như một mặt số quay và ít nhất 2 nút nhấn. Tất cả chúng đều được lắp vào phần bảng điều khiển - chỉ đơn giản là một trường hợp khoan tất cả các lỗ phù hợp. Tôi cũng bắt đầu thêm các mảnh nhỏ của các thành phần nhựa phế liệu (về cơ bản là bộ đồ nghề) để thêm chi tiết và quan tâm hơn đến thân máy và bảng điều khiển.

Bước 11: Xây dựng lại Bezel số 3

Bezel Rebuild số 3
Bezel Rebuild số 3
Bezel Rebuild số 3
Bezel Rebuild số 3
Bezel Rebuild số 3
Bezel Rebuild số 3

Như tôi đã đề cập trước đó, tôi đã vật lộn với khung bezel cho phiên bản này và xây dựng lại nó nhiều lần. Đây là lần lặp lại thứ ba mà tôi mắc kẹt. Cách tiếp cận của tôi ở đây là sử dụng bìa cứng và cắt 2 hình dạng khác nhau, một hình người suy nghĩ hơn hình kia và sau đó dán (và kẹp) chúng lại với nhau để tạo thành hình ở giữa. Những hình dạng này cho phép màn hình vuông nằm bên trong nó và sau đó nó giữ màn hình ở vị trí bên trong hộp chứa (như trong hình 3). Điều này mang lại cho tôi vật liệu vừa đủ để sử dụng 4 con vít rất nhỏ làm đồ cố định - thứ mà tôi đã sử dụng để cố định nó chắc chắn vào vị trí bên trong vỏ và nó sẽ giữ cho màn hình ổn định và an toàn. Khi nhìn lại, tôi sẽ tìm thấy một màn hình đi kèm với một số tùy chọn lắp đặt phù hợp (hoặc sử dụng máy in 3D - thứ mà tôi không có vào thời điểm đó).

Bước 12: Tạo mẫu thiết bị điện tử

Tạo mẫu thiết bị điện tử
Tạo mẫu thiết bị điện tử
Tạo mẫu thiết bị điện tử
Tạo mẫu thiết bị điện tử

Tôi sử dụng một breadboard để bố trí các mạch đơn giản của mình như thế này và vì tôi thường thực hiện phần này của dự án trong một không gian khác với cấu trúc phần thân chính, tôi cũng ghép nối nó với một Raspberry PI khác. Ở đây tôi đã sử dụng mô hình 3, cho tôi thêm một chút sức mạnh để thực sự kết nối trực tiếp với nó và chạy IDE tích hợp. Điều này chỉ làm cho việc tạo mẫu mã nhanh chóng dễ dàng hơn một chút đối với tôi. Có rất nhiều cách khác để kết nối từ xa / mã / gỡ lỗi, đây chỉ là tôi muốn làm ở đây.

Thiết kế ở đây là khá thẳng về phía trước, chúng tôi có;

  1. Bộ mã hóa quay - bộ mã hóa này sử dụng mặt đất và nhiều chân GPIO để xử lý hướng nhấp và nút nhấn.
  2. Cặp nút nhấn, chúng chỉ sử dụng một chân GPIO duy nhất và một điểm chung
  3. 3 đèn LED, mỗi đèn có một điện trở nội tuyến để ngăn chúng bật ra, tất cả đều đi đến một điểm chung, nhưng với mỗi chân GPIO riêng lẻ để mỗi đèn có thể được định địa chỉ riêng.

Điều này đã mang lại cho tôi 3 đèn LED cho máy đo của tôi, một bộ mã hóa quay để xoay qua các màn hình trên pipet và 3 nút nhấn để điều khiển các hành động (một trên bộ mã hóa quay và 2 có dây riêng biệt). Đây là tất cả những gì tôi có thể phù hợp và với màn hình chiếm nhiều chân cắm, tiêu tốn khá nhiều những gì bạn có trên bố cục GPIO Pi tiêu chuẩn. Tuy nhiên nó là tốt cho mục đích của tôi.

Hình thứ hai cho thấy khá nhiều bố cục bên trong cuối cùng mà tôi đã sử dụng. Tôi đã dành một chút thời gian ở đây để thử nghiệm các cách điều khiển các thành phần và xác minh rằng tất cả hoạt động hiệu quả trước khi tôi chuyển nó vào phần thân của bản dựng. Tất cả mã đều có trong github.

Một lưu ý về bộ mã hóa quay. Tôi đã dành rất nhiều thời gian để viết máy trạng thái Bộ mã hóa quay của riêng mình để theo dõi các thay đổi cao / thấp của GPIO và ánh xạ chúng tới các vị trí quay. Tôi đã đạt được thành công hỗn hợp ở đây, tôi đã làm cho nó hoạt động cho "hầu hết" các trường hợp, nhưng luôn có các trường hợp cạnh và (de) nảy, v.v. để giải quyết. Nó dễ dàng hơn rất nhiều để sử dụng một thư viện được tạo sẵn và có một thư viện tuyệt vời cho những thứ này có sẵn để cài đặt cho Python. Cuối cùng, tôi đã sử dụng nó vì nó cho phép tôi tập trung vào phần thú vị của việc xây dựng, thay vì dành nhiều thời gian để gỡ lỗi các vấn đề. Tất cả các chi tiết cho điều đó được bao gồm trong mã nguồn.

Nếu bạn chưa quen với Raspberry Pi, GPIO và thiết bị điện tử, tôi thực sự khuyên bạn nên xem các hướng dẫn sau đây sẽ hướng dẫn bạn mọi thứ bạn cần để thực hiện bố cục trên;

projects.raspberrypi.org/en/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

Bước 13: Vận chuyển các thiết bị điện tử vào cơ thể

Vận chuyển các thiết bị điện tử vào cơ thể
Vận chuyển các thiết bị điện tử vào cơ thể
Vận chuyển các thiết bị điện tử vào cơ thể
Vận chuyển các thiết bị điện tử vào cơ thể
Vận chuyển các thiết bị điện tử vào cơ thể
Vận chuyển các thiết bị điện tử vào cơ thể

Sau khi tôi hoàn thành bố cục bằng cách sử dụng breadboard, đã đến lúc tôi bắt đầu suy nghĩ về cách gắn những thứ này vào phần thân của pipboy. Tôi quyết định muốn làm nó để có thể tháo dỡ và loại bỏ tất cả các thành phần điện tử trong trường hợp tôi cần sửa chữa hoặc thay đổi bất kỳ thứ gì trong tương lai. Để thực hiện điều này, tôi quyết định làm cho tất cả các bộ phận phụ có thể cắm được bằng cách sử dụng các đầu nối dupont.

Đối với các nút, tôi đã hàn trên một số dây nối dài và sử dụng dây quấn để cách điện các đầu, điều này cho phép tôi lắp ráp và tháo rời chúng khỏi cơ thể (ví dụ: để thử nghiệm, sau đó sơn, v.v.). Bộ mã hóa quay đã có các chân có thể chấp nhận các đầu nối sai lệch, vì vậy tôi chỉ cần tạo một số dây có độ dài phù hợp.

Đèn LED mất nhiều công hơn một chút - đối với điều này, tôi quyết định sử dụng một chút nhựa vụn mà tôi có (cắt cho vừa vặn) để làm một bảng điều khiển có thể tháo rời để gắn đèn LED vào. Sau đó, tôi dán nóng chúng tại chỗ và hàn các điện trở và dây điện. Điều này làm cho một bộ phận tháo lắp mà tôi có thể lắp và tháo ra, đồng thời làm cho việc sơn và hoàn thiện dễ dàng hơn.

Lưu ý rằng hàn của tôi rất tệ, vì vậy tôi giữ điều này đơn giản và tránh bất cứ điều gì quá chi tiết / tốt. Trong hình cuối cùng, bạn có thể thấy tôi cũng có một số bảng rộng rất nhỏ (5x5), tôi đã sử dụng một trong những bảng này được gắn bên trong để cung cấp một bảng kết nối mọi thứ đến / từ GPIO. Đặc biệt, điều này rất hữu ích để tạo ra một đường sắt nối đất chung mà tôi có thể sử dụng và tránh có nhiều dây nối đất mắc lại Pi.

Sau đó, tôi khoét nhiều lỗ khác nhau trên thùng chứa để đưa dây qua Pi và kết nối với GPIO. Thiết kế này cho phép tôi hoàn thành tất cả mọi thứ nếu tôi cần (điều mà tôi đã làm nhiều lần khi đang hoàn thiện bản dựng).

Bước 14: Tinh chỉnh sự phù hợp

Tinh chỉnh phù hợp
Tinh chỉnh phù hợp
Tinh chỉnh phù hợp
Tinh chỉnh phù hợp

Tại thời điểm này, tôi gặp phải một số vấn đề "phù hợp". Thứ nhất, việc sử dụng các đầu nối dupont cho hệ thống dây dẫn có nghĩa là rất khó để làm cho chúng khớp vào các chân cắm với mũ màn hình tại chỗ vì không có đủ khoảng cách chiều cao. Tôi đã giải quyết vấn đề này bằng cách mua (đây là một trong số ít những thứ tôi thực sự mua cho dự án này) một bộ mở rộng chân GPIO nhỏ để tôi có thể đặt mũ hiển thị cao hơn và chừa chỗ để truy cập các chân GPIO còn lại bằng cách sử dụng đầu nối dupont.

Tôi cũng cắt một số mảnh nhỏ của tấm lót sàn bằng xốp để làm một số đệm bên trong thùng chứa, điều này giúp đặt Màn hình Pi + vào đúng vị trí và ngăn nó di chuyển xung quanh.

Bước 15: Nâng cấp bộ mã hóa quay

Retro Up the Rotary Encoder
Retro Up the Rotary Encoder

Các bộ mã hóa quay thường đi kèm (cũng như của tôi) với một núm kiểu "hi fi" hiện đại sáng bóng đẹp mắt. Điều này hoàn toàn không phù hợp với bản dựng, vì vậy tôi phải nghĩ ra một cái gì đó khác. Trong hộp các bộ phận ngẫu nhiên của tôi, tôi bắt gặp một cái bánh răng cũ từ một chiếc máy khoan mà tôi đã làm gãy cách đây rất lâu. Điều này trông tốt, nhưng không phù hợp với bộ mã hóa quay. Giải pháp của tôi ở đây là thử các phích cắm trên tường khác nhau cho đến khi tôi tìm thấy một phích cắm phù hợp với mặt số quay, sau đó cắt nó theo hình dạng để tôi có thể sử dụng nó như một "vòng đệm bên trong" để đặt bánh răng khoan vào bộ mã hóa quay như một chủ đề phù hợp hơn điều khiển.

Bước 16: Lớp lót bên trong

Lớp lót bên trong
Lớp lót bên trong
Lớp lót bên trong
Lớp lót bên trong

Thêm bọt sàn gạch! Lần này, tôi đã sử dụng chúng để tạo ra một lớp lót mềm để làm cho nó vừa vặn hơn (mà không quá lỏng). Bằng cách khoét một lỗ trên tấm xốp, tôi cũng có thể hấp thụ một số "cục" mà thùng chứa Pi tạo ra. Nhìn chung, điều này làm cho nó dễ đeo hơn nhiều. Không hiển thị trong những bức ảnh này, nhưng tôi đã làm cho nó lớn hơn một chút so với phần thân chính để nó có thể nhìn thấy ở các đầu, mà sau đó tôi đã vẽ và tất cả đều giúp thêm một chút tương phản và thú vị cho thành phẩm.

Bước 17: Thêm chi tiết

Thêm chi tiết
Thêm chi tiết
Thêm chi tiết
Thêm chi tiết

Đã đến lúc bắt đầu thêm một số trang trí và làm cho nó thú vị hơn. Trước hết, tôi thêm một số dải nhựa vụn dọc theo một mặt để tạo cho nó một chút hấp dẫn về mặt hình ảnh. Sau đó, tôi thêm một số dây giả vào một số thiết bị đầu cuối và chỉ cần đẩy chúng vào một lỗ mà tôi đã khoan vào thân. Tất cả những thứ này sau đó đã được sơn các màu khác nhau.

Bước 18: Sơn và hoàn thiện cơ thể

Vẽ và hoàn thiện cơ thể
Vẽ và hoàn thiện cơ thể
Vẽ và hoàn thiện cơ thể
Vẽ và hoàn thiện cơ thể
Vẽ và hoàn thiện cơ thể
Vẽ và hoàn thiện cơ thể

Tôi không quá quan tâm đến lớp hoàn thiện nguyên sơ - vì dù sao nó cũng được cho là cũ và được sử dụng tốt (trên thực tế, tôi có thể quay lại và làm nhiều hơn với nó vào một thời điểm nào đó). Nhưng tôi muốn nó trông giống như một vật thể nhất quán và hoàn chỉnh, không bị lẫn lộn với nhau từ những thứ rác rưởi ngẫu nhiên (mặc dù nó chính xác là như vậy). Tôi đã trải qua nhiều lần chà nhám, đổ đầy (miliput là chất độn mà tôi lựa chọn cho nhựa) và lặp lại. Sau đó, sơn một số lớp sơn lót và sơn để giúp làm mịn tất cả các phần nối. Sau đó, chà nhám nhiều hơn và làm đầy hơn, và sơn nhiều hơn.

Khi tôi đã có cái nhìn và cảm nhận về cơ thể mà tôi hài lòng, tôi bắt đầu thêm một số chi tiết. Tôi đã sử dụng chà và đánh bóng trên các tấm lưới trên các nút điều khiển để mang lại cho chúng cảm giác lưới thép hơn. Tôi cũng đã thêm các chi tiết nhỏ của sơn ở đây và ở đó bằng cách sử dụng acrylics.

Tôi đã tìm hiểu bộ sưu tập các nhãn dán ngẫu nhiên của mình và thêm một số ít để hoàn thiện hiệu ứng. Sau đó, tôi rửa sạch thời tiết với một số loại sơn đã pha để thêm một số bụi bẩn vào những khu vực khó tiếp cận mà khó làm sạch. Điều này có thể hơi quá tinh tế vào lúc này, và tôi có thể quay lại và bổ sung thêm một số thông tin sau.

Bước 19: Mã hóa

Mã hóa
Mã hóa

Một phần trong tham vọng của tôi đối với dự án này là làm cho nó phản ứng giống như một pipet thực sự - và đối với tôi, phần mang tính biểu tượng nhất của trò chơi đó là xoay mặt số để lật giữa các màn hình khác nhau. Để đạt được điều này, tôi quyết định viết một giao diện người dùng pipboy có thể hiển thị một loạt màn hình và cho phép bạn cuộn giữa chúng. Tôi muốn làm cho nội dung của màn hình trở thành thứ gì đó mà tôi có thể dễ dàng thay đổi và thực sự có thể thêm / bớt màn hình.

Tôi chọn viết điều này bằng Python do sự hỗ trợ tuyệt vời cho Raspberry Pi, GPIO, v.v. Python nằm khá thấp trong danh sách các ngôn ngữ mà tôi quen thuộc, vì vậy đây là một đường cong học tập lớn đối với tôi và phần lớn mã là kết quả là lộn xộn. Tôi sẽ cập nhật điều này theo thời gian vì tôi chưa hoàn thành mọi thứ tôi muốn làm ở đây - nhưng nó đủ gần để chia sẻ ngay bây giờ vì tất cả các khái niệm chính đều ở đó.

Thiết kế của tôi cho mã giao diện người dùng khá dễ hiểu, có một tập lệnh Python chính để thiết lập màn hình, cấu hình GPIO, tải màn hình và tham gia vòng cập nhật vô hạn, chờ các sự kiện của người dùng và cập nhật màn hình khi cần thiết. Ngoài ra, có nhiều tập lệnh hỗ trợ khác nhau giúp tạo màn hình giao diện người dùng trước thời hạn.

Các thư viện chính được sử dụng:

  • pygame: Tôi sử dụng công cụ này làm công cụ để chạy giao diện người dùng vì nó cho phép tôi vẽ đồ họa tùy ý, thao tác hình ảnh, phông chữ, chuyển toàn màn hình, v.v.
  • pyky040: Điều này cung cấp khả năng xử lý cho mặt số quay và giúp tôi tiết kiệm rất nhiều thời gian (rất cảm ơn Raphael Yancey đã phát hành điều này.
  • RPi. GPIO: Để lái xe GPIO tốt, tôi đã đùa giỡn với một vài tùy chọn ở đây, nhưng điều này đã mang lại cho tôi mức độ linh hoạt phù hợp mà tôi muốn, đặc biệt với những thứ như sử dụng GPIO dự phòng dưới dạng 3.3v khác để điều khiển bộ mã hóa quay, v.v.
  • nhiễu: Để tạo nhiễu perlin, để cho phép tôi tạo một dạng sóng ngẫu nhiên cho màn hình radio trông tự nhiên hơn
  • hàng đợi: Tôi đã gặp phải một lỗi khó chịu với thời gian của các sự kiện từ bộ mã hóa quay được quay và tốc độ làm mới (rất) chậm của màn hình LCD. Cuối cùng, cách tôi giải quyết vấn đề này là xếp hàng đợi các sự kiện gửi đến từ bộ mã hóa quay và chọn từng sự kiện một khi màn hình làm mới.
  • os, sys, threading, time: tất cả đều được sử dụng cho các hàm tiêu chuẩn của python

Một lưu ý về thiết kế của xử lý màn hình. Màn hình được định nghĩa là một danh sách các tên trong mã. Mỗi mục nhập trong danh sách có thể có tệp-p.webp

Nội dung của các tệp đó được tạo ở nơi khác (bằng tay hoặc bằng các tập lệnh khác), đầu ra của chúng được lưu dưới dạng tệp-p.webp

Có những trường hợp ngoại lệ kỳ quặc trong đó một số thứ được mã hóa - chẳng hạn như dạng sóng cho màn hình vô tuyến ngẫu nhiên vì nó được tính theo thời gian thực và hoạt ảnh.

Nếu một phép tương tự hữu ích, hãy nghĩ về thiết kế giao diện người dùng như một trình duyệt web cực kỳ thô sơ và đơn giản - mỗi "màn hình" giống như một trang web thực sự đơn giản chỉ có thể bao gồm một tệp png, một tệp txt hoặc kết hợp cả hai. Nội dung của những thứ đó là độc lập và chỉ được vẽ bởi giao diện người dùng giống như một trình duyệt sẽ vẽ một trang web.

Đây là các liên kết đến các thư viện chính mà tôi đã sử dụng ở đây:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

Bước 20: Màn hình thống kê

Màn hình thống kê
Màn hình thống kê

Sẽ không có pipboy nào hoàn chỉnh nếu không có màn hình thống kê hình bóng pipboy cổ điển. Đối với điều này, một người bạn của tôi đã tạo một-p.webp

Bước 21: Màn hình kiểm kê

Màn hình kiểm kê
Màn hình kiểm kê

Một cái gì đó luôn hữu ích với các dự án Pi là có một cách để hiển thị thông tin cơ bản như địa chỉ IP DHCP'd của nó, v.v. Tôi quyết định làm quá tải màn hình Khoảng không quảng cáo như một màn hình hiển thị "kho" Pi - CPU, bộ nhớ, địa chỉ IP nào, v.v.. Tôi đã viết một tập lệnh Linux nhỏ để thu thập thông tin này và chỉ chuyển hướng nó đến một tệp văn bản (.txt) được đặt tên thích hợp mà sau đó hệ thống giao diện người dùng sẽ chọn và hiển thị. Bằng cách này nếu tôi đang ở một vị trí khác, tôi có thể kích hoạt tập lệnh và chọn tệp.txt mới với địa chỉ IP cập nhật, v.v.

Bước 22: Màn hình bản đồ

Màn hình bản đồ
Màn hình bản đồ

Màn hình này là một trong những màn hình phức tạp hơn để làm việc. Raspberry Pi 0 không đi kèm với mô-đun GPS, nhưng tôi muốn làm cho Bản đồ có giá trị nhất định đối với vị trí của Pi. Giải pháp của tôi cho vấn đề này là một tập lệnh riêng biệt kéo địa chỉ IP Pi, sử dụng https://ipinfo.io để tra cứu vị trí gần đúng. Phản hồi JSON được ghi lại và sau đó tôi chuyển đổi các tọa độ để tôi có thể kéo xuống một ô openstreetmap.org cho vị trí gần đúng.

Các ô có nhiều màu sắc, nhưng tôi muốn có một hình ảnh tỷ lệ xanh để phù hợp với giao diện của Pipboy và tôi không thể tìm thấy một cái chính xác như vậy, vì vậy tôi đã viết một bộ lọc tỷ lệ xanh bằng Python để ánh xạ lại màu sắc của ô openstreetmap và sau đó lưu hình ảnh mới vào bộ nhớ cache vào tệp png.

Trong quá trình trên, một tệp văn bản được tạo với vị trí gần đúng và tọa độ, và ô bản đồ được tạo dưới dạng png. Giao diện người dùng pipboy kéo lên cả hai tệp này và phủ lên nội dung để tạo ra một màn hình Bản đồ hoạt động (với độ chính xác của độ phân giải địa chỉ IP cho một vị trí).

Bước 23: Màn hình dữ liệu

Màn hình dữ liệu
Màn hình dữ liệu

Đây chỉ là một thẻ kiểm tra (được tạo bởi một tập lệnh python khác và xuất ra tệp png) được hiển thị để giúp kiểm tra kích thước / bố cục. Tôi để nó ở lại vì nó vẫn hữu ích để xác minh xem tôi phải chơi với bao nhiêu bất động sản khi mô phỏng màn hình.

Bước 24: Màn hình vô tuyến

Màn hình vô tuyến
Màn hình vô tuyến

Cùng với màn hình bản đồ, đây là màn hình khác thực sự gây ra cho tôi rất nhiều việc. Đây là màn hình duy nhất mà tôi chơi xung quanh với hoạt ảnh - và nó hầu như hoạt động như dự định, nhưng hiệu suất vẫn là một vấn đề với tốc độ làm mới của màn hình LCD. Cấu trúc của màn hình là một tệp văn bản chứa một số tên radio được chọn ngẫu nhiên (đây chỉ là các chuỗi tùy ý và không làm gì khác hơn là hiển thị danh sách trên màn hình), tệp-p.webp

Đây là màn hình duy nhất mà vòng lặp pygame hoạt động thực sự theo từng chu kỳ, nó phải tính toán dạng sóng mới, xóa một phần của màn hình trong đó tồn tại và vẽ lại.

Bước 25: Kết luận

Image
Image
Lời kết
Lời kết

Đây có thể là bản dựng thử thách nhất mà tôi đã thực hiện, với nhiều khái niệm và kỹ năng khác nhau được yêu cầu, nhưng nó cũng là một trong những điều thú vị nhất với những thứ thực sự hoạt động như vậy. Tôi vẫn đang trong quá trình thu dọn một số ghi chú kỹ thuật khác của mình cũng như repo github cho mã. Tất cả những điều này tôi sẽ sớm cung cấp, vì vậy hãy quay lại sớm để biết thêm chi tiết và thông tin khi tôi có thời gian để thêm chúng vào bản ghi.

Nếu bạn muốn làm điều gì đó như thế này, tôi rất muốn xem kết quả và nếu bạn có bất kỳ câu hỏi nào, vui lòng liên hệ và tôi sẽ cố gắng bổ sung thêm thông tin trong bất kỳ bước nào mà bạn muốn trợ giúp.

Bước 26: Mở mã trên Github

Mã mở trên Github
Mã mở trên Github

Cuối cùng tôi đã mở được mã trên Github. Nó có sẵn tại liên kết này:

Đề xuất: